verilog时钟分频设计

本文介绍了Verilog中时钟分频的设计方法,包括偶分频、奇分频和半分频。通过实例展示了如何计算分频系数和计数器值,以及相应的Verilog代码实现。对于半分频,文章探讨了设计难点和仿真中的调整,指出这种设计可能需要根据工具和开发板进行调整,建议在实际应用中考虑使用PLL实现。
摘要由CSDN通过智能技术生成

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
	if (rst) begin
		// reset
		counter <= 0;
	end
	else if (counter == N-1) begin
		counter <= 0;
	end
	else begin
		counter <= counter + 1;
	end
end

always @(posedge clk or posedge rst) begin
	if (rst) begin
		// reset
		clk_out <= 0;
	end
	else if (counter == N-1) begin
		clk_out <= !clk_out;
	end
end

endmodule

testbench测试8分频即N=4,ISE仿真结果如下:



2.奇分频模块设计

奇分频需要通过两个时钟共同得到。首先得到分频系数M和计数器值N。

M = 时钟输入频率 / 时钟输出频率

N = (M-1) / 2

如输入时钟为50M,输出时钟为10M,则M=5,N=2。奇分频则意味着M为奇数。

以M=5,N=2为例,我们希望得到的输出时钟时序如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值