基于FPGA的任意小数分频器的设计

更新时间:2023-06-07 08:59:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2009年第1期桂林航天工业高等专科学校学报

JOURNALOFGUILINCOLLEGEOFAEROSPACETECHNOLOGY 信息与电子工程

(总第53期)

基于FPGA的任意小数分频器的设计

毛为勇 祁中洋 王兰

(桂林电子科技大学 信息与通信学院 广西 桂林 541004)

*

摘 要 论文分析了双模前置小数分频器的分频原理和电路实现。结合脉冲删除技术,提出了一种适于硬件电路实现

的任意小数分频的设计方案,用VerilogHDL语言编程,在QuartusII下对此方案进行了仿真,并用Cyclone系列的EP1C12Q240C8芯片来实现。

关键词 小数分频;FPGA;VerilogHDL;频率合成

中图分类号:TN772 文献标志码:A 文章编号:1009 1033(2009)01 0030 03

频率合成技术是现代通讯系统的重要组成部分,是对一个高精度和高稳定度的基准频率进行加、减、乘、除四则运算,产生具有同样稳定度和基准度的频率。分频器是数字逻辑电路设计中经常使用的一个基本电路。通常,整数分频可以很容易地用计数器或状态机来实现[1]。但在某些场合下,时钟源与所需要的频率并不成整数关系,此时便需要采用小数分频器进行分频。

对于小数分频的FPGA设计,目前广泛采用的方法是双模前置小数分频[2],以及一种由双模前置小数分频改进而得到的小数分频 用一个半整数分频器和一个整数分频器代替双模前置小数分频中的两个整数分频器[3-5]。虽然这两种方案输出时钟的占空比误差和抖动性能方面有所差别,但其工作原理却是一致的。双模前置小数分频器在理论上可以实现任意小数分频,但在实际的电路设计中,不可能真正实现任意小数分频,文献[2]在其结论中就指出过,小数分频器的精度受控制计数器的影响,而控制计数器的设计会受硬件资源的限制,尽管FPGA有相当丰富的硬件资源。另外,基于FPGA实现的双模前置小数分频器在两个整数分频时钟之间的切换点上,有时候会出现毛刺,而时钟是不应该有毛刺存在的。下面将结合脉冲删除技术[6],提出一种可以进行任意小数分频且不会出现毛刺的小数分频方案,并通过编程实现。

X=M+

N2M N1+(M+1) N2

=

N1+N2N1+N2

(1)

其中,N1和N2均为整数。当N1和N2取不同的正整数时,从

N2

可以得到任意一个小数,就可以从理

(N1+N2)

论上实现任意小数分频比的分频。由于0!

a 2

i

i=1

#

-i

!

1,(ai=0,1),所以从工程角度可以进一步构造出下列关系:

N2

=

12

i=1

a 2

i

#

-i

(2)

式(2)有明确的物理意义,它的右边实际上是个多位累加器。例如,要把13MHz的时钟信号分频为8MHz的时钟信号,则

#

N= ai 2-i=0 625,a1=1,a2=0,

N1+N2i=1

a3=1。显然,当分频比X为无限小数时,例如把13MHz的时钟信号分频为11MHz时,x=1 18181818%,此时,尽

管在理论上可以设计这样的多位累加器,但在实际电路中却是不可实现的。因此,实际所设计的双模前置小数分频器的分频比,有时候与实际期望得到的分频比存在一个微小的偏差;当分频器长时间工作,就会导致累计误差。

1.2 双模前置小数分频器的电路组成

双模前置小数分频器的电路如图1所示,此电路主要由两个整数分频器、一个选择器和一个控制逻辑电路组成。其中,两个整数分频器的分频比分别为M和M+1,而控制电路依据式(1)而设计,交替选择M分频器或M+1分频器的时钟输出。它的具体控制过程是:先选择让M分频器输出N1个脉冲之后,接着选择让M+1分频器输出N2个脉冲,然后再选择让M分频器输出N1个脉冲,如此循环。这样的设计在理论上是可行的,但在实际的电路设计中,却由于硬件电路的微小延时,在选择M分频和M+1分频时钟输出的切换点上,就可能存在竞争冒险而产生毛刺,这是

1 双模前置小数分频器

假设时钟源的频率为F0,期望得到的频率为F1,则其分频比X有

FX=0

F1

其中,X>1。

1.1 双模前置小数分频器的理论分析若M<X<M+1,M为整数,则有

作者简介:毛为勇(1983 ),男,湖北仙桃人,桂林电子科技大学信息与通信学院硕士研究生,研究方向:无线通信

与信道编码。

*

(总第53期)JOURNALOFGUILINCOLLEGEOFAEROSPACETECHNOLOGY毛为勇祁中洋王兰/文

时钟信号所不能够容忍的。

-Q)脉冲的位置相对均匀地分布在时钟源相对应的P个脉冲中。

其具体设计思路如下:设置一个计数器,令其初始值为0;在时钟源clk的每一个上升沿,计数器加上Q,若计数器里面的值小于P,则发出删除一个脉冲的信号,将delete置为高电平;若其值大于P,则将计数器的值减去P,并且将delete置为低电平,不发出删除脉冲的信号。例如,假设

图1 双模前置小数分频器

要将一个13MHz的时钟源分频为11MHz的时钟信号,则Q=11,P=13,其工作过程见表1。

表1 分频器的工作过程序号0123

(3)

45678910111213

加上Q后计数器的值

1122201816141223211917151311

与P比较后计数器的值

119753112108642011

是否删除脉冲是否否否否否是否否否否否否是

2 一种改进的小数分频器的设计

