verilog奇偶分频

verilog奇偶分频

ID:39469627

大小:74.00 KB

页数:7页

时间:2019-07-04

verilog奇偶分频_第1页
verilog奇偶分频_第2页
verilog奇偶分频_第3页
verilog奇偶分频_第4页
verilog奇偶分频_第5页
资源描述:

《verilog奇偶分频》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、奇偶分频电路的设计在数字逻辑电路中,分频器是一种常用电路,通常用来对某个给定的频率进行分频,以得到所需的频率。1.1、偶数分频电路偶数倍分频是最简单的一种分频模式,完全可以通过计数器计数实现,如果要进行N倍(N为偶数)偶数分频,可由待分频的时钟触发计数器计数,当计数器从0计数到N/2—1时,输出时钟进行翻转,并给计数器一个复位信号,使得下一个时钟从零开始计数,以此循环下去。这种方法可以实现任意的偶数分频。下面的程序给出的是一个16分频电路,其他倍数的分频电路可以通过修改计数器的上限值得到。用Verilog实现一个16分频电路,其源程序如下。moduleclk_div16(

2、clk_in,reset,clk_out);inputclk_in;inputreset;outputclk_out;regclk_out;reg[2:0]cnt;always@(posedgeclk_in)beginif(!reset)begincnt<=0;clk_out<=0;endelseif(cnt==7)beginclk_out<=~clk_out;cnt<=0;endelsebegincnt<=cnt+1;//clk_out<=clk_out;endendendmodule测试激励程序如下:moduleclk_div16_tb;regclk_in;regre

3、set;wireclk_out;clk_div16uut(.clk_in(clk_in),.reset(reset),.clk_out(clk_out));initialbegin//InitializeInputsclk_in=0;reset=0;#10reset=1;endalways#2clk_in=~clk_in;endmodule上述程序经过SynplifyPro综合后,其RTL级结构如下图所示在ModelSim6.5中完成仿真,结果如图所示。总结:如果要实现任意N(偶数)分频电路。其程序如下moduleclk_divN(clk_in,reset,clk_out

4、);inputclk_in;inputreset;outputclk_out;regclk_out;reg[2:0]cnt;parameterN=8;//只需修改N的值即可always@(posedgeclk_in)beginif(!reset)begincnt<=0;clk_out<=0;endelseif(cnt==(N/2-1))beginclk_out<=~clk_out;cnt<=0;endelsebegincnt<=cnt+1;clk_out<=clk_out;endendendmodule1.1、奇数分频电路奇数分频电路有多种实现方式,下面介绍常用的错位“异

5、或”法的原理。如果要进行3分频,通过待分频时钟上升沿触发计数器进行模3计数,当计数器计到邻近值时进行两次翻转。比如在计数器计计数到1时,输出时钟进行翻转;计数到2时,再次翻转,即在邻近的1和2时刻进行两次翻转,在0时刻不翻转。这样实现的3分频占空比为1/3或2/3。如果要实现占空比为50%的3分频时钟,可以通过待分频时钟下降沿触发计数,和上升沿同样的方法计数进行3分频,然后将下降沿产生的3分频时钟和上升沿产生的时钟进行相或运算,即可得到占空比为50%的3分频时钟。这种错位“异或”法可以推广到实现任意的奇数分频:对于实现占空比为50%的N倍奇数分频,首先进行上升沿触发的模N

6、计数,计数到某一选定值时(0到N—1之间的任意数值,比如在计数为0)进行输出时钟翻转,然后经过(N-1)/2再次翻转,得到一个占空比非50%的奇数N分频电路。再者,同时进行下降触发沿的模N计数,和上升沿触发输出时钟翻转选定值相同的值时,进行输出时钟翻转,同样经过(N-1)/2,输出时钟再次翻转,生成占空比非50%的奇数N分频时钟。将两个占空比非50%的N分频时钟相或运算,得到占空比为50%的奇数N分频时钟。使用Verilog程序实现3分频电路:moduleclk_div3(clk_in,reset,clk_out);inputclk_in;inputreset;outpu

7、tclk_out;integercnt1,cnt2;regclk_div3p;regclk_div3n;always@(posedgeclk_in)beginif(!reset)beginclk_div3p<=0;cnt1<=0;endelseif(cnt1==2)cnt1<=0;elsebegincnt1<=cnt1+1;clk_div3p<=~clk_div3p;endendalways@(negedgeclk_in)beginif(!reset)beginclk_div3n<=0;cnt2<=0;endelseif(cn

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

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

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