quartus VHDL语言仿真问题

[复制链接]
2199|10
 楼主| wdoos 发表于 2012-11-3 17:02 | 显示全部楼层 |阅读模式
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)这样的条件,结果相同

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| wdoos 发表于 2012-11-4 20:02 | 显示全部楼层
木有人会么
lxAPP 发表于 2012-11-4 20:10 | 显示全部楼层
猴哥来帮忙啊
GoldSunMonkey 发表于 2012-11-4 20:41 | 显示全部楼层
语句没有仔细看,但是搭眼看了一下代码,觉得风格太差,可能会造成该结果。
 楼主| wdoos 发表于 2012-11-5 22:34 | 显示全部楼层
5# GoldSunMonkey 说的好蛋疼。。。。。
 楼主| wdoos 发表于 2012-11-5 22:36 | 显示全部楼层
5# GoldSunMonkey 怎样风格不差,我看着挺工整啊,就这么几行
GoldSunMonkey 发表于 2012-11-5 22:37 | 显示全部楼层
5# GoldSunMonkey  说的好蛋疼。。。。。
wdoos 发表于 2012-11-5 22:34

我不知道该怎么回答你。
你认为好,就好呗。我只是建议而已。
星星之火红 发表于 2012-11-18 16:48 | 显示全部楼层
我不知道该怎么回答你。
你认为好,就好呗。我只是建议而已。
GoldSunMonkey 发表于 2012-11-5 22:37
是建议而已哦。
xiao6666 发表于 2012-11-18 17:06 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

46

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部