verilog里面如何判断同一个时钟的上升和下降沿
如图所示,我想要从A时钟里面产生B和C时钟的波形。B时钟的波形容易,只要always里面判断A时钟的上升沿然后取反B就可以了。
但是C取反的时刻有时候在上升沿有时候在下降沿,我这样去描述的时候always@(posedge A or negedge A)编译就报错了。
我需要怎样去产生这样的波形呢?请各位指点一下迷津,谢谢!
直接always @ 啊
snkaka 发表于 2015-10-13 07:34
直接always @ 啊
谢谢啊,我试试看。 假定输入时钟是50%占空比的,如果要求输出时钟占空比抖动小,占空比稳定,那么建议时钟时钟模块倍频后分频获得。
如果要求不高,可以用LUT出,就是延迟半周期然后用LUT或:
reg div3 = 'b100;
always @(posedge CLK) begin
div3 <= {div3, div3};
end
reg delay = 1'b0;
always @(negedge CLK) begin
delay <= div3;
end
wire clk_div3 = div3 | delay;
snkaka 发表于 2015-10-13 07:34
直接always @ 啊
你这个是组合逻辑的,不建议采用 4楼的方法可以,但clk_div3最好也用寄存器打一下 2楼方法就行啊,@ a,上升,下降都有啊, yuyu87 发表于 2015-10-13 09:06
2楼方法就行啊,@ a,上升,下降都有啊,
嗯,是的,刚刚试过可以。 aammoo 发表于 2015-10-13 09:00
4楼的方法可以,但clk_div3最好也用寄存器打一下
评论得很好。
对于FPGA而言,除非用2倍频时钟、空引脚或者未绑定引脚的ODDR,来实现;否则麻烦找个支持双沿的FF来呗。
如果有2倍频时钟,直接分就完了,什么都有。 yuyu87 发表于 2015-10-13 09:06
2楼方法就行啊,@ a,上升,下降都有啊,
仿真没问题;综合就不一定出啥了。 3年没动数电,我竟然还能看懂,只能说明二楼太专业了 用@(posedge A or negedge A) 行不? fpga?用pll成不? zxq6 发表于 2015-10-25 12:51
fpga?用pll成不?
CPLD,没有PLL
页:
[1]