1、2、主要模块设计2.1、抢答鉴别模块在这个模块中主要实现抢答过程中的抢答鉴别功能。其电路框图如下。其中,rst为复位信号,当该信号高电平有效时,电路无论处于何种状态都恢复为初始状态,即所有的输出信号都为0;EN为抢答使能信号,该信号高电平有效;s0、s1、s2、s3为抢答按钮,高电平时有效。当使能信号EN为低电平时,如果有参赛者按下按钮,则提前抢答报警信号FALSE3.0的对应位输出高电平,以示警告;当EN为高电平时,首先将提前抢答报警信号FALSE3.0复位清0,然后根据选手按下抢答按钮的先后顺序选择最先抢答的信号,其对应的抢答状态显示信号LEDALEDD输出高电平,抢答成功组别编号由信号s
2、tates输出,并锁存抢答器此时的状态,直到清0信号有效为止。在每一轮新的抢答之前,都要使用复位清零信号rst,清除上一轮抢答对判断电路留下的使用痕迹,使电路恢复初始状态。图2 抢答鉴别模块框图2.2、计时模块 在这个模块中主要实现抢答过程中的计时功能,在有组别抢答后开始倒计时,若在规定时间没人回答,则超时报警。其中有系统复位信号rst;抢答使能信号s;无人抢答警报信号warn;计时中止信号stop; 图3 计时模块框图2.3、计分模块抢答计分电路的设计一般按照一定数制进行加减即可,但随着计数数目的增加,要将计数数目分解成十进制并进行译码显示会变得较为复杂。为了避免该种情况,通常是将一个大的进
3、制数分解为数个十进制以的进制数,并将计数器级连。但随着数位的增加,电路的接口也会相应增加。因此,本设计采用IF语句从低往高判断是否有进位,以采取相应的操作,既减少了接口,又简化了设计。其电路框图如下,该模块输入信号为加分选择信号add和组别选择信号chose3.0,其中,加分选择信号add高电平有效,有效时对组别选择信号chose3.0选择的参赛组进行加分;组别选择输入信号chose3.0即抢答鉴别模块的输出信号states3.0。输出信号分别对应四组竞赛者的得分。 图4 计分模块框图2.4、译码显示模块译码显示模块用于显示每组选手的分数,计时的时间等信息。显示电路的实质就是一个简单的LED共
4、阴极显示模块的译码器。7段数码管LED常用的一般8字型为a,b,c,d,e,f,g,P,其中P为小数点,共阴LED低电平有效。在这里我们不需要用到小数点位,因此用位宽为7的矢量表示7段数码管即可。7段LED共阴极显示模块的框图如图所示。其中,IN430为输入信号,以4位2进制数表示;OUT760为输出信号,将输入的二进制数译码显示为十进制数字的09。图5 译码显示模块框图2.5、报警模块在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间有人抢答,指示灯显示抢答组别,扬声器发出 23 秒的音响。即有效电平输入信号i;状态输出信号q。图6 报警模块框图2.6、整体框图从上述设计
5、方案中我们可以大致得到数字竞赛抢答器的系统框图,如下图所示,其中抢答时钟信号clk2;系统复位信号rst;抢答状态显示信号states;图7 抢答器系统框图3、仿真结果3.1、抢答鉴别模块仿真抢答鉴别模块的仿真波形图如图所示。当鉴别模块的清零复位信号rst为高电平时,无论四组参赛者谁按下抢答按钮,系统输出均为零,同时组别显示端输出信号也显示为零;当清零信号rst为低电平时,s0、s1、s2、s3四组参赛者谁先按下抢答按钮,其对应的显示灯LEDx亮起,states3.0输出抢答成功的选手编号。图8 抢答鉴别模块仿真波形图3.2计时模块计时模块的仿真波形如图所示。实现了抢答过程中的计时功能,在有抢
6、答开始后进行30秒的倒计时,并且在30秒倒计时后无人抢答显示超时并报警。图9 计时模块仿真波形图3.3计分模块仿真系统设计过程中,当计分复位端RST=1时,并且组别输入信号CHOSE=0000,其中的组别输入信号是抢答鉴别模块的输出信号,计分器复位,此时以上四组都不会产生加减分操作。然而当计分复位端RST=0时,此时计分器可以计分。当CHOS=0001时,组别显示为A组,此时主持人利用计分器对A组进行加减分操作;当CHOS=0010时,组别显示为B组,此时主持人则利用计分器对B组进行加减分操作,以此类推。下图仿真为A组回答正确,加分。图10 计分模块仿真波形图3.4 译码模块仿真 当in4=
7、0000 ,out7输出0111111,此时数码管显示0;00010000110,此时数码管显示1;00101011011,此时数码管显示2;00111001111,此时数码管显示3;01001100110,此时数码管显示4;01011101101,此时数码管显示5;01101111101,此时数码管显示6;01110000111,此时数码管显示7;10001111111,此时数码管显示8;10011101111,此时数码管显示9;图11 译码显示模块仿真波形图3.5、报警模块仿真 在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间如果人抢答或是计数到时蜂鸣器开始报警,有效
8、电平输入信号i;仿真如下图。图12 报警模块仿真波形图3.6、整体仿真对电路整体进行仿真,得出如下仿真波形图12。图中,当复位信号rst为高电平时,系统所有信号都清零;当主持人按下开始键,抢答器开始工作。图13 整体仿真波形图4、 原理连线图根据系统设计要求,将各模块连线得到如下系统框图。主持人按下使能端EN,抢答器开始工作。四位抢答者谁先按下抢答按钮,则抢答成功,对应的显示灯亮起,并通过显示电路模块显示参赛编号。抢答成功的选手进入答题阶段,如果正确回答问题,则加分信号add有效,给相应的参赛组加分。如果复位信号rst有效,使得抢答器在下一轮抢答前,其抢答成功的组别判断恢复为初始状态,开始新一
9、轮抢答。图14 原理连线图5、致对于此次课程设计,首先我得诚挚的感我的指导老师,从设计、整改及论文的定稿过程中,自始至终都倾注着老师的心血。老师以严谨的治学之道、宽厚仁慈的胸怀、积极乐观的生活态度,兢兢业业的工作作风为我树立了学习的典,他们的教诲与鞭策将激励我在学习和生活的道路上励精图治,开拓创新。他们渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。我真诚地老师们的指导和关怀。于个人,通过这次课程设计,我进一步加深了对电子设计自动化的了解。并进一步熟练了对QuartusII软件的操作。EDA这门课程也不像学习理论般那么空洞,有了更加贴切的了解及运用。做课程设计时,先查阅相关知识,把原理吃透
10、,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。6、详细仪器清单名称型号数量计算机联想1Quartus II开发软件9.0EDA/SOPC实验开发系统GW48-PK2参考文献1 俊逸.EDA技术课程设计.华中科技大学.2008.2-122 松.EDA应用技术.理工大学.20033 徐志军.EDA技术与PLD设计M.科学.20024 黄仁欣.EDA技术实用教程.清
11、华大学.20045 建明.电工电子EDA仿真技术.高等教育,20046 昕燕、周风臣、聂春燕.EDA技术试验与课程设计.清华大学.20077 自美.电子线路设计实验测试.华中科技大学.19998 世强、许杰.电子电路EDA技术.电子科技大学.20019 江国强.EDA技术习题与实验.电子工业.201210 高有堂.EDA技术及应用实践.清华大学.2006-08附录VHDL程序1)抢答鉴别模块library ieee;use ieee.std_logic_1164.all;entity qdjb isport(rst:in std_logic; EN: s0,s1,s2,s3: LEDA:out
12、 std_logic; LEDB: LEDC: LEDD: false:out std_logic_vector(3 downto 0); states:out std_logic_vector(3 downto 0);end qdjb;architecture one of qdjb issignal tmp: std_logic_vector(3 downto 0);signal tag: std_logic;begintmp=s0&s1&s2&s3;process(rst,EN,s0,s1,s2,s3,tmp) if rst=1THEN states=; LEDA=0 LEDB LEDC
13、 LEDD false tagelsif EN=then if s0=false(3)end if;if s1=false(2)if s2=false(1)if s3=false(0)elsefalseif tag= if tmp= elsif tmp= end if; end process;end one;2)计时模块use ieee.std_logic_unsigned.all;entity js is port(clk,rst,s,stop: warn: ta,tb:buffer std_logic_vector(3 downto 0);end js;architecture one
14、of js issignal co:std_logic;p1:process(clk,rst,s,stop,ta) begin or stop= then ta elsif clkevent and clk= co if s= if ta=co else ta=ta-1;end process p1;p2:process(co,rst,s,stop,tb) tb elsif coevent and co= if tb= then tb else tb=tb-1;end process p2;3)计分模块entity jf is port(rst: in std_logic; add: chos
15、e: in std_logic_vector(3 downto 0); aa2,aa1,aa0,bb2,bb1,bb0: out std_logic_vector(3 downto 0); cc2,cc1,cc0,dd2,dd1,dd0: out std_logic_vector(3 downto 0);end entity jf;architecture art of jf is process(rst,add,chose) is variable a2,a1:std_logic_vector(3 downto 0); variable b2,b1: variable c2,c1: vari
16、able d2,d1: if(rst=)then a2:a1: b2:b1: c2:c1: d2:d1: elsif(addevent and add= if chose= if a1= a1: if a2= else=a2+=a1+ elsif chose= if b1= b1: if b2=b2+=b1+ if c1= c1: if c2=c2+=c1+ if d1= d1: if d2=d2+=d1+ aa2=a2;aa1=a1;aa0 bb2=b2;bb1=b1;bb0 cc2=c2;cc1=c1;cc0 dd2=d2;dd1=d1;dd0out70000000 end case;en
17、d architecture;5)报警模块entity alarm isport(clk,i: q:out std_logic);end alarm;architecture behave of alarm is signal warn: signal n:integer range 0 to 20; q= warn; process(clk) if clk if i= then warn elsif(i=and n=19)then=not warn; n=n+1;end process;end behave;6)TOP模块entity top is port(rst,en,ADD,s0,s1,s2,s3: LEDA,LEDB,LEDC,LEDD:out std_logic_vector(3 down
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1