如何避免同时捕捉时钟的上升沿和下降沿?
时间:10-02
整理:3721RD
点击:
想在clk的上升沿和下降沿各处理一些事件,如
process(clk)
begin
if clk'event and clk='1' then
b<=a;
elsif clk'event and clk='0' then
c<=a;
end if;
end process;
即上升沿和下降沿的事件互不相关,就是不会向同一个信号赋值。在quartus中能编译,仿真结果也没问题,但网上一直强调避免同时使用一个信号的上升沿和下降沿,鉴于此,问2个问题:1. 该例的方式是不是不对或不推荐?2. 该例怎样修改才能避免同时捕捉时钟的上升沿和下降沿?
process(clk)
begin
if clk'event and clk='1' then
b<=a;
elsif clk'event and clk='0' then
c<=a;
end if;
end process;
即上升沿和下降沿的事件互不相关,就是不会向同一个信号赋值。在quartus中能编译,仿真结果也没问题,但网上一直强调避免同时使用一个信号的上升沿和下降沿,鉴于此,问2个问题:1. 该例的方式是不是不对或不推荐?2. 该例怎样修改才能避免同时捕捉时钟的上升沿和下降沿?
分为两个process应该可以。
没有遇到过这样的
一定要如此吗?可不可以改变设计
2# gaurson 这样可以的
谢谢支持。
谢谢各位指点。本意是想在上升沿做一个计数器,然后在下降沿根据计数值输出脉冲,因为如果在上升沿输出的话会有大量毛刺,如果谁有更好的方法,请指点一二。
不建议,在一个设计中同时使用时钟的上下沿,除非是DDR
同步电路的优点就是抗毛刺
只要满足建立时间和保持时间
毛刺不怕
同一楼上
只要不是特别高速的时钟,可以这么做,不过确实要分成两个进程来处理。
好老的帖子,不过刚刚是我想知道的答案,如果是对sram的读写操作呢,能否同时处理上升沿和下降沿,因为不这样处理的,速度会慢一倍,要协调好,一个进程会更加好协调,看到有说最好是分开进程完成,可以说一下为什么吗?
