首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年11月21日星期四
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
基于CPLD/FPGA的多功能分 频器的设计与实现

The Design and Implement of the Multifunctional Divider Based on CPLD/FPGA

武汉理工大学自动化学院 吴玉昌 胡荣强 王文娟



引言

分频器在CPLD/FPGA设计中使用频率比较高,尽管目前大部分设计中采用芯片厂家集成的锁相环资源 ,但是对于要求奇数倍分频(如3、5等)、小数倍(如2.5、3.5等)分频、占空比50%的应用场合却往往不能满足要求。硬件工程师希望有一种灵活的设计方法,根据需要,在实验室就能设计分频器并马上投入使用,更改频率时无需改动原器件或电路板,只需重新编程,在数分钟内即可完成。为此本文基于CPLD/FPGA用原理图和VHDL语言混合设计实现了一多功能通用分频器。


分频原理

偶数倍(2N)分频

使用一模N计数器模块即可实现,即每当模N计数器上升沿从0开始计数至N时,输出时钟进行翻转,同时给计数器一复位信号使之从0开始重新计数,以此循环即可。偶数倍分频原理示意图见图1。

图1 偶数倍二分频示意图(略)

奇数倍(2N+1)分频

(1)占空比为X/(2N+1)或(2N+1-X)/(2N+1)分频,用模(2N+1)计数器模块可以实现。取0至2N之间一数值X(0<X<2N),当计数器时钟上升沿从0开始计数到X值时输出时钟翻转一次,在计数器继续计数达到2N+1时,输出时钟再次翻转并对计数器置一复位信号,使之从0开始重新计数,即可实现。

(2)占空比为50%的分频,设计思想如下:基于(1)中占空比为非50%的输出时钟在输入时钟的上升沿触发翻转;若在同一个输入时钟周期内,此计数器的两次输出时钟翻转分别在与(1)中对应的下降沿触发翻转,输出的时钟与(1)中输出的时钟进行逻辑或,即可得到占空比为50%的奇数倍分频时钟。当然其输出端再与偶数倍分频器串接则可以实现偶数倍分频。奇数倍分频原理示意图见图2。

图2 奇数倍3分频示意图(略)

N-0.5倍分频

采用模N计数器可以实现。具体如下:计数器从0开始上升沿计数,计数达到N-1上升沿时,输出时钟需翻转,由于分频值为N-0.5,所以在时钟翻转后经历0.5个周期时,计数器输出时钟必须进行再次翻转,即当CLK为下降沿时计数器的输入端应为上升沿脉冲,使计数器计数达到N而复位为0重新开始计数同时输出时钟翻转。这个过程所要做的就是对CLK进行适当的变换,使之送给计数器的触发时钟每经历N-0.5个周期就翻转一次。N-0.5倍:取N=3,分频原理示意图见图3。

图3 3-0.5倍分频(略)

对于任意的N+A/B倍分频(N、A、B∈Z,A≦B)

分别设计一个分频值为N和分频值N+1的整数分频器,采用脉冲计数来控制单位时间内两个分频器出现的次数,从而获得所需要的小数分频值。可以采取如下方法来计算个子出现的频率:

设N出现的频率为a,则N×a+(N+1)×(B-a)=N×B+A 求解a=B-A; 所以N+1出现的频率为A.例如实现7+2/5分频,取a为3,即7×3+8×2就可以实现。但是由于这种小数分频输出的时钟脉冲抖动很大,现实中很少使用,本次设计未予以设计。

采用VHDL语言可以实现计数器的下降沿触发翻转,并且CPLD/FPGA具有可并行执行的特性,可以保证两种不同的触发翻转以及分频时钟输出保持同步,所以上述分频方法可以基于CPLD/FPGA予以实现。

综合上述分析,实现多功能分频器功能的设计框图如图4所示。

图4 多功能分频器的设计框图(略)


多功能分频器的设计与实现

本设计使用第三方EDA开发工具Protel DXP。该开发工具支持层次原理图及VHDL语言混合设计并能进行编译、时序和功能仿真,支持Xilinx、Altera、Lattice等公司的系列CPLD/FPGA器件,并且具有设计直观、层次性好等优点。在设计中采用两级原理图和底层VHDL语言三级结构来实现,使整个的设计以功能模块化,便于程序修改、功能升级和分频 系数的设定。对于分频值的设定采取了软件设定的方法,即只需在VHDL语言程序中按照自己的需求对相应的参数作修改、设定,而且设定值的取值灵活。顶层原理图、次级原理图分别如图5、6。

图5 顶层原理图(略)

图6 次级原理图(略)

本次设计CK延时3ns后设值为111,即功能模块全部选中工作;偶数倍分频模块中模N计数器N设置为2,实现四分频;奇数倍分频模块中模2N+1计数器N设置为1实现三分频,占空比X设置为1即分频系数为1/3,模M计数器M值设置为2实现2M*(2N+1)=12分频;N-0.5倍分频模块中N设置为3,实现2.5分频。从方针波形中可以看出,实现了通用多功能分频器。若要得到其他值,只需修改相应功能模块的VHDL语言中的相关的参数,再进行编译、综合适配、下载即可。


器件适配及仿真波形

本 设计采用Xilinx XC9536-5-PC44 CPLD器件实现,经综合适配后其报表如表1。
仿真波形如图7。

表1 多功能分频器的适配报表(略)

图7 多功能分频器的仿真波形(略)


结束语

本文介绍了基于CPLD/FPGA的多功能分频器的设计方法,给出了原理图并用VHDL语言予以实现。结合ISP技术,基于CPLD/FPGA的分频器可以变得像软件那样灵活且易于修改、升级,能够在同一个器件内实现多种分频功能,使之成为一种多功能硬件。在产品设计、制造过程中、甚至在交付用户使用之后,仍可根据要求对器件进行逻辑重构和功能修改。在数字系统设计中,为用户提供了一种低成本的解决方案,减少了工作量和成本。

《世界电子元器件》2007.3
         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com