eda智力竞赛抢答器
EDA课程设计—抢答器
内容摘要抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。
当第一个人按下按键后,则在显示器上显示该组的号码,对应的灯亮,同时电路将其他各组按键封锁,使其不起作用。
若抢答时间内无人抢答,则报警灯亮。
回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。
因此要完成抢答器的逻辑功能,该电路应包括抢答器鉴别模块、抢答器计数模块、报警模块、译码模块、分频模块。
关键词:抢答鉴别封锁计数报警AbstractResponder is the answer for the quiz participants to answer in the design when a priority decision circuit, and the race can be divided into several groups, answer in each group on the host issues raised in the shortest possible time to make judgments , and press the answer in answer key. After pressing the button when the first person, then the display shows the number of the group, the corresponding lights, while other groups will be key circuit block, it does not work. If the answer in time, no answer in, the alarm lights. Answering questions, all the keys from the host to restore and re-start the next round of the Responder. So to complete the answering device logic functions, the circuit should include Responder identification module, Responder counting module, alarm module, decoding module, frequency module.KEY: Responder Identification Blockade Count Alarm一、设计要求1.抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0~ S3表示。
智力竞赛抢答器EDA课设
燕山大学EDA课程设计报告一、设计题目:智力竞赛抢答器二、设计要求:1 .五人参赛每人一个按钮,主持人一个按钮,按下就开始;2 .每人一个发光二极管,抢中者灯亮;3 .有人抢答时,喇叭响两秒钟;4 .答题时限为10秒钟,从有人抢答开始,用数码管倒计时间,0,9,8…1,0;倒计时到0的时候,喇叭发出两秒声响。
三、设计内容:1.设计方案:主持人控制总开关,主持人置高电平后,系统进入准备工作。
有人抢答时,相应的二极管发光,同时数码管开始倒计时,且喇叭响两秒钟。
当倒计时再次到0的时候,喇叭再响2秒钟。
我设计的方案由五个高低电平控制相应的发光二极管,第六个用于主持人复位。
由二极管控制数码管和其中一个喇叭响,再由数码管控制另一喇叭响。
因此把整个课题分成四个模块:抢答器、倒计时器、计时器、秒脉冲生成器。
2.模块一:抢答器I6为置零端,主持人控制,i1-i5由每位选手控制。
o1-o5为发光二极管,主持人置低电平后,o1-o5都被置零。
当主持人置为高电平时,抢答开始,成功者对应的二极管发光,通过与门将cp信号封锁,并输入到DFF中,则其他选手在按键时,输出不会有影响,则实现了一人抢答后,其他人不能再做答。
若重新开始则主持人再按i6清零即可。
此模块的仿真波形如下:仿真说明:当i6为1时,即主持人按键以后,i5最先抢答成功,显示o5是1,使其对应的二极管发光,然后主持人清零,o5变成零,可以再次抢答。
模块二:十秒倒计时器此十秒钟倒计时器是由74168组成的十进制减法计数器,它只保留预制置数端,CP信号端,计数输出端,其余的都置为0。
Ldn是置零端,当它等于1的时候,74168有效,倒计时开始。
当输出0、9、--1时,D 触发器输出结果总是1,不影响CP信号。
当输出从1到0时,D触发器到上升沿,输出结果为1,则CP信号被封锁。
此时倒计时器保持在0不变。
若要重新开始,则把Ldn置0即可。
此模块的仿真波形如下:由图可见,Ldn为1的时候开始倒计时,输出结果0,9,8…0。
EDA课程设计四人智力竞赛计数抢答器
四人智力竞赛计数抢答器一、设计任务与要求任务:要求设计一个四人智力计数抢答器。
要求:四人使用抢答,当其中一人按下抢答器,将封锁其余抢答器,数码管显示一位二进制数,同时倒计时开始计时(0—99)秒,如果在倒计时间内没答完题报警器开始响。
二、总体框图根据设计要求,本系统应具有第一抢答信号的鉴别和锁存、答题计时、动态显示和声光提示等功能。
为了完成上述功能,该系统应由抢答鉴别和锁存电路、答题计时电路、数显驱动电路和声光驱动电路等组成。
抢答器设计的关键是准确地判断第一抢答信号和锁存。
在得到第一抢答信号后应立即进行电路封锁,使其他组抢答无效。
形成抢答信号后,由数显电路显示抢答组别,由声光电路提示超时抢答。
图1 总体框图三、选择器件1、装有QuartusII软件的计算机一台。
2、7段数码显示管。
3、芯片:使用Altera公司生产的Cyclone系列芯片,如EP1C12Q240C8芯片。
4、EDA实验箱一个。
5,下载接口是数字芯片的下载接口(JTAG)主要用于FPGA芯片的数据下载。
6、时钟源。
Cyclone的性能特性Cyclone器件的性能足以和业界最快的FPGA进行竞争。
Cyclone FPGA内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
FPGA的基本特点主要有:1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA内部有丰富的触发器和I/O引脚。
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
四、功能模块1:library ieee;use ieee.std_logic_1164.all;entity feng isport(cp,clr:in std_logic;q :out std_logic);end feng;architecture feng_arc of feng isbeginprocess(cp,clr)beginif clr='0' thenq<='0';elsif cp'event and cp='0' thenq<='1';end if;end process;end feng_arc;此程序为抢答鉴别模块feng该模块主要实现抢答和鉴别的功能。
EDA课程设计、八路智力竞赛抢答器(这份设计期末成绩是优秀)
EDA技术课程设计报告题目智力竞赛抢答器设计学院电子信息工程学院专业学生姓名学号年级级指导教师职称二〇一一年十二月智力竞赛抢答器摘要:本课程设计分为智力竞赛抢答器的分模块设计和智力竞赛抢答器的原理图设计两个层次的设计。
在本次设计中,模块设计分为锁存器设计,编码器设计,译码器设计;系统开发平台为MAX plus Ⅱ;硬件描述语是VHDL。
竞赛者可以分为八组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。
当第一个人按下按键后,则在显示器上显示该组的号码,同时电路将其他各组按键封锁,使其不起作用。
回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。
关键词:锁存;显示;抢答器;目录第1章引言 (1)1.1 EDA的概述 (1)1.2 MAX+plus II的概述 (1)1.3 VHDL的概述 (2)1.4 智力竞赛抢答器的概述 (2)1.4.1 课程设计题目 (2)1.4.3 课程设计的思想 (2)1.4.4 软硬件运行环境及开发工具 (3)第2章设计流程 (4)2.1设计模块方框图 (4)2.2 模块功能分析 (4)2.2.1 抢答输入开关电路 (4)2.2.2 锁存器 (4)2.2.4 译码器 (4)2.2.5 解锁器 (4)2.2.6数码显示器与喇叭 (5)2.2.7图1.1与图2.1比较 (5)第3章软硬件设计 (6)3.1系统方框图 (6)3.2模块分析 (6)3.2.1锁存器模块和仿真波形 (6)3.2.2编码器模块和仿真波形 (9)3.2.3译码器模块和仿真波形 (10)3.2.4完整模块和仿真波形 (12)3.3硬件调试与操作说明 (13)3.3.1引脚锁定 (13)3.3.2调试与故障处理 (14)第4章课程设计总结与体会 (15)参考文献 (16)附录共阴极7段数码管 (17)第1章引言1.1 EDA的概述20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。
(完整)EDA课程设计——数字抢答器
数字式竞赛抢答器设计要求1、设计一个可容纳4组参赛的数字式抢答器,每组设一个按钮,供抢答使用.2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
3、设置一个主持人“复位”按钮。
4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出 2~3 秒的音响。
5、设置一个计分电路,每组开始预置 100 分,由主持人记分,答对一次加 10 分,答错一次减 10 分。
1、总体方案设计原理及分析1.1、方案原理按照设计要求,设计一个4组参赛的抢答器,所以这种抢答器要求有四路不同组别的抢答输入信号,并能识别最先抢答的信号,直观地通过数码显示和蜂鸣报警等方式提示主持人并显示出组别;同时该系统还应有复位功能。
主持人按下系统复位键(RST),系统进入抢答状态,计分模块输出初始信号给数码显示模块并显示出初始值。
当某参赛组抢先将抢答键按下时,系统将其余三路抢答信号封锁,同时扬声器发出2-3秒的声音提示,组别显示模块送出信号给数码显示模块,从而显示出该抢答成功组台号,并一直保持到下一轮主持人将系统清零为止。
主持人对抢答结果进行确认,随后,计时模块送出倒计时计数允许信号,开始回答问题,计时显示器则从初始值开始以计时,在规定的时间内根据答题的正误来确定加分或减分,并通过数码显示模块将成绩显示出来。
计时至0时,停止计时,扬声器发出超时报警信号,以中止未回答完问题。
当主持人给出倒计时停止信号时,扬声器停止鸣叫.若参赛者在规定时间内回答完为题,主持人可给出倒计时计数停止信号,以免扬声器鸣叫。
主持人按下复位键,即RST 为高电平有效状态,清除前一次的抢答组别,又可开始新的一轮的抢答。
此抢答器的设计中采用自顶向下的设计思路,运用VHDL 硬件描述语言对各个模块进行层次化、系统化的描述,并且先设计一个顶层文件,再把各个模块连接起来。
1。
2、方案设计框图主电路 扩展功能电路图1 方案系统结构图1.3、方案各路功能分析此方案是由主体电路和扩展电路两部分构成,整个系统包括这样几个主要模块:抢答鉴别模块、抢答计时模块、抢答计分模块、译码显示模块、报警模块。
EDA智力竞赛抢答器设计
EDA智力竞赛抢答器设计一、实训目的:1、了解竞赛抢答器的工作原理;2、熟悉VHDL语言编程,了解实际设计中的优化方案。
二、实训内容:设计一个数字式竞赛抢答器,可以判断第一抢答者,并具备计分功能。
抢答器可以容纳四组参赛者同时抢答,每组设置一个按钮供抢答者使用。
设置抢答器使能信号,当此信号有效时,若参赛者按下抢答开关,则抢答器能判断出第一抢答者并指示该组抢答成功,其他组参赛者的抢答开关不起作用;若提前抢答,则对相应的参赛者发出警报。
如果抢答成功的参赛者满足得分条件,则增加相应的分数,答错不扣分。
鉴别模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jianbie isport(EN1,RST1:in std_logic;A,B,C,D:in std_logic;A1,B1,C1,D1:out std_logic;STA TES:out std_logic_vector(3 downto 0));end jianbie;architecture one of jianbie issignal tmp:std_logic;beginprocess(A,B,C,D,RST1,tmp)beginif RST1='1' thentmp<='1';STATES<="0000";elsif tmp='1' thenif (A='1'AND B='0'AND C='0'AND D='0' ) thenA1<='1'; B1<='0'; C1<='0'; D1<='0'; STA TES<="0001"; tmp<='0';ELSIF (A='0'AND B='1'AND C='0'AND D='0') THENA1<='0'; B1<='1'; C1<='0'; D1<='0';STATES<="0010";tmp<='0';ELSIF (A='0'AND B='0'AND C='1'AND D='0') THENA1<='1'; B1<='0'; C1<='1'; D1<='0'; STATES<="0011"; tmp<='0';ELSIF (A='0'AND B='0'AND C='0'AND D='1') THENA1<='0'; B1<='0'; C1<='0'; D1<='1'; STATES<="0100";tmp<='0';else tmp<='1';STATES<="0000";end if ;end if;end process p1;end one;计分模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jifen ISPORT(RST1: IN STD_LOGIC;ADD: IN STD_LOGIC;CHOS: 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 jifen ;ARCHITECTURE ART OF jifen ISBEGINPROCESS(RST1,ADD,CHOS) ISV ARIABLE POINTS_A2,POINTS_A1: STD_LOGIC_VECTOR(3 DOWNTO 0);V ARIABLE POINTS_B2,POINTS_B1: STD_LOGIC_VECTOR(3 DOWNTO 0);V ARIABLE POINTS_C2,POINTS_C1: STD_LOGIC_VECTOR(3 DOWNTO 0);V ARIABLE POINTS_D2,POINTS_D1: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINIF (ADD'EVENT AND ADD='1') THENIF RST1='1' THENPOINTS_A2:="0001"; POINTS_A1:="0000";POINTS_B2:="0001"; 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+'1';END IF;ELSEPOINTS_A1:=POINTS_A1+'1';END IF;ELSIF CHOS="0010" THENIF POINTS_B1="1001" THENPOINTS_B1:="0000";IF POINTS_B2="1001" THENPOINTS_B2:="0000";ELSEPOINTS_B2:=POINTS_B2+'1';END IF;ELSEPOINTS_B1:=POINTS_B1+'1';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 POINTS_D1="1001" THENPOINTS_D1:="0000";IF POINTS_D2="1001" THENPOINTS_D2:="0000";ELSEPOINTS_D2:=POINTS_D2+'1';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; DD0<="0000"; END PROCESS;END ARCHITECTURE ART;显示模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY xianshi ISPORT(AIN4:IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END xianshi;ARCHITECTURE ART OF xianshi ISBEGINPROCESS(AIN4)BEGINCASE AIN4 ISWHEN "0000"=>DOUT7<="0111111"; --0WHEN "0001"=>DOUT7<="0000110"; --1WHEN "0010"=>DOUT7<="1011011"; --2WHEN "0011"=>DOUT7<="1001111"; --3WHEN "0100"=>DOUT7<="1100110"; --4WHEN "0101"=>DOUT7<="1101101"; --5WHEN "0110"=>DOUT7<="1111101"; --6WHEN "0111"=>DOUT7<="0000111"; --7WHEN "1000"=>DOUT7<="1111111"; --8WHEN "1001"=>DOUT7<="1101111"; --9WHEN OTHERS=>DOUT7<="0000000";END CASE;END PROCESS;END ARCHITECTURE ART;顶端模块library ieee;use ieee.std_logic_1164.all;entity diangduan isport(EN1 : in std_logic;RST1: IN STD_LOGIC;A,B,C,D: in std_logic;ADD: in std_logic;A1:out std_logic;B1:out std_logic;C1:out std_logic;D1:out std_logic;STATES :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);FIRST:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SCOREA2,SCOREA1,SCOREA0:OUT std_logic_vector(6 downto 0);SCOREB2,SCOREB1,SCOREB0:OUT std_logic_vector(6 downto 0);SCOREC2,SCOREC1,SCOREC0:OUT std_logic_vector(6 downto 0);SCORED2,SCORED1,SCORED0:OUT std_logic_vector(6 downto 0));END diangduan;ARCHITECTURE rtl OF diangduan ISCOMPONENT jianbie ISport(EN1: in std_logic;RST1:in std_logic;A,B,C,D: in std_logic;A1:out std_logic;B1:out std_logic;C1:out std_logic;D1:out std_logic;STATES :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT jianbie;COMPONENT jifen isPORT(RST1: IN STD_LOGIC;ADD: IN STD_LOGIC;CHOS: 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 COMPONENT jifen;COMPONENT xianshi ISPORT(AIN4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT xianshi;SIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL AA2,AA1,AA0: std_logic_vector(3 downto 0);SIGNAL BB2,BB1,BB0: std_logic_vector(3 downto 0);SIGNAL CC2,CC1,CC0: std_logic_vector(3 downto 0);SIGNAL DD2,DD1,DD0: std_logic_vector(3 downto 0);BEGINU1:jianbie PORT MAP(EN1,RST1,A,B,C,D,A1,B1,C1,D1,STATES);-- U2:counter PORT MAP(ADD,Q,SCOREA2,SCOREA1,SCOREA0,SCOREB2,SCOREB1,SCOREB0,SCOREC2,S COREC1,SCOREC0,SCORED2,SCORED1,SCORED0);U2:jifen PORT MAP(RST1,ADD,Q,AA2,AA1,AA0,BB2,BB1,BB0,CC2,CC1,CC0,DD2,DD1,DD0);U3:xianshi PORT MAP(Q,FIRST);U4:xianshi PORT MAP(AA2,SCOREA2);U5:xianshi PORT MAP(AA1,SCOREA1);U6:xianshi PORT MAP(AA0,SCOREA0);U7:xianshi PORT MAP(BB2,SCOREB2);U8:xianshi PORT MAP(BB1,SCOREB1);U9:xianshi PORT MAP(BB0,SCOREB0);U10:xianshi PORT MAP(CC2,SCOREC2);U11:xianshi PORT MAP(CC1,SCOREC1);U12:xianshi PORT MAP(CC0,SCOREC0);U13:xianshi PORT MAP(DD2,SCORED2);U14:xianshi PORT MAP(DD1,SCORED1);U15:xianshi PORT MAP(DD0,SCORED0);END rtl;。
EDA课程设计报告-基于CPLD的智力竞赛抢答器
目录一、总体思路 (1)二、各级模块设计 (2)1、抢答启动模块 (2)2、选手抢答模块 (7)3、加减分模块 (11)4、显示模块 (17)5、蜂鸣器 (19)三、调试步骤 (21)四、总结与体会 (23)五、原理图 (23)六、参考文献 (25)一、总体思路CPLD为复杂可编程逻辑器件,通过EDA技术对其进行编程,可将一个较复杂的数字系统集成于一个芯片中,制成专用集成电路芯片,并可随时在系统修改其逻辑功能。
智力竞赛抢答器,分为5个模块:选手抢答模块、抢答启动模块、加减分模块、显示模块、蜂鸣器控制模块。
图(一)总体框图抢答启动模块包括:复位和记时,用于启动抢答和启动定时。
输出信号给选手识别模块,并显示剩余时间。
选手抢答模块具有识别与锁存功能,并输出选手号给显示模块。
加减分模块用于存储各个选手的分数,并输出给显示模块。
蜂鸣器控制模块则对超时和抢答成功鸣声报警。
显示模块用于输出抢答剩余时间、抢答模块、选手得分。
二、各级模块设计1、抢答启动模块抢答启动模块由控制抢答启动的复位键和控制定时的两个定时启动键。
定时时间为5秒和20秒两种,分别由两个键控制。
主持人按下复位键启动抢答,并完成置数。
定时启动键则在置数信号有效的情况下,读入定时初值,进行减1操作,开始倒计时。
本模块程序:抢答启动LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY START_5_20 ISPORT(CLK1,RST,START5,START20:IN STD_LOGIC;B,A:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --输出定时初值S_FLAG:OUT STD_LOGIC); --置数信号END ENTITY;ARCHITECTURE ONE OF START_5_20 ISSIGNAL DATAIN:STD_LOGIC_VECTOR(1 DOWNTO 0);TYPE ST_TYPE IS (ST0,ST1,ST2); --定义状态SIGNAL C_ST:ST_TYPE;BEGINDATAIN<=START5&START20; --两个输入信号放在一起判断PROCESS(RST,CLK1)BEGINIF RST='0' THEN --复位B<="0000";A<="0000";C_ST<=ST0;S_FLAG<='0';ELSIF CLK1'EVENT AND CLK1='1' THENCASE C_ST ISWHEN ST0=> IF DA TAIN="01" THENC_ST<=ST1; --输入信号为01,转ST1状态S_FLAG<='1'; --置数信号有效B<="0000";A<="0101"; --定时初值“05”ELSIF DATAIN="10" THENC_ST<=ST2; --输入信号为10,转ST1状态S_FLAG<='1'; --置数信号有效B<="0010";A<="0000"; --定时初值“20”ELSE C_ST<=ST0; --输入信号为11,保持ST0状态END IF;WHEN ST1=>IF DATAIN="11" THENC_ST<=ST0;--防按键抖动,为11时才转ST0状态S_FLAG<='0'; --置数信号无效ELSE C_ST<=ST1; --按键没弹起,继续等待END IF;WHEN ST2=>IF DATAIN="11" THEN C_ST<=ST0;S_FLAG<='0';ELSE C_ST<=ST2;END IF;WHEN OTHERS=>C_ST<=ST0;B<="0000";A<="0000";END CASE;END IF;END PROCESS;END ARCHITECTURE;定时控制LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DE_COUNT ISPORT(CLK2,LOAD,L_CR,RST:IN STD_LOGIC;B,A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);TIMEB,TIMEA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);TIMEOUT,SR1:OUT STD_LOGIC);END ENTITY;ARCHITECTURE TWO OF DE_COUNT ISBEGINPROCESS(LOAD,L_CR,RST,CLK2)V ARIABLE P1,P0:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF LOAD='1' THENP1:=B;P0:=A; --指数信号有效,将B、A值读入P1、P0ELSIF L_CR='0' THEN --有选手抢答成功,L_CR输入为0,定时时间清0 P1:="0000";P0:="0000";TIMEOUT<='0';SR1<='1';ELSIF RST='0' THEN P1:="0000";P0:="0000";TIMEOUT<='0';SR1<='0';ELSIF (CLK2'EVENT AND CLK2='1') THENIF P0="0000" THENIF P1>0 THENP1:=P1-1;P0:="1001"; --若个位为0,十位减1,个位赋为9 END IF;ELSE P0:=P0-1; --若个位不为0,个位直接减一IF P0="0000" AND P1="0000" THENTIMEOUT<='0';SR1<='1'; --若时间到,输出锁存信号END IF;END IF;END IF;TIMEB<=P1;TIMEA<=P0;END PROCESS;END ARCHITECTURE;实现两个子模块组合LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DE_COUNT ISPORT(CLK2,LOAD,L_CR,RST:IN STD_LOGIC;B,A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);TIMEB,TIMEA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);TIMEOUT,SR1:OUT STD_LOGIC);END ENTITY;ARCHITECTURE TWO OF DE_COUNT ISBEGINPROCESS(LOAD,L_CR,RST,CLK2)V ARIABLE P1,P0:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF LOAD='1' THENP1:=B;P0:=A; --指数信号有效,将B、A值读入P1、P0ELSIF L_CR='0' THEN --有选手抢答成功,L_CR输入为0,定时时间清0 P1:="0000";P0:="0000";TIMEOUT<='0';SR1<='1';ELSIF RST='0' THEN P1:="0000";P0:="0000";TIMEOUT<='0';SR1<='0';ELSIF (CLK2'EVENT AND CLK2='1') THENIF P0="0000" THENIF P1>0 THENP1:=P1-1;P0:="1001"; --若个位为0,十位减1,个位赋为9 END IF;ELSE P0:=P0-1; --若个位不为0,个位直接减一IF P0="0000" AND P1="0000" THENTIMEOUT<='0';SR1<='1'; --若时间到,输出锁存信号END IF;END IF;END IF;TIMEB<=P1;TIMEA<=P0;END PROCESS;END ARCHITECTURE;抢答启动子模块仿真如下:图(二)抢答定时子模块仿真如下:图(三)整个模块仿真如下图:图(四)2、选手抢答模块选手有8名,在一个结构体中用8个进程同时对8个选手按键电平变化的监测是不可实现的,因为若出现检测上升沿或下降沿的语句,编译软件会认为所检测的信号为实体的时钟信号,而一个实体只允许用一个时钟信号控制。
EDA报告:智力竞赛抢答器
燕山大学EDA课程设计报告书题目:智力竞赛抢答器姓名:韩承姣、彭赛、袁广召班级:电子信息工程2班学号:************120104020046120104020047成绩:一、设计题目及要求题目名称:智力竞赛抢答器要求:1.10人参赛每人一个按钮,主持人一个按钮,按下就开始;2.每人一个发光二极管,抢中者灯亮;同时用两位数码管显示抢中的选手编号(01号~10号),无人抢答时显示00。
3.有人抢答时,喇叭响两秒钟;4.答题时限为10秒钟,从有人抢答开始,用一位数码管倒计时间,0、9、8…1、0;倒计时到0的时候,蜂鸣器响两秒。
5. 设置加分和扣分按钮,答对一题按一次加分键加2分,答错按一次扣分键扣1分;用两位数码管显示得分情况,注意:显示其中一名选手的得分即可。
二、设计过程及内容(包括○1总体设计的文字描述,即由哪几个部分构成的,各个部分的功能及如何实现方法;○2主要模块比较详尽的文字描述,并配以必要的图片加以说明,但图片数量无需太多)由上图可知我们的总电路由七个模块组成,下面来分别介绍一下它们模块一:10人抢答电路模块功能:该模块中主持人开关负责清零,平时状态下为低电平使74273芯片一直处于清零状态,抢答无效;当该开关为高电平时开始抢答,i号抢答后,相应的Qi会输出高电平,经过反相器后变为低电平,再经过与门后,与门输出变为低电平,该低电平与时钟信号相与之后仍为低电平,此时74273芯片停止工作,其他人抢答无效,第一轮抢答结束。
使主持人开关处于低电平,为第二轮抢答做准备。
(在电路图中的D触发器为防抖动电路)电路图:仿真结果:仿真结果说明:当可以抢答时,10,9,8,7,都抢答,最终显示的是最先抢答的10号,其余抢答都没有效。
模块二:分频模块功能:该模块利用3个74160芯片来构成0~365循环,当给进脉冲为366HZ时,该模块的输出进位1即为1HZ ,此时分频后信号的每个周期为1s,为以后10s倒计时做准备。
(成都大学)EDA课程设计题目及解决方案(抢答器)
EDA课程设计设计题目:智力竞赛抢答器一.电路功能:可满足8个组,同时参加竞赛。
抢答器复位后,数码显示为0,在竞赛主持人出完题并示意抢答开始后,每个组都可以通过各自的按钮开关发出抢答信号,抢答器一旦接收到某组最先发出的信号后,立即让数码管显出该组的组号,同时发出音响提示,且对后来组发出的抢答信号一律不与理睬。
主持人用复位钮复位抢答器,数码显示归0,提示音停止,在抢答组回答完问题后,重复前述过程,可进行下一题抢答。
二.原理框图(见附图)三.设计要求用VHDL语言描述抢答器逻辑功能,经编译后仿真,仿真波形正确后,加上段码译码器编译通过后方可在实验箱上下载,做真实电路验证。
四. 撰写设计报告给出设计方案框图,包括模块的划分,信息的传递关系;给出各模块的VHDL程序;给出每个模块的仿真波形图,并附以文字说明;写出设计的心得体会和收获。
一.结构描述法1(先锁存后编码)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY scq_8 ISPORT (g: IN STD_LOGIC_VECTOR (8 DOWNTO 1); rst, en: IN STD_LOGIC;q: OUT STD_LOGIC_VECTOR (8 DOWNTO 1)); END scq_8;ARCHITECTURE one OF scq_8 ISBEGINPROCESS ( rst, en)BEGINIF rst='0' THENq<= "11111111";ELSIF en ='1' THENq<=g;END IF;END PROCESS;END one;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY bm8_4 ISPORT(d: IN STD_LOGIC_VECTOR(8 DOWNTO 1); sum: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END bm8_4;ARCHITECTURE one OF bm8_4 ISBEGINPROCESS(d)BEGINCASE d ISWHEN "11111110" => sum<="0001";WHEN "11111101" => sum<="0010";WHEN "11111011" => sum<="0011";WHEN "11110111" => sum<="0100";WHEN "11101111" => sum<="0101";WHEN "11011111" => sum<="0110";WHEN "10111111" => sum<="0111";WHEN "01111111" => sum<="1000";WHEN OTHERS => sum<="0000";END CASE;END PROCESS;END one;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECL7S ISPORT(A: IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END;ARCHITECTURE one OF DECL7S ISBEGINPROCESS(A)BEGINCASE A ISWHEN "0000" => LED7S <= "0111111";WHEN "0001" => LED7S <= "0000110";WHEN "0010" => LED7S <= "1011011";WHEN "0011" => LED7S <= "1001111";WHEN "0100" => LED7S <= "1100110";WHEN "0101" => LED7S <= "1101101";WHEN "0110" => LED7S <= "1111101";WHEN "0111" => LED7S <= "0000111";WHEN "1000" => LED7S <= "1111111";WHEN "1001" => LED7S <= "1101111";WHEN "1010" => LED7S <= "1110111";WHEN "1011" => LED7S <= "1111100";WHEN "1100" => LED7S <= "0111001";WHEN "1101" => LED7S <= "1011110";WHEN "1110" => LED7S <= "1111001";WHEN "1111" => LED7S <= "1110001";WHEN OTHERS => NULL;END CASE;END PROCESS;END;四.状态机描述法LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY qdq8_1 ISPORT(rst,clk: STD_LOGIC;g: IN STD_LOGIC_VECTOR(8 DOWNTO 1);q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);sq: OUT STD_LOGIC );END qdq8_1;ARCHITECTURE one OF qdq8_1 ISTYPE s IS (s0,s1);SIGNAL crt_s: s;SIGNAL sum: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(rst,clk,g)BEGINIF rst='0' THEN crt_s<=s0;ELSIF clk'event AND clk='1' THENCASE crt_s ISWHEN s0 => q<="0000";sq<='0';CASE g ISWHEN "11111110" => sum<="0001";crt_s<=s1;WHEN "11111101" => sum<="0010";crt_s<=s1;WHEN "11111011" => sum<="0011";crt_s<=s1;WHEN "11110111" => sum<="0100";crt_s<=s1; WHEN "11101111" => sum<="0101";crt_s<=s1; WHEN "11011111" => sum<="0110";crt_s<=s1; WHEN "10111111" => sum<="0111";crt_s<=s1; WHEN "01111111" => sum<="1000";crt_s<=s1; WHEN OTHERS => crt_s<=s0;END CASE;WHEN s1 => q<=sum; sq<='1';crt_s<=s1;END CASE;END IF;END PROCESS;END one;。
EDA抢答器设计
EDA实训报告':'班级:17电子信息工程技术二班同组:彭元毛张贵萍王子文[…%)一.EDA设计要求抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答是各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。
当第一人按下按键后,则在显示器上显示该组的号码,对应的灯亮,同时电路将其他各组按键封锁,使其不起作用。
抢答者回答正确加分,回答错误则减分。
若抢答时间内无人抢答,则报警灯亮。
回答完问题后,有主持人将所有按键恢复,重新开始下一轮抢答。
因此要完成抢答器的逻辑功能,该电路应包括抢答器鉴别模块、抢答器计数模块、报警模块、译码模块、分频模块、计分模块。
(一).抢答器鉴别模块在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是朝前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余的抢答信号封锁的功能。
其中有四个抢答信号s0、s1、s2、s3;抢答状态显示信号states;抢答与警报时钟信号clk0;系统复位信号rst;警报信号warm。
(二).抢答器计时模块在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时,并且在20秒倒计时后无人抢答显示超时并报警。
其中有抢答时钟信号clk1;系统复位信号rst;抢答使能信号start;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。
(三).报警模块该模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内无人抢答或是计数到时蜂鸣器开始报警,计数停止信号stop;状态输出信号alm;计数脉冲clk。
(四).译码模块在这个模块中主要实现抢答过程中将BCD码转换成7段的计时功能。
^(五).分频模块在这个模块中主要实现抢答过程中所需的时钟信号。
(六).计分模块在计分电路的设计中,按照一般的设计原则,按一定数进制进行加减。
EDA课程设计-竞赛抢答器的设计(安农经)
EDA课程设计报告课程名称:EDA技术与VHDL课程设计题目:智力抢答器的设计学生姓名:学号:专业年纪:12级电气工程指导老师:龙凤兰目录第1章抢答器····································1.1 抢答器的简单介绍·····························1.2 抢答器设计目的·······························第2章总体设计及思路·····························2.1 抢答器的设计要求·····························2.2 抢答器的设计方案······························第3章电路设计模块·······························3.1 三个模块·····································3.2 抢答鉴别模块的设计与实现·····················3.3 抢答计分模块的设计与实现·····················3.4 抢答计时模块的设计与实现·····················3.5 智力抢答器的顶层文件·························第4章系统源程序·································4.1 QDJB源程序··································4.2 JFQ源程序····································4.3 JSQ源程序····································第5章顶层原理设计图······························5.1 系统原理图··································5.2 实验步骤······································第6章课程总结···································第1章抢答器1.1 抢答器的简单介绍竞赛、文体娱乐活动中,能准确、公正、直观的判断出抢答者的机器。
EDA课程设计报告智力竞赛抢答器
智力竞赛抢答器[摘要]:本课程设计分为主体电路和扩展电路两部分共同实现抢答器的锁存、显示与报警功能。
在本次设计中,系统开发平台Max+plusⅡ,硬件描述语言是VHDL 。
竞赛者可以分为8 组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。
当第一个人按下按键后,则在显示器上显示该组的号码,对应的灯亮,同时电路将其他各组按键封锁,使其不起作用。
若抢答时间内无人抢答,则报警灯亮。
回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。
并且依据设计方案和设计平台完成了程序编写和程序调试,通过运行程序及时序波形的仿真有效验证了设计的正确性,初步实现了设计目标。
[关键词]:锁存显示抢答器 Max+plusⅡQuiz Responder[abstract]:This course design is divided into two main circuit and expansion circuit realized partly joint inverter latch responder , display and alarm function . In this design , system developing platform for Max+plusⅡ, hardware description language is VHDL .Competitors may be divided into eight groups , vies to answer first when each to the host puts forward the problems in the shortest possible time to make judgments and press the buttons vies to answer the question .When the first man press buttons , then on screen display supervisor number , the corresponding lights , and other groups circuit will buttons blockade , make it doesn’t work . If responder time no contest , the alarm light . Answers questions , by a host will restore all keys and start again next contest . And according to the design scheme and design platform completed programming and program test , through to run the program in time sequence waveform simulation verified effectively the correctness of design and then realized the design goal .[Keywords]:latch display Scare answering manometers Max+plusⅡ目录1 绪论 (1)2设计流程 (2)3设计 (3)3.1硬件设计 (3)3.1.1系统的设计平台概述 (3)3.1.2硬件平台Max-plusⅡ概述 (3)3.1.3抢答器系统设计要求 (4)3.2软件设计 (4)3.2.1子模块的设计思想和实现 (4)3.2.2鉴别模块的设计与实现 (5)3.2.3锁存反馈模块的设计与实现 (7)3.2.4编码模块的设计与实现 (7)3.2.5声音报警模块的设计与实现 (9)3.2.6组别译码显示模块的设计与实现 (10)4 调试与操作说明 (12)4.1抢答器的系统实现 (12)4.2结果分析 (13)5 课程设计总结与体会 (14)致谢 (15)参考文献 (16)附录 (17)1 绪论抢答器是在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答者的机器,通过抢答者的指示灯显示、数码显示和警示显示等手段指示出第一抢答者。
EDA课程设计—智力抢答器
燕山大学EDA课程设计报告书题目:智力竞赛抢答器姓名:班级:学号:成绩:(注:此文件应以同学学号为文件名)一、设计题目及要求设计题目:智力竞赛抢答器设计要求:1.10人参赛每人一个按钮,主持人一个按钮,按下就开始;2.每人一个发光二极管,抢中者灯亮;同时用两位数码管显示抢中的选手编号(01号~10号),无人抢答时显示00。
3.有人抢答时,喇叭响两秒钟。
4.答题时限为10秒钟,从有人抢答开始,用一位数码管倒计时间,0、9、8…1、0;倒计时到0的时候,蜂鸣器响两秒。
5. 设置加分和扣分按钮,答对一题按一次加分键加2分,答错按一次扣分键扣1分;用两位数码管显示得分情况,注意:显示其中一名选手的得分即可。
二、设计过程及内容(包括:○1总体设计的文字描述,即由哪几个部分构成的,各个部分的功能及如何实现方法;○2主要模块比较详尽的文字描述,并配以必要的图片加以说明,但图片数量无需太多)1、总体设计描述:智力抢答器一共分为5个模块,分别是:抢答器,加减法计数器,倒计时器(2s 倒计时计数器,10s倒计时计数器),秒脉冲,显示选手编号模块。
主持人按下按钮,比赛开始。
每当有选手抢答时,最先抢答的选手其对应的信号灯变亮,喇叭响两秒钟,数码管显示选手编号。
同时,计数器开始倒计时,十秒钟后,答题结束。
此时,喇叭响两秒钟。
主持人可以通过开关复位。
主持人根据选手回答情况计分,按下对应的按键,加减分数,用两位数码管将显示选手的当前得分。
(只显示一名选手的得分情况)总设计图:图1图2总图分为两部分:图1为抢答、显示、延时部分,图2为计分部分总仿真图:注:aaa与111是选手号的十位与个位,j{8-5}和j{4-1}是计分的十位与个位。
2、分部模块设计描述:抢答器:主持人输入高电平时,抢答开始,任一选手输入高电平时,其对应的信号灯发亮并在数码管显示编号。
其他选手失去抢答资格。
抢答器仿真图:倒计时计数器:选手抢答成功,2s倒计时倒计2s,此时喇叭响2s,从选手信号灯亮开始倒计时,十秒后,即接收十个脉冲信号之后,发一个脉冲给2s倒计时计数器,同时喇叭响2s。
EDA课程设计抢答器(可编辑修改word版)
内容摘要抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。
当第一个人按下按键后,则在显示器上显示该组的号码,对应的灯亮,同时电路将其他各组按键封锁,使其不起作用。
若抢答时间内无人抢答,则报警灯亮。
回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。
因此要完成抢答器的逻辑功能,该电路应包括抢答器鉴别模块、抢答器计数模块、报警模块、译码模块、分频模块。
关键词:抢答鉴别封锁计数报警AbstractResponder is the answer for the quiz participants to answer in the design when a priority decision circuit, and the race can be divided into several groups, answer in each group on the host issues raised in the shortest possible time to make judgments , and press the answer in answer key. After pressing the button when the first person, then the display shows the number of the group, the corresponding lights, while other groups will be key circuit block, it does not work. If the answer in time, no answer in, the alarm lights. Answering questions, all the keys from the host to restore and re-start the next round of the Responder. So to complete the answering device logic functions, the circuit should include Responder identification module, Responder counting module, alarm module, decoding module, frequency module.KEY: Responder Identification Blockade Count Alarm一、设计要求1.抢答器同时供 4 名选手或 4 个代表队比赛,分别用 4 个按钮 S0~ S3 表示。
EDA课程设计--四人智力竞赛计数抢答器
显示程序需要实现倒计时功能,倒 计时结束后,抢答器停止工作,并 显示得分。
声音报警程序
功能:当抢答器检测到有人抢答时,发出声音报警 设计思路:使用声音播放模块,当检测到有人抢答时,播放报警声音 实现方法:使用Python的pygame库,实现声音播放功能 注意事项:确保声音报警声音足够响亮,能够引起注意,同时避免声音过大导致干扰其他设备
兼容性测试:验证计数抢答器 在不同硬件和软件环境下的兼
容性
用户体验测试:评估用户界面 和操作流程的友好性和易用性
测试结果分析
测试环境:实 验室环境
测试设备:四 人智力竞赛计
数抢答器
测试方法:手 动测试和自动
测试
测试结果:抢 答器功能正常, 计数准确,响
应速度快
改进与优化
硬件优化方案
采用模块化设计,提高系统的稳定性和可维护性 优化电路布局,减少电磁干扰和信号损失 选用低功耗、高可靠性的元器件,降低系统功耗和故障率 增加散热措施,提高系统的散热效率和稳定性
软件调试
调试工具:使用调试器进行代 码调试
调试方法:单步调试、断点调 试、条件调试等
调试技巧:观察变量值、查看 堆栈信息、分析错误日志等
调试目标:发现并修复软件中 的错误和漏洞,提高软件稳定 性和性能。
整体测试
性能测试:测试计数抢答器 的响应速度和稳定性
功能测试:验证计数抢答器 的基本功能是否正常
的编号。
如果有多个参赛者同时按下按 钮,抢答器会显示错误信息,
重新开始计时。
抢答器的应用场景
学校课堂:用于课堂问答、知识竞 赛等活动
综艺节目:用于电视节目、网络直 播等活动
添加标题
添加标题
添加标题
EDA课程设计--智能竞赛抢答器
唐山学院《EDA技术》课程设计题目系 (部)班级姓名学号指导教师15 年 7 月 5 日至 7 月 10 日共 1 周2015年 7 月 9 日《EDA技术》课程设计任务书目录1 引言 (1)2 VHDL介绍 (2)3 应用软件Quartus II (3)4智力竞赛抢答器设计 (4)4.1设计的目的 (4)4.2设计的基本内容 (4)5总体设计思路及分析 (5)5.1功能分析 (5)5.2 整体设计思想 (5)5.3分频模块设计 (6)5.4复位模块设计 (6)5.5抢答模块设计 (7)5.6倒计时模块设计 (8)5.7硬件下载驱动 (11)6心得体会 (12)参考文献 (13)附录一 (14)附录二 (20)1 引言EDA技术又称电子设计自动化,它是为解决自动控制系统设计而提出的,从70年代经历了计算机辅助设计(CAD),计算机辅助工程(CAE),电子系统设计自动化(ESDA)3个阶段。
在当今时代,现代电子产品几乎渗透了社会的各个领域,EDA技术是电子设计的发展趋势,EDA工具从数字系统设计的单一领域开始,应用范围已涉及模拟、微波等多个领域,可实现各个领域电子系统设计的测试、设计仿真和布局布线等。
设计者只要完成对电子系统的功能描述,就可利用计算机和EDA工具,进行设计处理,最终得到设计结果。
随着大规模集成电路技术和计算机技术的不断发展,即便是在普通的电子产品的开发方面,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性价比大幅度提高。
不言而喻,EDA技术将迅速成为电子设计领域中的极其重要的组成部分。
从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用广泛、工具多样、软件功能强大的一种技术。
在信息通信领域,要优先发展高速宽带信息网、深亚微米集成电路、新型元器件、计算机及软件技术、第三代移动通信技术、信息管理、信息安全技术,积极开拓以数字技术、网络技术为基础的新一代信息产品,发展新兴产业,培育新的经济增长点。
EDA数字式竞赛抢答器
EDA设计数字式竞赛抢答器设计要求:设计一个可容纳6组(或4组)参赛的数字式抢答器,每组设一个按钮,供抢答使用。
抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
设置一个主持人“复位”按钮。
主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出2~3秒的音响。
设置一个计分电路,每组开始预置100分,由主持人记分,答对一次加10分,答错一次减10分library ieee; --qingda modeuse ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qda isport( clk1,reset_l:in std_logic;a,b,c,d:in std_logic;SA,SB,SC,SD:out std_logic;led_st:out std_logic_vector(3 downto 0));end entity qda;architecture one of qda issignal tmp:std_logic;beginprocess(a,b,c,d,reset_l)beginif reset_l='0' thenSA<='0';SB<='0';SC<='0';SD<='0';tmp<='1';elsif clk1'event and clk1='1' thenif tmp='1' thenif ( a='0' and b='1'and c='1'and d='1') then SA<='1';SB<='0';SC<='0';SD<='0';led_st<="0001";tmp<='0';elsif (a='1'and b='0'and c='1'and d='1') then SA<='0';SB<='1';SC<='0';SD<='0';led_st<="0010";tmp<='0';elsif (a='1'and b='1'and c='0'and d='1') then SA<='1';SB<='1';SC<='0';SD<='0';led_st<="0100";tmp<='0';elsif (a='1'and b='1'and c='1'and d='0') then SA<='0';SB<='0';SC<='1';SD<='0';led_st<="1000";tmp<='0';else tmp<='1';led_st<="0000";end if;end if;end if;end process;end architecture one;library ieee; --qiang da success ringuse ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alarm isport(clk:in std_logic;a,b,c,d:in std_logic;fout:out std_logic);end;architecture bhv of alarm issignal clk1:std_logic;signal full:std_logic;signal tone:std_logic_vector(7 downto 0);signal tmp:std_logic;beginp0:process(a,b,c,d)beginif ( a='0' and b='1'and c='1'and d='1') then tone<="11011010";elsif ( a='1' and b='0'and c='1'and d='1') then tone<="11011000";elsif ( a='1' and b='1'and c='0'and d='1') then tone<="11010011";elsif ( a='1' and b='1'and c='1'and d='0') then tone<="11001101";else tone<="11111111";end if;end process;p1:process(clk)variable cnt10:std_logic_vector(8 downto 0);beginif clk'event and clk='1' thenif cnt10="111111111" thencnt10:="000000000";clk1<='1';else cnt10:=cnt10+1;clk1<='0';end if;end if;end process;p2:process(clk1)variable cnt8:std_logic_vector(7 downto 0);beginif clk1'event and clk1='1' thenif cnt8="11111111" then cnt8:=tone;full<='1';else cnt8:=cnt8+1;full<='0';end if;end if;end process;p3:process(full)variable cnt:std_logic;beginif full'event and full='1' thencnt:=not cnt;if cnt='1' then fout<='1';else fout<='0';end if;end if;end process;end;library ieee; --led yimause ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity yima_l isport(AA,BB,CC,DD:in std_logic;qout:out std_logic_vector(7 downto 0));end entity yima_l;architecture one of yima_l isbeginprocess(AA,BB,CC,DD)beginif(AA='0' and BB='0' and CC='0'and DD='0') then qout<="00000000"; elsif(AA='1' and BB='0' and CC='0'and DD='0') then qout<="00000001"; elsif (AA='0' and BB='1' and CC='0'and DD='0') then qout<="00000010"; elsif (AA='1' and BB='1' and CC='0'and DD='0') then qout<="00000011"; elsif (AA='0' and BB='0' and CC='1'and DD='0') then qout<="00000100"; end if;end process;end architecture one;library ieee; --jiafen,jianfenuse ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jifen isport( k0,k1,reset_s,clks,clkt:in std_logic;in_st2:in std_logic_vector(3 downto 0);segq:out std_logic_vector(3 downto 0);dig:out std_logic_vector(7 downto 0));end entity jifen;architecture one of jifen issignal cnt:integer range 0 to 9;signal pit11,pit12,pit21,pit22:std_logic_vector(3 downto 0); signal pit31,pit32,pit41,pit42:std_logic_vector(3 downto 0); beginp0:process(k0,k1,clkt,in_st2,reset_s)variable a2,a1: std_logic_vector(3 downto 0);variable b2,b1: std_logic_vector(3 downto 0);variable c2,c1: std_logic_vector(3 downto 0);variable d2,d1: std_logic_vector(3 downto 0);variable up1,up2,down1,down2:std_logic;beginif reset_s='0' thena2:="0001"; a1:="0000";b2:="0001"; b1:="0000";c2:="0001"; c1:="0000";d2:="0001"; d1:="0000";up1:='1';up2:='1';down1:='1';down2:='1';elsif clkt'event and clkt='1' thenif (up1='0' and up2='1') thenif in_st2="0001" thenif a1="1001" then a1:="0000";if a2="1001" then a2:="0000";else a2:=a2+1;end if;else a1:=a1+1;end if;elsif in_st2="0010" thenif b1="1001" then b1:="0000";if b2="1001" then b2:="0000";else b2:=b2+1;end if;else b1:=b1+1;end if;elsif in_st2="0100" thenif c1="1001" then c1:="0000";if c2="1001" then c2:="0000";else c2:=c2+1;end if;else c1:=c1+1;end if;elsif in_st2="1000" thenif d1="1001" then d1:="0000";if d2="1001" then d2:="0000";else d2:=d2+1;end if;else d1:=d1+1;end if;end if;elsif(down1='0' and down2='1') thenif in_st2="0001" thenif a1="0000" then a1:="1001";if a2="0000" then a2:="1001";else a2:=a2-1;end if;else a1:=a1-1;end if;elsif in_st2="0010" thenif b1="0000" then b1:="1001";if b2="0000" then b2:="1001";else b2:=b2-1;end if;else b1:=b1-1;end if;elsif in_st2="0100" thenif c1="0000" then c1:="1001";if c2="0000" then c2:="1001";else c2:=c2-1;end if;else c1:=c1-1;end if;elsif in_st2="1000" thenif d1="0000" then d1:="1001";if d2="0000" then d2:="1001";else d2:=d2-1;end if;else d1:=d1-1;end if;end if;end if;up2 := up1;up1 := k0;down2 := down1;down1 := k1;end if;pit11<=a1;pit12<=a2;pit21<=b1;pit22<=b2;pit31<=c1;pit32<=c2;pit41<=d1;pit42<=d2;end process;p1:process(clks,cnt)beginif clks'event and clks='1' thenif cnt=8 then cnt<=0;else cnt<=cnt+1;end if;if cnt=0 then segq<=pit11;dig<="11111110";elsif cnt=1 then segq<=pit12;dig<="11111101";elsif cnt=2 then segq<=pit21;dig<="11111011";elsif cnt=3 then segq<=pit22;dig<="11110111";elsif cnt=4 then segq<=pit31;dig<="11101111";elsif cnt=5 then segq<=pit32;dig<="11011111";elsif cnt=6 then segq<=pit41;dig<="10111111";elsif cnt=7 then segq<=pit42;dig<="01111111";end if;end if;end process;end architecture one;library ieee; --yimaqiuse ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity yima_s isport(inset:in std_logic_vector(3 downto 0);seg:out std_logic_vector(7 downto 0));end entity yima_s;architecture one of yima_s isbeginprocess(inset)begincase inset iswhen "0000" => seg<="00111111";when "0001" => seg<="00000110";when "0010" => seg<="01011011";when "0011" => seg<="01001111";when "0100" => seg<="01100110";when "0101" => seg<="01101101";when "0110" => seg<="01111101";when "0111" => seg<="00000111";when "1000" => seg<="01111111";when "1001" => seg<="01101111";when others => seg<=null;end case;end process;end;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qdq isport( sw0,sw1,sw2,sw3:in std_logic;sw4,sw5,sw6,sw7:in std_logic;clock1,clock2,clocks:in std_logic;out_led:out std_logic_vector(7 downto 0);wxuan,dxuan:out std_logic_vector(7 downto 0);warns:out std_logic);end entity qdq;architecture one of qdq iscomponent qdaport( clk1,reset_l:in std_logic;a,b,c,d:in std_logic;SA,SB,SC,SD:out std_logic;led_st:out std_logic_vector(3 downto 0) );end component;component alarmport(clk:in std_logic;a,b,c,d:in std_logic;fout:out std_logic);end component;component yima_lport(AA,BB,CC,DD:in std_logic;qout:out std_logic_vector(7 downto 0));end component;component jifen isport( k0,k1,reset_s,clks,clkt:in std_logic;in_st2:in std_logic_vector(3 downto 0);segq:out std_logic_vector(3 downto 0);dig:out std_logic_vector(7 downto 0));end component;component yima_sport(inset:in std_logic_vector(3 downto 0);seg:out std_logic_vector(7 downto 0));end component;signal e,g:std_logic_vector(3 downto 0);signal h,j,k,l,m,n:std_logic;beginu1:qda PORT MAP(clk1=>clock1,reset_l=>sw4,a=>sw0,b=>sw1,c=>sw2,d=>sw3,led_st=>e,SA=>h,SB=>j,SC=>k,S D=>l);u2:alarm PORT MAP(clk=>clock2,fout=>warns,a=>sw0,b=>sw1,c=>sw2,d=>sw3);u3:yima_l PORT MAP(AA=>h,BB=>j,CC=>k,DD=>l,qout=>out_led);u4:jifen PORT MAP(clks=>clocks,clkt=>clock2,k0=>sw6,k1=>sw7,reset_s=>sw5,in_st2=>e,segq=>g,dig=>wxuan);u5:yima_s PORT MAP(inset=>g,seg=>dxuan);end architecture one;。
EDA课设智力竞赛抢答器设计
1 引言无论是在学校、工厂、军队还是益智性电视节目, 都会举办各种各样的智力竞赛, 都会用到抢答器。
目前市场上已有各种各样的智力竞赛抢答器, 但绝大多数是早期设计的, 以模拟电路、数字电路或者模拟电路与数字电路相结合的产品。
这部分抢答器已相当成熟, 但功能越多的电路相对来说就越复杂, 且成本偏高, 故障高, 显示方式简单(有的甚至没有显示电路), 无法判断提前抢按按钮的行为, 不便于电路升级换代。
本设计就是基于VHDL设计的一个智力竞赛抢答器尽量使竞赛真正达到公正、公平、公开。
基于EDA技术设计的电子抢答器,以其价格便宜、安全可靠、使用方便而受到了人们的普遍欢迎。
本文以现场可编程逻辑器件(FPGA)为设计载体,以硬件描述语言VHDL为主要表达方式,以QuartusⅡ开发软件设计的电子抢答器,具有抢答鉴别与锁存功能以及10秒答题限时功能。
EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。
现在对EDA的概念或事等各个领域,都有EDA的应用。
目前EDA 技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。
EDA 设计可分为系统级、电路级和物理实现级。
1.1 设计的目的本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,了解并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。
EDA设计智力抢答器设计
用EDA设计智力抢答器设计一、用EDA设计智力抢答器设计,设计要求:1设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮。
2电路具有第一抢答信号鉴别和锁存功能。
3设置记分电路。
二、原理分析:将电路分为三个主要模块:抢答鉴别模块QDJB;计时模块JSQ;记分模块JFQ;译码器显示模块YMQ;元件例化QDQ三、代码:方法1用静态显示,使用4个数码管,两个显示计时,一个显示组别,一个显示分数1抢答鉴别模块QDJBLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY QDJB ISPORT(CLR: IN STD_LOGIC;A, B, C, D: IN STD_LOGIC; --4个组A1,B1,C1,D1: OUT STD_LOGIC;STATES: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY QDJB;ARCHITECTURE ART OF QDJB ISsignal a_1,b_1,c_1,d_1:std_logic;BEGINPROCESS(CLR,A,B,C,D) ISBEGINIF CLR='1' THEN STATES<="0000";a_1<='0';b_1<='0';c_1<='0';d_1<='0';--清零elsif a_1='1' or b_1='1' or c_1='1' or d_1='1' then null;--锁存,当有一组选中时其他组再抢答没作用elsif a='1' then a_1<='1';states<="0001";elsif b='1' then b_1<='1';states<="0010";elsif c='1' then c_1<='1';states<="0011";elsif d='1' then d_1<='1';states<="0100";end if;a1<=a_1;b1<=b_1;c1<=c_1;d1<=d_1;END PROCESS;END ARCHITECTURE ART;2计时模块JSQLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JSQ ISPORT(CLR,LDN,EN,CLK: IN STD_LOGIC;TA,TB:IN STD_LOGIC_vector(3 downto 0);QA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --ge weiQB:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --shi weiEND ENTITY JSQ;ARCHITECTURE ART OF JSQ ISBEGINPROCESS(CLK) ISVARIABLE TMPA:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE TMPB:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF CLR='1' THEN TMPA:="0000"; TMPB:="0110"; --清零,倒计时60秒ELSIF CLK'EVENT AND CLK='1' THENIF LDN='1' THEN TMPA:=tA; TMPB:=tB; --置数控制,如果不想要60可以从TA,TB输入倒计时秒数ELSIF EN='1' THEN--计时开始IF TMPA="0000" THEN--遇到9则自动变为0,否则减一TMPA:="1001";IF TMPB="0000" THEN TMPB:="0110";ELSE TMPB:=TMPB-1;END IF;ELSE TMPA:=TMPA-1;END IF;END IF;END IF;QA<=TMPA; QB<=TMPB;END PROCESS;END ARCHITECTURE ART;3记分模块JFQLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JFQ ISPORT(RST: IN STD_LOGIC;ADD: IN STD_LOGIC;CHOS: IN STD_LOGIC_VECTOR(3 DOWNTO 0);out1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY JFQ ;ARCHITECTURE ART OF JFQ ISBEGINPROCESS(RST,ADD,CHOS) ISVARIABLE POINTS_A0: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_B0: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_C0: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_D0: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINIF (ADD'EVENT AND ADD='1') THENIF RST='1' THENPOINTS_A0:="0000";POINTS_B0:="0000";POINTS_C0:="0000";POINTS_D0:="0000";ELSIF CHOS="0001" THENIF POINTS_A0="1001" THENPOINTS_A0:="0000";ELSEPOINTS_A0:=POINTS_A0+1;END IF;ELSIF CHOS="0010" THENIF POINTS_B0="1001" THENPOINTS_B0:="0000";ELSEPOINTS_B0:=POINTS_B0+1;END IF;ELSIF CHOS="0011" THENIF POINTS_C0="1001" THENPOINTS_C0:="0000";ELSEPOINTS_C0:=POINTS_C0+1;END IF;ELSIF CHOS="0100" THENIF POINTS_D0="1001" THENPOINTS_D0:="0000";ELSEPOINTS_D0:=POINTS_D0+1;END IF;END IF;END IF;if chos="0001" then out1<=POINTS_a0;elsif chos="0010" then out1<=POINTS_b0;elsif chos="0011" then out1<=POINTS_c0;elsif chos="0100" then out1<=POINTS_D0;elsif chos="0000" then out1<="0000";end if;END PROCESS;END ARCHITECTURE ART;4译码器显示模块YMQLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY YMQ ISPORT(AIN4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT7: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END YMQ;ARCHITECTURE ART OF YMQ ISBEGINPROCESS(AIN4)BEGINCASE AIN4 ISWHEN "0000"=>DOUT7<="1111110"; --0WHEN "0001"=>DOUT7<="0110000"; --1WHEN "0010"=>DOUT7<="1101101"; --2WHEN "0011"=>DOUT7<="1111001"; --3WHEN "0100"=>DOUT7<="0110011"; --4WHEN "0101"=>DOUT7<="1011011"; --5WHEN "0110"=>DOUT7<="1011111"; --6WHEN "0111"=>DOUT7<="1110000"; --7WHEN "1000"=>DOUT7<="1111111"; --8WHEN "1001"=>DOUT7<="1111011"; --9WHEN OTHERS=>DOUT7<="0000000";END CASE;END PROCESS;END ARCHITECTURE ART;5元件例化library ieee;use ieee.std_logic_1164.all;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity qdq isport(qd :in std_logic_vector(3 downto 0);clk,en,ldn,add,rst,clrqd,clrsj :in std_logic;ta,tb : in std_logic_vector(3 downto 0);qdo :out std_logic_vector(3 downto 0);out1 :out std_logic_vector(3 downto 0);out2 :out std_logic_vector(3 downto 0);out4 :out std_logic_vector(3 downto 0);out3 :out std_logic_vector(3 downto 0));end;architecture aa of qdq iscomponent qdjb isPORT(CLR:IN STD_LOGIC;A, B, C, D: IN STD_LOGIC;A1,B1,C1,D1: OUT STD_LOGIC;STATES: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END component QDJB;component jsq isPORT(CLR,LDN,EN,CLK: IN STD_LOGIC;TA,TB:IN STD_LOGIC_vector(3 downto 0);QA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);QB:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END component JSQ;component ymq isPORT(AIN4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT7: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END component YMQ;component jfq isPORT(RST: IN STD_LOGIC;ADD: IN STD_LOGIC;CHOS: IN STD_LOGIC_VECTOR(3 DOWNTO 0);out1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END component JFQ ;signal tmp1,tmp2,tmp3,tmp4 : std_logic_vector(3 downto 0);beginu1: qdjb port map(clr=>clrqd,a=>qd(0),b=>qd(1),c=>qd(2),d=>qd(3),a1=>qdo(0),b1=>qdo(1),c1=>qdo(2),d1=>qdo(3),STATES=>tmp1);u2: jfq port map (rst=>rst,add=>add,chos=>tmp1,out1=>out2);u3: jsq port map(clr=>clrsj,ldn=>ldn,en=>en,clk=>clk,ta=>ta,tb=>tb,qa=>out3,qb=>out4);out1<=tmp1;end;方法2用动态显示library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jfq isport(rst:in std_logic;add:in std_logic;chos:in std_logic_vector(3 downto 0);PP2,PP1,PP0:OUT std_logic_vector(3 downto 0));end entity jfq;architecture art of jfq isSIGNAL aa2,aa1,aa0,bb2,bb1,bb0: std_logic_vector(3 downto 0);SIGNAL cc2,cc1,cc0,dd2,dd1,dd0: std_logic_vector(3 downto 0);beginprocess(rst,add,chos) isvariable points_a2,points_a1:std_logic_vector(3 downto 0);variable points_b2,points_b1:std_logic_vector(3 downto 0);variable points_c2,points_c1:std_logic_vector(3 downto 0);variable points_d2,points_d1:std_logic_vector(3 downto 0);beginIF(ADD'EVENT AND ADD='1') THENIF RST='1'THENPOINTS_A2:="0001";POINTS_A1:="0000"; POINTS_B2:="0001";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+'1';END IF;ELSEPOINTS_A1:=POINTS_A1+'1';AA2<=points_A2;AA1<= points_A1;AA0<="0000"; PP2<=AA2;PP1<=AA1;PP0<=AA0;END IF;ELSIF CHOS="0010"THENIF POINTS_B1="1001"THENPOINTS_B1:="0000";IF POINTS_B2="1001"THENPOINTS_B2:="0000";ELSEPOINTS_B2:=POINTS_B2+'1';END IF;ELSEPOINTS_B1:=POINTS_B1+'1';BB2<= points_B2;BB1<= points_B1;BB0<="0000"; PP2<=BB2;PP1<=BB1;PP0<=BB0;END IF;ELSIF CHOS="0100"THENIF POINTS_C1="1001"THENPOINTS_C1:="0000";IF POINTS_C2="1001"THENPOINTS_C2:="0000";ELSEPOINTS_C2:=POINTS_C2+'1';CC2<= points_C2;CC1<= points_C1;CC0<="0000"; PP2<=CC2;PP1<=CC1;PP0<=CC0;END IF;ELSEPOINTS_C1:=POINTS_C1+'1';END IF;Elsif chos="1000" thenIf points_D1="1001" thenPoints_D1:="0000";If points_D2="1001" thenPoints_D2:="0000";ElsePoints_D2:=points_D2+'1';End if;ElsePoints_D1:=points_D1+'1';DD2<= points_D2;DD1<= points_D1;DD0<="0000"; PP2<=DD2;PP1<=DD1;PP0<=DD0;End if;End if;End if;End process;End architecture art;Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity jsq isPort(clr,ldn,en,clk:in std_logic;TA,Tb:in std_logic;Qa:out std_logic_vector(3 downto 0);Qb:out std_logic_vector(3 downto 0));End entity jsq;Architecture art of jsq isSignal da: std_logic_vector(3 downto 0);Signal db: std_logic_vector(3 downto 0); BeginProcess(ta,tb,clr) isBeginIf clr='1' thenDa<="0000";db<="0000";elseif ta='1' thenda<=da+'1';end if;if tb='1' thendb<=db+'1';end if;end if;end process;process(clk) isvariable tmpa:std_logic_vector(3 downto 0); variable tmpb:std_logic_vector(3 downto 0); beginif clr='1' then tmpa:="0000";tmpa:="0110"; elsif clk'event and clk='1' thenif ldn='1' then tmpa:=da;tmpb:=db;elsif en='1' thenif tmpa="0000" thentmpa:="1001";if tmpb="0000" then tmpb:="0110"; else tmpb:=tmpb-1;end if;else tmpa:=tmpa-1;end if;end if;end if;qa<=tmpa;qb<=tmpb;end process;end architecture art;library ieee;use ieee.std_logic_1164.all;entity qdjb isport(clr:in std_logic;A,B,C,D:in std_logic;A1,B1,C1,D1:out std_logic;states:out std_logic_vector(3 downto 0)); end entity qdjb;architecture art of qdjb isconstant w1:std_logic_vector:="0001";constant w2:std_logic_vector:="0010";constant w3:std_logic_vector:="0100";constant w4:std_logic_vector:="1000";beginprocess(clr,A,B,C,D) isbeginif clr='1' then states<="0000";elsif (A='1' and B='0' and C='0' and D='0') then A1<='1';B1<='0';C1<='0';D1<='0';states<=w1; elsif (A='0' and B='1' and C='0' and D='0') then A1<='0';B1<='1';C1<='0';D1<='0';states<=w2; elsif (A='0' and B='0' and C='1' and D='0') then A1<='0';B1<='0';C1<='1';D1<='0';states<=w3; elsif (A='0' and B='0' and C='0' and D='1') then A1<='0';B1<='0';C1<='0';D1<='1';states<=w4; end if;end process;end architecture art;library ieee;use ieee.std_logic_1164.all;USE IEEE.STD_LOGIC_UNSIGNED.ALL; entity qdq isport(qd :in std_logic_vector(3 downto 0);ck,clk,en,ldn,add,rst,clr:in std_logic;TA,TB:in std_logic;qdo :out std_logic_vector(3 downto 0);sel:out std_logic_vector(5 downto 0);sm:out std_logic_vector(6 downto 0));end;architecture aa of qdq iscomponent qdjb isPORT(CLR: IN STD_LOGIC;A, B, C, D: IN STD_LOGIC;A1,B1,C1,D1: OUT STD_LOGIC;STATES: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END component QDJB;component jsq isPORT(CLR,LDN,EN,CLK: IN STD_LOGIC;TA,TB:IN STD_LOGIC;QA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);QB :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END component JSQ;component jfq isPORT(RST: IN STD_LOGIC;ADD: IN STD_LOGIC;CHOS: IN STD_LOGIC_VECTOR(3 DOWNTO 0);pp2,pp1,pp0:inOUT STD_LOGIC_VECTOR(3 DOWNTO 0));END component JFQ ;signal tmp1,tmp2,tmp3: std_logic_vector(3 downto 0); signal pp22,pp11,pp00: std_logic_vector(3 downto 0); signal tmp: integer range 0 to 5;signal q_s:std_logic_vector(3 downto 0);beginu1:qdjb port map(clr,qd(0),qd(1),qd(2),qd(3),qdo(0),qdo(1),qdo(2),qdo(3),tmp1);u2: jfq port map (rst,add,tmp1,pp22,pp11,pp00);u3: jsq port map(clr,ldn,en,clk,ta,tb,tmp2,tmp3); process(ck) isbeginif (ck'event and ck='1') thentmp<=tmp+1;end if;end process;process(tmp) isbeginif tmp=0 then q_s<=tmp1;sel<="000001";elsif tmp=1 then q_s<=tmp2;sel<="000010";elsif tmp=2 then q_s<=tmp3;sel<="000100";elsif tmp=3 then q_s<=pp00;sel<="001000";elsif tmp=4 then q_s<=pp11;sel<="010000";else q_s<=pp22;sel<="100000";end if;end process;process(q_s) isbegincase q_s iswhen"0000"=>sm<="0111111";when"0001"=>sm<="0000110";when"0010"=>sm<="1011011";when"0011"=>sm<="1001111";when"0100"=>sm<="1100110";when"0101"=>sm<="1101101";when"0110"=>sm<="1111101";when"0111"=>sm<= "0000111"; when"1000"=>sm<="1111111"; when"1001"=>sm<="1101111";when others=>sm<="0000000";end case;end process;end;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
燕山大学EDA课程设计报告书
题目:智力竞赛抢答器
姓名:***
班级:14级通信工程5班
学号:************
成绩:
一、设计题目及要求:
题目:智力竞赛抢答器
要求:
1 .五人参赛每人一个按钮,主持人一个按钮,按下就开始;
2 .每人一个发光二极管,抢中者灯亮;
3 .有人抢答时,喇叭响两秒钟;
4 .答题时限为10秒钟,从有人抢答开始,用数码管倒计时间,0,9,8…1,0;倒计时到0的时候,喇叭发出两秒声响。
二、设计过程及内容:
设计方案:主持人控制总开关,主持人置高电平后,系统进入准备工作。
有人抢答时,相应的二极管发光,同时数码管开始倒计时,且喇叭响两秒钟。
当倒计时再次到0的时候,喇叭再响2秒钟。
我设计的方案由五个高低电平控制相应的发光二极管,第六个用于主持人复位。
由二极管控制数码管和其中一个喇叭响,再由数码管控制另一喇叭响。
因此把整个课题分成四个模块:抢答器、倒计时器、计时器、秒脉冲生成器。
模块一:抢答器
s为置零端,主持人控制,i1-i5由每位选手控制。
o1-o5为发光二极管,主持人置低电平后,o1-o5都被置零。
当主持人置为高电平时,抢答开始,成功者对应的二极管发光,通过与门将cp信号封锁,并输入到DFF 中,则其他选手在按键时,输出不会有影响,则实现了一人抢答后,其他人不能再做答。
若重新开始则主持人再按s清零即可。
此模块的仿真波形如下:
仿真说明:
当i6为1时,即主持人按键以后,i5最先抢答成功,显示o5是1,使其对应的二极管发光,然后主持人清零,o5变成零,可以再次抢答。
模块二:十秒倒计时器
此十秒钟倒计时器是由74168组成的十进制减法计数器,它只保留预制置数端,CP信号端,计数输出端,其余的都置为0。
Ldn是置零端,当它等于1的时候,74168有效,倒计时开始。
当输出0、9、……、1时,D触发器输出结果总是1,不影响CP信号。
当输出从1到0时,D触发器到上升沿,输出结果为1,则CP信号被封锁。
此时倒计时器保持在0不
变。
若要重新开始,则把Ldn置0即可。
此模块的仿真波形如下:
由图可见,Ldn为1的时候开始倒计时,输出结果0,9,8…0。
最后保持0不变,符合题目要求。
模块三:2秒计时器
如图将74160接成2进制计数器,输出端和CP用与门连接,当clrn 输入0时o1—o4输出0;clrn输入1,CP脉冲通过,计数器开始计数。
而计到2时,输出端通过与门使CP信号封锁,使计数器保持在二不变。
此模块的仿真波形如下:
由图可见,当clrn为1的时候,开始计时。
0、1、2、到2停止。
当
clrn被置零后,输出也被置零,则可以重新计时。
模块四:秒脉冲生成器
三个74160十进制计数器组成一个500进制的计数器,一个500HZ的脉冲分频成1S的脉冲给两秒计时器和十秒的倒计时器提供秒脉冲,当计数到500时三个计数器的ldn同时置零,重新开始计数。
此模块的仿真波形如下:
由图可见,一个500HZ的脉冲通过分频器被分频成1S的脉冲,给两
秒计时器和十秒的倒计时器提供秒脉冲。
2 .总电路说明:
仿真波形图如下:
仿真图形说明:当S为1的时候,即主持人按键以后,i5抢答成功,显示ou5是1,对应的二极管发光。
a、b、c、d、e、f、g数码管显示,倒计时开始。
Ou6为1,喇叭响2秒钟。
当倒计时结束时,ou7为1,喇叭再响2秒钟。
当S再被置0的时,输出被清零,可以重新开始。
三、设计结论
实现结果及改进方案:
软件仿真正确后,把它下载到可编程逻辑器件中去,通过硬件连接,仿真正确,说明此软件设计合理。
用按钮(需要加防抖动电路)和与门代替五个高低电平,会有助于实际应用。
心得体会
带着欣喜与疲倦,我们结束了两周的EDA课程设计,回想刚拿到题目时候的困惑与紧张,出现错误时的反复修改冥思苦想,设计电路正确可进
行模拟时不正常显示的不知所措,心急气愤……。
当最后看到自己的劳动成果与题目相符时,最终松了一口气的轻松喜悦!
这两个星期的EDA课程设计,不但使我熟悉了EDA课程设计的基本思想和基础知识,初步掌握了其应用软件Quartus II的使用,而且更为深入的体会了数字电路在现代高科技信息产业领域中的重要地位,通过简单的电路设计,提高了我得独立思考能力,通过连结实验箱增强了我的动手能力,并延伸了我在课堂上学到的知识。
此次课程设计让我认识到高新技术的快速发展和应用,让我看到了EDA技术功能的强大,也让我认识到掌握他们的重要性,同时也看到了自己的差距与不足,我知道只有今后自己努力学习,拓宽自己的知识面,才能更好的掌握这项技术,也才能适应社会的发展。
我很感谢学校能给我们这次进行EDA课程设计培训,培养我们独立思考,动手能力和创新思维的机会,同时向一直辅导和帮助我们的老师们表示感谢,谢谢你们的耐心指导。
我一定会更加努力学好这门课程。
EDA课程设计成绩单。