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
原文地址:https://www.cnblogs.com/yskn/p/9309655.html