分频的verilog语言实现

分频的verilog语言实现

ID:32706611

大小:154.80 KB

页数:6页

时间:2019-02-14

分频的verilog语言实现_第1页
分频的verilog语言实现_第2页
分频的verilog语言实现_第3页
分频的verilog语言实现_第4页
分频的verilog语言实现_第5页
资源描述:

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

1、分频的Verilog实现1.分频:在实际应用中,自己设计的开发板上不会去装多个晶振来产生不同频率的时钟信号,这就要我们在已有的基础上自己来创造设计电路中所需要的时钟信号来,有时候所需要的频率并不是在已有的频率上直接进行简单的整数分频就可以得到的,有时需要进行小数的分频。2.在分频的过程中,偶数分频并不困难,若要进行2N次分频的话,只需要计数到N的时候,波形进行翻转就行了,或者在最后一级加一个2分频也可以实现。下面是我写的一个偶数分频的代码:modulediv2n(rst,clk,cnt,clk_2n);//偶数次分频inputrst,clk;outpu

2、tclk_2n,cnt;reg[3:0]cnt;//刚开始没有定义计数的位宽仿真的时候老是出现输出为0的现象,看似很简单的程序搞的有些纠结啊regclk_2n;always@(posedgeclk)beginif(rst)//若复位信号为高电平则计数清零和输出清零begincnt<=0;clk_2n<=0;endelseif(cnt==3)//进行8分频,这里的cnt取不同的值进行其他的分频,若计数到达4时从0开始的输出电平翻转beginclk_2n<=~clk_2n;cnt<=0;endelsecnt<=cnt+1;endendmodule功能仿真波

3、形以及后仿真波形如下:从后仿真中可以明显的看出输出时钟信号和输入的标准信号有延迟时间,在计数寄存器中出现了相邻两个数之间的竞争,但是没有出现在时钟的上升沿,不会引起最后实现的错误!奇数分频:若奇数分频中不考虑占空比的话,分频代码可以按照偶数分频的思路来写,但是大多数情况下需要考虑的是使占空比设计为50%。若要进行奇数次的分频而且要求占空比为50%可以采用:用两个计数器,一个由输入时钟下降沿触发,一个由输入时钟的上升沿触发,最后将两个计数器的输出进行相或,就可得到。程序代码:modulediv7(rst,clk,cout1,cout2,cout);inp

4、utclk,rst;outputcout1,cout2,cout;reg[2:0]m,n;//定义两个中间的计数变量wirecout;regcout1,cout2;assigncout=cout1

5、cout2;//将上升沿和下降沿的输出相或得到占空比为50%的波形always@(posedgeclk)//上升沿触发beginif(rst)begincout1<=0;m<=0;end//当rst为1时复位elseif(!rst)beginif(m==6)beginm<=0;end//计数到达7时计数复位elsem<=m+1;//其他情况计数器正常计数if

6、(m==2)cout1=~cout1;//计数到达3时翻转elseif(m==5)cout1=~cout1;//计数器达到6时再翻转endendalways@(negedgeclk)//下降沿触发,情况同上beginif(rst)begincout2<=0;n<=0;endelseif(!rst)beginif(n==6)beginn<=0;endelsen<=n+1;if(n==2)cout2=~cout2;elseif(n==5)cout2=~cout2;endendendmodule最后仿真波形:时序仿真波形为:半整数分频:半整数分频N.5的分频

7、。设计的思想是:比如说要实现2.5分频可以先设计一个模3计数器,再设计一个脉冲扣除电路,加在模3计数器之后,每来3个脉冲就扣除半个脉冲,即可实现分频系数为2.5的半整数分频,采用类似的方法,可以实现任意半整数分配器。脉冲扣除是输入频率与2分频输出异或的结果。大致的思路可用下图来分析:clk1=1模N计数器2分频clk2clkoutclkin5.5分频代码为modulexfp(clkin,clr,clkout);inputclkin,clr;outputclkout;regclkout,clk1;wireclk2;integercount;xorxor1

8、(clk2,clkin,clk1);//将输出2分频时钟与clk2/6分频时钟相异或得到5.5分频always@(posedgeclkoutornegedgeclr)//输出时钟2分频beginif(~clr)beginclk1<=1'b0;endelseclk1<=~clk1;endalways@(posedgeclk2ornegedgeclr)//将时钟clk26分频beginif(~clr)begincount<=0;clkout<=1'b0;endelseif(count==5)//改变count的值可实现不同模的分频begincount<=0

9、;clkout<=1'b1;endelsebegincount<=count+1;clkout

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

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

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