Verilog中想要让某个项延迟几个时钟周期,最好的办法是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Verilog中想要让某个项延迟几个时钟周期,最好的办法是啥相关的知识,希望对你有一定的参考价值。

比如说always@(posedge clk) begin
a<=b;
b<=c ;
end
这种写法用来延迟两个时钟周期好不好?感觉这种方法有点笨啊

参考技术A   你这个程序可以,设计者也有这样写的。如果对输入信号c延迟N个周期,可以这样:

  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中想要让某个项延迟几个时钟周期,最好的办法是啥的主要内容,如果未能解决你的问题,请参考以下文章

verilog 实现一个时钟

verilog分频模块设计

quartus里用原理图的方法进行仿真时,为啥输出比输入延迟了一个时钟周期,有啥解决的办法吗?

Verilog如何检测一个时钟周期肿的翻转?

在verilog语言编程中,我想设置等待时间比如:1ms啥的该怎么设置?

verilog中除法运算在modelsim仿真中只要一个时钟周期就能完成,实际上也是这样吗?