EDA四人抢答器设计_第1页
EDA四人抢答器设计_第2页
EDA四人抢答器设计_第3页
EDA四人抢答器设计_第4页
EDA四人抢答器设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计说明书目 录前言11软件及语言相关介绍21.1quartus软件介绍及功能21.2VHDL语言介绍32设计要求与说明52.1抢答器鉴别模块52.2回答计时模块52.3计分模块52.4顶层文件综合模块53单元模块电路设计73.1抢答器鉴别模块73.1.1设计原理图73.1.2编译报告73.1.3仿真结果83.1.4设计说明83.2计时模块83.2.1设计原理图83.2.2编译报告93.2.3仿真结果93.2.4设计说明93.3计分模块103.3.1计分模块原理图103.3.2编译报告113.3.3仿真结果113.3.4设计说明113.4顶层文件模块123.4.1顶层模块原理图123.4.

2、2编译报告123.4.3仿真结果133.4.4设计说明13心得体会14参考文献15附录 顶层文件源程序16前言现代电子产品几乎渗透了社会的各个领域EDA技术是电子设计的发展趋势,EDA工具从数字系统设计的单一领域,应用范围已涉及模拟、微波等多个领域,可实现各个领域电子系统设计的测试、设计仿真和布局布线等。设计者只要完成对电子系统的功能描述,就可利用计算机和EDA工具,进行设计处理,最终得到设计结果。随着大规模集成电路技术和计算机技术的不断发展,即便是普通的电子产品的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性价比大幅度提高。不言而喻,EDA技术将迅速成

3、为电子设计领域中的极其重要的组成部分。从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用广泛、工具多样、软件功能强大。在信息通信领域,要优先发展高速宽带信息网、深亚微米集成电路、新型元器件、计算机及软件技术、第三代移动通信技术、信息管理、信息安全技术,积极开拓以数字技术、网络技术为基础的新一代信息产品,发展新兴产业,培育新的经济增长点。这次设计的题目为四人抢答器,主要从抢答、计分和计时模块加以设计,然后将之综合起来,抢答共分四路,当有一路抢答成功之后将封锁其他路的抢答请求消息,直至主持人按下复位键并开始新一轮的抢答。计时部分主持人可以通过外部按钮自动设置计时的初始值,最大计时为59s

4、,并且计时结束时带有警报信号以起到警示的作用,若时间未到还可通过外部按键防止警报信号响起。计分部分对于锁定的选手每答对一题加一分,答错一题减一分,其他选手的分不变,对于选手的锁定通过前面抢答模块的台数显示状态的传递来实现。通过用VHDL语言对每个模块的功能加以实现,最后撰写顶层文件将每个分模块加以综合使之成为一个整体。用VHDL语言编写各模块的功能,实现现实的模拟,然后用波形图对每个模块进行仿真,以检验设计VHDL代码的正误并对程序不断改进,直至仿真波形达到理想的效果,最后将代码通过管脚锁定下载到硬件实验箱上,用硬件显示进一步检验设计的效果。这次我们使用的是Cyclone 实验箱,型号是EP3

5、C40Q240C8,共有240个引脚。1软件及语言相关介绍1.1quartus软件介绍及功能Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。 Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 Quartus

6、II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。 此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。 Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。

7、目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。 Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。 Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设

8、计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL

9、网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。1.2VHDL语言介绍VHDL的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,诞生于 1982 年。1987 年底,VHDL被 IEEE 和美国国防部确认为标准硬件描述语言。 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件

10、,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有以下优点: (1) VHDL 语言功能强大,设计方式多样 VHDL 语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述

11、功能。此外,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法; 既支持模块化设计方法,也支持层次化设计方法。 (2) VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类型。V

12、HDL 语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。 (3) VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。 (4) VHDL 语言的设计描述与器件无关 采用 VHDL 语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL 语言允

13、许采用多种不同的器件结构来实现。 (5) VHDL 语言程序易于共享和复用 VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。 由于 VHDL 语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。2设计要求与说明本设计共分为三大模块:抢答器鉴别模

