基于FPGA的小数分频器的设计与实现

2014-04-29 07:58张建妮
电子世界 2014年15期
关键词:仿真

【摘要】本文首先分析了现有小数分频器的优缺点,在此基础上提出了一种改进型小数分频器的设计方法。同时结合VHDL文本输入和原理图输入方式,在FPGA开发平台上进行了电路设计,最后利用EDA设计软件QuartusII对其可行性进行了仿真验证。仿真结果表明:通过对参数的设置,该方案可实现等占空比的任意小数分频。

【关键词】FPGA;仿真;VHDL

引言

分频器是控制类电路中常用的模块之一。在实际应用中,设计人员常常需要将一个基准频率通过加、减、乘、除简单的四则运算进行频率合成,以满足不同的电路需求。常见的偶数分频、奇数分频等成整数关系的频率合成实现相对比较容易。但在某些的情况下,这种成整数关系的分频技术无法解决频率调整间隔过大的缺点,在此情况下本文提出了一种基于FPGA的小数分频的设计方法。

一般情况下,小数分频器包括半整数分频器和非半整数分频器。对于半整数分频器我们在《基于FPGA 的通用数控分频器的设计与实现》[1]中有过详细介绍。本文主要介绍非半整数分频器的设计和实现,并在FPGA开发平台上,结合VHDL文本输入和原理图输入方式进行了电路设计,同时利用EDA开发软件QuartusII对其可行性进行仿真验证。仿真结果表明:该方法实现的小数分频,具有精度高、转化速度快、资源消耗低,可编程等优点,同时克服了小数分频中等占空比不易实现的问题。

1.几种常见小数分频器

假设分频系数为K,输入频率为fin,输出频率为fout,则有:

(1)

其中:K>1

当分频系数为小数时,则K可以表示为:

(2)

或:

(3)

其中,M、N、N1、N2均为正整数,且。

1.1 用BCD比例乘法器4527实现

对于公式(2),可以利用十进制BCD比例乘法器的加法级联来实现[4]。如图1所示,为两个4527 BCD比例乘法器的级联。CLOCK端输入基准频率信号fin。A、B、C、D四个端口是置数端,用以控制比例乘法器输出脉冲序列的个数。假设高位4527 BCD(1)中置数值为N1,低位4527 BCD(2)中置数值为N2,在10个CLOCK脉冲中4527 BCD(1)输出N1个脉冲,同时,由INHOUT禁止4527 BCD(2)对CLOCK进行比例分配,直接将N1个脉冲由4527 BCD(2)输出。当CLOCK脉冲计数达到10个时, INHOUT发出允许信号,只允许一个CLOCK脉冲进入BCD(2)。如此,在100个CLOCK脉冲中,输出端总共会有(10 N1+ N2)个输出脉冲。则输出频率为:

(4)

由此,当有P个4527 BCD级联时,设预置数分别为N1,N2,…Np,

则输出频率为:

(5)

如图1所示。

此种方式的最大优点就是简单易实现,而且在理论上可以实现任意位数的小数分频。

图2 双模前置小数分频器电路结构

1.2 双模前置小数分频器

由公式(3),对于分频系数为K()的小数分频器,可利用两个分频系数分别为M和M+1的整数分频器均匀交错进行N1+N2次分频实现。这就是所谓的双模前置即在一个分频周期内,利用M分频器和M+1分频器进行均匀交错分频,使得其在一个分频周期内得到一个平均意义上的小数分频。电路结构如图2,由两个整数分频器、选择电路和控制电路三部分组成。

两个整数分频器可以分别由模M和M+1的计数器实现。选择电路的功能是依据控制逻辑a来交错选择是进行M分频还是M+1分频。

两种分频器进行交错的规律是:在N1+N2次分频中,进行N1次M分频,进行N2次M+1分频。将控制逻辑a按照N2累加,当a

表1 双模前置小数分频器交错分频规律

分频次数 累加值 分频系数

1 3 5

2 6 6

3 4 5

