测品娱乐
您的当前位置:首页一种基于Verilog的FPGA分频设计

一种基于Verilog的FPGA分频设计

来源:测品娱乐
 技术创新与生产实践

文章编号:1006-3269(2010)03-0059-04

一种基于Verilog的FPGA分频设计

郭振铎,刘洲峰,徐庆伟,朱永胜

(中原工学院,河南郑州450007)

摘 要: 给出了一种基于FPGA的分频电路的设计

方法.根据FPGA器件的特点和应用范围,提出了基于Verilog的分频方法.该方法对于在FPGA硬件平台上设计常用的任意偶数分频、奇数分频、半整数分频和任意整数带小数分频提供了一种思路.在QuartusII软件上的仿真结果表明,本文给出的分频方法简单实用,效果良好.

关 键 词: FPGA;计数;分频;Verilog中图分类号: TP332.12 文献标识码: Adoi:10.3969/j.issn.1006-3269.2010.03.013

使用芯片厂家集成的锁相环资源,如altera的PLL,Xilinx的DLL来进行时钟的分频,倍频以及相移.

但是FPGA内部的PLL资源一般有限,对于时钟要求不高的基本设计,如果采用Verilog语言编程来实现,既可节省芯片内部的锁相环资源,又可实现消耗较少逻辑单元就达到对时钟操作的目的.Ver-ilog是一种允许设计者进行各种级别的逻辑设计,进行数字逻辑系统的仿真验证、时序分析、逻辑综合的硬件描述语言,易于理解,便于实现[4-6].

FPGA(FieldProgrammableGateArray)即现

场可编程门阵列,它是在PAL、GAL等可编程器件的基础上进一步发展的产物[1,2].它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点.FPGA的使用非常灵活,同一片FPGA通过不同的编程数据可以产生不同的电路功能.FPGA在通信、数据处理、网络、仪器、工业控制、军事和航空航天等众多领域得到了广泛应用.在现代电子系统中,数字系统所占的比例越来越大.系统发展的趋势是数字化和集成化,而FPGA作为可编程ASIC(专用集成电路)器件,在数字逻辑系统中发挥越来越重要的作用.分频器是数字系统设计中的基本电路,根据不同设计的需要,我们会遇到偶数分频、奇数分频、半整数分频等,有时要求等占空比,有时要求非等占空比[3].在用FPGA进行实现时,尽管在目前大部分设计中,广泛

收稿日期:2010-06-24

作者简介:郭振铎(1982-),男,河南泌阳人,硕士,主要研究方向

为智能信息与处理.

1 偶数倍分频

偶数倍分频是数字电路设计中最常用的分频之一,如进行N倍偶数分频,则可以通过由待分频的时钟触发计数器计数,当计数器从0计数到N/2-1时,输出时钟进行翻转,并给计数器一个复位信号,使得下一个时钟从零开始计数.以此循环下去.这种方法可以实现任意的偶数分频.下面为10分频的Verilog实现代码.

moduleten_fp_2(clk,clk_fp)

inputclk;//输入原始时钟

outputclk_fp;//分频所要得到的时钟信号regcp;

reg[2B0]n;//定义计数器所需的寄存器assignclk_fp=cp;

always@(posedgeclk)begin//进行计数if(n<3'd4)n<=n+1;else

#59#

GroupTechnology&ProductionModernization Vol.27,No.3,2010

技术创新与生产实践

beginn<=0;cp<=~cp;end

end

endmodule

波形的仿真结果如图1所示.

图1 占空比为50%的10分频仿真波形

由图1中clk与clk_fp的仿真波形可以看出,clk_fp会在clk每隔5个周期处产生一次翻转,从而实现分频系数为为10的整数倍分频器.

进行奇数倍n分频时钟,首先进行n/2分频(带小数,即等于(n-1)/2+0.5),然后再进行二分频得到.得到占空比为50%的奇数倍分频.下面是用第一种方法实现任意奇数分频的Verilog代码的实现.

modulejishu_fenpin(clk,rst,count1,count2,clk_even);

input clk,rst;output[3B0]count1,count2;outputreg[3B0]regwireparameter

clk_even;count1,count2;clkA,clkB;clk_even;N=anyodd;

2 奇数倍分频

奇数倍分频有2种实现方法.首先,完全可以通过计数器来实现,如进行三分频,通过待分频时钟上升沿触发计数器进行模三计数,当计数器计数到邻近值进行2次翻转,比如可以在计数器计数到1时,输出时钟进行翻转,计数到2时再次进行翻转.即在计数值在邻近的1和2进行了2次翻转.这样实现的三分频占空比为1/3或者2/3.如果要实现占空比为50%的三分频时钟,可以通过待分频时钟下降沿触发计数,和上升沿同样的方法计数进行三分频,然后下降沿产生的三分频时钟和上升沿产生的时钟进行相或运算,即可得到占空比为50%的三分频时钟.这种方法可以实现任意的奇数分频.归类为一般的方法为:对于实现占空比为50%的N倍奇数分频,首先进行上升沿触发进行模N计数,计数选定到某一个值进行输出时钟翻转,然后经过(N-1)/2再次进行翻转得到一个占空比非50%奇数n分频时钟.再者同时进行下降沿触发的模N计数,到和上升沿触发输出时钟翻转选定值相同值时,进行输出时钟翻转,同样经过(N-1)/2时,输出时钟再次翻转生成占空比非50%的奇数n分频时钟.两个占空比非50%的n分频时钟相或运算,得到占空比为50%的奇数n分频时钟.另外一种方法:对

#60#

