智力竞赛抢答器设计.docx

上传人:牧羊曲112 文档编号:5333024 上传时间:2023-06-27 格式:DOCX 页数:21 大小:511.80KB
返回 下载 相关 举报
智力竞赛抢答器设计.docx_第1页
第1页 / 共21页
智力竞赛抢答器设计.docx_第2页
第2页 / 共21页
智力竞赛抢答器设计.docx_第3页
第3页 / 共21页
智力竞赛抢答器设计.docx_第4页
第4页 / 共21页
智力竞赛抢答器设计.docx_第5页
第5页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《智力竞赛抢答器设计.docx》由会员分享,可在线阅读,更多相关《智力竞赛抢答器设计.docx(21页珍藏版)》请在三一办公上搜索。

1、1前言12方案设计与论证23软件介绍43Quartus II 简介 43.2 Quartus II数字系统开发流程44单元模块电路的设计和实现64.1抢答鉴别模块的设计与实现64.2计时模块的设计与实现74.3报警模块的设计与实现94.4译码显示模块的设计与实现104.5计分模块的设计与实现105硬件调试145.1总模块仿真结果145.2引脚锁定145.3程序下载146结论157参考文献178附录181前言人类社会进入到高度发达的信息化社会,信息社会的发展离不开电子产品的 进步。现代电子产品在性能提高、复杂度增大的同时,价格却一直呈下降趋势, 而且产品更新换代的步伐也越来越快,实现这种进步的主

2、要原因就是生产制造技 术和电子设计技术的发展。前者以微细加工技术为代表,目前已进展到深亚微米 阶段,可以在几平方厘米的芯片上集成数千万个晶体管;后者的核心就是EDA 技术。没有EDA技术的支持,想要完成上述超大规模集成电路的设计制造是不 可想象的,但是面对当今飞速发展的电子产品市场,设计师需要更加实用、快捷 的EDA工具,使用统一的集体化设计,改变传统的设计思路,将精力集中到设 计构想、方案比较和寻找优化设计等方面,需要以最快的速度,开发出性能优良、 质量一流的电子产品,对EDA技术提出了更高的要求。传统的EDA设计方法 采用自底向上的设计方法,一般先按电子系统的具体功能要求进行功能划分,然

3、后对每个子模块画出真值表,用卡诺图进行手工逻辑简化,写出布尔表达式,画 出相应的逻辑线路图,再据此选择元器件,设计电路板,最后进行实测与调试, 由于无法进行硬件系统功能仿真,如果某一过程存在错误,查找和修改十分不便, 所以这是一种费时、费力的设计方法,而现代电子设计技术(EDA )是自顶向下且先 进高效的。在电子产品的设计理念、设计方式、系统硬件构成、设计的重用性、 知识产权、设计周期等方面,EDA技术具有一定的优势。所以本次设计的抢答器 抛弃了传统的设计方法,选择了采用主流的EDA技术进行设计。智力竞赛是“快乐学习”这一教育模式的典范,它采用在规定的一段时间内抢 答和必答等方式,在给人们的生

4、活带来乐趣的同时,也使参与者和观众在愉悦的 氛围中学到一些科学知识和生活知识,因此很受大家的喜欢。但是,在这类比赛 中,对于谁先谁后抢答,在何时抢答,如何计算答题时间等等问题,若是仅凭主 持人的主观判断,就很容易出现误判。所以,我们就需要一种具备自动锁存,置 位,清零等功能智能抢答器来解决这些问题。智能竞赛抢答器是一种应用十分广泛的设备,在各种竞赛、抢答场合中,它 都能客观、迅速地判断出最先获得发言权的选手。早期的抢答器只是由三个三极 管、可控硅、发光管等器件组成的,能通过发光管的指示辨认出选于号码。现在 大多数智能抢答器都是由单片机或数字集成电路构成的,并且新增了许多功能, 如选于号码显示,

