实验:时钟分频器(整数分频)
一、实验目的
设计一个可配置的时钟分频器模块,能够将输入时钟信号按照50%的占空比进行分频,并输出分频后的时钟信号。
二、实验原理
分频器:使用计数器在时钟信号上升沿或者下降沿进行计数,当计数器的值等于分频系数的一半或者等于分频系数,信号反转。
占空比:高电平占一个周期的比例
三、系统构架设计
共使用工程模块和仿真模块两部分。工程模块中需要包括计时器模块、偶数分频模块、奇数分频模块、奇偶数判断模块。仿真模块包括设置时间单位、定义分频模块、定义分频系数、设置初始值及测试时间周期、模块实例化。
四、模块声明
输入端:时钟信号:clk;复位信号:ret_n;
输出端:分频后信号:outclk。
系统通过计时器cnt实现分频,并产生三个时钟信号(clk1、clk2、clk3)。当给定分频系数divider_in为奇数时,系统会输出outclk为clk1和clk2相或之后的结果,当给定分频系数divider_in为偶数时,系统会输出outclk为clk3。
五、工程代码
module clk1#(parameter divider_in = ?)(
// ports
input clk ,
input rst_n ,
output wire outclk
);
reg [3:0] cnt;
reg clk1;
reg clk2;
reg clk3;
//计时器
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
cnt