一个很简单的模块,模块实现的功能是,在B输入的第一个脉冲下降沿将C拉低,此后C一直为低,如图:
仿真正常,如图:
现在想省一个口线,于是将A去掉,直接接入VCC,如图:
仿真,C无反应,如图:
请问是什么原因造成仿真时如果将A设为输入口就正常,直接置为1就不对?
说明:
A实际就是一个全局使能信号,作用是将C初始化为1,仅此功能。
附模块代码如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ABC is port
(
A: in std_logic;
clk: in std_logic;
B: in std_logic;
Bdelay: in std_logic;
C: out std_logic
);
end ABC;
architecture behavior of ABC is
signal Bpulse: std_logic;
signal Cpulse: std_logic;
begin
process(A,clk)
begin
if rising_edge(clk) then
if B = '0' and Bdelay = '1' then
Bpulse <= '1';
else
Bpulse <= '0';
end if;
end if;
if A = '0' then
Cpulse <= '1';
elsif rising_edge(clk) then
if Bpulse = '1' then
Cpulse <= '0';
end if;
end if;
end process;
C <= Cpulse;
end behavior;
|