智力竞赛抢答器_第1页
智力竞赛抢答器_第2页
智力竞赛抢答器_第3页
智力竞赛抢答器_第4页
智力竞赛抢答器_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计说明书1引言随着科学技术的日益发展,电子计算机的出现,使得人们的学习生活变得更加方便,而其中电子设计方面更是受益不浅。20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动的完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA设计可分为系统级、电路级和物理实现级。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减

2、轻了设计者的劳动强度。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行产品重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计进程和设计观念,促进了EDA技术的迅速发展。EDA技术的应用引起电子产品及系统开发的革命性变革。同时减少了设计芯片的数量、缩小了体积、降低了功耗、提高了设计的灵活性、可靠性和可扩展性。现在对EDA的概念或范畴用的很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都

3、有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模式,都可以设计到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。2 VHDL/Quartus2简介2.1 VHDL介绍在电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段,而VHDL语言则是EDA的关键技术之一。VHDL是一种硬件描述语言,它可以对电子电路和系统的行为进行描述。基于这种描述,结合相关的软件工具,可以得到所期望的实际电路与系统。VHDL采用自顶向下的设计方法,即从系统总体要求出发,自上而下地将设计任

4、务分解为不同的功能模块,最后将各功能模块连接形成顶层模块,完成系统硬件的整体设计。电子设计自动化技术EDA的发展给电子系统的设计带来了革命性的变化,EDA软件设计工具,硬件描述语言,可编程逻辑器件(PLD)使得EDA技术的应用走向普及。CPLD是新型的可编程逻辑器件,采用CPLD进行产品开发可以灵活地进行模块配置,大大缩短了产品开发周期,也有利于产品向小型化,集成化的方向发展。2.2 Quartus2介绍Quartus2, 在21世纪初推出,由著名的FPGA厂商Altera 公司提供。它提供了一个与结构无关的设计环境,使设计者能方便的进行设计输入、快速编程和器件编程。在Quartus2中,可以

5、完成设计输入、HDL综合、布线布局(适配)、仿真、下载和硬件测试等流程。FPGA/CPLD开发集成环境,属于平台化设计工具,用户可以在Quartus2中实现整个数字电路的FPGA设计流程。Quartus2提供了多平台的设计环境,能满足各种特定设计的需要,也是单芯片可编程系统设计的综合环境和SOPC开发的基本设计工具,并为Altera DSP开发包进行系统模型设计提供了综合环境。Quartus2设计工具内部嵌有VHDL、Verilog逻辑综合器。Quartus2也可利用第三方的综合工具,例如:Leonardo Spectrum、Synplifiy Pro、FPGA Complier2,并能直接调

6、用这些工具。同样,Quartus2具有仿真功能,同时也支持第三方的仿真工具,如:ModelSim。3智力竞赛抢答器设计3.1设计内容:(1)设计一个四组(人)参加的智力竞赛抢答计时器,它具有四路抢答输入,主持人按下复位键后,系统复位进入抢答状态,计时显示初始值; (2)某组首先按下抢答键,该路抢答信号,竞赛抢答器能够设别最先抢答的信号,锁定该信号,同时扬声器响起,参赛小组的序号在数码管上显示;(3)主持人对抢答结果进行确认,给出倒计时计数允许信号,开始回答问题,计时显示器从初始值开始以秒为单位倒计时,计数至0时,停止计数,扬声器发出超时报警信号,以中止继续回答问题;(4)参赛者在规定时间内回答

7、完问题,主持人给出倒计时计数禁止信号,以免扬声器鸣叫,按下复位键,又可开始新一轮的抢答;3.2功能分析抢答信号判别电路在系统复位后,对A,B,C,D四路抢答信号进行判别,输出端A1D1与AD一一对应,优胜者对应为“1”,其余为“0”,且将结果锁存。完成抢答判别的同时,输出端SET输出有效信号,对扬声器进行选通。分频电路用于产生倒计时电路所需的周期为1s的时钟脉冲,分频系数视输入时钟clk的频率而定。台号显示控制电路将输入信号LIGHT接入LED数码管对应电路,以驱动数码管,显示台号。倒计时及时间显示控制电路有stop信号控制,由复位信号RESET将答题时间作为初值给倒计时计数器;由计数允许信号

