分频器——(任意奇分频(50%占空比、非50%占空比),任意偶分频,任意小数分频)
分频器定义:
在数字系统的设计中经常会碰到需要使用多个时钟的情况。时钟信号的产生通常具有两种方法,一种是使用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%占空比),任意偶分频,任意小数分频)相关推荐
- Verilog-实现时钟分频(1KHZ、奇、偶分频,占空比为50%)
文章目录 一.将系统时钟50MHZ分为占空比为50%的1khz时钟 二.偶数分频: 三.奇数分频: 一.将系统时钟50MHZ分为占空比为50%的1khz时钟 本篇文章使用Xilinx公司的ISE软件 ...
- 奇偶分频电路设计(任意占空比、50%占空比)
一.概述 分频电路一般就是以输入源时钟为参考,将其进行降频输出:分频可以使用锁相环时钟资源实现,也可以计数为基础,进行分频设计.本文主要记录后者的相关问题. 二.偶分频 1.一些概念 分频数:即降频倍 ...
- 设计占空比为50%的三分频电路
设计占空比为50%的三分频电路 时序图工具 {signal: [ {name: 'clk', wave: 'P-P-'}, {name: 'clk1', wave: 'H.LH.LH.L'}, {na ...
- STM32通过PWM产生频率为20HZ占空比为50%方波,并通过单片机测量频率并显示
已经有快半年没有整过32单片机,为了准备电赛最近又复习了一下单片机相关的知识.发现只是看教程.手册没有啥的也不知道自己有没有学会,于是决定做一个小小的测试.测试内容是通过PWM产生频率为20HZ的占空 ...
- FPGA分频电路实现(奇数,偶数,小数半分频,任意分频)
https://blog.csdn.net/weixin_43950612/article/details/104687942(简介明了,奇数,偶数,小数,任意分频) http://www.myexc ...
- 16 分频 32 分频是啥意思_Verilog中任意分频的实现
在这里讲的是利用计数器进行对clk分频,在rtl code 设计中,由于各个ip的时钟频率不同,所以我们经常要对系统clk进行分频,下面是它的代码以及要实现的功能. //功能:对输入时钟clock进行 ...
- 50天内50个CVE:模糊测试Adobe Reader
50天内50个CVE:模糊测试Adobe Reader 介绍 2017年是漏洞领域的一个转折点. 当年报告的新漏洞数量约为14,000,是前一年的两倍(见下表). 可能的原因是自动漏洞查找工具(也称为 ...
- c语言中的两个百分号什么意思,百分号的用法,特别是在两个量词之间的用法,例如50%—70%和50—70%...-百分号-语文-彭都宰同学...
概述:本道作业题是彭都宰同学的课后练习,分享的知识点是百分号,指导老师为屠老师,涉及到的知识点涵盖:百分号的用法,特别是在两个量词之间的用法,例如50%-70%和50-70%...-百分号-语文,下面 ...
- mysql char 50_MySQL中数据类型varchar(50)和char(50)是完全相同的。
[填空题]用在子查询前,用于判断子查询结果不为空集的特殊判断词是___. [单选题]下列哪项不属于单片机最小系统组织部分? [简答题] [单选题]根据皮亚杰的认知发展理论,13岁幼儿处于( )阶段 [ ...
最新文章
- html 省份,城市 选择器附效果图
- 约会安排 (区间合并)毒瘤题
- php mssql image,php5连接mssql2005数据库表中的image字段图片显示
- 大数据读书笔记(1)
- 二叉树的基本概念以及基本操作
- ALL in BERT:一套操作冲进排行榜首页
- System V IPC之消息队列
- linux下使用source执行文件的含义
- SQLite jdbc驱动
- 右脑记忆法的个人理解
- 天才程序员之陨落:在业余项目创业 Cloudflare,公司上市前患病失去自理能力...
- windows server 2016 活动目录部署系列(十一)AD域控上安装证书服务器
- docker容器化部署
- java 关于xml的注解,自动生成xml文件 - @XML***
- Dashboard安装配置
- linux下简单配置zlib软件
- vue自适应企业门户模板
- 前端HTML/CSS模板
- 软考证书什么时候可以领到手?
- 小程序录音上传服务器,微信小程序录音实现功能并上传(使用node解析接收)
热门文章
- mac ios pods 使用小结
- canon相机镜头协议数据用python进行格式化
- 日均语音请求量突破10亿次,百度输入法的又一个起点
- ZED2相机同步订阅rgb与depth话题用于室内场景分析
- [模板] BSGS/扩展BSGS
- 计算机二级考试学校会有课程安排吗,沈阳达尔文学校从多角度操控国家计算机二级考试...
- Qt 播放Yuv420p视频
- 中移物联OneNet的市场战略的思考
- ps正在计算机,【2人回答】正在用Photoshop作图时死机了怎么办,电脑没死机,就Ps卡住不能操作了,图还没保存,不想丢图?-3D溜溜网...
- 2021-2027全球与中国工程用全站仪市场现状及未来发展趋势