文档库

最新最全的文档下载
当前位置:文档库 > verilog可以对同一个时钟进行上升沿和下降沿采样吗

verilog可以对同一个时钟进行上升沿和下降沿采样吗

verilog可以对同一个时钟进行上升沿和下降沿采样吗

verilog可以对同一个时钟进行上升沿和下降沿采样吗

verilog可以对同一个时钟进行上升沿和下降沿采样吗

verilog可以对同一个时钟进行上升沿和下降沿采样吗?

(本文根据网上的一些论坛和日志整理)

verilog可以对同一个时钟进行上升沿和下降沿采样吗:always@(posedgeclk or negedgeclk),编译出错。

不行的,除非利用器件提供的特殊接口(主要供DDR这样的东西使用)

因为实际上并没有同时对上升和下降沿都可以触发的触发器。

有三种方法:

(一)always@(clk)begin

...

end

一般来说,最好不要这样用,因为综合器对时钟优化的时候,对上升沿有优化,对下降沿没有。

所以,如果用下降沿采样的话,时序可能会达不到要求。

更多请参考http://www.wendangku.net/doc/df2be44a336c1eb91a375d65.html/sunhuifxd@126/blog/static/5585944320110234430250/

(二)always@(posedgeclk)begin

...

end

always@(negedgeclk)begin

...

end

注意:不能在两个always里边对同一个量进行操作。

(三)先通过PLL锁相环产生两个频率相同相位差为180度的clk,然后在每个clk的上升沿输出

always@(posedge clk1)begin

...

end

always@(posedge clk2)begin

...

end

上面的方法都可以,一般使用后两种。上升沿和下降沿都使用,就相当于是电平触发,电平触发比时钟沿触发更容易受到干扰,解决方法就是上面的第三种,或者倍频,再都用上升沿。

分成两个always块即可,不过这种情况最好使用FPGA/CPLD现成的双边沿DFF接口来做。