1.偶分频模块设计
偶分频意思是时钟模块设计最为简单。首先得到分频系数M和计数器值N。
M = 时钟输入频率 / 时钟输出频率
N = M / 2
如输入时钟为50M,输出时钟为25M,则M=2,N=1。偶分频则意味着M为偶数。
以M=4,N=2为例,我们希望得到的输出时钟时序如下:
因此只需要将counter以clk_in为时钟驱动计数,当counter = (N-1)时,clk_out翻转即可。
verilog代码如下,其中WIDTH为(N的位宽-1):
module time_adv_even #(
parameter N = 2,
WIDTH = 7
)
(
input clk,
input rst,
output reg clk_out
);
reg [WIDTH:0]counter;
always @(posedge clk or posedge rst) begin