14、块、回答计时模块、记分模块,最后是顶层文件综合模块。2.1抢答器鉴别模块在这个模块中主要实现抢答过程中的抢答功能,可以记录抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余各路抢答信号封锁并发出警报的的功能,直至主持人按下复位键警报声停止,在主持人的允许下开始新一轮的抢答。其中有四个抢答信号a、b、c、d;抢答使能信号en;抢答与警报时钟信号clk;系统复位信号rst;抢答台号状态显示信号state;警报信号ring。2.2回答计时模块在这个模块中主要实现回答开始后的计时功能,时间以倒计时显示,当显示00时警报响起以提醒时间选手到停止回答,当主持人按下复位键后警报解除且时间显示

15、初始值,如果时间未到参赛选手回答完,此时主持人按下停止键以防止警报响起并且时间显示初始值,同时主持人还可以通过两个按键分别对个位和十位的初始值进行设置,可以根据实际情况确定回答时间的长短,以免造成时间的浪费。其中有计时脉冲信号clk,使能信号en1,复位信号rst,回答完时间未到计时停止信号stop,计时时间预设置信号ta、tb,其中ta、tb分别对个位和十位进行控制,并且按一下相应位数字减1,以及时间预设置使能信号lad,只有高电平时有效,输出警报信号warn,两位时间显示输出digit1、digit2。2.3计分模块在这个模块中主要对各位选手的得分进行控制,答对一题加一分,答错一题减一分,

16、否则没有变化。其中主要有输入脉冲信号clk,复位信号rst2以对选手的分数进行初始化,加减分使能信号en,加减分控制信号add,参赛选手台号显示信号state,输出有a、b、c、d分数显示信号a_out、b_out、c_out、d_out。2.4顶层文件综合模块在这个模块中主要将前三个模块进行例化,把这三个模块综合起来,使之成为一个整体以完成整个抢答器的设计。其中输入信号主要包括四个参赛选手控制端a、b、c、d,脉冲信号clk,控制抢答和计分部分的使能端en,控制计时部分的使能端en1,控制抢答和计时部分的复位端rst,控制计分部分的复位端rst2,以及控制计时停止的端口stop,时间预设置信

17、号lad、ta、tb,控制计分部分的端口add,输出主要包括两个警报信号端口ring、warn,参赛选手台号显示信号states,计时显示信号digit1、digit2,以及分数显示部分四个端口a_out、b_out、c_out、d_out,最重要的是要将抢答部分的输出state端口作为计分模块的输入进行输入以对选手信息进行锁定。3单元模块电路设计3.1抢答器鉴别模块3.1.1设计原理图图3-1抢答器模块原理图3.1.2编译报告图3-2抢答模块编译报告3.1.3仿真结果图3-3抢答模块仿真图3.1.4设计说明当主持人按下复位键rst后,警报信号停止鸣叫,抢答台号状态显示0;当主持人按下抢答信号

18、en后,抢答开始,四位参赛选手开始抢答,有一路抢答成功后将封锁其它路得抢答信号,此时警报声响起并显示抢答成功选手的台号。主持人按下复位键后显示状态复位又开始等待下一轮的抢答。3.2计时模块3.2.1设计原理图图3-4计时模块原理图3.2.2编译报告图3-5计时模块编译报告3.2.3仿真结果图3-6计时模块仿真图3.2.4设计说明最大计时时间为59s,按下复位键rst以及计时停止信号stop后时间显示59s,同时将警报解除,然后将使能信号lad置高电平后就可以通过ta、tb对时间初始值进行手动设置,以根据实际情况选定计时时间。当使能信号en1为高电平时就将预设置的值赋给输出digit1、digi

