我makian一个vhdl项目,我得到这个警告: 它是一个小的应用程序,在8x8矩阵显示屏上显示2个字母。
WARNING:Xst:819 - "C:/fitkitSVN/apps/demo/xhrbot01/fpga/ledc8x8.vhd" line 114: One or more signals are missing in the process sensitivity list. To enable synthesis of FPGA/CPLD hardware, XST will assume that all necessary signals are present in the sensitivity list. Please note that the result of the synthesis may differ from the initial design specification. The missing signals are:
<switch>, <single_row>
这是第114行的过程
-- Display lines
display_lines: process (row_counter)
begin
ROW <= row_counter;
if switch /= '1' then
LED <= "11111111";
else
LED <= single_row;
end if;
end process;
----------------
此过程中使用了信号声明
-- Indent of row
signal row_counter: STD_LOGIC_VECTOR (0 to 7) := "10000000";
-- One row
signal single_row: STD_LOGIC_VECTOR (0 to 7);
-- Switch using for displaying correct row
signal switch: STD_LOGIC;
有人能告诉我如何删除警告,为什么会显示此警告? 谢谢
答案 0 :(得分:0)
查看流程的内容:
ROW <= row_counter;
if switch /= '1' then
LED <= "11111111";
else
LED <= single_row;
end if;
这里使用了什么信号?我可以看到row_counter
,switch
和single_row
被用作作业的来源或条件子句。现在看看您的敏感度列表:
row_counter
您只告诉过程对这一信号的变化很敏感,但您的过程实际上也取决于其他两个信号。这就是警告的含义。
大多数综合工具会忽略灵敏度列表,并以任何方式生成相同的硬件。但是,大多数模拟器都不会。这可能会导致设计在模拟器中的作用与实际硬件中的作用之间存在混淆。
如果您的工具链支持它,您可以通过将列表替换为关键字all
来创建自动敏感列表。所以你会有类似process (all)
的东西。