实际上我想制作一个能够启用锁存器的本地控制器。 正如您在下面的代码中看到的那样,信号en将从w AND x获取输出以启用锁存器。之后,w和x将获取en。例如,最初,假设w和x值从1开始,en将变为1并使锁存器从data_in获取数据到data_out。之后,en将成为w和x的输入并导致锁存器禁用。但是,当我使用大学波形程序进行测试时,电路没有工作。 data_out没有取data_in的值。我无法弄清楚我在VHDL中的新问题是什么。希望你能帮助/建议我:)抱歉我的英语不好。
library ieee;
use ieee.std_logic_1164.all;
entity gasp_ctrl is
port(
w,x : inout std_logic; --! bidirectional wire
data_in : in std_logic; --! Data In when latch is enable
data_out: out std_logic --
);
end gasp_ctrl;
architecture ctrl of gasp_ctrl is
signal en, ww, xx : std_logic;
begin
en <= w and x; ------
ww <= en;
xx <= not en;
w <= ww;
x <= xx;
-------- Latch ------
process(en)
begin
if(en = '1') then
data_out <= data_in;
end if;
end process;
end gasp_ctrl;
答案 0 :(得分:1)
您的代码行构成了一个组合循环:
en <= w and x;
ww <= en;
xx <= not en;
w <= ww;
x <= xx;
如果您不想描述异步门和延迟,那么您必须手动实例化基元,否则合成编译器将优化您的线并抱怨信号循环。