19、t2,开始以倒计时方式计数,当显示00时警报响起,并且回答完时间未到主持人按下stop键用于时间复位并防止警报响起。3.3计分模块3.3.1计分模块原理图图3-7计分模块原理图3.3.2编译报告图3-8计分模块编译报告3.3.3仿真结果图3-9计分模块仿真图3.3.4设计说明当主持人按下复位信号rst2分别给四位选手赋初始值5分,在5分基础上进行加减。当使能端en为1的时候通过控制add端口对当前锁定的选手进行分数加减控制,对于抢答成功的选手,当选手回答正确主持人将add置高电平为选手加一分,回答错误主持人将add置低电平为选手减一分,其他选手的分数不变。当某位选手的分数减到0时不再减,加到最

20、高分时进行清零处理。3.4顶层文件模块3.4.1顶层模块原理图图3-10顶层模块的原理图3.4.2编译报告图3-11顶层模块编译报告3.4.3仿真结果图3-12顶层模块仿真图3.4.4设计说明本部分设计主要将前面三个模块当中的共同部分以及有关联的部分联系起来使之成为一个整体,以实现四路抢答器的功能,重要的是必须将抢答模块中的输出state作为计分模块的输入,以用来锁定选手的信息,对选手的分数进行控制,其余各模块的功能与前面描述的一致。心得体会这次课程设计历时整整一个星期。通过这一个星期的课程设计,我发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还

21、急需提高。在本设计中遇到很多难题,这些难题之所以成为设计中的拦路虎,是因为平常学习不够扎实,基础知识不牢固,在课程设计过程中,光有理论知识是不够的,还必须懂一些实践中的知识。这次的课程设计要求自己完成,但也不乏会借鉴前人的经验,在前人的基础上进行改进和调整,以实现本次课程设计的要求。在课程设计中一个人只知道原理是远远不够的,必须有实践加以提高才会更了解所学知识的深刻内涵,而这次设计也正好锻炼我们这一点,这也是非常宝贵的。本次课程设计也巩固和加深了我对EDA基本知识的理解,提高了综合运用所学知识的能力,增强了根据课程需要选学参考资料,查阅手册、图表和文献资料的自学能力,然后深入研究,提出方案,对

22、比后得出最终的可行方案。同时我也初步学习到了关于课程设计的基本方法、步骤和撰写设计论文的格式。通过这次课程设计,我想说:为完成这次课程设计我们确实很辛苦,但苦中仍有乐。对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!通过本次课程设计,巩固了我们学习过的专业知识,也使我们把理论与实践从真正意义上结合起来,考验我们借助互联网搜集查阅相关文献资料,和组织材料的综合能力,从中可以自我检验,认识到自己哪

23、方面欠缺不足,以便于日后学习中的改进、提高,对EDA中功能实现电路有了更进一步的了解,并对硬件的调试掌握的熟练。感谢老师给了我们这次机会以及对我们的指导,在以后的学习中我们会更加的努力学习专业知识,并与实践进行结合,更好的学好自己的专业。在整个过程中我们的指导老师起着举足轻重的作用,老师的严谨的工作态度是我们成功的前提,这次课程设计我得到了各位老师和同学们的精心指导和帮助,在此表示衷心的感谢。参考文献1 潘松,黄继业.EDA技术与VHDL(第三版)北京:清华大学出版社2 杨晓慧,杨旭.FPGA系统设计与实例北京:人民邮电出版社3 王振江.FPGA开发与应用北京:清华大学出版社4 宋烈武,等.E

24、DA计数实用教程.湖北科学计数出版社,20065 顾斌.数字电路EDA设计.西安电子科技大学出版社,20046 李国洪,等.可编程器件EDA设计与实践,机械工业出版社,2004附录 顶层文件源程序library ieee; -qiangdause ieee.std_logic_1164.all;entity qiyi is port (a,b,c,d,rst,clk,en: in std_logic; state:buffer std_logic_vector(3 downto 0); ring:out std_logic);end qiyi;architecture beh of qiyi

