打印

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

[复制链接]
2195|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;

VHDL.JPG (19.46 KB )

波形图

波形图

相关帖子

沙发
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需要时延的时候加入。

使用特权

评论回复
5
lianshumou| | 2010-11-25 15:01 | 只看该作者
在单级同步电路中,  结果总是比条件晚一个时钟周期!

使用特权

评论回复
6
charrijon| | 2010-11-26 17:17 | 只看该作者
4楼的说法是对的,你在最后又等了一拍

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

9

帖子

1

粉丝