verilog语言实现任意分频.doc

verilog语言实现任意分频.doc

ID:27520796

大小:107.00 KB

页数:5页

时间:2018-12-04

verilog语言实现任意分频.doc_第1页
verilog语言实现任意分频.doc_第2页
verilog语言实现任意分频.doc_第3页
verilog语言实现任意分频.doc_第4页
verilog语言实现任意分频.doc_第5页
资源描述:

《verilog语言实现任意分频.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、verilog语言实现任意分频  原文出自:分频器是指使输出信号频率为输入信号频率整数分之一的电子电路。在许多电子设备中如电子钟、频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种频率成分,分频器是一种主要变换手段。早期的分频器多为正弦分频器,随着数字集成电路的发展,脉冲分频器(又称数字分频器)逐渐取代了正弦分频器。下面以VerilogHDL语言为基础介绍占空比为50%的分频器。1偶分频偶分频比较简单,假设为N分频,只需计数到N/2-1,然后时钟翻转、计数清零,如此循环就可以

2、得到N(偶)分频。代码如下。modulefp_even(clk_out,clk_in,rst);outputclk_out;inputclk_in;inputrst;reg[1:0]cnt;regclk_out;parameterN=6;always@(posedgeclk_inornegedgerst)beginif(!rst)begincntRTLSchemaTIc:  SimulateBehavioralModel:  同理,可以通过改变参量N的值和计数变量cnt_p和cnt_n的位宽实现任意奇分频。3任意占空比的任意分频在veri

3、log程序设计中,我们往往要对一个频率进行任意分频,而且占空比也有一定的要求这样的话,对于程序有一定的要求,现在在前面两个实验的基础上做一个简单的总结,实现对一个频率的任意占空比的任意分频。比如:FPGA系统时钟是50MHz,而我们要产生的频率是880Hz,那么,我们需要对系统时钟进行分频。很容易想到用计数的方式来分频:50000000/880=56818。显然这个数字不是2的整幂次方,那么我们可以设定一个参数,让它到56818的时候重新计数就可以实现了。程序如下:modulediv(clk,clk_div);inputclk;outpu

4、tclk_div;reg[15:0]counter;always@(posedgeclk)if(counter==56817)counter<=0;elsecounter<=counter+1;assignclk_div=counter[15];endmodule分频的应用很广泛,一般的做法是先用高频时钟计数,然后使用计数器的某一位输出作为工作时钟进行其他的逻辑设计,上面的程序就是一个体现。下面我们来算一下它的占空比:我们清楚地知道,这个输出波形在counter为0到32767的时候为低,在32768到56817的时候为高,占空比为40%

5、多一些,如果我们需要占空比为50%,那么我们需要再设定一个参数,使它为56817的一半,使达到它的时候波形翻转,就可以实现结果了。程序如下:modulediv(clk,clk_div);inputclk;outputclk_div;reg[14:0]counter;always@(posedgeclk)if(counter==28408)counter<=0;elsecounter<=counter+1;regclk_div;always@(posedgeclk)if(counter==28408)clk_div<=~clk_div;en

6、dmodule继续让我们来看如何实现任意占空比,比如还是由50M分频产生880Hz,而分频得到的信号的占空比为30%。56818&TImes;30%=17045modulediv(clk,reset,clk_div,counter);inputclk,reset;outputclk_div;output[15:0]counter;reg[15:0]counter;regclk_div;always@(posedgeclk)if(!reset)counter<=0;elseif(counter==56817)counter<=0;elsec

7、ounter<=counter+1;always@(posedgeclk)if(!reset)clk_div<=0;elseif(counter<17045)clk_div<=1;elseclk_div<=0;endmoduleRTL级描述:  仿真结果:  4小结通过以上几个例子对比不难发现,借助计数器来实现任意点空比的任意分频的方法简单,且用verilog语言进行行为描述时,代码简洁、易懂、通用。通过以上的学习,对分频器有了比较深刻的认识,将在以后的学习中会有广泛的应用。

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

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

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