25、is signal st: std_logic_vector(3 downto 0);begin process(a,b,c,d,en,rst,clk)begin if(rst='1') then ring <= '0' st <= "0000" elsif(en ='1') then if(clk'event and clk = '1') then if(a ='1' or st(0) ='1') and not (st(1)='1' or

26、st(2)='1' or st(3)='1') then st(0) <= '1' ring <='1' end if; if(b ='1' or st(1) ='1') and not (st(0)='1' or st(2)='1' or st(3)='1') then st(1) <= '1' ring <='1' end if; if(c ='1' or st(2) =

27、9;1') and not (st(0)='1' or st(1)='1' or st(3)='1') then st(2) <= '1' ring <='1' end if; if(d ='1' or st(3) ='1') and not (st(0)='1' or st(1)='1' or st(2)='1') then st(3) <= '1' ring <='1'

28、 end if; end if; end if; end process; process(st) begin if(st="0000") then state<="0000" elsif(st="0001") then state<="0001" elsif(st="0010") then state<="0010" elsif(st="0100") then state<="0011" elsif(st=&q

29、uot;1000") then state<="0100" end if; end process; end beh; -jishi- library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qiang is port (rst,lad,clk,en1,stop:in std_logic; ta,tb:in std_logic; warn:out std_logic; digit1:out integer range 0 to 9; digit2:out

30、integer range 0 to 9);end qiang;architecture beh of qiang issignal da: integer range 0 to 9;signal db: integer range 0 to 9;begin process(ta,rst) begin if(rst='1') then da <= 9; elsif(ta'event and ta ='1') then if(lad ='1') then if(da =0) then da <= 9; else da <=

31、 da-1; end if; end if; end if; end process; process(tb,rst) begin if(rst='1') then db <= 5; elsif(tb'event and tb ='1') then if(lad ='1') then if(db =0) then db <= 9; else db <= db-1; end if; end if; end if; end process; process(rst,clk,en1,stop) variable temp1:i

32、nteger range 0 to 9; variable temp2:integer range 0 to 9; variable co:std_logic; begin if (rst = '1' or stop = '1') then temp1 := 9; temp2 := 5; co := '0' elsif (clk'event and clk = '1') then if(en1 ='1') then temp1 :=da; temp2 :=db; elsif(temp1 = 0)then i

33、f (temp2 = 0) then temp1 :=0; co:='1' else temp1 :=9; end if; if(temp2 =0) then temp2 :=0; else temp2 :=temp2-1; end if; else temp1 :=temp1-1; end if; end if; digit1 <= temp1; digit2 <= temp2; warn <= co; end process; end beh; -jifen- library ieee;use ieee.std_logic_1164.all;use iee

34、e.std_logic_unsigned.all;entity ji is port (rst2,clk,en,add:in std_logic; state: in std_logic_vector(3 downto 0); a_out, b_out, c_out, d_out:buffer std_logic_vector(3 downto 0);end ji;architecture beh of ji isbegin process(rst2,clk,en,add,state,a_out,b_out,c_out,d_out)begin if(rst2='1') then

35、 a_out <= "0101" b_out <= "0101" c_out <= "0101" d_out <= "0101" elsif(en ='1') then if(clk'event and clk ='1') then case state is when "0001" => if(add ='1') then if(a_out ="1111") then a_out <

36、="0000" else a_out <= a_out+1; end if; elsif(add ='0') then if(a_out ="0000") then a_out <="0000" else a_out <= a_out-1; end if; end if; when "0010" => if(add ='1') then if(b_out ="1111") then b_out <="0000" e

37、lse b_out <= b_out+1; end if; elsif(add ='0') then if(b_out ="0000") then b_out <="0000" else b_out <= b_out-1; end if; end if; when "0011" => if(add ='1') then if(c_out ="1111") then c_out <="0000" else c_out <= c_o

38、ut+1; end if; elsif(add ='0') then if(c_out ="0000") then c_out <="0000" else c_out <= c_out-1; end if; end if; when "0100" => if(add ='1') then if(d_out ="1111") then d_out <="0000" else d_out <= d_out+1; end if; elsif(add ='0') then if(d_o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论