4 7 6

5 5 6

由于需要不断地在M和M+1两种分频器之间进行切换,所以此种方式最大的缺点是存在延时和竞争冒险。

2.一种改进型等占空比小数分频的设计

2.1 改进 型小数分频器的理论分析

在公式(3)的基础上,则有:

(5)

其中:且r、S为整数。在理论上当S、r取不同的整数值时,可实现任意小数分频。

图3 改进型小数分频器电路结构

在此意义上,相当于对时钟信号进行两级分频便可得到需要的小数分频。第一级分频,为分频系数为S的整数分频;第二级分频,是对第一级分频得到的结果再次进行系数为0

2.2 改进型小数分频器电路结构

根据上述理论分析,提出一种改进型等占空比小数分频器的实现方案,其电路结构如图3所示。在该电路中采用两级计数电路。

第一级计数电路为一个模S的加法计数器,并将计数结果S暂存在寄存器1中,同时计数器1复位,进行下一轮计数。第二级计數电路为一个模S+r的减法计数器,计数值为0时产生计数溢出信号,进行下一轮计数。其主要功能是对第一级计数结果进行修正。r为修正值,为了避免冲突,修正值被提前存放在寄存器2中,调整后的结果S+r被存放在寄存器3中。计数器2和计数器1是在同一时钟控制下工作。

占空比调整电路本质上是一个或门,即将一个模一计数器的输出与计数器2产生的非对称波进行或运算,就可将计数器2的非对称方波转化为等占空比脉冲。

2.3 改进型小数分频器的实现

综上,利用模S计数器、寄存器,即可实现等占空比的任意小数分频器。 在具体设计过程中可采用层次化的设计方法。首先,设计小数分频器中各个组成电路元件,然后通过元件例化的方法,调用各个底层元件,实现任意小数分频器。

模S计数器和寄存器的实现可以采用两种方式:一是调用LPM库中相应的参数化模块,二是利用VHDL描述语言实现[3]。利用LPM参数化模块进行设计时,可根据向导对参数进行必要的设置,QuartusII会生成相应的.vdh文本。为了能够调用该文本,最后还需要利用VHDL语言对相应的.vhd文本设计一个例化程序,并将其设置为顶层文件。二是利用VHDL描述语言实现[1]。

假设=100M,=10M,K=1.3,则S=10,r=3,其仿真结果如图4所示

3.小结

本文利用FPGA(现场可编程门阵列)丰富的硬件资源,结合EDA技术及VHDL硬件描述语言实现了一种任意小数分频器,相对于前边介绍的两种分频器,具有转化速度快,精度高等优点。同时,在对占空比有苛刻要求的特殊情况下,能够克服其它方案中无法实现等占空比的缺点,更具典型性。

参考文献

[1]张建妮,陆晓燕.基于FPGA 的通用数控分频器的设计与实现[J].电子世界,2013,10(2):127-127.

[2]周殿凤,康素成,王俊华.基于FPGA的任意数值分频器的设计信息化研究,2010,36(2):59-61.

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

[4]尹佳喜.小数分频器的设计及其应用[J].国外电子测量技术,2005,24:11-13.

[5]毛為勇,祁中洋,王兰.基于FPGA 的任意小数分频器的设计[J].桂林航天工业高等专科学校学报,2009.1(53):30-32

[6]袁泉,陈晓龙,王家礼.基于FPGA的小数分频器的实现方法[J].电子技术应用,2010,3(11):99-101.

作者简介:张建妮(1982—),女,讲师,现供职于西华师范大学物理与电子信息学院,主要从事电子技术方面的教学与研究。

猜你喜欢
仿真
一种帮助幼儿车内脱险应急装置的仿真分析
Buck开关变换器的基本参数设计及仿真分析
试析PLC控制下的自动化立体仓库仿真情况分析
基于MADYMO的航空座椅约束系统优化设计
中国体态假人模型与FAA Hybrid Ⅲ 型假人模型冲击差异性分析
机械加工仿真技术研究