这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 一种改进的小数分频器设计方法

共1条 1/1 1 跳转至

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

菜鸟
2009-08-22 16:09:27     打赏
0 引言

在数字逻辑电路设计中,分频器是一种基本电路,通常用来对某个给定频率进行分频,从而得到所需的频率。数字分频器一般有两大类:一类是脉冲波形均匀分布的分频器,即常规分频器;另一类是脉冲波形非分布均匀的分频器。常规分频器只能进行整数或半整数分频,即分频倍数只能是整数或半整数。但在某些应用场合,时钟源与所需的频率不一定成整数或半整数倍关系,这时就需要脉冲波形非均匀分布的分频器,这种分频器不仅能实现整数或半整数分频,还应能进行任意小数倍分频。文献[1,2]给出了实现整数和半整数分频的常规分频器的两种设计方法,文献[3]则提出了一种可实现任意小数分频的设计方法——双模前置小数分频的实现方法。在文献[1-3]研究的基础上,文献[4]总结归纳了实现任意数分频的设计方法。

在文献[1-3]研究的基础上,本文提出了一种改进的小数分频器设计方法,相对双模前置小数分频器,该方法使总体意义上与小数分频比等效的计数周期减小一半,并进一步减小了分频后得到的信号的相位抖动。 1 整数和半整数分频 对于N整数倍分频,可以方便地用模N的计数器来简单实现分频输出,其设计方法常用数字电子技术教程都有相关论述,这里就不赘述。对于半整数分频N/2 (N为奇数),可以采用“脉冲周期剔除法”来进行设计,即让触发前移半个周期的方式来剔除半个脉冲周期[4]。假定输入计数脉冲周期为T,则当计数器计数到第(N+1)/2个周期时,只计数半个周期,即下一个计数循环到来时改变计数器的脉冲触发沿极性,这样一来,一个计数循环持续时间为计数脉冲周期的(N+1)/2-0.5 = N/2倍,即(N/2)T,从而输出信号频率为输入信号频率的1/(N/2)。只要将整数和半整数分频器与一个T’触发器(二分频器)级联,就可以实现任意占空比为50%的整数倍分频。 2 双模前置小数分频[3] 2.1 分频原理 在若干个分频周期中采取某种方法使某几个周期多计或少计一个脉冲,从而在整个计数周期的总体平均意义上获得一个小数分频比。设要进行分频比为K的小数分频,K可表示为: K = M / Q             (1) 式中,M为分频器输入脉冲数;Q为输出脉冲数。 令Q=10n,则             (2) 式中,n为分频比K小数点后的数字位数,则M为正整数。 取,即N为分频比K的整数部分,则易推得MNN + 1的线性组合。令     (3) 进一步令p + q=10n,并与式(3)联立,可解得 显然,N+1-KK-N皆为正纯小数,且小数点后的数字位数仍然为n,从而pq皆为小于10n的正整数。若定义10nK分频为一个统计周期,则式(3)说明,在一个统计周期内,K分频在总体平均意义上可等效为pN分频和qN + 1分频。此即为双模前置小数分频器的分频原理。 2.2 算法实现 双模前置小数分频器的电路组成如图1所示。由图1可知,双模前置小数分频器由÷N / N+1双模分频器、控制计数器和控制逻辑三部分组成,每个周期分频K。假定a点电平为1时,进行N分频,a点电平为0时进行N+1分频,则通过适当设计控制逻辑,使在一个统计周期内分频器有次进行N分频,有进行N+1分频,这样,当从fo输出10n个脉冲时,在fi处输入了 . N + . (N + 1)个脉冲,也就是10n.K个脉冲。 图1 双模前置小数分频器的原理图 由前述分析可知,从N分频切换到N+1分频以及从N+1分频切换到N分频都会产生一个随时间增长的相位移,若简单地先进行10n (N + 1-K)次N分频后作10n (K - N)次N + 1分频,则分频后得到的信号会产生很大的相位波动,应设法将两种分频器混合均匀,这种“均匀”工作通过控制计数器来完成。 以分频比后为一位小数为例,“均匀”方法如下:在一个统计周期内,每进行一次分频,计数值为10减去分频比的小数部分,各次计数值累加。若累加结果小于10,则进行N + 1分频;若大于10或等于10,则进行N分频,并让累加结果的十位数自然溢出。如进行5.3倍分频,则在一个计数周期内,每进行一次分频,计数值为(10-3)= 7,显然,只有第1、4、7次累加结果小于10,所以为6分频,其余的累加结果均大于或等于10,则进行5分频,同时去掉累加结果的十位数,为下一次累加作好准备,表1给出了该分频器的分频过程。 表1 双模前置小数分频器的分频过程
分频比5.3
序号 累加结果 分频比
1 7 6
2 14 -> 4 5
3 11 -> 1 5
4 8 6
5 15 -> 5 5
6 12 -> 2 5
7 9 6
8 16 -> 6 5
9 13 -> 3 5
10 10 -> 0 5
若分频比后为两位小数,则一个统计周期内每次分频计数值为100减去分频比的小数部分;若分频比后为三位小数,则一个统计周期内每次分频计数值为1000减去分频比的小数部分,以此类推。 3 改进的双模前置小数分频算法 由前述分析可知,对于双模前置小数分频器,在一个统计周期内,若分频比后为一位小数,则需要进行10次NN+1分频才能在总体意义上达到与小数分频比等效的分频输出,若分频比后为两位或更多位小数,则达到与小数分频比等效的分频输出需要进行的NN+1分频次数成数量级增加。显然,对于任意小数分频器,若能充分利用整数和半整数分频设计方法,并借鉴双模前置小数分频器的设计思路,将图1中÷N / N+1双模分频器改为÷N / N + 0.5双模分频器,通过控制一个统计周期内两种分频比出现的不同次数,同样能在总体平均意义上获得所需的小数分频值,并可以预见,这一改进能使得到总体平均意义上与小数分频比等效的分频输出所需的分频次数减半,且有望使分频后信号的相位抖动得到进一步改善。 3.1 分频原理 对于式(1),若取Q=10n/2,则            (4) 式中,n为分频比K小数点后的数字位数。取,若KN’ > 0.5,则取N = N’ + 0.5。同理,易推得MNN + 0.5的线性组合。 令    (5) 进一步令p’ + q’=10n/2,并与式(5)联立,可解得  (6) 显然,N+0.5-KK-N皆为正纯小数,且小数点后的数字位数仍然为n,从而p’q’皆为小于10n/2的正整数。若定义10n/2次K分频为一个新的统计周期,则式(5)说明,在一个新的统计周期内,K分频在总体平均意义上可等效为p’N分频和q’N + 0.5分频。此即为改进双模前置小数分频器的分频原理。显见,新统计周期为原统计周期的一半,也即相比双模前置小数分频器,改进双模前置小数分频器能使得到总体平均意义上与小数分频比等效的分频输出所需的分频次数减半。 3.2 算法实现 改进双模前置小数分频器的电路组成与图1类似,只是需将图1中÷N / N + 1双模分频器改为÷N / N+0.5双模分频器,设计新的控制计数器并更新相应控制逻辑中的控制算法。与双模前置小数分频器类似,由于分频器的分频值在不断改变,分频后得到信号的相位抖动依然存在,仍应通过将两种分频混合均匀的方法来减小分频后得到信号的相位抖动,因而算法的关键仍是控制这种“均匀”工作的控制计数器的设计。 这里仍以一位小数情况为例。为便于分析,现对算法讨论中所用符号及含义说明如下: K——需要设计的小数分频器分频比; f1f2——÷N / N + 0.5双模分频器分频比; P——控制计数器累加变量。对于一位小数,有2 < P < 8。当P = 5时,表示分频输出总体平均意义上达到与小数分频比等效; ab——一个统计周期内需要进行的f1分频和f2分频的次数。由式(6)易得,a = 10.(f2 - K)、b = 10.(K - f1); UD——布尔变量,用来控制计数器计数方向。当UD = 0时,表示计数值累加,相位超前,当前进行f1分频;当UD = 1时,表示计数值累减,相位滞后,当前进行f2分频。则混合均匀的算法流程如图2所示。 图2 改进的双模前置小数分频器混合均匀算法流程图 从图2可以看出,改进双模前置小数分频器的工作过程如下: (1) 初始化控制计数器累加变量P=5,并根据分频比K对一个统计周期内需要进行的N / N + 0.5分频次数ab进行初始化; (2) 对ab大小进行比较,若a > b,则表示先进行N分频所得到的分频输出相位误差要较小,即令UD = 0,先进行N分频;否则表示先进行N + 0.5分频所得到的分频输出相位误差要较小,即令UD = 1,先进行N + 0.5分频; (3) 进行NN+0.5分频的同时,控制计数器根据UD对累加变量P进行累加或累减。若UD = 0,则P进行累加,累加值为b,否则P进行累减,累减值为a; (4) 在累加或累减的基础上对累加变量P进行进一步判断。若P≤2或P≥8,则UD 取反,即改变下一分频周期分频值,并对累加变量P进行修正,若原UD = 0,则P = P - b,否则P = P + a,为下一周期的分频作好准备。 仍以设计分频比为5.3的设计为例,则有K = 5.3,f1 = 5,f2 = 5.5,从而有a = 2,b = 3则由图2的“均匀”算法流程图,可得如表2所示的分频过程。 表2 改进的双模前置小数分频器的分频过程
分频系数5.3
序号 计数方向 累加结果 分频比
1 5-2=3 5.5
2 3+3=6 5
3 6-2=4 5.5
4 4+3=7 5
5 7-2=5 5.5
由表2可知,对于分频比后为一位小数的改进双模前置小数分频器,只需要5个分频周期即可得到总体意义上与给定小数分频比等效的分频输出,相比双模前置小数分频器减少了一半。 若分频比后为两位小数,则累加变量P的范围为20 ≤ P ≤ 80,初始值为P = 50,a = 100.(f2 - K),b = 100.(K - f1);若分频比后为三位小数,则累加变量P的范围为200 ≤ P ≤ 800,初始值为P = 500,a = 1000.(f2 - K),b = 1000.(K - f1)。依次类推。 4 算法仿真与分析 4.1 时序仿真及硬件开销 仍以设计分频比为5.3的小数分频器为例,在Quartus II软件中建立工程项目fd53,根据图1、图2算法流程,利用Verilog硬件描述语言和原理图描述相结合的方式,分别对双模前置小数分频器及其改进算法进行设计,并进行编译和时序仿真,可得图3、图4所示的仿真波形。
图3 双模前置小数分频器时序仿真图 图4 改进双模前置小数分频器时序仿真图
图中clk为输入时钟信号,fclk为分频输出信号,a为电平控制信号。从图3可以看出,当a为1时,进行5分频,当a为0时,进行6分频,在10个分频周期内达到等效的小数分频输出;从图4可以看出,当a为1时,进行5分频,当a为0时,进行5.5分频,只需5个分频周期内即达到等效的小数分频输出。 采用Atera公司的MAX7000S系列CPLD器件EPM7032SLC44-5芯片进行实现,该芯片包含32个逻辑宏单元,则双模前置小数分频器共使用了19个逻辑宏单元,资源利用率为59%,改进双模前置小数分频器共使用了26个逻辑宏单元,资源利用率为81%,较双模前置小数分频器多利用7个逻辑宏单元,硬件开销增加36.8%。 4.2 性能分析 假定分频输出的初始相位为0,令T为分频输入信号周期,则对于表1双模前置小数分频器,可得各次分频输出的相位偏移分别为 0,-0.7T,-0.4T,-0.1T,-0.8T, -0.5T,-0.2T,-0.9T,-0.6T,-0.3T。 对于表2的改进双模前置小数分频器,可得各次分频输出的相位偏移分别为 0,-0.2T,0.1T,-0.1T,0.2T。 显然,双模前置小数分频器在一个计数循环内的相位平均偏差不等于0,一个计数循环内的分频输出各脉冲的相位平均偏差为-0.45T,相位抖动均方差为0.3028T;而改进双模前置小数分频器在一个计数循环内的相位平均偏差等于0,相位抖动均方差为0.1581T。故相对于双模前置小数分频器,改进双模前置小数分频器分频后得到信号的相位抖动要小得多。因而其性能要远优于双模前置小数分频器。 5 结束语 本文在分析整数和半整数分频以及双模前置小数分频原理的基础上,提出了一种改进的双模前置小数分频算法。采用该改进算法设计的任意小数分频器,可以在一个计数循环内达到相位平均偏差等于0,其相位抖动均方差要远小于双模前置小数分频器。此外,不像用锁相环来实现非整数分频时大多需采用数模混合电路,改进的双模前置小数分频算法是一种全数字设计方法,采用CPLD或FPGA等大规模可编程逻辑器件,可以很方便地予以实现。但相比双模前置小数分频器,其唯一缺点是硬件开销增加较大,因而在实际应用中应根据需要加以选择。 参考文献: [1] 高博,龚敏.基于FPGA的可控分频器研究与设计[J].电子工程师,2003,29(6):44-46. [2] 古良玲,杨永明,郭巧惠.基于FPGA的半整数及整数分频器的参数化设计[J].电子器件,2005,28(2):404-406. [3] 刘亚海,林争辉.基于FPGA的小数分频器的实现[J].现代电子技术,2005,28(3):113-114. [4] 许德成.任意数分频设计方法[J].科技广场,2007,(11):219-220.



关键词: 一种     改进     小数     频器     设计     方法     进行     得到         

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]