5、抢按前或抢按后的计时,选于得分显示等功能。2方案设计与论证一般来说,设计一台智能抢答器,必须能够准确判断出第一位抢答者,并且 通过数显、蜂鸣这些途径能让人们很容易得知谁是抢答成功者,并设置一定的回 答限制时间,让抢答者在规定时间内答题,主持人根据答题结果评出最终赢家。 所以我们在设计智能抢答器的模块需要满足鉴别、计时、数显、报警等功能,具 体设计要求如下:(1)抢答器可容纳四组选于,并为每组选手设置一个按钮供抢答者使用; 为主持人设置一个控制按钮,用来控制系统清零(组别显示数码管灭灯)和抢答 开始。(2)电路具有对第一抢答信号的锁存、鉴别和显示等功能。在主持人将系 统复位并发出抢答指令后,蜂鸣

6、器提示抢答开始,计时显示器显示初始时间并开 始倒计时,若参赛选手按下抢答按钮,则该组别的信号立即被锁存,并在组别显 示器上显示该组别,同时扬声器也给出音响提示,此时,电路具备自锁功能,使 其他抢答按钮不起作用。(3)如果无人抢答,计时器倒计时到零,蜂鸣器有抢答无效提示,主持人 可以按复位键,开始新一轮的抢答。(4)抢答器具有限时抢答的功能,且一次抢答的时间由主持人设定,当主 持人启动开始键后,要求计时器采用倒计时,同时倒计时到0秒时扬声器会发出 声响提示。(5)参赛选手在设定的时间内抢答,则抢答有效,定时器停止工作,根据 抢答结果由数码管显示选手的组别,并一直保持到主持人将系统清零为止。本设计

7、为四路智能抢答器,所以这种抢答器要求有四路不同组别的抢答输入 信号,并能识别最先抢答的信号,抢答器共有三个输出显示,选于代号、计数器 的个位和十位,它们输出全部为BCD码输出,这样便于和显示译码器连接。当 主持人按下控制键、选手按下抢答键或倒计时到时蜂鸣器短暂响起。对回答问题 所用的时间进行计时、显示、超时报警、预置答题时间,同时该系统还应有复位、 倒计时启动功能。依据系统的设计要求可知,系统的输入信号有:四组的抢答按钮A、B、C、 D。系统清零信号QDJB,系统时钟信号CLK,计分复位端JFRST,计时预置数 控制端LDN,计时使能端EN,计时预置数调整按钮TA、TB。系统的输入信号 有:四

8、个组抢答成功与否的指示控制信号输出口 LEDA,LEDB,LEDC,LEDD, 四组抢答时的计时控制显示信号若干,抢答成功组别显示的控制信号若干。本系 统应具有的功能有:第一抢答信号的鉴别和锁存功能;抢答计时功能;组别显示 功能;蜂鸣器提示功能。对于需要显示的信息,需要增加或外接译码器,进行显 示译码。抢答开始时主持人按下抢答复位键(RST),系统进入抢答状态,计时 模块输出初始信号给数码显示模块并显示出初始值。当某参赛组抢先将抢答键按 下时,系统将其余三路抢答信号封锁,同时扬声器发出声音提示,组别显示模块 送出信号给数码显示模块,从而显示出该抢答成功组台号,并一直保持到下一轮 主持人将系统清

9、零为止。主持人对抢答结果进行确认,随后,计时模块送出倒计 时计数允许信号,开始回答问题,计时显示器则从初始值开始以计时。计时至0 时,停止计时,扬声器发出超时报警信号,以中止未回答完问题。当主持人给出 倒计时停止信号时,扬声器停止鸣叫。3软件介绍3.1 Quartus II 简介Max+plus II作为Altera的上一代PLD设计软件,由于其出色的易用性而得到 了广泛的应用。目前Altera已经停止了对Max+plus II的更新支持。Quartus II是 Altera公司继Max+plus II之后开发的一种针对其公司生产的系列C PLD/PGFA器 件的综合性开发软件,它的版本不断升

