基于FPGA任意倍数分频器设计已处理.docx
- 文档编号:18626067
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:37
- 大小:28.95KB
基于FPGA任意倍数分频器设计已处理.docx
《基于FPGA任意倍数分频器设计已处理.docx》由会员分享,可在线阅读,更多相关《基于FPGA任意倍数分频器设计已处理.docx(37页珍藏版)》请在冰点文库上搜索。
基于FPGA任意倍数分频器设计已处理
1绪论1
1.1课题分析1
1.2FPGA概述2
1.3VHDL语言和QUARTUSII简介4
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
结论23
致谢24
参考文献25
附录AVHDL源程序26
附录A1:
偶数分频实现的程序26
附录A2奇数分频实现的程序28
附录A3半整数分频实现的程序30
附录A4占空比可调的分频实现的程序32
附录A5小数分频实现的程序34
附录A6encoder_35模块实现的程序42
附录A7led的实现程序43
附录A8mux51模块的实现程序47
附录B顶层文件设计原理图48
1绪论
1.1课题分析
随着电子技术的高速发展,以其高速、高可靠性、串并行工作方式等突出优点在电子设计中广泛应用,代表着未来EDA设计的方向。
的设计采用了高级语言如VHDL语言,进一步打破了之间的界限,。
采用先进的取代传统的标准集成电路、接口电路电子技术发展的必然趋势。
分频器是数字系统设计中的基本电路,。
本文利用VHDL硬件描述语言,通过Quartus开发平台―3.3
1.2FPGA概述
FPGAField?
Programmable?
Gate?
Array现场可编程逻辑门阵列,它是在PAL(ProgrammableArrayLogic)genericarraylogic、CPLDComplexProgrammableLogicDevice等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路ApplicationSpecificIntegratedCircuit领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
它是当今数字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写。
在修改和升级时,不需额外地改变PCB?
电路板,只是在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本
以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,但是功耗较低。
但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的但是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
另外一种方法是用CPLD(复杂可编程逻辑器件备)。
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块FPGA芯片主要由6部分完成,分别为:
可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
采用FPGA设计ASIC电路专用集成电路,用户不需要投片生产,就能得到合用的芯片。
FPGA可做其它全定制或半定制ASIC电路的中试样片。
FPGA内部有丰富的触发器和I/O引脚。
FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
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逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万。
CPLD和FPGA的主要区别是他们的系统结构。
CPLD是一个有点限制性的结构。
这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器。
这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。
而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。
CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。
因此一个有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置。
允许他们的设计随着系统升级或者动态重新配置而改变。
一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行。
CPLD和FPGA还有一个区别:
CPLD下电之后,原有烧入的逻辑结构不会消失;而FPGA下电之后,再次上电时,需要重新加载FLASH里面的逻辑代码,需要一定的加载时间。
Altera,Xilinx,Actel,Lattice。
其中Altera作为世界老牌可编程逻辑器件的厂家,是当前世界范围内市场占有率最大的厂家,它和Xilinx主要生产一般用途FPGA,其主要产品采用RAM工艺。
Actel主要提供非易失性FPGA,产品主要基于反熔丝工艺和FLASH工艺。
VHDL语言和QUARTUSII简介
VHDL(VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage是超高速集成电路硬件描述语言是一种用于电路设计的高级语言。
出现由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
VHDL主要应用数字电路的设计。
目前,应用多数在FPGA/CPLD/EPLD的设计中一些较为单位,用来设计ASIC。
VHDL语言具有多层次描述系统硬件功能的能力,既可以描述系统级电路,又可以描述门级电路。
而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。
另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。
VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的。
FPGA/CPLD器件中去,以便进行硬件调试和验证,从而实现可编程的专用集成电路ASIC的设计。
VHDL主要用于描述数字系统的结构,行为,功能和接口除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL系统设计与其他硬件描述语言相比,具有强的行为描述能力,从而决定了成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。
归纳起来,VHDL语言主要具有以下优点:
VHDL语言功能强大,设计方式多样
VHDL语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。
同时,它还具有多层次的电路设计描述功能。
此外,VHDL语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。
VHDL语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。
VHDL语言具有强大的硬件描述能力
VHDL语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。
同时,VHDL语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。
VHDL语言的强大描述能力还体现在它具有丰富的数据类型。
VHDL语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。
VHDL语言具有很强的移植能力
VHDL语言很强的移植能力主要体现在:
对于同一个硬件电路的VHDL语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。
VHDL语言的设计描述与器件无关
采用VHDL语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。
这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。
当硬件电路的设计描述完成以后,VHDL语言允许采用多种不同的器件结构来实现。
VHDL语言程序易于共享和复用
VHDL语言采用基于库library的设计方法。
在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。
这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。
由于VHDL语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。
QUARTUSII简介
QuartusII是Altera公司综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL等多种设计输入形式,内嵌有综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户充分利用成熟的模块,简化了设计的复杂性加快了设计速度QuartusII支持器件类型丰富图形界面。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了plusII友好的图形界面及简便的使用方法。
QuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:
可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;
芯片(电路)平面布局连线编辑;
LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;
完备的电路功能仿真与时序逻辑仿真工具;
定时/时序分析与关键路径延时分析;
可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;
支持软件源文件的添加和创建,并将它们链接起来生成编程文件;
使用组合编译方式可一次完成整体设计流程;
自动定位编译错误;
高效的期间编程与验证工具;
可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;
能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
支持7000/3000等乘积项器件N倍N为偶数分频的实现方法:
通过由待分频的时钟触发的模为N/2-1的计数器计数,当计数器从0计数到N/2-1时,输出时钟信号进行翻转,同时给计数器一个复位信号,使得计数器在下一个时钟重新开始计数,采用这种方法不断循环,就可得到所需的N倍分频器。
这种方法可以实现占空比为50%的任意偶数分频
2.2等占空比的奇数分频方法
占空比为50%的N倍N为奇数分频的实现方法:
首先通过时钟的上升沿触发进行计数,当计数到某一个特定值时对计数输出进行翻转,然后经过N-1/2个输入时钟,再次对计数输出进行翻转,从而得到一个占空比非50%的N倍奇数分频时钟。
在此同时进行时钟的下降沿触发进行计数,当计数到和上升沿触发输出时钟翻转时所选的特定值相同时,对计数输出进行翻转,同样经过N-1/2个时钟时,再次对计数输出进行翻转,从而得到另一个占空比非50%的N倍奇数分频时钟。
然后对两个占空比非50%的N倍奇数分频时钟进行逻辑或运算,就能得到一个占空比为50%的N倍奇数分频时钟。
如进行三倍分频时钟设计时,先通过待分频时钟上升沿触发计数器进行模三计数,当计数器计数到特定值时进行翻转,比如可以在计数器计数到时,输出时钟进行翻转,当计数到2时再次进行翻转,这样实际上实现一个占空比为1/3的三分频时钟。
然后通过待分频时钟下降沿触发计数,采用和上升沿触发的计数相似的方法,可以产生另外一个三分频的时钟,然后下降沿产生的三分频时钟和上升沿产生的时钟进行逻辑或运算,就可得到占空比为50%的三分频时钟[6]。
2.3分数分频方法
数分频器的设计思想与小数分频器类似。
假设进行.分频,总分频次数由分母m决定,规律是进行n次j+1分频和m-n次j分频。
两种分频交替进行的计算方法也和小数分频类似。
究竟是进行j+1分频还是j分频就看累加的结果是大于等于分母还是小于分母。
的分频计算过程见表2.1可见要进行6次4分频,5次3分频,满足上面的规律。
分数分频器,其中j、m、n分别取3、11、6,故实现了分频,参数n1、n2用来调节占空比。
表2.1分频序列
分频次数累加器分频系数1632124383414451046163712488391441010311164
2.4小数分频方法
小数分频器是通过可变分频和多次平均的方法得到的[4-5]。
假设要进行m,n、n<10<3.6分频序列
分频次数累加器分频系数1632124383414451046637124883914410104从表2.2中看出分频规律是:
首先进行3分频,然后进行4分频,接着1次3分频和2次4分频,如此循环下去。
2.5任意倍数分频器
加入控制模块就可以将上述4种分频器集成到一起,变成任意数值分频器,顶层原理见图2.1
图2.1任意倍数分频器框图
当输入的二进制数a00时实现偶数和占空比不等于50%,a0150%a10和ll时分别实现小数和分数分频。
其中m、jm、nj调整整数部分,而m、nnl和n2用于调节分数和小数分频的占空比。
因为有小数和分数分频,所以预置端口较多,但是可调性也达到了最大。
3任意倍数分频器设计
3.1设计思想
本设计的设计思想是:
把偶数分频,奇数分频,半整数分频,占空比可调的分频,小数分频这5种比较常见的分频器集成在一块芯片之上,并可以通过按钮来选择具体由哪一种分频器进行操作,而拨码开关则可以预置一些分频系数,发光二极管则显示具体由那种分频实现,数码管显示分频的系数。
具体功能如下:
1、p,q,v:
功能选择按钮。
f1,f2,f3,f4,f5:
表明功能的序号。
P0,q0,v0:
偶数分频,f11,f2f3f4f50;
P0,q0,v1:
奇数分频,f21,f1f3f4f50;
P0,q1,v0:
半整数分频,f31,f1f2f4f50;
P0,q1,v1:
可预置占空比分频,f41,f1f2f3f50;
P1,q0,v0:
小数分频,f51,f1f2f3f40;
2、clk:
时钟信号。
Rst:
复位信号。
3、a,b,c,d:
表明分频系数
偶数分频:
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.6
4、y:
输出信号。
y5:
段选择信号。
y6:
位选择信号。
5、y6fb选中第三个数码管y6fd选中第二个数码管y6fe选中第一个数码管,数码管显示分频系数。
3.2顶层框图设计
图3.1顶层框图设计原理图
该顶层框图主要由六个部分组成:
选择按钮,拨码开关,二极管,分频器种类选择,信号输出。
各部分的功能如下:
选择按钮:
设置输入的方式,选择需要实现何种分频。
拨码开关:
提供分频的系数。
发光二极管:
显示第几种分频被选择。
FPGA:
根据前面的输入来确定何种分频器进行工作。
数码管:
显示分频系数。
信号输出:
把分频后的信号进行输出。
3.3顶层文件设计
分频器的顶层文件是一个原理图文件,它包含8个模块8个模块encoder-35模块,led模块,fenpin-e模块,fenpin-o模块,fenpin-m模块,fenpin-h模块,fenpin-x模块,mux51模块。
模块的正确性已在上面的介绍中进行验证了。
通过将各个模块用具有电气性质的导线将各个模块连接起来,这样原理图文件就建好了。
保存编译。
在建立一个.vwf波形文件,保存并仿真。
原理图见附录B所示,以8分频为例子进行仿真,其仿真结果如图3.3所示:
图3.3顶层文件波形仿真结果图
P0,q0,v0:
偶数分频,f11(表明第一个发光二极管亮),f2f3f4f50;
Rst0时,不分频。
Rst1时:
当y599时,数码管1显示4。
当y5ff时,数码管2不显示。
当y5c0时,数码管3显示0。
最终结果为:
三个数码管显示为:
0,不显示,4。
3.4模块设计
偶数分频模块根据拨码开关选择分频系数(count),对输入的clk信号进行偶数分频。
本设计偶数分频的关键是对clk信号的上升信号进行计数(temp)。
当temp小于count/2时clout输出1,否则输出0,从而实现偶数分频。
只有当35译码器的输出选中偶数分频且rst1时偶数分频才工作。
偶数分频实现的程序见附录A1。
偶数分频(4分频)模块程序仿真结果如图3.4所示:
图3.4偶数分频
从仿真结果可以看出:
本设计的优点是:
当rst0,sel0时,输出信号为低电平;当rst或者sel中有一个为低电平时,计数器停止计数,但保持上一状态继续输出,当恢复rst1,sel1时继续计数,执行分频。
奇数分频模块根据拨码开关选择分频系数(count1),对输入的clk信号进行偶数分频。
本设计奇数分频的关键是对clk信号的上升沿信号进行计数(p)和对clk信号的下降沿信号进行计数(q)。
当pcount1-1/2或者qcount1-1/2时clout输出1,否则输出0,从而实现奇数分频。
只有当35译码器的输出选中偶数分频且rst1时奇数分频才工作。
奇数分频实现的程序见附录A2。
奇数分频(7分频)模块程序仿真结果如图3.5所示:
图3.5奇数分频
从仿真结果可以看出:
这种设计的优点是:
当rst与sel当中任意一个为0时,即放弃对本次的计数并保持输出为低电平,在下一次rst与sel都等于1时,重新开始计数,执行分频。
半整数分频模块根据拨码开关选择分频系数(count1),对输入的clk信号进行偶数分频。
本设计偶数分频的思想如图3.6所示:
图3.6半整数分频原理图
只有当35译码器的输出选中偶数分频且rst1时半整数分频才工作。
半整数分频实现的程序见附录A3。
半整数分频(6.5分频)模块程序仿真结果如图3.7所示:
图3.7半整数分频
从仿真结果可以看出:
本设计的优点是:
在rst或者sel有一个为低电平时,计数器停止计数,维持上一状态输出,当rst和sel都为高电平的时,重新开始计数,执行分频。
占空比可调的分频模块根据拨码开关选择占空比(m1:
n1),对输入的clk信号进行占空比可调的分频。
本设计占空比可调的分频的关键是对clk信号的上升沿信号进行计数temp。
当tempm1时clkout2输出1,否则输出0,从而实现占空比可调的分频。
只有当35译码器的输出选中偶数分频且rst1时占空比可调的分频才工作。
占空比可调的分频实现的程序见附录A4。
占空比可调的分频(1:
3分频)模块程序仿真结果如图3.8所示:
图3.8占空比可调分频
从仿真结果可以看出:
这种设计的优点是:
在rst或者sel有一个为低电平时,可以保持前一状态和计数结果,使其具有记忆功能。
在恢复工作时,继续计数,具有有良好的性能。
小数分频模块根据拨码开关选择分频系数(n.x),对输入的clk信号进行小数分频。
本设计小数分频的关键是实现(10-x)次n分频和x次的n+1分频的交替进行,从而实现小数的分频。
只有当35译码器的输出选中偶数分频且rst1时占空比可调的分频才工作。
小数分频实现的程序见附录A5.
小数分频(1.3分频)模块程序仿真结果如图3.9所示:
图3.9小数分频
从仿真结果可以看出:
这种设计的有优点是:
在rst或者sel有一个为低电平时,可以保持低电平输出,并保持计数。
在恢复工作时,继续计数,具有有良好的性能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 任意 倍数 分频器 设计 处理