基于FPGA的通用可控分频器的设计.docx
《基于FPGA的通用可控分频器的设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的通用可控分频器的设计.docx(19页珍藏版)》请在冰豆网上搜索。
基于FPGA的通用可控分频器的设计
泉州师范学院
毕业论文(设计)
题目基于FPGA的通用可控分频器的设计
物理与信息工程学院电子信息科学与技术专业2007级
学生姓名李文才学号070303018
指导教师曾永西职称讲师
完成日期2011年4月1日
教务处制
基于FPGA的通用可控分频器的设计
泉州师范学院电子信息科学与技术专业070303018李文才
指导教师曾永西讲师
【摘要】介绍了基于FPGA的通用可控分频器的工作原理和设计过程。
根据分频技术原理,使用Altera公司的EP2C8Q208C8芯片为核心器件,在QuartusII平台上,用VHDL语言编程完成了分频器的软件设计、编译、调试、仿真和下载,然后与外围硬件电路相结合调试,最终设计出能进行2到9999分频和占空比1%到99%可调的分频器,该分频器的输入信号为1MHZ。
【关键词】FPGA;VHDL;通用分频器;分频系数;占空比
目录
第1章引言3
1.1课题分析3
1.2VHDL语言和QUARTUSII简介3
1.2.1VHDL简介3
1.2.2QuartusII简介4
第2章方案选择及原理分析4
2.1通用可控分频器硬件方案选择4
2.2通用可控分频器原理分析4
2.2.1偶数分频器4
2.2.2奇数分频器5
第3章硬件设计6
3.1系统设计的主要组成分…………………………………………………………………..6
3.2FPGA简介7
3.3显示电路介绍7
第4章软件设计7
4.1系统分析7
4.2系统的结构和模块划分7
4.2.1固定数值分频模块8
4.2.2按键和显示模块8
4.2.3占空比和分频系数可控分频模块9
4.3可控分频的实现10
第5章软硬件的系统测试10
结论10
参考文献11
致谢11
附录Ⅰ测量的数据表12
附录Ⅱ程序12
第1章引言
分频器是数字系统设计中的一种基本电路,我们往往需要通过分频器得到我们所需要的时钟频率。
在实际设计中我们经常用到的为整数分频,有时要求等占空比,有时又要求非等占空比。
在同一个设计中有时要求多种形式的分频,通常由计数器或计数器的级联结构构成各种形式的任意占空比偶数分频及非等占空比的奇数分频,实现起来比较简单,对于等占空比的奇数分频以及可控的分频实现起来会较为困难。
本文利用VHDL硬件描述语言,通过QuartusⅡ7.2开发平台,使用Altera公司的FPGA芯片,设计了一种能够满足上述要求,而且较为通用的可控分频器。
只需在分频器的输入端用按键输入相应的分频系数,就可以得到所需的频率。
1.1课题分析
随着电子技术的高速发展,FPGA/CPLD以其高速、高可靠性、串并行工作方式等突出优点在电子设计中受到广泛的应用,而且代表着未来EDA设计的方向。
FPGA/CPLD的设计采用了高级语言,如VHDL语言AHDL语言等,进一步打破了软件与硬件之间的界限,缩短了产品的开发周期。
所以采用先进的FPGA/CPLD取代传统的标准集成电路、接口电路已成为电子技术发展的必然趋势。
EDA技术代表了当今电子设计技术的最新发展方向,采用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在汁算机上自动处理完成。
由于现代电子产品的复杂度和集成度的日益提高,一般分离的中小规模集成电路组合已不能满足要求,电路设计逐步地从中小规模芯片转为大规模、超大规模芯片,具有高速度、高集成度、低功耗的可编程朋IC器件已蓬勃发展起来。
[1]
分频器是一种在FPGA的设计中使用效率非常高的设计,使用硬件描述语言进行设计消耗不多的逻辑单元就可以实现对时钟的操作,具有成本低、可编程等优点。
1.2VHDL语言和QUARTUSII简介
1.2.1VHDL语言简介
VHDL(VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage)是超高速集成电路硬件描述语言,是一种用于电路设计的高级语言。
它出现于80年代后期,刚开始时它是由美国国防部开发出来的,是为了供美军用来提高设计的可靠性和缩减开发周期的一种使用范围比较小的设计语言。
VHDL语言主要应用于数字电路系统的设计。
目前,国内对它的应用多数集中在FPGA/CPLD/EPLD的设计当中,除此之外,一些较为有实力的单位,也将它用来设计ASIC。
VHDL语言具有多层次描述系统硬件功能的能力,既可以描述系统级电路,又可以描述门级电路。
而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。
另外,VHDL还支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。
VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。
VHDL语言具有自顶向下和基于库的设计特点。
其开发流程:
在顶层用方框图或硬件语言对电路的行为进行描述后,进行系统仿真验证和纠错,再用逻辑综合优化工具生成具体的门级逻辑电路的网表,然后通过适配器将网表文件配置于指定的目标器件,产生最终下载文件或配置文件。
最后把适配后生成的下载或配置文件通过编程器或编程电缆下载到具体的FPGA/CPLD器件中去,以便进行硬件调试和验证,从而实现可编程的专用集成电路ASIC的设计。
VHDL主要用于描述数字系统的结构,行为,功能和接口,除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL系统设计与其他硬件描述语言相比,具有比较强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言之一。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
[2]
1.2.2QuartusII简介
QuartusII是Altera公司设计的综合性PLD开发软件,它支持原理图、VHDL、VerilogHDL以及AHDL等多种设计输入形式,内嵌有综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,这样可以使用户充分的利用成熟的模块,从而简化了设计的复杂性,进而加快了设计的速度。
QuartusII支持的器件类型非常丰富,其图形界面也易于操作。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy的设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
QuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的喜爱和欢迎。
第2章方案选择及原理分析
2.1通用可控分频器硬件方案选择
分频器是数字电路中最常用的电路之一,在FPGA的设计中也是使用频率非常高的一种基本设计。
基于FPGA实现的分频电路一般有两种方法:
一种是使用FPGA芯片内部提供的锁相环电路进行分频,如ALTERA提供的PLL(PhaseLockedLoop),Xilinx提供的DLL(DelayLockedLoop);第二种是使用硬件描述语言,如VHDL、VerilogHDL等。
使用锁相环电路进行分频有许多的优点,例如可以实现倍频、相位偏移以及占空比可调等。
但是由于FPGA内部提供的锁相环个数极为有限,不能满足使用时的要求。
因此使用硬件描述语言实现分频电路在数字电路设计较为常用,因为它消耗不多的逻辑单元就可以实现对时钟的操作,具有成本低、可编程等优点。
[3]
2.2通用可控分频器原理分析
实现分频电路最基础的东西是计数器,设计分频器的关键在于输出电平在何时进行翻转。
计数器的种类分为普通计数器和约翰逊计数器两种,这两种计数器在分频电路中均可使用,最普通的计数器是加法或减法计数器。
在同一时刻,加法计数器的输出可能有多位发生变化,因此,当使用组合逻辑对输出进行译码时,可能会导致尖峰脉冲信号。
下面使用加法计数器来分别描述各种分频器的实现。
2.2.1偶数分频器
偶数分频最易于实现,想要实现占空比为50%的偶数N分频,一般来说有两种方案:
一是当计数器计数到N/2-1时,将输出的电平进行一次翻转,并同时给计数器一个复位信号,使计数器重新开始计数,如此循环下去,便可实现占空比为50%的偶数N分频;二是当计数器的输出为0到N/2-1时,时钟的输出为0或1;当计数器的输出为N/2到N-1时,时钟的输出为1或0;当计数器计数到N-1时,将计数器进行复位,重新开始计数,如此循环下去,也能实现50%偶数分频。
需指出的是,第一种方案只能实现占空比为50%的分频器,而第二种方案还可以对占空比进行有限度的调整。
图2.150%占空比2分频时序图
图2.24分之1占空比4分频时序图
2.2.2奇数分频器
想要实现非50%占空比的奇数分频,比如实现占空比为20%(1/5)、40%(2/5)、60%(3/5)、80%(4/5)的5分频器,我们可以采用类似于偶数分频的第二种方案;但如果要实现占空比为50%的奇数分频,就不能采用偶数分频中所采用的方案了。
图2.35分之1占空比5分频时序图
要产生50%占空比的奇数分频实现起来会比较麻烦一点,需通过待分频的时钟下降沿触发计数,产生一个占空比为40%(2/5)的5分频器。
将产生的时钟与上升沿触发产生的时钟相或,即可得到一个占空比为50%的5分频器。
推广为一般方法:
欲实现占空比为50%的2N+1分频器,则需要对待分频时钟上升和下降沿分别进行N/(2N+1)分频,然后将两个分频所得的时钟信号相或便可得到占空比为50%的2N+1分频器。
[4]
图2.450%占空比5分频时序图
第3章硬件设计
本系统的设计采用VHDL硬件描述语言编程来实现,除了按键输入部分和数码显示部分以外,其余全部在FPGA芯片cycloneII系列的EP2C8Q208C8上实现。
其系统结构如下图3.1所示:
图3.1系统硬件结构
该系统的硬件主要由FPGA模块、数码管显示模块和按键模块组成 。
系统结构精简、可靠,而且具有很高的灵活性。
硬件系统PCB如图3.2所示:
图3.2硬件系统PCB
3.2CycloneII芯片简介
在CycloneI器件系列非常成功的基础上,Altera公司的CycloneII系列扩大了FPGA的密度,最多可以达到68416个逻辑单元,并且还提供了622个可用的输入/输出引脚和1.1M比特的嵌入式寄存器。
CycloneII器件的制造是基于300mm晶圆,采用台积电90nm、低K值的电介质工艺制作而成的,这种工艺技术采用了低绝缘体过程,这样就确保了快速性、有效性和低成本。
CycloneII器件通过使硅片的面积最小化,所以可以在单芯片上支持复杂的数字系统,而且在成本上还可以和ASIC进行竞争。
Altera最新一代低价位的FPGA——cycloneIIFPGA系列,和同类的90nmFPGA器件相比,提高了百分之六十的性能和降低了一半的功耗。
它的低成本和优化特征使CycloneII系列为各种各样的汽车、消费、通讯、视频处理、测试以及测量、和其他最终市场提供了理想的解决方案。
CycloneII设备系列拥有以下的特点:
●4608到68416LEs的高密度的结构;
●嵌入式乘法器;
●先进的I/O口支持;
●灵活的时钟管理电路;
●设备的配置;[5]
3.3显示电路介绍
该分频器的显示模块是由6块74LS48译码芯片和6个共阴极七段LED数码管组成,4个七段LED显示分频系数,令外两个显示占空比。
74LS48是输出高电平有效的中规模集成BCD七段显示译码驱动器,74LS48的输入端是四位二进制信号(8421BCD码),a、b、c、d、e、f、g是七段译码器的输出驱动信号,高电平有效,可直接驱动共阴极七段数码管,使能端全部悬空。
74LS48译码芯片如图3.3所示:
图3.374LS48引脚图
第4章软件设计
4.1系统分析
该分频系统可实现2到9999任意整数分频以及占空比1%到99%可调,被分频的时钟频率为1MHZ。
由于硬件会产生时间延时,频率大到一定程度时输出的波形会有失真情况。
对于奇数50%占空比分频,软件处理需要对待分频时钟上升沿和下降沿分别进行N/(2N+1)分频,然后将两个分频所得的时钟信号相或,这样输出的波形有可能会出现毛刺现象。
4.2系统的结构和模块划分
根据上面的分析,系统结构模块有:
固定数值分频模块,按键和显示模块,两个占空比和分频系数可控分频模块。
结构图如图4.1所示:
图4.1系统结构
4.2.1固定数值分频模块
固定数值分频模块将FPGA上的25MHZ时钟频率分别进行25分频和25000000分频得到1MHZ和1HZ时钟频率,其中1HZ作为按键的控制频率,1MHZ作为可控分频模块的输入频率。
也就是说本系统是对1MHZ时钟频率进行分频,在实际中我们可以根据我们的需要改变分频系数从而对其他时钟频率进行分频。
对于按键的控制频率,1HZ的输入可以使我们按住按键时1秒钟改变一次数值,及进行一次加1操作。
固定数值分频模块如图4.2所示:
图4.2固定数值分频
4.2.2按键和显示模块
该模块的输入为8个按键,其中2个按键为拨码开关,分别为复位按键和使能输出按键,当rst=1,及该按键按下时系统复位;当en=0,及该按键没按下时,按键的键值输出,en=1时为计数处理阶段。
Key_fre[3..0]为设置分频系数的4个按键,输出的键值为0到9999。
Key_ph[1..0]为设置占空比的2个按键,输出的键值为0到99。
out_fre为按键的键值输入给可控分频模块以达到2到9999任意整数分频,out_cycle为按键的键值输入给可控分频模块以达到占空比1%到99%可调。
该模块的输出为6个数码管,其中4个显示分频系数,2个显示占空比。
系统分频后的频率和波形在示波器上显示。
按键和显示模块如图4.3所示;
图4.3按键和显示
4.2.3占空比和分频系数可控分频模块
由于50%奇数分频处理起来比其他整数分频麻烦,所以将其作为单独分频模块进行处理,而偶数任意占空比分频和非50%奇数分频作为令一个分频模块进行处理。
50%奇数分频的分频时钟为1MHZ,其中fre_in1和cycle_in1为按键键值,这样就达到了分频系数和占空比可控的目的。
50%奇数分频模块如图4.4所示:
图4.450%奇数分频模块
非50%奇数和任意占空比偶数分频模块的分频时钟也为1MHZ,其中fre_in和cycle_in为按键键值,这样也达到了分频系数和占空比可控的目的。
非50%奇数和任意占空比偶数分频模块如图4.5所示:
图4.5非50%奇数和任意占空比偶数分频
4.3可控分频的实现
可控分频系统是由硬件描述语言VHDL来描述实现的。
其系统的各个模块的VHDL程序见附录Ⅱ。
由上面的系统结构图可以看出,将各个模块连接起来得到整个的可控分频软件工作过程。
第5章软硬件的系统测试
把写好的VHDL程序进行引脚锁定,综合,适配,编程下载,调试。
将FPGA模块、显示模块、按键及电源模块连接好,被分频的时钟频率fpga内部时钟进行分频提供,然后通过JTAG下载模式在线将生成的配置文件写入芯片中。
通过不断的反复调试,修改,最终完成本项方案设计。
软硬件的系统数据测试结果如附录Ⅰ。
结论
FPGA最大的特点就是比较灵活,它可以实现你所需要的任何数字电路,同时也可以制定出各种电路,这样就大大减少了受制于专用芯片的束缚,真正达到了为自己的产品量身定做。
FPGA在设计过程中可以灵活的更改,并且它强大的逻辑资源和寄存器资源可以让你轻松的去发挥设计理念,硬件实现的方式可以应对设计中大量的高速电子线路设计需求。
在此基础上,我们完全可以不必修改硬件电路,直接通过修改VHDL源程序,来增加一些新功能,满足不同用户的需要,实现数字系统硬件的软件化。
该可控分频系统的设计过程中,出现的比较麻烦的问题就是利用VHDL语言编写按键模块时,数据类型跟算数运算出现冲突,本身VHDL语言进行乘除运算时限制比较多。
我一开始按键数据类型设置为进制数,这样需调用quartusII本身的乘除模块才能实现乘除运算,但没有达到按键模块所要实现的功能。
在这问题上浪费了很多时间,最后只有通过改变所以模块上的数据类型,将其改为整型才顺利的完成了所要达到的功能。
该分频器存在着很多不足之处,主要表现在两方面。
第一,它不能完成小数分频,对于一些精度要求比较高的场合,提供不了所需要的时钟频率。
第二,由于硬件的限制以及个人能力有限,最大分频系数只能到达9999,很多场合也得不到所需的时钟频率。
参考文献
[1]擦光辉.CPLD/TPGA的开发与应用[M].北京:
电于工业出版社,2002.
[2]潘松,黄继业.EDA技术实用教程(第三版)[M].北京:
科学出版社,2006.
[3]吴玉吕,胡水强,王文娟.基于CPLD/FPGA的多功能分频器的设计与实现[L].世界电子元器件,2007(03).
[4]汪虹,李宏.基于FPGA的等占空比任意整数分频器的[J].仪器与仪表.2005.5.3.
[5]张静亚.FPGA系统设计中资源分配的分析和研究[J].信息化研究,2009,35(3):
37239.
致谢
在本次设计中我的指导老师曾老师给予了我很大的帮助,他为我们提供了很好的实验环境和我们所需的各种器件。
在此期间他严格要求我们,他那兢兢业业的工作精神和踏实真诚的处事态度也使我产生了很大的动力。
在这里我要向曾老师表达最衷心的感谢。
同时我也要感谢我的同学,正是他们平时的帮助和鼓励,让我遇到困难时总是能比较快的解决,最终顺利完成本次设计。
ThegeneralcontrollablepointsbasedonFPGAdesignoffrequencydevice
InstituteofPhysicsandInformationEngineering
ElectronicInformationScienceandTechnology
070303018WenCaiLiLecturerYongXiZeng
【abstract】introducesgeneralcontrollablepointsbasedonFPGAfrequencyinverterworkingprincipleanddesignprocess.Accordingtothetheory,weuseseparatefrequencytechnologyofAlteracompanyEP2C8Q208C8chipinforthecoredevice,QuartusIIplatform,withVHDLlanguageprogrammingcompletedpointsofthefrequencyofansoftwaredesign,compilation,debugging,simulationanddownload,thencombinedandperipheralhardwarecircuit,thefinaldesignoutcommissioningto2to999pointsfrequencyandoccupiesemptiescomparedto1%to99%adjustablepointsfrequencydevice,thispointstothefrequencyofaninputsignal1MHZ.
【keywords】FPGA;VHDL;Generalpointsfrequencymanometers;Pointsfrequencycoefficients;Occupiesemptiescompared
附录Ⅰ测量的数据表
分频系数
测得频率值/Hz
2
500.00KHZ
3
333.33KHZ
10
100.00KHZ
51
19.608KHZ
100
10.000KHZ
501
1.9960KHZ
1000
1.0000KHZ
2001
499.75HZ
3000
333.33HZ
4001
249.94HZ
5000
200.00HZ
6001
166.64HZ
7000
142.85HZ
8001
124.98HZ
9000
111.11HZ
9999
100.01HZ
附录Ⅱ程序
顶层文件设计
(1)分频得到1M和10HZ频率
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityclk_bis
port(clk:
instd_logic;
clk1M,clk10:
outstd_logic);
endentity;
architecturebehaveofclk_bis
signalclk1,clk3,clk4:
std_logic;
signaltemp1,temp2:
integerrange0to24;
signaltemp:
integerrange0to1249999;
begin
process(clk)--上升沿
begin
if(rising_edge(clk))then
if(temp1<24)then
temp1<=temp1+1;
elsetemp1<=0;
endif;
if(temp1<12)then
clk3<='1';
else
clk3<='0';
endif;
endif;
endprocess;
process(clk)--下降沿
begin
if(falling_edge(clk))then
if(temp2<24)then
temp2<=temp2+1;
elsetemp2<=0;
endif;
if(temp2<12)then
clk4<='1';
else
clk4<='0';
endif;
endif;
endprocess;
process(clk)--10HZ
begin
ifclk'eventandclk='1'then
temp<=temp+1;
iftemp=1249999then
clk1