欢迎来到天天文库
浏览记录
ID:48963128
大小:46.50 KB
页数:4页
时间:2020-02-26
《verilog 实现小数分频(小数分频器)代码.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、verilog 实现小数分频(小数分频器) 小数分频无法做到1:1的占空比。例如用77分频得到16M 时钟的生成原理如下:对于77M的时钟,一个sts-12帧有9720拍。对于16M时钟,一个sts-12帧有32*8*8拍。即77M下每计数1215,16M下计数256.1215/256=4.76考虑到数字处理只能是整数,则需要在每m个5拍扣一拍,每n个4拍扣一拍。列方程为: m+n=256 5m+4n=1215得到m=191,n=65,即通过191个5分频和65个4分频实现16M的时钟。
2、 小数分频是通过可变分频和多次平均的方法实现的。例如要实现4.7分频,需要在10次分频中做3 次4分频和7次5分频就可以做到,再如实现5.67分频,只要在100次分频中,做67次6分频,33次5分频即可。因为从N分频到N+1分频和从N+1分频到N分频的切换,会产生一个随时间增长的相位移。考虑到小数分频中需要多次进行两种频率分频,必须将两种分频均匀,这种“均匀”工作是通过计数器完成的,这里仅给出一位小数的情况,下面简要介绍这种混合的方法: 每进行一次分频,计数值为10减去分频系数的小数部分,各次计数值累加。若累加结果小于
3、10,则进行N+1分频,若大于或等于10,则进行N分频。以8.7分频为例进行设计时,需要进行3次8分频,7次9分频。该例中计数值(10-7)=3,前三次累加结果都小于10,所以为9分频,第四次累加结果为12,则去掉十位数后累加结果变为2,同时进行8分频,下表给出了该分频器的分频过程。 分频系数8.7--------------------------------------序号 累加结果 分频系数 1 3 9 2
4、 6 9 3 9 9 4 12-10=2 8 5 5 9 6 8 9 7 11-10=1 8 8 4 9 9 7
5、 9 10 10 8以下是代码模块://topmodulemodulefd89bits(clkin,reset,a,clkout ); inputclkin; inputreset; inputa; outputregclkout; wireclkout1,clkout2; fd8bits dut1(clkin,reset,clkout1); fd9bits dut2(clkin,reset,c
6、lkout2); always@(posedgeclkin)begin if(a) clkout<=clkout1; else clkout<=clkout2; endendmodule`timescale1ns/1psmodulefd8bits( clk_in,reset,clk_out ); inputclk_in; inputreset; outputregclk_out; reg[3:0]count; always@(posedgeclk_in)begin if
7、(!reset) count<=0; elsebegin if(count <7) count <=count+1; else count <=0; end clk_out <=count[2]; endendmodule//9分频modulefd9bits( clk_in,reset,clk_out ); inputclk_in; inputreset; outputregclk_out; reg[3:0]count; always@(posedgeclk_in)begi
8、n if(!reset) count<=0; elsebegin if(count <8) count <=count+1; else count <=0; end clk_out <=count[2]; endendmodule//testbenchmoduletestbe
此文档下载收益归作者所有