1、基于 CPLD/FPGA 的半整数分频器的设计 文章作者:林海波文章类型:设计应用 文章加入时间:2003 年 10 月 28 日 17:35文章出处:国外电子元器件 摘要:简要介绍了 CPLD/FPGA 器件的特点和应用范围,并以分频比为 2.5 的半整数分频器的设计为例,介绍了在 MAX+plus II开发软件下,利用 VHDL 硬件描述语言以及原理图的输入方式来设计数字逻辑电路的过程和方法。 关键词:VHDL CPLD/FPGA 数字逻辑电路设计 半整数分频器1 引言CPLD(Complex programmable Logic Device,复杂可编程逻辑器件)和 FPGA(Field
2、 programmable Gates Array,现场可编程门阵列)都是可编程逻辑器件,它们是在 PAL、GAL 等逻辑器件基础上发展起来的。同以往的 PAL、GAL 相比,FPGA/CPLD 的规模比较大,适合于时序、组合等逻辑电路的应用。它可以替代几十甚至上百块通用 IC 芯片。这种芯片具有可编程和实现方案容易改动等特点。由于芯片内部硬件连接关系的描述可以存放在磁盘、ROM、PROM、或 EPROM 中,因而在可编程门阵列芯片及外围电路保持不动的情况下,换一块 EPROM 芯片,就能实现一种新的功能。它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及实时在
3、检验等优点,因此,可广泛应用于产品的原理设计和产品生产之中。几乎所有应用门阵列、PLD 和中小规模通用数字集成电路的场合均可应用 FPGA 和 CPLD 器件。在现代电子系统中,数字系统所占的比例越来越大。系统发展的越势是数字化和集成化,而 CPLD/FPGA 作为可编程 ASIC(专用集成电路)器件,它将在数字逻辑系统中发挥越来越重要的作用。在数字逻辑电路设计中,分频器是一种基本电路。通常用来对某个给定频率进行分频,以得到所需的频率。整数分频器的实现非常简单,可采用标准的计数器,也可以采用可编程逻辑器件设计实现。但在某些场合下,时钟源与所需的频率不成整数倍关系,此时可采用小数分频器进行分频。
4、比如:分频系数为 2.5、3.5、7.5 等半整数分频器。笔者在模拟设计频率计脉冲信号时,就用了半整数分频器这样的电路。由于时钟源信号为 50MHz,而电路中需要产生一个 20MHz 的时钟信号,其分频比为 2.5,因此整数分频将不能胜任。为了解决这一问题,笔者利用 VIDL 硬件描述语言和原理图输入方式,通过 MAX+plus II 开发软件和 ALTERA 公司的 FLEX系列 EPF10K10LC84-4 型 FPGA 方便地完成了半整数分频器电路的设计。2 小数分频的基本原理小数分频的基本原理是采用脉冲吞吐计数器和锁相环技术先设计两个不同分频比的整数分频器,然后通过控制单位时间内两种分
5、频比出现的不同次数来获得所需要的小数分频值。如设计一个分频系数为 10.1 的分频器时,可以将分频器设计成 9 次 10 分频,1 次 11 分频,这样总的分频值为:F=(910+111)/(9+1)=10.1从这种实现方法的特点可以看出,由于分频器的分频值不断改变,因此分频后得到的信号抖动较大。当分频系数为 N-0.5(N为整数)时,可控制扣除脉冲的时间,以使输出成为一个稳定的脉冲频率,而不是一次 N 分频,一次 N-1 分频。图 2 模 3 计数器仿真波形3 电路组成分频系数为 N-0.5 的分频器电路可由一个异或门、一个模 N 计数器和一个二分频器组成。在实现时,模 N 计数器可设计成带
6、预置的计数器,这样可以实现任意分频系数为 N-0.5 的分频器。图 1 给出了通用半整数分频器的电路组成。采用 VHDL 硬件描述语言,可实现任意模 N 的计数器(其工作频率可以达到 160MHz 以上),并可产生模 N 逻辑电路。之后,用原理图输入方式将模 N 逻辑电路、异或门和 D 触发器连接起来,便可实现半整数(N-0.5)分频器以及(2N-1)的分频。4 半整数分频器设计现通过设计一个分频系数为 2.5 的分频器给出用 FPGA 设计半整数分频器的一般方法。该 2.5 分频器由模 3 计数器、异或门和D 触发器组成。图 3 2.5 分频器电路原理图4.1 模 3 计数器该计数器可产生一
7、个分频系数为 3 的分频器,并产生一个默认的逻辑符号 COUNTER3。其输入端口为 RESET、EN 和 CLK;输出端口为 QA 和 QB。下面给出模 3 计数器 VHDL 描述代码:library ieee;use ieee.std-logic-1164.all;use ieee.std-logic-unsigned.all;entity counter3 isport(clk,reset,en:in std-logic;qa,qb:out std-logic);end counter3;architecture behavior of counter3 issignal count:s
8、td-logic-vector(1 downto 0);beginprocess(reset,clk)beginif reset=1thencount(1 downto 0)=“00“;elseif(clk event and clk=1)thenif(en=1)thenif(count=“10“)thencount=“00“;elsecount=count+1;end if;end if;end if;end if;end process;qa=count(0);qb=count(1);end behavior;任意模数的计数器与模 3 计数器的描述结构完全相同,所不同的仅仅是计数器的状态数
9、。上面的程序经编译、时序模拟后,在MAX+PLUS II 可得到如图 2 所示的仿真波形。图 4 2.5 分频器仿真波形图4.2 完整的电路及波形仿真将 COUNTER3、异或门和 D 触发器通过图 3 所示的电路逻辑连接关系,并用原理图输入方式调入图形编辑器,然后经逻辑综合即可得到如图 4 所示的仿真波形。由图中 outclk 与 inclk 的波形可以看出,outclk 会在 inclk 每隔 2.5 个周期处产生一个上升沿,从而实现分频系数为 2.5 的分频器。设 inclk 为 50MHz,则 outclk 为 20MHz。因此可见,该电路不仅可得到分频系数为 2.5 的分频器(outclk),而且还可得到分频系数为 5 的分频器(Q1)。5 结束语选用 ALTERA 公司 FLEX 系列 EPF10K10LC84-4 型 FPGA 器件实现半整数分频后,经逻辑综合后的适配分析结果如表 1 所列。本例中的计数器为 2 位宽的位矢量,即分频系数为 4 以内的半整数值。若分频系数大于 4,则需增大 count 的位宽。表 1 半整数分频器适配分析结果选用器件 I/O 延迟时间 使用引脚数 工作频率EPF10K10LC844 17.7ns 5/84(5.95%) 68.02MHz