10、级,从4.0版到10.0版,这里介绍的是 Quartus II 8.0版,该软件有如下几个显著的特点:该软件界面友好,使用便捷,功能强大,是一个完全集成化的可编程逻辑设 计环境,是先进的EDA工具软件。该软件具有开放性、与结构无关、多平台、完 全集成化、丰富的设计库、模块化工具等特点,支持原理图、VHDL、VerilogHDL 以及AHDL (Altera Hardware Description Language)等多种设计输入形式,内嵌 自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流 程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tc

11、lW本完成设计 流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功 能集中,易学易用等特点。Quartus II支持Altera公司的MAX 3000A系列、MAX 7000系列、ACEX 1K系 列、APEX 20K系列、APEX II系列、FLEX 6000系列、FLEX 10K系列,支持 MAX7000/MAX3000等乘积项器件。支持MAX II CPLD系列、Cyclone系列、 Cyclone II、Stratix II系列、Stratix GX系列等。支持IP核,包含了LPM/MegaFunction 宏功能模块库,用户可以充分利用成熟的模块,简化了设计的复杂

12、性、加快了设 计速度。此外,Quartus II通过和DSP Builder工具与Matlab/Simulink相结合,可 以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发, 集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发 平台。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一 个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平 台与Cadence ExemplarLogic、MentorGraphics、Synopsys和Synplicity等。人供 应商的开发工

13、具相兼容。改进了软件的LogicLock模块设计功能,增添了FastFit 编译选项,推进了网络编辑性能,而且提升了调试能力。3.2 Quartus II数字系统开发流程(1)设计输入:包括原理图输入、HDL文本输入、EDIF网表输入、波形 输入等几种方式。(2)编译:先根据设计要求设定编译方式和编译策略,如器件的选择、逻 辑综合方式的选择等;然后根据设定的参数和策略对设计项目进行网表提取、逻 辑综合、器件适配,并产生报告文件、延时信息文件及编程文件,供分析、仿真 和编程使用。(3)仿真与定时分析:仿真和定时分析均属于设计校验,其作用是测试设 计的逻辑功能和延时特性。仿真包括功能仿真和时序仿真

14、。定时分析器可通过三 种不同的分析模式分别对传播延时、时序逻辑性能和建立/保持时间进行分析。(4)编程与验证:用得到的编程文件通过编程电缆配置?匚。,加入实际激 励,进行在线测试。在设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调 整电路后重新测试。4单元模块电路的设计和实现根据对抢答器的功能要求,把要设计的系统划分为三个功能模块:抢答信号 鉴别模块、计时模块和扬声器控制电路。但是由于实际情况的限制,数码显示模 块和计分模块没有放在总程序中。4.1抢答鉴别模块的设计与实现本模块主要是对参与抢答的四组谁先抢答做出判断,将抢答成功者的组别号 进行显示,同时,与选手对应的LED灯会亮

15、起,蜂鸣器发出2-3秒鸣叫,表明抢 答成功。用A、B、C、D分别代表参赛的四组,A1、B1、C1、D1则代表与之对应 的各组的抢答按钮显示端,系统清零信号CLR,组别显示端G3.0。抢答开始后,当有小组按下抢答键,抢答信号判定电路QDJB通过缓冲输出 信号的反馈将本参赛组抢先按下按键的信号锁存,并且以异步清零的方式将其他 参赛组的锁存器清零,组别显示和计时会保存到主持人对系统进行清零操作时为 止。A、B、C、D四组抢答从理论上来说,应该有16种可能情况,但是由于时 钟信号的频率很高而且是在时钟信号上升沿的状况下才做出的鉴别,所以在这里 四组同时抢答成功的可能性非常小,因此可以只设计四种情况,即