8、jishi启动计数。输出信号为count1,count2,music与music1,其中music与music1为蜂鸣器选通控制信号。扬声器控制电路系统只在两种情况下输出驱动扬声器的脉冲信号:一种是倒计时计数处于禁止计数状态,并且完成初始化,开始对抢答信号进行判决,当某参赛组抢先按下按键,系统在输出该组台号信息的同时,输出脉冲信号;一种是确认优先抢答的参赛组后,启动倒计时计数器计数,当计数到“0”时,输出脉冲信号。3.3整体设计思想当主持人宣布开始抢答时,四个选手谁先按下他面前的控制开关,他的灯就会亮,同时会有警报声响起,而且这时其他的人再怎么按,也就不会亮,说明已经锁住。当有一个指示灯亮了,

9、等待主持人确定,主持人确定以后计数器就开始从10开始倒计时,到0时还要警告声,直到主持人按下复位键为止。在选手答题过程中,如果在规定时间内答完,主持人按下暂停键,倒计时停止显示当前时间,待主持人按下复位键以后开始下一轮抢答,这样计数器开始工作就是在选手抢答以后在主持人的控制下工作。所以可以设四个人分别为输入端A,B,C,D;因为四个输入端在VHDL中,要求四个输入端应该是相等优先级别,但只要有一个输入端接入高电平时,就给其他信号一个反馈,使得他们的输入无效,及他们对应的指示灯不亮;所以我们可以设置并行语句,让他们分为四个进程(process),同时也要求每个进程中都有反馈信号传给其他进程语句中

10、,这样就可以完成抢答器基础部分。其次就是计数器部分,当有人开始进入答题部分,指示灯亮,同时警报器开始工作,当主持人确定以后计时开始并要求是倒计时方式用七段数码管显示出来,通过这些消息,我们可知,主持人确定键即是计数器开始倒计时的信号,本设计中采用了元件例化(component)语句,在抢答器中某个选手已经开始回答了信号插口,给计数器中的置零输入端,这样就基本上完成了设计,计数器采用倒计时方式,实现方式也很简单,只要给他们最初赋值为10,而后在每个上升沿来到减一,具体设计情况看程序设计部分。本设计由于蜂鸣器是在脉冲控制下才会发出明显声响,因此在此加了一个分频器,具体看程序部分。3.4分频模块设计

