您的当前位置:首页正文

一种基于Verilog的FPGA分频设计

2022-08-28 来源:好走旅游网
文章编号:1006~3269(2010)03—0059—04 一种基于Verilog的FPGA分频设计 郭振铎,刘洲峰,徐庆伟,朱永胜 (中原工学院,河南郑州450007) 摘 要: 给出了一种基于FPGA的分频电路的设计 使用芯片厂家集成的锁相环资源,如altera的PI I , Xilinx的DI I 来进行时钟的分频,倍频以及相移. 但是FPGA内部的PLL资源一般有限,对于时钟 要求不高的基本设计,如果采用Verilog语言编程 来实现,既可节省芯片内部的锁相环资源,又可实现 方法.根据FPGA器件的特点和应用范围,提出了基于 Verilog的分频方法.该方法对于在FPGA硬件平台上设计 常用的任意偶数分频、奇数分频、半整数分频和任意整数带 小数分频提供了一种思路.在QuartuslI软件上的仿真结果 表明,本文给出的分频方法简单实用,效果良好. 关键词: FPGA;计数;分频;Verilog 文献标识码: A 消耗较少逻辑单元就达到对时钟操作的目的.Ver— ilog是一种允许设计者进行各种级别的逻辑设计, 进行数字逻辑系统的仿真验证、时序分析、逻辑综合 的硬件描述语言,易于理解,便于实现[4 ]. 中图分类号:TP332.12 doi:10.3969/j.issn.10O6—3269.2010.03.013 FPGA(Field Programmable Gate Array)即现 1偶数倍分频 偶数倍分频是数字电路设计中最常用的分频之 一场可编程门阵列,它是在PAL、GAI 等可编程器件 的基础上进一步发展的产物¨1 ].它是作为专用集 成电路(ASIC)领域中的一种半定制电路而出现的, 既解决了定制电路的不足,又克服了原有可编程器 件门电路数有限的缺点.FPGA的使用非常灵活, 同一片FPGA通过不同的编程数据可以产生不同 ,如进行N倍偶数分频,则可以通过由待分频的 时钟触发计数器计数,当计数器从0计数到N/e—l 时,输出时钟进行翻转,并给计数器一个复位信号, 使得下一个时钟从零开始计数.以此循环下去.这 的电路功能.FPGA在通信、数据处理、网络、仪器、 工业控制、军事和航空航天等众多领域得到了广泛 应用.在现代电子系统中,数字系统所占的比例越 来越大.系统发展的趋势是数字化和集成化,而 FPGA作为可编程ASIC(专用集成电路)器件,在 数字逻辑系统中发挥越来越重要的作用.分频器是 数字系统设计中的基本电路,根据不同设计的需要, 我们会遇到偶数分频、奇数分频、半整数分频等,有 种方法可以实现任意的偶数分频.下面为10分频 的Verilog实现代码. module ten fp 2(clk,clk fp) input clk;//输入原始时钟 output clkfp;//分频所要得到的时钟信号 reg cp; reg[2:O]n;//定义计数器所需的寄存器 assign clkfp===cp; 时要求等占空比,有时要求非等占空比口].在用 FPGA进行实现时,尽管在目前大部分设计中,广泛 收稿日期:2010 06 24 always@(posedge clk) begin //进行计数 if(n<3 d4) 作者简介:郭振铎(1982一),男,河南泌阳人,硕士,主要研究方向 n<一n+1: else 为智能信息与处理. Group Technology&Production Modernization Vo1.27,No.3,2010 begin n<一0: cp<一~cp; end endmodule 波形的仿真结果如图1所示. end Ivl{瞎l efTimeB i …‘’ l ’ irltely ̄lE 磊■ U搴 ,Ia瞻 l l面 0 Z.TT 1直s 3 09 譬 3 ̄i4; 柱‘ 3 3i!i'ClL1 t 0S nt t;3 - 一t差丑 d.k c1k-句 Z -L- Z n 1j- j Z Z . J.1_『 、j Z Z Z FL_r 广LJ j。 z 厂 j 1j- Z l l l 萄》 囝n 您 ④ 墩Ⅺ 娥  艘 Ⅻ ④ 图1 占空比为5O 的1O分频仿真波形 由图1中elk与elkfp的仿真波形可以看出, 进行奇数倍 分频时钟,首先进行n/2分频(带小 数,即等于(17—1)/2+0.5),然后再进行二分频得 clkfp会在clk每隔5个周期处产生一次翻转,从 而实现分频系数为为1O的整数倍分频器. 到.得到占空比为50 的奇数倍分频.下面是用第 一2奇数倍分频 奇数倍分频有2种实现方法.首先,完全可以 通过计数器来实现,如进行三分频,通过待分频时钟 种方法实现任意奇数分频的Verilog代码的  module jishufenpin(elk,rst,countl,count2,实现. clkeven); 上升沿触发计数器进行模三计数,当计数器计数到 邻近值进行2次翻转,比如可以在计数器计数到1 时,输出时钟进行翻转,计数到2时再次进行翻转. input clk,rst; output[-3:01 eountl,count2; output clkeven; 即在计数值在邻近的1和2进行了2次翻转.这样 实现的三分频占空比为1/3或者2/3.如果要实现 reg{-3:ol reg wire parameter count1,count2; clkA,clkB; clk占空比为50 的三分频时钟,可以通过待分频时钟 下降沿触发计数,和上升沿同样的方法计数进行三 分频,然后下降沿产生的三分频时钟和上升沿产生 的时钟进行相或运算,即可得到占空比为5O 的三 分频时钟.这种方法可以实现任意的奇数分频.归 类为一般的方法为:对于实现占空比为50 的N倍 奇数分频,首先进行上升沿触发进行模N计数,计 数选定到某一个值进行输出时钟翻转,然后经过(N 一even; N—anyodd; assign clkre一~clk; assign clkeven—clkA l clkB always@(posedge clk) if(!rst) begin countl<一l b0; elkA<一1 bO; end 1)/2再次进行翻转得到一个占空比非50 奇数 分频时钟.再者同时进行下降沿触发的模N计 数,到和上升沿触发输出时钟翻转选定值相同值时, 进行输出时钟翻转,同样经过(N一1)/2时,输出时 钟再次翻转生成占空比非5O 的奇数”分频时钟. else if(count1<begin (N一1)) 两个占空1 ̄t1 ̄50 的”分频时钟相或运算,得到占 空比为50 的奇数 分频时钟.另外一种方法:对 count1<一countl+1’bl; if(countl一一(N一1)/2) 《成组技术与生产现代化》2010年第27卷第3期 begin ~1期间的时钟下降沿变成了上升沿,则计数值”一 clkA<一~clkA; 1只保持了半个时钟周期,由于时钟翻转下降沿变 end 成上升沿,因此计数值变为0.因此,每产生一个” end +0.5分频时钟的周期,触发时钟都要翻转一次. else 设计原理如图2所示. begin clkA<一~clkA; count1<一1’b0; end always@(posedge clkre) ~if(!rst) begin 图2 半整数分频的原理框图 count2<一1’b0; clkB<一1’b0; 由上述原理图可知,触发时钟的翻转通过 end n+0.5分频信号的二分频,然后与输入时钟相或运 else 算即可,如图2所示.这里以5.5分频为例给出实 if(count2<(N一1)) 现代码. Module odddispart(rstn,clk,clkout); —begin input rst—n,elk; count2<一count2+1 bl: output clkout; if(count2一===(N一1)/2) reg clkout,elk2; begin wire clkin; clkB<===~clkB: assign clkin—clk‘clk2; 一end always@(posedge clkin) end if(!rstn) else begin begin cnt<一0; clkB<一~clkB; clkout<一0: count2<一1’b0; end end else endmodule begin 3半整数分频 if(cnt一一5) cnt<一0; 对于实现 +0.5的半整数分频一般需要对输 else 入时钟进行操作.其基本的设计思想首先进行模7/ 的计数,在计数到n一1时,输出时钟赋为‘1’,回到 cnt<一cnt+1: 计数0时,又赋为0,因此,可以知道,当计数值为 if(cnt一===3’dOI l cnt一一3’d1) 1时,输出时钟才为1,因此,只要保持计数值”一1 elkout<一~clkout: 为半个输入时钟周期,即实现了 +0.5分频时钟, end 因此保持 一1为半个时钟周期即是一个难点.从 always@(posedeg elkout) elk中可以发现,因为计数器是通过时钟上升沿计数,因 2<一~elk2; 一此可以在计数为 一1时对计数触发时钟进行翻转, endmodU】e 此时时钟的下降沿变成了上升沿.即在计数值为 Group Technology&Production Modernization Vo1.27,No.3。2010 计EJ].仪器仪表用户,2009,(4):55—57. 4任意整数带小数的分频 E6] 王春旭,周晓平,王黎黎.基于FPGA的verilog HDL语言设计 这种分频一般来说,可以通过不同分频进行组 ~ 优化口].电子元器件应用,2008,(11):45 47. 郑汉尚.基于Verilog--HDL的现代数字系统设计EJ].中国新 合实现.I:Is ̄H实现6+1/3分频,可以通过2个七分 技术新产品,2008,(1):24. 频脉冲加上1个五分频脉冲实现一个该分频设计, 即(2*7+5)/(2+1)实现分频,一般而言,这种分频 An FPGA Frequency Division 由于分频输出的时钟脉冲抖动很大,在设计中使用 Design Based on Verilog 已经非常少.但是也是可以实现的. 5 结束语 GUO Zhen—duo,I IU Zhou—feng。 XU Qing—wei,ZHU Yong—sheng 对数字电路设计中常用的偶数分频、计数分频 (Zhongyuan University of Technoligy, 和小数分频给出了一种思路.它节省了FPGA的 Zhengzhou 450007,China) PLL资源,设计方法简单方便、可移置性强.因此, 可广泛应用于FPGA时钟电路设计中. Abstract:An frequency division method based on FPGA is presented in this paper.The frequency division is intro— 参考文献: duced accoding tO the feature and main application of FPGA. [1] 邓玉元,吴琼.数字电路中等占空比分频器的实现[J].现代 The method based on Verilog is a good way tO even,odd and 电子技术,2006,(2)4:25—26. decimal frequency division.The simulation result based on [2] 潘 松,黄继业.EDA技术实用教程[M].北京:科学出版 Quartus II shows that this method is several simple and 社,2006. practical experiences. [3] 林海波.基于VHDL的半整数分频器的设计[J].电子与封装, Key words:FPGA;count;frequency division;Verilog 2005,(29):38—40. [4] 李海江,刘 方.基于Verilog HDI 的DDS任意波形发生器设 …】~……………~…~………………一……~……~……… ,……】■ol (上接第32页) The Research and Analysis of Abstract:The paper based on the NCAP(New Car As— Structure of Couple Body sessment Program)and combined with Kinetic theory,think of four major factors of body invasion,average impact veloci— tO Protect the Driver and ty,impact force and moment of T1 2 chest,impact force of Passengers pelvis,through the test and analysis,the key institutions in the design of couple body car to protect the driver and pas— HU Qun_lin,XIONG Hui,WANG Qin—xin sengers are obtained. (Chery Automobile Co.Ltd,Wuhu 241009,China) Key words:Euro NCAP;protection of driver and pas— sengers;side crash;coupe body ・ 62・ 《成组技术与生产现代化》2010年第27卷第3期 

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