分频器定义:

在数字系统的设计中经常会碰到需要使用多个时钟的情况。时钟信号的产生通常具有两种方法,一种是使用PLL(Phase Locked Loop,锁相环),可生成倍频、分频信号;另一种则是使用硬件描述语言构建一个分频电路。

分频器的设计通常分为以下三类:奇数分频器、偶数分频器及小数分频器

偶分频:

假设原来的时钟为clk,N(N为偶数)分频之后的时钟为clk_N,则N分频就是把原来的N个时钟周期变成现在的一个时钟周期。

上图为8分频时序变化,8分频的时钟周期变为原来的分频前时钟的8倍,高电平占中时钟周期的一半,为50%占空比。

2.1verliog

根据上图可以编写任意偶数N分频Verilog代码如下:

对于实现占空比为50%的N倍偶数分频,首先进行上升沿触发进行模N计数,计数选定到某一个值进行输出时钟翻转,然后经过(N>>1)-1再次进行一次时钟翻转。

2.1.1  复位之后先是低电平都是高电平的分频器

else  if(cnt ==((N>>1)-1) || cnt==(N-1))       //N/2个时钟周期翻转一次clk_N <= ~clk_N;        //计满则输出反转

 2.1.2复位之后先是高电平再是低电平的分频器

//N分频电路设计
module divider_N                //模块名
(input      sys_clk,        //时钟(设定为 50MHz)input      sys_rst_n,      //复位信号(n 表示低电平有效)output   reg clk_N           //输出N分频信号
);parameter N==8;//例如N=8
reg [6:0]   cnt;                //reg 定义  //计数模块
//从0计数到N-1共计N个时钟周期
always@(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)cnt <= 7'd0;          //复位清零else if(cnt == (N-1))       //从0开始计数,所以需要 -1cnt <= 7'd0;            //计满则清零elsecnt <= cnt + 7'd1;         //没记满就一直计数
end//N分频时钟输出模块
//满足计数条件则对N分频时钟进行反转
//N分频时钟每隔N/2个周期反转一次,所以N分频的周期即为N个时钟周期
always@(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)                  clk_N <= 1'b0;          //复位清零else  if(cnt ==0 || cnt==((N>>1)-1))        //N/2个时钟周期翻转一次clk_N <= ~clk_N;        //计满则输出反转elseclk_N <= ~clk_N;        //未计满则保持endendmodule

        以上两类在实际运用中并无区别,只不过在牛客网一些测试题中进行了区分。

2.1.3:关于计数器的问题,若复位时刻恰在时钟的上升沿,由于FPGA的并行性质,上升沿采样时的rst_n==0, 因此该时钟周期的cnt==0,rst_n==1。

        

上图就可以很好的解释,复位之后计数器的初始值为0,在时钟的上升沿,cnt立即变为(陡变)cnt==1。

这就说明假如复位信号提前,cnt实际上是从cnt==1开始计数的。

奇分频:

奇分频的含义即为分频数如:3、5、7、9之类奇数数字的分频器,由于奇数无法被2整除,例如在7分频中,奇数分频就会出现占空比为50%的7分频器,高低电平各占3.5个周期。

50%占空比奇分频实现方法

对于实现占空比为50%的N倍奇数分频,首先进行上升沿触发进行模N计数,计数选定到某一个值进行输出时钟翻转,然后经过(N-1)/2再次进行翻转得到一个占空比非50%奇数n分频时钟。

同时进行下降沿触发的模N计数,到和上升沿触发输出时钟翻转选定值相同值时,进行输出时钟时钟翻转,同样经过(N-1)/2时,输出时钟再次翻转生成占空比非50%的奇数n分频时钟。

两个占空比非50%的n分频时钟相或运算,得到占空比为50%的奇数n分频时钟。