16、A、B、C、D 分别为0001、0010、0100、1000,这样使电路的设计得以简化。VHDL部分源 程序如下:IF (CLR=T) THEN G=0000;LOCK:=T;A1=T; B1=1; C1=1; D1=1;ELSIF (LOCK=T) THENIF(A=1AND B=0AND C=0AND D=0) THENA1=0; B1=1; C1=1; D1=1; G=W1;LOCK:=0;ELSIF (A=0AND B=1AND C=0AND D=0) THENA1=1; B1=0; C1=1; D1=1; G=W2;LOCK:=0;ELSIF (A=0AND B=0AND C=1AN

17、D D=0) THENA1=1; B1 =1; C1=0; D1=1; G=W3;LOCK:=0;ELSIF (A=0AND B=0AND C=0AND D=1) THEN图4-1抢答鉴别模块仿真图QDJBCLR低电平有效,当其为高电平时,输出无效。当其为低电平时,A, B, C, D哪一个为高电平则输出哪个,对应的LED灯亮。4.2计时模块的设计与实现在计时模块的设计中设置了固定和可调的两个时间,可调时间通过预置键 SET来调节,计数时两个数码管QA,QB显示剩余时间,分别表示两位倒计时 的个位和十位。当抢答鉴别模块成功判别出最先按下抢答按钮的参赛组后,在成 功鉴别出哪组最先抢答后,主持人按

18、下计时信号,则进入计时状态。计时模块开 始工作从规定值开始以秒计时,计时至0秒时停止,此时蜂鸣器发出报警信号, 提醒答题已终止。该系统输入信号有:系统清零信号CLR,计时预置控制端LDN, 计时使能端EN,系统时钟信号CLK,计时预置数据调整按钮TA、TB。系统输 出信号有:倒计时输出端QA3.0、QB3.0、蜂鸣器BELL。VHDL部分源程 序如下:IF CLR=1 THEN TMPA:=1001; TMPB:=1001; SWYUZHI=0000; GWYUZHI=0000;DA=1001; DB=1001;ELSIF CLKEVENT AND CLK=T THENIF LDN=1 THE

19、NIF TA=T THENGWYUZHI=GWYUZHI+0001” ;BELL=0;IF GWYUZHI=1010” THENGWYUZHI=0000”;END IF;END IF;IF TB=T THENSWYUZHI=SWYUZHI+0001;BELL=0;IF SWYUZHI=1010 THENSWYUZHI=0000;END IF;END IF;TMPA:=GWYUZHI;TMPB:=SWYUZHI;BELL=0;STAY:=0;ELSIF EN=T AND STAY=0 THENIF FLAG=T THENTMPA:=0000;TMPB:=0000;END IF;IF TMPA=0

20、000 THENTMPA:=1001;IF TMPB=0000 THENSTAY:=T;FINISH:=T;N=N+1;IF SWYUZHI=0000 THENTMPB:=1001”;BELL=T;ELSE TMPB:=SWYUZHI;TMPA:=GWYUZHI;BELL=1;END IF;ELSE TMPB:=TMPB-0001;BELL=0;END IF;ELSE TMPA:=TMPA-0001”; BELL=0;END IF;ELSIF STAY=1 AND FINISH=1 THENN=N+1;IF N=4 THENBELL=0;N=0;FINISH:=0;END IF;ELSIF E

21、N=0 THENSTAY:=0;END IF;END IF;QA=TMPA; QB=TMPB;图4-2计时模块仿真图JSQCLR低电平有效,当CLR为高电平时,电路不工作。当CLR为低电平时开 始计时。如没人抢答,时间到后发出提示音。如有人抢答,答题时间到后,发出 提示音。输入:QA个位,QB十位,输出:TA个位,TB十位。如仿真图所示,当计时复位信号CLR=1时,模块输出信号QA=0000, QB=0000。当预置数控制信号LDN=1可通过TA来调整QA,TA来一次高电平, 则QA的数值就加1;用TB来调整QB,通过这两个调整信号可调整参赛者答题所需要的时间。在CLR=0, LDN=0,EN

