我的VHDL代码怎么了?以下是代码:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity main is
port(
-- 50 MHz clock
cp : in std_logic;
-- Reset signal
reset : in std_logic;
-- PS/2 data and clock lines
有时我在Xilinx中收到警告:
锁存可以从不完整的大小写或if语句中生成。我们不建议在FPGA/CPLD设计中使用锁存器,因为它们可能导致计时问题。
但是,如果我使用rising_edge()函数,那么即使我有一个不完整的情况,也没有任何警告,例如:
process (clk, rst)
begin
if (rst = '1') then
test <= '0';
elsif (rising_edge(clk)) then
test <= '1';
end if;
我已经用VHDL写了一个简单的RS锁存器,并试图用ISE来综合它。合成器增加了一个D触发器,其中D输入接地,我的(S)et和(R)eset输入被视为预置和清除输入。我以为只会看到NAND门。为什么在不需要触发器的情况下添加触发器?另外,为什么D输入连接到地?
entity rs is
Port ( r : in STD_LOGIC;
s : in STD_LOGIC;
q : inout STD_LOGIC);
end rs;
architecture Behavioral of rs is
begin
process( r, s )
begin