assignclk_re=~clk;assignclk_even=clkA|clkBalways@(posedgeclk) if(!rst) begin

count1<=1'b0; clkA<=1'b0; endelse

if(count1<(N-1)) begin

count1<=count1+1.b1; if(count1==(N-1)/2)

5成组技术与生产现代化62010年第27卷第3期

技术创新与生产实践

begin

clkA<=~clkA; end end else

begin

clkA<=~clkA; count1<=1.b0; end

always@(posedgeclk_re) if(!rst) begin

count2<=1.b0; clkB<=1.b0; end

else

if(count2<(N-1)) begin

count2<=count2+1.b1; if(count2==(N-1)/2) begin

clkB<=~clkB; end endelse begin

clkB<=~clkB; count2<=1.b0; end endmodule

图2 半整数分频的原理框图

-1期间的时钟下降沿变成了上升沿,则计数值n-1只保持了半个时钟周期,由于时钟翻转下降沿变成上升沿,因此计数值变为0.因此,每产生一个n+0.5分频时钟的周期,触发时钟都要翻转一次.设计原理如图2所示.

由上述原理图可知,触发时钟的翻转通过n+0.5分频信号的二分频,然后与输入时钟相或运算即可,如图2所示.这里以5.5分频为例给出实现代码.

Module odd_dispart(rst_n,clk,clkout);inputoutputregwire

rst_n,clk;clkout;

clkout,clk_2;clkin;

assignclkin=clk^clk_2;always@(posedgeclkin)if(!rst_n) begin

cnt<=0; clkout<=0; endelse

begin

if(cnt==5)

cnt<=0; else

cnt<=cnt+1;

if(cnt==3.d0||cnt==3.d1) clkout<=~clkout; end

always@(posedegclkout) clk_2<=~clk_2;endmodule

3 半整数分频

对于实现n+0.5的半整数分频一般需要对输入时钟进行操作.其基本的设计思想首先进行模n的计数,在计数到n-1时,输出时钟赋为-1.,回到计数0时,又赋为0,因此,可以知道,当计数值为n-1时,输出时钟才为1,因此,只要保持计数值n-1为半个输入时钟周期,即实现了n+0.5分频时钟,因此保持n-1为半个时钟周期即是一个难点.从中可以发现,因为计数器是通过时钟上升沿计数,因此可以在计数为n-1时对计数触发时钟进行翻转,此时时钟的下降沿变成了上升沿.即在计数值为n

GroupTechnology&ProductionModernization Vol.27,No.3,2010

#61#

技术创新与生产实践

4 任意整数带小数的分频

这种分频一般来说,可以通过不同分频进行组合实现.比如实现6+1/3分频,可以通过2个七分频脉冲加上1个五分频脉冲实现一个该分频设计,即(2*7+5)/(2+1)实现分频,一般而言,这种分频由于分频输出的时钟脉冲抖动很大,在设计中使用已经非常少.但是也是可以实现的.

计[J].仪器仪表用户,2009,(4):55-57.

[5] 王春旭,周晓平,王黎黎.基于FPGA的verilogHDL语言设计

优化[J].电子元器件应用,2008,(11):45-47.

[6] 郑汉尚.基于Verilog-HDL的现代数字系统设计[J].中国新

技术新产品,2008,(1):24.

AnFPGAFrequencyDivisionDesignBasedonVerilog

GUOZhen-duo,LIUZhou-feng,XUQing-wei,ZHUYong-sheng

(ZhongyuanUniversityofTechnoligy,

Zhengzhou450007,China)

Abstract:AnfrequencydivisionmethodbasedonFPGAispresentedinthispaper.Thefrequencydivisionisintro-ducedaccodingtothefeatureandmainapplicationofFPGA.ThemethodbasedonVerilogisagoodwaytoeven,oddanddecimalfrequencydivision.ThesimulationresultbasedonQuartusIIshowsthatthismethodisseveralsimpleandpracticalexperiences.

Keywords:FPGA;count;frequencydivision;Verilog

5 结束语

对数字电路设计中常用的偶数分频、计数分频和小数分频给出了一种思路.它节省了FPGA的PLL资源,设计方法简单方便、可移置性强.因此,

可广泛应用于FPGA时钟电路设计中.

参考文献:

[1] 邓玉元,吴 琼.数字电路中等占空比分频器的实现[J].现代

电子技术,2006,(2)4:25-26.

[2] 潘 松,黄继业.EDA技术实用教程[M].北京:科学出版

社,2006.

[3] 林海波.基于VHDL的半整数分频器的设计[J].电子与封装,

2005,(29):38-40.

[4] 李海江,刘 方.基于VerilogHDL的DDS任意波形发生器设

(上接第32页)

TheResearchandAnalysisofStructureofCoupleBodytoProtecttheDriverand

Passengers

HUQun-lin,XIONGHui,WANGQin-xin

(CheryAutomobileCo.Ltd,Wuhu241009,China)

Abstract:ThepaperbasedontheNCAP(NewCarAs-sessmentProgram)andcombinedwithKinetictheory,thinkoffourmajorfactorsofbodyinvasion,averageimpactveloc-ity,impactforceandmomentofT12chest,impactforceofpelvis,throughthetestandanalysis,thekeyinstitutionsinthedesignofcouplebodycartoprotectthedriverandpas-sengersareobtained.

Keywords:Euro-NCAP;protectionofdriverandpas-sengers;sidecrash;coupebody

#62#

5成组技术与生产现代化62010年第27卷第3期

因篇幅问题不能全部显示,请点此查看更多更全内容