有时我在 Xilinx ISE 中收到警告:
锁存器可能是由不完整的 case 或 if 语句生成的。我们不建议在 FPGA/CPLD 设计中使用锁存器,因为它们可能会导致时序问题。
但是如果我使用rising_edge()函数,那么即使我有不完整的情况,也不会发出警告,例如:
process (clk, rst)
begin
if (rst = '1') then
test <= '0';
elsif (rising_edge(clk)) then
test <= '1';
end if;
end process;
Run Code Online (Sandbox Code Playgroud)
那么为什么 FPGA 中的锁存器被认为是一种丑陋的设计呢?为什么使用rising_edge()函数可以避免这些警告?(事实上,我认为使用rising_edge()函数也会引入锁存器)