一个关于波形为什么在计数器值为1的时候跳变,而不是在0

[复制链接]
3099|5
 楼主| zhaopanzz 发表于 2010-10-23 15:35 | 显示全部楼层 |阅读模式






entity fenpin is
port( clk: in std_logic;
      q: out std_logic)end fenpin;                                            
architecture s1 of fenpin is                  
  signal p :std_logic;
  signal a:std_logic_vector(2 downto 0);
  begin
  process(clk)
   --variable a:std_logic_vector(2 downto 0);
        
  begin
   
    if clk'event and clk='1' then
       if a="111" then  
         a<="000";
         p<=not p;
       else
    a<=a+1;
    end if;
    q<=p;
    end if;
   end process;  
end s1;

本帖子中包含更多资源

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

×
 楼主| zhaopanzz 发表于 2010-10-23 17:39 | 显示全部楼层
请大家帮忙解决啊 谢谢了
mr.king 发表于 2010-10-24 08:23 | 显示全部楼层

只是分频也无所谓,如果a数据与后面跳变有相关,看下面

本帖最后由 mr.king 于 2010-10-24 08:25 编辑

你把P波形显示出来就明白了
sxhhhjicbb 发表于 2010-11-13 22:06 | 显示全部楼层
end if;
    q<=p;
    end if;
这在P送到q的时候,时钟等了一拍。a和p是时序同步的。你时序图上是q和a,故q忙了a一拍。
这种语句常用在q需要时延的时候加入。
lianshumou 发表于 2010-11-25 15:01 | 显示全部楼层
在单级同步电路中,  结果总是比条件晚一个时钟周期!
charrijon 发表于 2010-11-26 17:17 | 显示全部楼层
4楼的说法是对的,你在最后又等了一拍
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

9

帖子

1

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