【FPGA】分频电路设计(Verilog HDL设计)(良心博文)

目录

前言

分频器分类

偶分频

奇分频

占空比为50%的奇分频

占空比不限定的奇数分频器



前言

虽然在实际工程中要产生分频时钟一般采用FPGA的时钟管理器来进行分频、倍频,通过设置一下IP核中的参数即可,这样做有很多别的方法(例如:直接用Verilog HDL设计分频电路)达不到的效果,产生时钟的质量也更好,因此,一般而言,也推荐这种方法,但这并非意味着直接用Verilog HDL设计分频电路一无是处,毫无用途。

如果对时钟的性能要求不高,我就自然就可以用这种方法产生分频时钟,这样就只消耗了少量的资源而实现了时钟的分频要求,我们把这种设计叫做分频器设计。

注意:分频电路可以这么设计,但倍频电路呢?恐怕写不出来吧!只能用IP核来产生。

本博文直接给出设计原理和Verilog HDL设计程序以及测试程序和仿真图,是不是够贴心?


分频器分类

分频器分为偶分频、奇分频,下面分别介绍二者的设计原理。



偶分频

对于偶分频电路,一般做法是通过计数器计数,达到计数值上限(上限值为N/2-1,N为分频数目)后输出时钟取反同时计数器归零。例如10分频,用计数器计数基准时钟周期个数cnt(cnt初值为0)(计数上升沿出现的次数即可),当cnt计数为4时候,分频时钟翻转一次,同时cnt清零,继续计数。

  • Verilog HDL设计程序为:
//偶分频电路的Verilog HDL设计(10分频为例)
module even_freq_div(clk, rst, clk_div10,cnt);

input clk;
input rst;
output clk_div10;
reg clk_div10;
output [2:0] cnt;          //输出cnt的原因是为了看到计数次数,便于分析仿真结果。
reg [2:0] cnt;



always @(posedge clk)
begin
	if(rst)  //复位信号有效;
	begin
		cnt <= 0;          //计数器清零
		clk_div10 <= 0;    //输出清零;
	end
	else     //复位信号无效;
	begin
		if(cnt == 4)                //每一次时钟上升沿到来时,都检查一次计数值是否达到4;
		begin
			clk_div10 <= ~clk_div10;
			cnt <= 0; //计数器计数到4后,重新清零&#
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李锐博恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值