如何解决D触发器在模拟时不起作用,modelsim
我一直试图让它起作用,但是当我模拟我的代码时,两个触发器之一不起作用。如屏幕截图所示,当输入为 0 时,输出为 1,这不是它应该的工作方式。
entity practica2 is
port (clk,rst: in std_logic;
x: in std_logic_vector (1 downto 0);
z: out std_logic);
end practica2;
architecture apartadoB of practica2 is
signal s: std_logic_vector (3 downto 0);
signal q: std_logic_vector (1 downto 0);
signal nq: std_logic_vector (1 downto 0);
signal nx: std_logic_vector (1 downto 0);
signal qp: std_logic_vector (1 downto 0);
begin
not_x1: entity work.not1 port map(x(1),nx(1));
not_x0: entity work.not1 port map(x(0),nx(0));
not_q1: entity work.not1 port map(q(1),nq(1));
not_q0: entity work.not1 port map(q(0),nq(0));
and_1_q0: entity work.and3 port map(nq(0),nx(1),nx(0),s(1));
and_2_q0: entity work.and3 port map(q(1),s(0));
or_q0: entity work.or2 port map(s(1),s(0),qp(0));
flip_d_q0: entity work.flipflopD port map(clk,rst,qp(0),q(0));
and_1_q1: entity work.and4 port map(nq(1),q(0),s(3));
and_2_q1: entity work.and4 port map(q(1),nq(0),s(2));
or_q1: entity work.or2 port map(s(3),s(2),qp(1));
flip_d_q1: entity work.flipflopD port map(clk,qp(1),q(1));
and_q1_q0: entity work.and2 port map(q(1),z);
end apartadoB;
这是我的练习代码。这是触发器代码,我无法更改:
entity flipflopD is
port(clk,D: in std_logic;
Q: out std_logic);
end flipflopD;
architecture funcional of flipflopD is
begin
process(clk,rst)
begin
if rst = '1' then
Q <= '0';
elsif rising_edge(clk) then
Q <= D;
end if;
end process;
end funcional;
这是模拟,在flip_d_q1中,D是'0',Q是'1':
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。