`timescale 1ns/1nsmodule odo_div_or(input    wire  rst ,input    wire  clk_in,output   wire  clk_outN);//*************code***********//reg clk_neg, clk_pos;reg [5:0] cnt;always@(posedge clk_in or negedge rst) begin//计数器if(~rst)cnt <= 0;elsecnt <= cnt==(N-1)? 0: cnt+1;endalways@(posedge clk_in or negedge rst) begin//上升沿翻转if(~rst)clk_pos <= 0;elseclk_pos <= (cnt==((N-1)>>1)||cnt==(N-1))? ~clk_pos: clk_pos;endalways@(negedge clk_in or negedge rst) begin//下降沿翻转if(~rst)clk_neg <= 0;elseclk_neg <= (cnt==((N-1)>>1)||cnt==(N-1))? ~clk_neg: clk_neg;endassign clk_outN = clk_neg|clk_pos;
//*************code***********//
endmodule

任意占空比奇分频:

对于实现占空比为50%的N倍奇数分频,首先进行上升沿触发进行模N计数,计数选定到某一个值进行输出时钟翻转,然后经过(N-1)/2再次进行翻转得到一个占空比非50%奇数n分频时钟。

这样就得到了一个占空比为为(N-1)/2 /N的奇分频时钟。


任意小数分频

假设输出clk_out是输入clk_in的N分频。首先要将分频系数N化为分数形式,比如3.4→34/10​。本题中,8.7可以化为87/10。这意味着在87个clk_in周期内输出10个clk_out周期就可以实现分频。

然后采用若干种(一般是两种)整数分频在87个原周期clk_in内产生10个新时钟周期clk_out。整数分频的分频系数有很多种选择,但要尽可能接近,提高clk_out的均匀度。一般推荐在小数分频系数N的附近选取。因为8<N<9,所以两个整数分频系数是8和9。接着要计算87个clk_out周期分别有多少个是8分频和9分频的。设每10个clk_out中有x个8分频输出和y个9分频输出,则可列出如下方程:

可得x=3,y=7。也就是3个8分频和7个9分频一组,循环输出,就等效于8.7分频。 最后安排组内8分频和9分频的位置。这里的方法也不固定,不过本题要求3个8分频先输出,再输出7个9分频,如下图。

3个8分频先输出,再输出7个9分频

`timescale 1ns/1nsmodule div_M_N(input  wire clk_in,input  wire rst,output wire clk_out
);
parameter M_N = 8'd87;
parameter c89 = 8'd24; // 8/9时钟切换点
parameter div_e = 5'd8; //偶数周期
parameter div_o = 5'd9; //奇数周期
//*************code***********//
reg [7:0] cnt;reg [4:0] cnt1,cnt2;reg clk1, clk21, clk22;wire clk_2;always@(posedge clk_in or negedge rst)//89计数器if(!rst)cnt<=0;else cnt<= (cnt==(M_N-1))? 0: cnt+1;always@(posedge clk_in or negedge rst)//计数器if(!rst)cnt1<=0;else if(cnt<=c89)cnt1<=(cnt1==5'd7)? 0 : cnt1+1;elsecnt1<=0;always@(posedge clk_in or negedge rst)//偶数8分频if(!rst)clk1<=0;else if(cnt1 == 3'b0 || cnt1 == div_e / 2)clk1<=~clk1;elseclk1<=clk1;always@(posedge clk_in or negedge rst)//奇数分频计数器if(!rst)cnt2<=0;else if(cnt>=c89)cnt2<=(cnt2==5'd8)? 0 : cnt2+1;elsecnt2<=0;always@(posedge clk_in or negedge rst)//奇数分频if(!rst)clk21<=0;elseif(cnt2 == 4'b0 || cnt2 == (div_o - 1'b1) / 2)clk21<=~clk21;elseclk21<=clk21;assign clk_out = (cnt <= c89 )? clk1 : clk21;//*************code***********//
endmodule

以上就是任意偶数分频器,奇数分频器,小数分频器的知识点,其简单来说都是计数器+时钟翻转电路的两部分组成。

以上代码N经过替换之后是可以直接使用的,希望大家可以多多点赞支持。

