Verilog中想要让某个项延迟几个时钟周期,最好的办法是啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Verilog中想要让某个项延迟几个时钟周期,最好的办法是啥相关的知识,希望对你有一定的参考价值。
比如说always@(posedge clk) begin
a<=b;
b<=c ;
end
这种写法用来延迟两个时钟周期好不好?感觉这种方法有点笨啊
reg [N-1:0] b;
wire a;
always@(posedge clk) begin
b <= b[N-1:1],c;
end
assigna = b[N-1];本回答被提问者和网友采纳
verilog分频模块设计
verilog设计:
分频器的设计:
分频器就是将一个时钟源的频率降低的过程(可以通过观察分频之后周期中包含几个原时钟周期来看是几分频),分频分为基数分频也分为偶数分频,
偶数分频的代码如下:(其中就是计数器翻转的过程)
1 module div(clk,rst_n); 2 input clk,rst_n; 3 4 reg clk_1k;//1k Hz的时钟 5 reg [20:0] count; //计数器 6 parameter div = 6;//这个分频为了方便仿真,随意定了个较小的值,10分分频 7 parameter flag=div/2-1; 8 9 always @(posedge clk or negedge rst_n) 10 begin 11 if(!rst_n) 12 begin 13 clk_1k <= 1; 14 count <= flag; 15 end 16 else 17 if(count < flag) 18 count <= count + 1; 19 else 20 begin 21 count <= 0 ; 22 clk_1k <= ~clk_1k; 23 end 24 end 25 endmodule
奇数分频(计数不用以整个周期为单位)
1 module intec(clk,rst_n); 2 input clk,rst_n; 3 4 reg clk_1k;//1k Hz的时钟 5 reg [20:0] count; //计数器 6 parameter div = 3;//这个分频为了方便仿真,随意定了个较小的值,10分分频 7 parameter flag=div-1; 8 9 always @(clk or negedge rst_n) 10 begin 11 if(!rst_n) 12 begin 13 clk_1k <= 1; 14 count <= flag; 15 end 16 else 17 if(count < flag) 18 count <= count + 1; 19 else 20 begin 21 count <= 0 ; 22 clk_1k <= ~clk_1k; 23 end 24 end 25 endmodule
以上是关于Verilog中想要让某个项延迟几个时钟周期,最好的办法是啥的主要内容,如果未能解决你的问题,请参考以下文章
quartus里用原理图的方法进行仿真时,为啥输出比输入延迟了一个时钟周期,有啥解决的办法吗?