22、=1时,通过时钟信号CLK的上升沿来 进行到计时。通过分析,仿真完全符合预期所要达到的结果。4.3报警模块的设计与实现报警器的设计主要是来提醒观众倒计时的开始和结束,哪位选手进行了抢 答,在这几种情况下蜂鸣器会发出2-3秒的鸣叫,便于更好的判别比赛的情况。 此模块和抢答鉴别模块、计时模块、蜂鸣器相连,用以实现其功能。该系统输入信号有系统时钟信号CLK,组别输入信号CHOS,输出信号 SPEAK,用以连接蜂鸣器来进行报警。如仿真图所示,当CHOS=0001即A组抢答时,蜂鸣器SPEAK=1进行2-3 秒的鸣叫,通过分析,仿真完全符合预期所要达到的结果。VHDL部分源程序如 下:IF CHOS=0

23、000 THENN=0; SAVE=0;ELSIF CLKEVENT AND CLK=1 THENIF NWHEN 0100”=WHEN 0010”=WHEN 0001”=SAVEv=T;Nv=N+1;SAVEv=T;Nv=N+1;SAVEv=1;Nv=N+1;SAVEv=1;Nv=N+1;WHEN OTHERS = NULL;END CASE;ELSESAVEv=0;END IF;END IF;SPEAKv=SAVE;4.4译码显示模块的设计与实现译码器的设计主要任务是显示组别和时间的工作状态,其主要原理是四位二 进制BCD编码转换成七段二进制数字输出在数码管上,使观众能够更直观的看 到比赛

24、进程。译码器的设计主要任务是将组别和时间的工作状态,翻译成3个信号数码管 的工作状态。译码器的输入是由16进制数显示的。如仿真图所示,AIN4为数字0-9时,DOUT7输出对应于译码对照表,AIN4 为数字10-15时,DOUT7输出1111111,通过分析,仿真完全符合预期所要达到 的结果。VHDL部分源程序如下:CASE AIN4 ISWHEN 0000=DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7=1111111;图4-4译码显示模块仿真图YMQ4.5计分模块的设计与实现在计分器电路的设计中,按照一般的设计原则,按一定数进

25、制进行加减即可, 但是随着计数数目的增加,要将计数数目分解成十进制并进行译码显示分变得越 来越麻烦。因此为了减少译码显示的麻烦,一般是将一个大的进制数分解成数个 十进制以内的时制数,计数器串级连接。但随着位数的增加,电路的接口增加因 此本设计采用IF语句从低往高判断是否有进位,以采取相应的操作,而且由于 设计要求加减分均为10的倍数故而可以将个位一直设为0,这样既减少了接口, 又大大地简化了设计。VHDL部分源程序如下:IF (ADDEVENT AND ADD=1) THENIF RST=1 THENPOINTS_A2:=0001; POINTS_A1:=0000;POINTS_B2:=000

26、1; POINTS_B1:=0000;POINTS_C2:=0001; POINTS_C1:=0000;POINTS_D2:=0001; POINTS_D1:=0000;ELSIF CHOS=0001 THENIF POINTS_A1=1001 THENPOINTS_A1:=0000;IF POINTS_A2=1001 THENPOINTS_A2:=0000;ELSEPOINTS_A2:=POINTS_A2+T;END IF;ELSEPOINTS_A1:=POINTS_A1+1;END IF;ELSIF CHOS=0010 THENIF POINTS_B1=1001 THENPOINTS_B1

27、:=0000;IF POINTS_B2=1001 THENPOINTS_B2:=0000;ELSEPOINTS_B2:=POINTS_B2+1;END IF;ELSEPOINTS_B1:=POINTS_B1+T;END IF;ELSIF CHOS=0100 THENIF POINTS_C1=1001 THENPOINTS_C1:=0000;IF POINTS_C2=1001 THENPOINTS_C2:=0000;ELSEPOINTS_C2:=POINTS_C2+1;END IF;ELSEPOINTS_C1:=POINTS_C1+1;END IF;ELSIF CHOS=1000 THENIF