11、此程序实现了64HZ的脉冲信号64分频,得到1HZ的脉冲信号,给倒计时提供脉冲信号。if(RISING_EDGE(CLK)then temp:temp+1; if(temp=64 and ena='1')then temp:=0;其仿真图如下图所示:图34脉冲信号仿真波形图3.5复位模块设计此程序将所有信号初始化,通过ean使数码管也初始化为初值10。if (RESET='1')thenLIGHT<="1111110" SET<='0'SET<='0'A0<='0'B0&

12、lt;='0'C0<='0'D0<='0'ean<='1'其仿真图如下图所示:图3-5复位仿真波形图3.6抢答模块设计begin A2<=not A1; B2<=not B1; C2<=not C1; D2<=not D1; L1:process (A0) begin A1<=(A0 and B2 and C2 and D2 ); end process L1; L2:process (B0) begin B1<=(B0 and A2 and C2 and D2 ); end

13、process L2; L3:process (C0) begin C1<=(C0 and A2 and B2 and D2 ); end process L3; L4:process (D0) begin D1<=(D0 and A2 and C2 and B2 ); end process L4;抢答模块仿真图如下图所示:图3-6抢答模块仿真波形图3.7倒计时模块设计begin C1:process(SET,CLK,MUSIC1,ena) variable temp:integer range 0 to 255; begin if (SET='0')then M

14、USIC1<='0'HIGH<="0001"LOW<="0000" elsif(RISING_EDGE(CLK)then temp:=temp+1; if (temp=64 and ena='1')then temp:=0; if(LOW="0000")then LOW<="1001" if(HIGH="0000")then HIGH<="0001" else HIGH<=HIGH-1; end if; el

15、se LOW<=LOW-1; end if; end if; end if; if(HIGH="0000" and LOW="0000")then MUSIC1<=CLK; end if; end process C1;倒计时仿真图如下图所示:图3-7-1倒计时为零时仿真波形图图3-7-2主持人按下暂停键仿真波形图此程序主要功能是实现倒计时功能,当有人抢答以后蜂鸣器响起,在主持人确认以后开始倒计时10秒,如果在规定时间内回答完毕,主持人则按下暂停键,停止计数显示当前时间,如果超出规定时间则蜂鸣器响起,知道主持人按下复位键为止。所有信号初始化,

16、数码管显示10等待下一轮抢答。总结:由以上仿真图可知,该设计基本实现了原先的设计要求,并将选手的序号用数码管显示出来。3.8引脚锁定引脚锁定如下图:图3-8引脚锁定图4 心得体会实践是检验真理的唯一标准。为期几天的课程设计在紧张的氛围中,接近尾声,时间不长,但是对于我们起到了很大帮助。这次的EDA课程设计,掌握了基本的编写系统模块的知识以及编译仿真的操作,虽然其中也遇到了很多困难,但经一次次的改进,最后成功后的喜悦溢于言表。理论要联系实践,当然实践也离不开理论。日常的学习中,我们只掌握简单的模块代码,当看到任务书时,开始觉得无从下手。在认真看完设计内容后,明白了智能竞赛抢答的整个流程。再根据流

17、程把各个模块的输入输出,以及要实现的功能,需要用到的变量、信号做些整理,然后又通过上网以及查阅相关书籍,进行一遍一遍的整理、修改代码,程序。模块功能的实现并为易事。在设计VHDL语言编程的时候,总是不能完成硬件模块的连接,编译时总是有错误,在自己以及同学们的帮助下一遍一遍仔细检查纠错,将程序全部重新封装,以及重新连接,最后通过了编译。在仿真过程中,也出现了问题。倒计时模块是以10秒倒计时的,在仿真过程中,在倒计时显示到09秒后,数码管不再继续倒计时显示。而后,又重新调整了程序,原来把COUT2只显示了0和1两个数字。后来添加了其它几个数字后,数码管终于可以从10倒计到0,并且到计到0后,警报声

18、响起。由于一开始抢答模块设计时,设计为哪位选手抢先按,他的指示灯就先亮。后来,仔细看设计内容,要求为其序号在数码管中显示出来。所以,又重新将LIGHT进行了修改,最终完成了设计。通过这次课程设计,我们不但进一步掌握了数字电路设计的基础知识以及一门专业仿真软件的基本操作,还提高了自己的设计能力及动手操作能力,同时对于智能抢答器的设计有了深刻的认识,更让我明白了凡事需要耐心,端正自己的态度。在此,感谢学校能够为我们提供良好的教育平台,感谢老师的淳淳教导,以及同学们的帮助。参考文献1.Voknei A.Pedroni.VHDL数字电路设计教程.电子工业出版社,2008.52.潘松,黄继业.EDA技术

19、实用教程(第二版).科学出版社,2005.23.焦素敏.EDA应用技术.清华大学出版社,2002.44.曹昕燕,周凤臣,聂春燕.EDA技术实验与课程设计.清华大学出版社5.谭会生,张昌凡.EDA技术A.西安电子科技大学出版社附录-顶层头文件library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity aaa is port(A,B,C,D,CLK,RESET,jishi,stop:in std_logic; MUSIC,MUSIC0:out std_logic; COUT1:out std_log

20、ic_vector(6 downto 0); COUT2:out std_logic_vector(6 downto 0); LIGHT:out std_logic_vector(6 downto 0); end aaa; architecture aaa of aaa is component COUNTER is port(ean,SET,jishi,stop,CLK:in std_logic; MUSIC, MUSIC0:out std_logic; COUT1:out std_logic_vector(6 downto 0); COUT2:out std_logic_vector(6

21、downto 0); end component COUNTER; component qiangda is port(A,B,C,D,RESET:in std_logic; CLK:in std_logic; ean,SET:out std_logic; LIGHT:out std_logic_vector(6 downto 0); end component qiangda; signal ean,SET:std_logic; begin U0:COUNTER port map(ean,SET,jishi,STOP,CLK,MUSIC,MUSIC0,COUT1,COUT2); U1:qia

22、ngda port map (A,B,C,D,RESET,CLK,ean,SET,LIGHT); end aaa; -qiangdaqimokuaichengxu library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qiangda is port(A,B,C,D,RESET:in std_logic; CLK:in std_logic; ean,SET:out std_logic; LIGHT:out std_logic_vector(6 downto 0); end qiangda;

23、architecture qiangda of qiangda is signal A0,B0,C0,D0:std_logic; signal A1,B1,C1,D1:std_logic; signal A2,B2,C2,D2:std_logic; begin A2<=not A1; B2<=not B1; C2<=not C1; D2<=not D1; L1:process (A0) -qiangda begin A1<=(A0 and B2 and C2 and D2 ); end process L1; L2:process (B0) begin B1<

24、;=(B0 and A2 and C2 and D2 ); end process L2; L3:process (C0) begin C1<=(C0 and A2 and B2 and D2 ); end process L3; L4:process (D0) begin D1<=(D0 and A2 and C2 and B2 ); end process L4; L5:process(A1,B1,C1,D1,A,B,C,D,RESET) begin if(RESET='1')then -fuwei LIGHT<="1111110" A

25、0<='0'B0<='0'C0<='0'D0<='0'ean<='1'SET<='0' else ean<='0' if(A='1')then A0<='1' end if; if(B='1')then B0<='1' end if; if(C='1')then C0<='1' end if; if(D='1')t

26、hen D0<='1' end if; if(A1='1')then LIGHT<="0110000" elsif(B1='1')then LIGHT<="1101101" elsif(C1='1')then LIGHT<="1111001" elsif(D1='1')then LIGHT<="0110011" else LIGHT<="1111110" end if; -qian

27、g da xiang guan deng SET<=(A1 or B1 or C1 or D1); end if; end process L5; end qiangda; -daojishimokuailibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity COUNTER is port(ean,SET,jishi,stop,CLK:in std_logic; MUSIC, MUSIC0:out std_logic; COUT1:out std_logic_vector(6 down

28、to 0); COUT2:out std_logic_vector(6 downto 0); end COUNTER; architecture COUNTER of COUNTER is signal MUSIC1,MUSIC2,ena,jishiqi,stop1:std_logic; signal HIGH:std_logic_vector(3 downto 0 ):="0001" signal LOW:std_logic_vector(3 downto 0 ):="0000" begin C1:process(SET,CLK,MUSIC1,ena)

29、 variable temp:integer range 0 to 255; begin if (SET='0')then MUSIC1<='0'HIGH<="0001"LOW<="0000" elsif(RISING_EDGE(CLK)then temp:=temp+1; if (temp=64 and ena='1')then temp:=0; if(LOW="0000")then LOW<="1001" if(HIGH="000

30、0")then HIGH<="0001" else HIGH<=HIGH-1; end if; else LOW<=LOW-1; end if; end if; end if; if(HIGH="0000" and LOW="0000")then MUSIC1<=CLK; end if; end process C1; C2:process(stop,jishi,SET,ean,HIGH,LOW) begin if(stop='1')then stop1<='1'

31、 if(stop1='1')then ena<='0' end if; end if; if(jishi='1' and SET='1')then ena<='1' end if; if(ean='1')then ena<='0'stop1<='0' end if; if(HIGH="0000" and LOW="0000")then ena<='0' end if; end pro

32、cess C2; C3:process(jishi,SET) begin if(jishi='1')then jishiqi<='1' end if; if(SET='0')then MUSIC2<='0'jishiqi<='0' else MUSIC2<=CLK; if(jishiqi='1')then MUSIC2<='0' end if; end if; end process C3; MUSIC<=MUSIC1; MUSIC0<=MUSIC2; process(LOW) begin case LOW is when "0000"=> COUT1 <="1111110" when "0001"=> COUT1 <="0110000" when "0010"=> COUT1 <="1101101" when "0011"=> CO

温馨提示

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

评论

0/150

提交评论