基于FPGA任意倍数分频器设计

更新时间:2023-09-14 15:04:01 阅读量: 初中教育 文档下载

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

第 III 页

目 录

1 绪论 ........................................................................................................................................ 1 1.1 课题分析 ........................................................................................................................ 1 1.2 FPGA概述 ...................................................................................................................... 2 1.3 VHDL语言和QUARTUS II简介 ................................................................................. 4

1.3.1 VHDL语言简介 ................................................................................................... 4 1.3.2 QUARTUS II简介 ............................................................................................... 6

2 分频基本原理 ........................................................................................................................ 8 2.1 等占空比偶数分频方法 ................................................................................................ 8 2.2等占空比的奇数分频方法 ............................................................................................. 8 2.3 分数分频方法 ................................................................................................................ 9 2.4 小数分频方法 ................................................................................................................ 9 2.5 任意倍数分频器 .......................................................................................................... 10 3 任意倍数分频器设计 .......................................................................................................... 12 3.1 设计思想 ...................................................................................................................... 12 3.2 顶层框图设计 .............................................................................................................. 13 3.3 顶层文件设计 .............................................................................................................. 13

3.4 模块设计 ............................................................................................................... 14 3.4.1 偶数分频模块的设计 ........................................................................................ 14 3.4.2 奇数分频模块的设计 ........................................................................................ 15 3.4.3 半整数模块设计 ................................................................................................ 16 3.4.4 占空比可调的分频模块设计 ............................................................................ 17 3.4.5 小数分频模块设计 ............................................................................................ 18 3.4.6 encoder_35模块的设计 ..................................................................................... 19 3.4.7 led模块的设计 ................................................................................................... 20

第 IV 页

3.4.8 mux51模块的设计 ............................................................................................. 21

结论 .......................................................................................................................................... 22 致谢 .......................................................................................................................................... 24 参考文献 .................................................................................................................................. 25 附录A VHDL源程序 ............................................................................................................. 26 附录A1:偶数分频实现的程序 ....................................................................................... 26 附录A2 奇数分频实现的程序 ......................................................................................... 28 附录A3 半整数分频实现的程序 ..................................................................................... 30 附录 A4 占空比可调的分频实现的程序 ......................................................................... 32 附录 A5 小数分频实现的程序 ......................................................................................... 34 附录A6 ENCODER_35模块实现的程序 ............................................................................ 42 附录A7 LED的实现程序 ................................................................................................... 43 附录A8 MUX51模块的实现程序 ...................................................................................... 47 附录B顶层文件设计原理图 ................................................................................................. 48

第 1 页

1 绪论

1.1 课题分析

随着电子技术的高速发展,FPGA/CPLD以其高速、高可靠性、串并行工作方式等突出优点在电子设计中受到广泛的应用,而且代表着未来EDA设计的方向。FPGA/CPLD的设计采用了高级语言,如VHDL语言AHDL语言等,进一步打破了软件与硬件之间的界限,缩短了产品的开发周期。所以采用先进的FPGA/CPLD取代传统的标准集成电路、接口电路已成为电子技术发展的必然趋势[1]。

EDA技术代表了当今电子设计技术的最新发展方向,采用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。由于现代电子产品的复杂度和集成度的日益提高,一般分离的中小规模集成电路组合已不能满足要求,电路设计逐步地从中小规模芯片转为大规模、超大规模芯片,具有高速度、高集成度、低功耗的可编程朋IC器件已蓬勃发展起来[2]。

分频器是数字系统设计中的一种基本电路,我们往往需要通过分频器得到我们所需要的时钟频率,在FPGA的设计中也是使用频率非常高的一种基本设计。基于FPGA实现的分频电路一般有两种方法:一种是使用FPGA芯片内部提供的锁相环电路进行分频,如ALTERA提供的PLL(Phase Locked Loop),Xilinx提供的DLL(Delay Locked Loop);第二种是使用硬件描述语言,如VHDL、Verilog HDL等。使用锁相环电路进行分频有许多的优点,例如可以实现倍频、相位偏移以及占空比可调等。但是由于FPGA内部提供的锁相环个数极为有限,不能满足使用时的要求。因此使用硬件描述语言实现分频电路在数字电路设计较为常用,因为它消耗不多的逻辑单元就可以实现对时钟的操作,具有成本低、可编程等优点[3]。

