基于EDA技术的智能函数发生器设计课程设计Word格式.docx
《基于EDA技术的智能函数发生器设计课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于EDA技术的智能函数发生器设计课程设计Word格式.docx(30页珍藏版)》请在冰豆网上搜索。
该软件支持的器件有:
StratixⅡ、StratixGX、Stratix、Mercury、MAX3000A、MAX7000B、MAX7000S、MAX7000AE、MAXⅡ、FLEX6000、FLEX10K、FLEX10KA、FLEX10KE、Cyclone、CycloneⅡ、APEXⅡ、APEX20KC、APEX20KE和ACEX1K系列。
QuartusⅡ软件包的编程器是系统的核心,提供功能强大的设计处理,设计者可以添加特定的约束条件来提高芯片的利用率。
QuartusII提供了更优化的综合和适配功能,改善了对第三方仿真和时域分析工具的支持。
QuartusII还包括DSPBuilder开发工具,支持系统级的开发,支持NisoII入式核,IP核和用户定义逻等。
由于它是一门迅速发展的新技术,涉及面广,内容丰富,理解各异,目前尚无统一的看法。
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA的开发相对于传统PC、单片机的开发有很大不同。
FPGA以并行运算为主,以硬件描述语言来实现;
相比于PC或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别,也造成了FPGA开发入门较难。
目前国内有专业的FPGA外协开发厂家,如[北京中科鼎桥ZKDQ-TECH]等。
FPGA开发需要从顶层设计、模块分层、逻辑实现、软硬件调试等多方面着手。
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输入输出模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。
FPGA利用小型查找表(16×
1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。
FPGA芯片主要由7部分完成,分别为:
可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
3总体方案
乒乓游戏机可由控制模块(my111)和四个七段译码器模块(disp0、disp1、disp2、disp3)组成。
设计框图如下:
图3.1乒乓游戏机系统框图
设计思路:
(1)建立一个工程:
核心模块和四个七段译码器模块。
分别输入五个模块的vhdl代码并生成原理图。
(2)在该个工程中,分别引用
(1)中的五个原理图,用原理图完成乒乓游戏机的设计。
(3)编译完成后,功能仿真。
(4)设计特色功能,并重新下载调试。
(5)进一步完善,并拍照和记录数据。
特色功能:
①一局之内,任何一方先记满11分比赛结束,同时蜂鸣器报响。
②在比赛期间,每进一球,记分牌加一分,同时进球方所对应的LED灯发光工作一次。
4五个模块原理图和功能仿真
4.1控制模块原理图和功能仿真
图4.1控制模块原理图
图4.2控制模块功能仿真
说明:
信号clk周期为2ns,clr为清零键,所以常置1。
af为a方发球,aj为a方接球。
bf为b方发球,bj为b方接球。
ah、al为a方分数的高位和低位。
bh、bl为b方分数的高位和低位。
Shift为球每移动一位的LED灯。
awin为a方赢球,bwin为b方赢球。
4.2七段译码器模块原理图和功能仿真
图4.3七段译码器disp0模块原理图
说明:
此模块为数码管控制模块,功能是控制七段数码管对转换后的数字量进行显示,使其完成甲方和乙方各自得分记录显示。
其中D[3..0]接数据转换模块的输出端口,Q[6..0]连接七段扫描数码管的段输入a、b、c、d、e、f、g,利用其控制特性在数码管上显示出参加乒乓球游戏的甲乙双方各自的得分。
图4.4七段译码器模块disp0功能仿真
ah为a方得分高位,q0[0]-q0[6]为一个数码管所对应的。
由上面仿真图可以看出,译码模块完成了对数据在数码管上正确地显示。
波形符合要求。
图4.5七段译码器disp1模块原理图
图4.6七段译码器模块disp1功能仿真
al为a方得分低位,q1[0]-q1[6]为第二个数码管所对应的。
图4.7七段译码器disp2模块原理图
图4.8七段译码器模块disp2功能仿真
bh为b方得分高位,q2[0]-q2[6]为第三个数码管所对应的。
图4.9七段译码器disp3模块原理图
图4.10七段译码器模块disp3功能仿真
bl为b方得分低位,q3[0]-q3[6]为第四个数码管所对应的。
5整体电路框图和功能仿真
图5.1乒乓游戏机整体框图
图5.2乒乓游戏机功能仿真
(1)
信号clk周期为2ns,clr为清零键,常置高电平。
当a方发球,在恰当的时间b方接到球,当球回到a方时,a方又接到球,但b方没有再接到球的波形仿真,从图中可以看出来乒乓球的行动路线,并可以看出,此时a方得一分。
图5.3乒乓游戏机功能仿真
(2)
信号clk周期为2ns,clr置高电平时。
a方两次发球,b方没有接到球,a方得2分的仿真波形图。
图5.4乒乓游戏机功能仿真(3)
a方发球,b方提前击球的情况,此时,a方得1分。
图中还显示了a方发球,b方在规定的时候没有接到球的情况,此时a方又得1分。
图5.5乒乓游戏机功能仿真(4)
当b方发球,a方在恰当的位置接到球,而b方没有接到球的情况,
此时,a方得1分。
图5.6乒乓游戏机功能仿真(5)
当a方得分增加到11分的情况,此时awin输出高电平,输出分数保持不变。
当按下清零键后,得分清为零,awin输出恢复低电平,又开始新的一局。
6智能函数发生器实物展示
图6.1乒乓球下载实验板
sw11为bf,sw10为bj,sw0为af,sw1为aj,sw17为clk时钟信号,sw16为clr清零键。
LEDR2-LEDR9为八盏显示乒乓球移动的位置。
LEDG0表示a得11分获胜,LEDG1表示b得11分获胜。
此图表示a方得11分,b方得1分,a方获得胜利。
图6.2乒乓球下载实验板
sw11为bf,sw10为bj,sw0为af,sw1为aj,sw17为clk时钟信号,sw16为clr清零键。
此图表示a方得8分,b方得11分,b方获得胜利。
7设计总结
本课题在选题及研究过程是在周丽婕和赵兰老师的悉心指导下完成的。
老师们多次询问研究过程,并为我们指点迷津,帮助我们开拓思路,精心点拨,热忱鼓励。
应用FPGA技术完成乒乓游戏机的设计,设计简单。
可以看到利用FPGA技术完成一个电子设计,可以节省我们开发时间,从而大大提高我们的效率。
采用新的技术就是为了提高我们效率,快速完成设计任务。
我们两人为一小组,我们一组设计乒乓游戏机,在所做的过程中我们一直坚信是可以完成的,并且在老师们的帮助下我们实现了两个基本模块:
控制模块、七段译码器模块和各自的特色模块。
对VHDL语言的自顶向下设计方法有了进一步的认识;
在底层文件具备的条件下,使用原理图可以使设置更加简单。
使程序清晰,增加可读性。
熟悉了写电子设计试验报告的方法,为写毕业设计论文奠定了一定的基础。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
参考文献
[1]张亦华等主编.数字逻辑设计实验技术与EDA工具[M].北京:
邮电大学出版社,2003
[2]朱正伟王其红韩学超编著《EDA技术及应用》第二版M,清华大学出版社,2013年3月第二版,起始页码P284-P291。
附录
主模块VHDL
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYmy111IS
PORT(clr,af,aj,bf,bj,clk:
INSTD_LOGIC;
shift:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
ah,al,bh,bl:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
awin,bwin:
OUTSTD_LOGIC);
ENDmy111;
ARCHITECTUREbehaveOFmy111IS
SIGNALamark,bmark:
INTEGER;
BEGIN
PROCESS(clr,clk)
VARIABLEa,b:
STD_LOGIC;
VARIABLEshe:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
IFclr='
0'
THEN
a:
='
;
b:
she:
="
00000000"
amark<
=0;
bmark<
ELSIFclk'
EVENTANDclk='
1'
THEN
IFa='
ANDb='
ANDaf='
10000000"
ELSIFa='
ANDbf='
00000001"
IFshe>
8THEN
IFbj='
THEN
=amark+1;
ELSE
&
she(7DOWNTO1);
ENDIF;
ELSIFshe=0THEN
ELSE
ENDIF;
IFshe<
16ANDshe/=0THEN
IFaj='
=bmark+1;
=she(6DOWNTO0)&
'
shift<
=she;
ENDPROCESS;
PROCESS(clk,clr,amark,bmark)
VARIABLEaha,ala,bha,bla:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEtmp1,tmp2:
VARIABLEt1,t2:
aha:
0000"
ala:
bha:
bla:
tmp1:
tmp2:
t1:
t2:
IFaha="
0001"
ANDala="
ELSIFbha="
ANDbla="
ELSIFamark>
tmp1THEN
IFala="
1001"
=aha+1;
=tmp1+1;
=ala+1;
ELSIFbmark>
tmp2THEN
IFbla="
=bha+1;
=tmp2+1;
=bla+1;
al<
=ala;
bl<
=bla;
ah<
=aha;
bh<
=bha;
awin<
=t1;
bwin<
=t2;
ENDPROCESS;
ENDbehave;
七段译码器VHDL
disp0
ENTITYdisp0IS
PORT(ah:
INSTD_LOGIC_VECTOR(3DOWNTO0);
q0:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDdisp0;
ARCHITECTUREbehaveOFdisp0IS
PROCESS(ah)
BEGIN
CASEahIS
WHEN"
=>
q0<
1000000"
1111001"
0010"
0100100"
0011"
0110000"
0100"
0011001"
0101"
0010010"
0110"
0000010"
0111"
1011000"
1000"
0000000"
WHENOTHERS=>
0010000"
ENDCASE;
disp1
ENTITYdisp1IS
PORT(al:
q1:
ENDdisp1;
ARCHITECTUREbehaveOFdisp1IS
PROCESS(al)
CASEalIS
q1<
disp2
ENTITYdisp2IS
PORT(bh:
q2:
ENDdisp2;
ARCHITECTUREbehaveOFdisp2IS
PROCESS(bh)
CASEbhIS
q2<
disp3
ENTITYdisp3IS
PORT(bl:
q3:
ENDdisp3;
ARCHITECTUREbehaveOFdisp3IS
PROCESS(bl)
CASEblIS
q3<
引脚说明表
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;
学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;
学校可以采用影印、缩印、数字化或其它复制手段保存论文;
在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论