28、POINTS_D1=1001 THENPOINTS_D1:=0000;IF POINTS_D2=1001 THENPOINTS_D2:=0000;ELSEPOINTS_D2:=POINTS_D2+T;END IF;ELSEPOINTS_D1:=POINTS_D1+1;END IF;END IF;END IF;AA2=POINTS_A2; AA1=POINTS_A1; AA0=0000;BB2=POINTS_B2; BB1=POINTS_B1; BB0=0000;CC2=POINTS_C2; CC1=POINTS_C1; CC0=0000;DD2=POINTS_D2; DD1=POINTS_D1

29、; DD0=0000;初始分数为100分,当ADD经过第一个上升沿时,CHOS【3】输出高电平, 则对应的给D加上10分。5硬件调试80 9 ns1 如/ :,s40.0 -S320.0 ns部口.3 址480 ns560. 0Istates0010Xono010000105.1总模块仿真结果在quartus II上对总的源程序进行仿真如下图所示:-tb2-tbl总模块仿真结果图5.2引脚锁定图5-2引脚锁定图铮18-tb3 E5.3程序下载引脚锁定完以后,就可以进行程序下载了,程序下载完就可以进行硬件仿真, 仿真结果如下:当按下RET时,按下一个开关确定是几组抢答成功,抢答成功后,蜂鸣器 报

30、警,此时主持人可以按下倒计时开关,倒计时时间到后,蜂鸣器会报警,如果 提前回答完毕,可以按下STOP开关,停止倒计时。6总结按照任务要求,我们设计出的抢答器具备抢答鉴别、倒计时、数码管显示、 报警提示等多种功能。本抢答器能够准确判断出第一位抢答者,并且通过数显、 蜂鸣这些途径能让人们很容易得知谁是抢答成功者。根据不同比赛的需要,主持 人可以预设一定的回答限制时间,让抢答者在规定时间内答题,主持人根据答题 结果评出最终赢家。设计制作过程中遇到的问题及解决方案:1. VHDL语法使用不规范:当我们编写软件程序的时,遇到了编译错误。细心阅读max+plus2错误提示 和所编写的程序后发现是因为VHD

31、L语法使用错误。最后经过翻阅EDA课本, 熟悉相关语法后将其改正。2. 抢答器项目设计规模过大,与现有CPLD芯片不匹配:按照我们最初的设计方案来设计的话,抢答器还可以实现计分功能。但是当 我们编写好程序后,一经编译就会出现工程与器件无法适配的问题。查找原因后 发现是因为数码管显示分数功能占用芯片引脚过多,芯片无法匹配。最终我们在 总设计中去掉了计分功能,从而适配成功。3. 引脚锁定不完整,最终编译无法通过:处理了之前出现的几个问题后,在最后编译时未通过。细致查看了错误提示, 发现是个别管脚未锁定的原因。我们最终把各个管脚锁定号码一一检查了一遍, 从而通过了编译。本设计有以下几个可以改进的地方

32、:1. 预使本抢答器具有计分功能,可以使用引脚更多的CPLD芯片,即使用更 多的数码管来实时显示每个抢答选手的得分情况。2. 现有的声响提示模块发出的提示声音比较单调,不能满足现在的抢答比 赛要求。通过适当添加几种语音芯片,就可以让蜂鸣器在不同的情况下发出美妙 的声响,能为比赛增添不少乐趣。3. 在现有设计基础上使用无线电或红外技术,还可以使本项目升级为无线智 能抢答器。在这次设计中,我花了不少的时间,其中有苦也有泪。苦的是我付出了不少 的汗水,乐的是在付出的过程中我得到了许多,也学会了许多。因为一个人的能力毕竟有限,在设计方面难免会出现这样那样的错误,但正 是这些错误促进了我的进步。根据电路

