library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity vhdlfinal is
port(clk,en:in std_logic;
con:buffer std_logic);
end vhdlfinal;
architecture one of vhdlfinal is
signal q:std_logic_vector(5 downto 0);
begin
process(clk,en)
begin
if en='1' then
if clk'event and clk='1' then q<=q+1;
end if;
elsif en='0' then
if (q<5 or q>7) then q<=(others=>'0');
elsif q=6 then con<=not con;
q<=(others=>'0');
elsif q=7 then con<=not con;
q<=(others=>'0');
else q<=(others=>'0');
end if;
end if;
end process;
end one;
仿真结果如图所示,我想实现的功能是,在en为1时对时钟进行计数,当en为0时结束并判断计数值决定con是否反转,图中第一段脉冲为6,第二段为7,第三段为9,con在第一段结束时发生反转,功能正常,但是在第二段为7时,con却反转多次,请问这是为什么?还有,我还尝试过(q<8 and q>5)这样的条件,结果相同 |