任意分数分频Verilog实现

任意分数分频Verilog实现

ID:38653174

大小:42.50 KB

页数:5页

时间:2019-06-17

任意分数分频Verilog实现_第1页
任意分数分频Verilog实现_第2页
任意分数分频Verilog实现_第3页
任意分数分频Verilog实现_第4页
任意分数分频Verilog实现_第5页
资源描述:

《任意分数分频Verilog实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、任意分数Verilog实现      网上常见的多为小数分频,分数分频也为有规律的分频,如N/2、M-1/N等。而像M/N型分数分频却很少。现介绍一下本人的分数分频实现方法,如果不当之处敬请指教。      分数分频实现基本上都是靠吞脉冲方法实现,如5/2分频,就可以分成一个2分频,一个3分频接替出现,这样(2+3)/2就是5/2分频。      下面以68/9为例介绍下怎么计算。      68=9*7+5,即商为7,余数为5。可以推出68/9分频,可以看成5个8分频和4个7分频,即(5*8+

2、4*7)/9=68/9。这个7分频和8分频中的数字7和8就是从商中得出来的。那5个8分频和4个7分频中的数字5和4就是从余数中的出来的,5是余数,4是(9-5)。      分子:numerator。分母denominator。商quotient。余数remainder。(翻译不是很准确,表达下意思就行了,呵呵)。      numerator=quotient*denominator+remainder.那么numerator/denominator分频就可以通过remainder个(quot

3、ient+1)分频和(denominator-remainder)个quotient分频组成。      还是以68/9为例。我们得出了5个8分频和4个7分频可以实现这个分数分频,但这5个8分频和4个7分频怎么放置呢?      先放5个8分频,再放4个7分频,这样绝对是不行的。为了均匀的放置这两种频率,我从小数分频中学到一种方法。找个临时变量temp(程序中用的是sum)。初始化为0。每次分频完让它加上余数,判断是否大于分母,如果小于分母,择输出7分频,否则输出8分频,并且将这个值减去分母(让

4、它小于分母)。这样temp值就变成了5162738405……分频值就成了787878788787878788……可以统计一下7分频和8分频的比例就正好是4:5,这样就实现了分数分频。      程序如下所示:输入信号:clk,rst,clkin(要分频的时钟信号),numerator(分子),denominator,(分母)输出信号:pulse中间信号:quotient(商),remainder(余数)等hightime为输出信号pulse输出高电平时间,可控制占空比/*************

5、************************************ //modulename:fredivAB //designer:kang //date:2010-10-08 //version:1.00 *************************************************/modulefredivAB(           //inputsignals           clk,           rst,           clkin,     

6、      numerator,     //fenzi           denominator,   //fenmu           //outputsignals           pulse                 );inputclk;inputrst;inputclkin;input[15:0]numerator;input[15:0]denominator; outputpulse;regpulse; //parameterHIGHTIME=16'd2; wire[

7、15:0]quotient;  //shangwire[15:0]remainder; //yushuregina;reginb;regupclk;regcounter_clkin;reg[15:0]counter;reg[15:0]divnum;reg[15:0]sum;regflag;reg[15:0]counter_pulseh;wire[15:0]hightime; assignquotient=(denominator)?numerator/denominator:16'h0;assi

8、gnremainder=(denominator)?numerator%denominator:16'h0;assignhightime={1'b0,quotient[15:1]};//assignhightime=16'h1; //savethepriorandcurrentstateofclkinalways@(posedgeclkornegedgerst)   begin   if(!rst)       begin       ina<=0;       inb<=0;       en

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。