33、的特点,我用层次化结构化设计概念,将 此项设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再 将各模块合起来联试,这培养了我们合作的精神,同时加深了层次化设计的概念。 在这次课程设计中,我真正体会到了知识的重要性。在设计的过程中,遇到问题 我会先独立思考,到自己不能解决的时候我就会和同学讨论,实在解决不了我就 会向指导老师请教,应该说从功能的实现到流程图的绘制,从程序的编写到程序 的检查,从程序的调试到实验报告的写作,其间每一个过程都凝聚着大家对我的 帮助。最后,在设计的过程中我进一步养成了软件设计的方法,完成一个项目的的 程序,进一步了解了设计的步骤,进一步加深了对EDA这门

34、课的理解,增强了 以后学习的兴趣,为以后的工作积累了一定的经验。7参考文献1潘松,黄继业.EDA技术实用教程.第二版.M.北京:科学出版社,2005.龚尚福.微机原理与接口技术.第二版.M西安:西安电子科技大学出版社,2008.3 边计年,薛宏熙.用VHDL设计电子线路.清华大学出版社,20004 李伟英,谢完成.基于EDA技术的抢答器的设计与实现【J】.科学技术与实现,2008.8(11).5 谭会生,瞿遂存.EDA技术综合应用实例与分析【M】.西安:西安电子科技大学出版社,2004.6 侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计.西安:西安电子科技大学出版社,19977 常青,陈

35、辉煌.可变成专用集成电路及其应用与设计实践经验.北京:国防工业出版社,19988 张千里,陈光英.网络安全新技术M.北京:人民邮电出版社,20038附录智力抢答器VHDL源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qd isport(rst,clk,s,stop:in std_logic;s0,s1,s2,s3:in std_logic;states:buffer std_logic_vector(3 downto 0);warn:out std_logic;ta,tb:

36、buffer std_logic_vector(3 downto 0);void:out std_logic);end qd;architecture qd of qd issignal st:std_logic_vector(3 downto 0);signal co:std_logic;beginq1:process(rst,clk,s0, s1,s2,s3)beginif rst=0 thenvoid=0;st=0000”;elsif clkevent and clk=1 thenif (s0=T or st(0)=1)and not( st(1)=1 or st(2)=1 or st(

37、3)=1 ) then st(0)=1; end if ;if (s1=T or st(1)=1)and not( st(0)=1 or st(2)=1 or st(3)=1 ) then st(1)=1; end if ;if (s2=T or st(2)=1)and not( st(0)=1 or st(1)=1 or st(3)=1 ) then st(2)=1; end if ;if (s3=1 or st(3)=1)and not( st(0)=1 or st(1)=1 or st(2)=1 ) then st(3)=1;end if ;void=s0 or s1 or s2 or

38、s3;end if ;end process q1;q2:process(states(0),states(1),states(2),states(3)beginif (st=0000”) then states=0000”;elsif (st=0001”) then states=0001”;elsif (st=0010”) then states=0010”;elsif (st=0100”) then states=0011”;elsif (st=1000”) then states=0100”;end if;end process q2;q3:process(clk,rst,s,stop

39、,ta)beginif rst=0 or stop=T then ta=0000”;elsif clkevent and clk=T then co=0;if s=T thenif ta=0000” thenta=1001”;co=T;else ta=ta-1;end if;end if;end if;end process q3;q4:process(co,rst,s,stop,tb)beginif rst=0 or stop=T then tb=1001”;elsif coevent and co=1 thenif s=T thenif tb=0000” then tb=1000;else tb=tb-1;end if;end if;end if;end process q4;q5:process(ta,tb)beginif ta=0000” and tb=0000”then warn=1;else warn=0;end if;end process q5;end qd;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号