利用脉冲删除电路,有规律地删除时钟源中的一些脉冲,从而实现平均意义上的小数分频。在硬件电路的设计过程中,利用脉冲删除电路,就不会出现上述竞争冒险和毛刺的问题,而且可以很容易地用硬件实现任意小数分频。

2.1 数学模型建立

令式(1)中的分子M N1+(M+1) N2=P,分母N1+N2=Q,则

X=M+

N2M N1+(M+1) N2P

==

N1+N2N1+N2Q

其中,P、Q均为整数。从式(3)可以分析得到,当时钟源每输入P个脉冲,利用脉冲删除电路从这P个脉冲中按照一定的规律删除(P-Q)个脉冲,输出Q个脉冲,便实现了平均意义上的X分频。

2.2 电路组成

这个电路主要由脉冲删除电路和控制删除逻辑电路两个部分组成,见图2。其中,控制删除逻辑电路是根据P和Q的值,对时钟源输入脉冲数进行计数控制,按照一定的规

律发出脉冲删除控制信号。

2.4 小数分频器的Verilog-HDL程序设计

将13MHz的时钟频率分频为11MHz的时钟的Veril og-HDL程序如下:

图2 分频时钟电路

脉冲删除电路(见图3)就是一个简单的或门,脉冲删除控制信号delete为高电平时,表示从时钟源clk中删除一个脉冲。但脉冲删除控制信号delete必须由时钟源clk的上升沿触发产生,这是由于硬件电路具有微小延时的原

因。

moduleclk_divider(reset,clk,clkout);inputreset,clk;//clk为时钟源

outputclkout;//clkout为所要得到的时钟regclkout,delete;always@(posedgeclk)begin:controlintegercount;if(reset==1'b0)begin count=0; delete=1'b0;

图3 脉冲删除电路

2.3 控制删除逻辑电路的工作过程

设计控制删除逻辑电路的主要目的是,使所删除的(P

endelsebegin

(总第53期)JOURNALOFGUILINCOLLEGEOFAEROSPACETECHNOLOGY毛为勇祁中洋王兰/文

count=count+11; if(count>=13) begin

count=count-13;

delete=1'b0; //不删除脉冲 endelse

delete=1'b1;//删除一个脉冲endend

always@(delete)

begin

if(delete==1'b1) clkout=1'b1;else end

endmodule

2.5 波形仿真图

在QuartusII环境下,对上述Verilog-HDL程序进行编译、仿真之后,得到的波形图如图4

所示。

图5 X分频电路

clkout=clk;

<1+!2MM

可以先对时钟源进行M分频,将M分频得到的时钟1<

再用上述扣除脉冲的方法进行

X

分频,从而可得到X分频M

这两种情况了。因此,有必要对连续扣除两个或两个以上脉冲的情况予以处理:

当分频系数X满足1<X<2时,不会出现连续扣除两个脉冲的现象;而当X>2时,则一定会出现连续扣除两个脉冲的现象。因此,可以作如下处理:

假设存在正整数M,使M<X<M+1

的时钟,且其占空比只有50%和75%两种情况,其原理见图5

3 电路实现

FPGA现场可编程阵列是20世纪80年代中期出现的高密度可编程逻辑器件。FPGA及其软件系统是开发数字电路的最新技术。它利用EDA技术,以硬件描述语言(VHDL和VerilogHDL)、电路原理图等形式输入设计逻辑;它提供功能仿真和时序仿真等仿真手段,在功能仿真和时序仿真被满足之后,经过一系列的变换,将输入逻辑转换成FPGA器件的编程文件,以实现专用集成电路。这里所讨论的小数分频电路是用Cyclone系列的EP1C12Q240C8芯片来实现的。

图4 13MHz时钟分频为11MHz的波形仿真图由图4可见,当delete为高电平时,时钟源clk便会被删除一个脉冲,否则便直接输出给clkout。count_0和count_i分别对时钟源和分频时钟的脉冲进行计数,由图4可见,当时钟源clk每输入13个脉冲时,分频时钟clkout正好只输出11个脉冲,此即13MHz时钟到11MHz时钟的分频过程。

2.6 占空比的讨论

小数分频无法保证占空比永远只是50%,但可以尽可能地让占空比相对均匀化。用上述思路设计时,一般可以做到只出现50%和75%两种占空比,但若出现连续扣除两个或两个以上脉冲,则占空比就不再只局限于50%和75%

4 结束语

上述任意小数分频器的设计原理和实现方法不存在精度误差的问题,从而可以保证小数分频器长时间工作时不会出现累计误差。另外,由于是采用脉冲删除的方式实现平均意义上的小数分频,所以分频得到的时钟不会出现毛刺或不稳定的因素。而且,这种小数分频器的设计非常简单,很容易在硬件上实现。

参考文献

[1] 张奇惠,武超,等.基于VerilogHDL的分频器的优化设计[J].河南大学学报,2007,37(4):343-346.[2] 刘亚海,林争辉.基于FPGA的小数分频器的实现[J].现代电子技术,2005,194(3):113-117.

[3] 黄海生.一种可控分频比分频器的设计和研究[J].计算机工程与设计,2002,23(3):8-21.

[4] 王广义,赵卫华,赵艳秋.一种小数分频器的设计及性能分析[J].自动化技术与应用,2007,26(9):101-102.[5] 王建荣,李竹,汤洪明.一种新的基于FPGA的小数分频器的参数化设计[J].太原科技大学学报,2007,28(3):191

-194.[6] 周冬成,王永斌,郑亚平.基于FPGA的小数分频频率合成器设计[J].电子测量技术,2006,29(3):79-93.

(责任编辑 李卫华)

本文来源:https://www.bwwdw.com/article/ghi1.html

Top