在数字系统的设计中,设计人员会遇到各种形式的分频需求,如整数、小数、分数分频等。在某些数字系统设计中,系统不仅对频率有要求,而且对占空比也有着很严格的要求。由计数器或计数器的级联构成各种形式的偶数分频及非等占空比的奇数分频实现起来较为简单,但对半整数分频及等占空比的奇数分频实现较为困难,小数分

第 2 页

频和分数分频更困难。

本论文利用VHDL硬件描述语言,通过QuartusⅡ7.2开发平台,设计了一种能满足偶数分频,奇数分频,半整数分频,占空比可调的分频,小数分频的任意倍数分频器,并可以通过按钮来选择具体由哪一种分频器进行操作,而拨码开关则可以预置一些分频系数,发光二极管则显示具体由那种分频实现,数码管显示分频的系数。分频系数设置:偶数分频:2,4,6,8,10,12,14 奇数分频:1,3,5,7,9,11,13,15 半整数分频:1.5—15.5

占空比可调的分频:1:1,1:2,1:3,2:1,2:2,2:3,3:1,3:2,3:3 小数分频:1.1—3.3 1.2 FPGA概述

FPGA(Field Programmable Gate Array)现场可编程逻辑门阵列,它是在PAL(Programmable Array Logic)、GAL(generic array logic)、CPLD(Complex Programmable Logic Device)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(Application Specific Integrated Circuit)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它是当今数字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写。在修改和升级时,不需额外地改变PCB 电路板,只是在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本

以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。

第 3 页

FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,但是功耗较低。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。

FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块:FPGA芯片主要由6部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。FPGA的基本特点有: 1、采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。

2、FPGA可做其它全定制或半定制ASIC电路的中试样片。 3、FPGA内部有丰富的触发器和I/O引脚。

4、FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5、FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。

早在1980年代中期,FPGA已经在PLD设备中扎根。CPLD和FPGA包括了一些相对大数量的可编辑逻辑单元。CPLD逻辑门的密度在几千到几万个逻辑单元

第 44 页

else

if f=\

data6<=2*d5+c5;data7<=2*b5+a5;

else

if(data5>10) then

data6<=1;data7<=data5-10;

else

data6<=0;data7<=data5;

end if;

end if;

end if;

else

data6<=12;data7<=12;

end if;

end process; process(f) begin

case f is

when \when \when \when others=>data8<=12;

end case;

end process; process(clk,rst) begin

if(rst='0')then

cnt_scan<=\

elsif(clk'event and clk='1')then

第 45 页

cnt_scan<=cnt_scan+1;

end if; end process; process(cnt_scan) begin

case cnt_scan is

when\when\when\when others=>null;

end case;

end process; process(en_xhdl) begin

case en_xhdl is

when \when \when \when others => null;

end case;

end process; process(data4) begin

case data4 is

when 0 =>

dataout_xhdl1 <= \ when 1 =>

dataout_xhdl1 <= \ when 2 =>

第 46 页

dataout_xhdl1 <= \ when 3 =>

dataout_xhdl1 <= \ when 4 =>

dataout_xhdl1 <= \ when 5 =>

dataout_xhdl1 <= \ when 6 =>

dataout_xhdl1 <= \ when 7 =>

dataout_xhdl1 <= \ when 8 =>

dataout_xhdl1 <= \ when 9 =>

dataout_xhdl1 <= \ when 10 =>

dataout_xhdl1 <= \ when 11 =>

dataout_xhdl1 <= \ when 12 =>

dataout_xhdl1 <= \ when others=>null;

end case;

end process; end arch;

第 47 页

附录A8 mux51模块的实现程序

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity mux51 is port(

a,b,c,d,e:in std_logic; y1,y2,y3,y4,y5:in std_logic; y:out std_logic;

f1,f2,f3,f4,f5:out std_logic );

end mux51;

architecture rtl of mux51 is

signal m:std_logic_vector(4 downto 0); begin

m<=a&b&c&d&e; process(m) begin

case m is

when \when \when \when \when \when others=>f1<='0';f2<='0';f3<='0';f4<='0';f5<='0';y<='0'; end case;

end process; end rtl;

第 48 页

附录B顶层文件设计原理图

图B1 顶层文件设计原理图

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

Top