wdoos 发表于 2012-11-3 16:26:11

quartus VHDL语言仿真问题

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 issignal 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)这样的条件,结果相同
页: [1]
查看完整版本: quartus VHDL语言仿真问题