1、基于FPGA勺任意倍数分频及设计摘要随着电子技术、芯片集成技术、计算机及其软件等技术的飞速发展,现场可编程逻辑门阵列 FPGA (Field Programmable Gate Array ),从最初的数千个可利用 门发展到如今的数百万个可利用门的单位FPGA芯片。FPGA以其低电压、低功耗、体积小、高可靠性、设计灵活、静态可重复编程、开发周期短、开发成本不断降 低等特点成为很多电子系统的首选。分频器是数字系统设计中的基本电路,在同 一个设计中有时要求多种形式的分频,如偶数分频、奇数分频、半整数分频等;有时要求等占空比,有时要求非等占空比。本文通过在Quarturs H 6.0开发平台下,设计
2、一种能够实现等占空比、非等占空比整数及半整数分频的通用分频器。关键词:FPGA VHDL 分频器1引言众所周知分频器是 FPGA设计中使用频率非常高的基本设计之一111 o分频器是数字系统设计中的基本电路。在数字系统的设计中,设计人员会遇到各种形式 的分频需求,如偶数分频、奇数分频、半整数分频、小数分频和分数分频等。在 某些设计中,系统不仅对频率有要求,而且对占空比也有严格的要求。由计数器或计数 器的级联构成各种形式的偶数分频及非等占空比的奇数分频实现起来较为简单,但对半整数分频及等占空比的奇数分频实现较为困难,小数分频和分数分频更困难。为了解决这一问题,首先分析了各种分频器的设计方法, 然后
3、将其综合起来成为一套简明的设计 方法,设计了一个任意倍数分频器,该分频器占用的逻辑资源较少。所有分频均通过VHDL语言进行了编译并且给出了仿真图。主要在 QuartusII开发平台下基于 FPGA 方式完成通用分频器的设计,本设计中的分频器可移植性强,占用的FPGA资源少。由 于分频器应用非常广泛,顾本设计具有很强的使用价值。2 FPGA2.1 FPGA工作原理FPGA采用了逻辑单元阵列LCA (Logic Cell Array )这样一个概念,内部包括可配置逻辑模块 CLB (Configurable Logic Block )、输出输入模块 IOB (Input Output Block
4、)和内部连线(Interconnect)三个部分。现场可编程门阵列(FPGA)是可编程器件。与传统逻辑电路和门阵列(如 PAL , GAL及CPLD器件)相比,FPGA 具有不同的结构,FPGA利用小型查找表(16X1RAM )来实现组合逻辑,每个查 找表连接到一个 D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这 些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的 逻辑功能以及各模块之间或模块与I/O间的联接方式,并
5、最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。2.2 FPGA发展方向第一个方向,也是传统方向主要用于通信设备的高速接口电路设计,这一方向主 要是用FPGA处理高速接口的协议,并完成高速的数据收发和交换。这类应用通常要求 采用具备高速收发接口的FPGA,同时要求设计者懂得高速接口电路设计和高速数字电 路板级设计,具备EMC/EMI设计知识,以及较好的模拟电路基础,需要解决在高速收 发过程中产生的信号完整性问题。FPGA最初以及到目前最广的应用就是在通信领域, 一方面通信领域需要高速的通信协议处理方式,另一方面通信协议随时在修改,非常不适合做成专门的芯片。因此能够灵活改变功能的FP
6、GA就成为首选。到目前为止FPGA的一半以上的应用也是在通信行业。第二个方向,可以称为数字信号处理方向或者数学计算方向,因为很大程度上这一方向已经大大超出了信号处理的范畴。例如早就在2006年就听说老美将FPGA用于金融数据分析,后来又见到有将FPGA用于医学数据分析的案例。在这一方向要求 FPGA 设计者有一定的数学功底,能够理解并改进较为复杂的数学算法, 并利用FPGA内部的 各种资源使之能够变为实际的运算电路。目前真正投入实用的还是在通信领域的无线信 号处理、信道编解码以及图像信号处理等领域,其它领域的研究正在开展中,之所以没有大量实用的主要原因还是因为学金融的、学医学的不了解这玩意。不
7、过最近发现欧美有很多电子工程、计算机类的博士转入到金融行业,开展金融信号处理,相信随着转入 的人增加,FPGA在其它领域的数学计算功能会更好的发挥出来,而我也有意做一些这 些方面的研究。不过国内学金融的、学医的恐怕连数学都很少用到,就不用说用FPGA来帮助他们完成数学_运算了,这个问题只有再议了。第三个方向就是所谓的SOPC方向,其实严格意义上来说这个已经在 FPGA设计的 范畴之内,只不过是利用FPGA这个平台搭建的一个嵌入式系统的底层硬件环境, 然后 设计者主要是在上面进行嵌入式软件开发而已。设计对于FPGA本身的设计时相当少的。但如果涉及到需要在FPGA做专门的算法加速,实际上需要用到第
8、二个方向的知识, 而如果需要设计专用的接口电路则需要用到第一个方向的知识。三分频器器件介绍目前市场上主要有两类可编程逻辑器件: PLD和FPGA。PLD分解组合逻辑的功 能很强,一个宏单元就可以分解十几个甚至 20- 30多个组合逻辑输入,FPGA的一个 LUT只能处理4输入的组合逻辑。因此,PLD适合用于设计复杂组合逻辑。 但FPGA 的制造工艺确定了 FPGA芯片中包含的LUT和触发器的数量非常多,往往成千上万, PLD 一般只能做到512个逻辑单元,如果我们这样计算:用芯片价格除以逻辑单元数 量,那么FPGA的平均逻辑单元成本大大低于 PLD。所以如果设计中使用到大量触发 器,例如设计一
9、个复杂的时序逻辑,那么使用 FPGA就是一个很好选择。四分频器原理3.1 等占空比的偶数分频在设计偶数倍分频器时,常用的方法是:通过一个由待分频时钟上升沿所触发 的计数器循环计数来实现N倍(N为偶数)分频的实现方法:通过由待分频的时钟触发的模为(N/2)-1的计数器计数,当计数器从0计数到(N/2)-1时,输出时钟信号进行翻转,同时给计数器一个复位信号,使得计数器在下一个时钟重新开始计数,采用这种方法不断循环,就可得到所需的N倍分频器。这种方法可以实现占空比为50%的任意偶数分频12-31。3.2 等占空比的奇数分频占空比为50%的N倍(N为奇数)分频的实现方法:首先通过时钟的上升沿触发 进行
10、计数,当计数到某一个特定值时对计数输出进行翻转,然后经过(N-1)/2个输入时钟,再次对计数输出进行翻转,从而得到一个占空比非50%的N倍奇数分频时钟。在此同时进行时钟的下降沿触发进行计数,当计数到和上升沿触发输出时 钟翻转时所选的特定值相同时,对计数输出进行翻转,同样经过(N-1)/2个时钟时,再次对计数输出进行翻转,从而得到另一个占空比非50%的N倍奇数分频时钟。然后对两个占空比非50%的N倍奇数分频时钟进行逻辑或运算,就能得到一个占空比为50%的N倍奇数分频时钟。如进行三倍分频时钟设计时,先通过待分频时 钟上升沿触发计数器进行模三计数,当计数器计数到特定值时进行翻转,比如可以在计数器计数
11、到时,输出时钟进行翻转,当计数到2时再次进行翻转,这样实际上实现一个占空比为1/3的三分频时钟。然后通过待分频时钟下降沿触发计数,采用和上升沿触发的计数相似的方法,可以产生另外一个三分频的时钟,然后下降沿产生的三分频时钟和上升沿产生的时钟进行逻辑或运算,就可得到占空比为 50%的三分频时钟。 3.3半整数分频半整数分频器设计思想:通过异或门和2分频模块组成一个改变输入频率的脉冲添加电路,也就是说N-0.5个输入信号周期内产生了 N个计数脉冲,即输入信号其中的 一个含一个脉冲的周期变为含两个脉冲的周期。而这一改变是输入频率与2分频输出异 或的结果。由2分频输出决定一个周期产生两个脉冲有两种方式:
12、当一个输入信号来一个脉冲(前半周期)时,2分频输出变为lclk_in取反,后半周期就会产生一个脉冲; 2分频输出由变为0寸,clk_in刚把一个周期(前半周期)内低电平变为高电平产 生一个脉冲,而后半周期的脉冲与的或不变。从而实现N-0.5分频。3.4通用分频器上面介绍了各种单一功能的分频器的原理和 VHDL实现,本文所讨论的通用分频器 主要就是设定一个选择信号 SEL。当SEL为“0时实现等占空比的偶数分频,当 SEL 为“01时实现等占空比的奇数分频,当 SEL为“10时实现占空比为X/ (N-X)的N倍 整数分频,当SEL为“11时实现半整数分频。五结束语1985年,当全球首款FPGA产
13、品诞生,虽然当时可编程器件从任何意义上来讲 都不是当时的主流,因为被认为速度慢难以使用,但是随着技术的不断进步,现 在的FPGA技术不但克服了初期的缺点,而且其效能高、成本低、可靠性高、便 于长期维护、编程灵活等优点也使其成为现在可编程器件的主流。FPGA技术正持续提升为高阶工具,为所有产业提供可重新城市设计晶片的便利优势。参考文献1徐志军.徐光辉.CPLD/FPGA的开发与应用.电子工业出版社.20022陈振官.数字电路及制作实例,国防工业出版社, 20063ALTERA 公司,Introduction to Quartus 口 , 20074侯伯亨,顾新.VHDL硬件描述语言及数字逻辑电路设计,西安电子科技大学出版社,2005