分频器——(任意奇分频(50%占空比、非50%占空比),任意偶分频,任意小数分频)相关推荐

  1. Verilog-实现时钟分频(1KHZ、奇、偶分频,占空比为50%)

    文章目录 一.将系统时钟50MHZ分为占空比为50%的1khz时钟 二.偶数分频: 三.奇数分频: 一.将系统时钟50MHZ分为占空比为50%的1khz时钟 本篇文章使用Xilinx公司的ISE软件 ...

  2. 奇偶分频电路设计(任意占空比、50%占空比)

    一.概述 分频电路一般就是以输入源时钟为参考,将其进行降频输出:分频可以使用锁相环时钟资源实现,也可以计数为基础,进行分频设计.本文主要记录后者的相关问题. 二.偶分频 1.一些概念 分频数:即降频倍 ...

  3. 设计占空比为50%的三分频电路

    设计占空比为50%的三分频电路 时序图工具 {signal: [ {name: 'clk', wave: 'P-P-'}, {name: 'clk1', wave: 'H.LH.LH.L'}, {na ...

  4. STM32通过PWM产生频率为20HZ占空比为50%方波,并通过单片机测量频率并显示

    已经有快半年没有整过32单片机,为了准备电赛最近又复习了一下单片机相关的知识.发现只是看教程.手册没有啥的也不知道自己有没有学会,于是决定做一个小小的测试.测试内容是通过PWM产生频率为20HZ的占空 ...

  5. FPGA分频电路实现(奇数,偶数,小数半分频,任意分频)

    https://blog.csdn.net/weixin_43950612/article/details/104687942(简介明了,奇数,偶数,小数,任意分频) http://www.myexc ...

  6. 16 分频 32 分频是啥意思_Verilog中任意分频的实现

    在这里讲的是利用计数器进行对clk分频,在rtl code 设计中,由于各个ip的时钟频率不同,所以我们经常要对系统clk进行分频,下面是它的代码以及要实现的功能. //功能:对输入时钟clock进行 ...

  7. 50天内50个CVE:模糊测试Adobe Reader

    50天内50个CVE:模糊测试Adobe Reader 介绍 2017年是漏洞领域的一个转折点. 当年报告的新漏洞数量约为14,000,是前一年的两倍(见下表). 可能的原因是自动漏洞查找工具(也称为 ...

  8. c语言中的两个百分号什么意思,百分号的用法,特别是在两个量词之间的用法,例如50%—70%和50—70%...-百分号-语文-彭都宰同学...

    概述:本道作业题是彭都宰同学的课后练习,分享的知识点是百分号,指导老师为屠老师,涉及到的知识点涵盖:百分号的用法,特别是在两个量词之间的用法,例如50%-70%和50-70%...-百分号-语文,下面 ...

  9. mysql char 50_MySQL中数据类型varchar(50)和char(50)是完全相同的。

    [填空题]用在子查询前,用于判断子查询结果不为空集的特殊判断词是___. [单选题]下列哪项不属于单片机最小系统组织部分? [简答题] [单选题]根据皮亚杰的认知发展理论,13岁幼儿处于( )阶段 [ ...

最新文章

  1. html 省份,城市 选择器附效果图
  2. 约会安排 (区间合并)毒瘤题
  3. php mssql image,php5连接mssql2005数据库表中的image字段图片显示
  4. 大数据读书笔记(1)
  5. 二叉树的基本概念以及基本操作
  6. ALL in BERT:一套操作冲进排行榜首页
  7. System V IPC之消息队列
  8. linux下使用source执行文件的含义
  9. SQLite jdbc驱动
  10. 右脑记忆法的个人理解
  11. 天才程序员之陨落:在业余项目创业 Cloudflare,公司上市前患病失去自理能力...
  12. windows server 2016 活动目录部署系列(十一)AD域控上安装证书服务器
  13. docker容器化部署
  14. java 关于xml的注解,自动生成xml文件 - @XML***
  15. Dashboard安装配置
  16. linux下简单配置zlib软件
  17. vue自适应企业门户模板
  18. 前端HTML/CSS模板
  19. 软考证书什么时候可以领到手?
  20. 小程序录音上传服务器,微信小程序录音实现功能并上传(使用node解析接收)

热门文章

  1. mac ios pods 使用小结
  2. canon相机镜头协议数据用python进行格式化
  3. 日均语音请求量突破10亿次,百度输入法的又一个起点
  4. ZED2相机同步订阅rgb与depth话题用于室内场景分析
  5. [模板] BSGS/扩展BSGS
  6. 计算机二级考试学校会有课程安排吗,沈阳达尔文学校从多角度操控国家计算机二级考试...
  7. Qt 播放Yuv420p视频
  8. 中移物联OneNet的市场战略的思考
  9. ps正在计算机,【2人回答】正在用Photoshop作图时死机了怎么办,电脑没死机,就Ps卡住不能操作了,图还没保存,不想丢图?-3D溜溜网...
  10. 2021-2027全球与中国工程用全站仪市场现状及未来发展趋势