求助:8位抢答器的设计,要EDA方法的,不要纯数字电路方法的

2019-03-25 10:54发布

要EDA方法的,不要纯数字电路方法的,谁知道怎么弄,麻烦帮忙下 现在找工作,论文,选修课,什么都弄到一起,麻烦死了! 谢谢大家啊!!!!! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
wwwocean
2019-03-25 16:50
/ 课题十六 智力竞赛抢答计时器的设计 一、 课题说明 在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等多种手段指示出第一抢答者。同时,还可以设置计时、计分、犯规奖惩计录等多种功能。 二、 设计要求 1、设计一个4组参加的智力竞赛抢答计时器。每组设置一个抢答按钮供抢答者使用。 2、电路具有第一抢答信号的鉴别和锁存功能。在主持人将系统复位并发出抢答指令后,当有某一组参赛者首先按下抢答开关时,数码管显示相应组别并伴有声响。此时,电路应具备自锁功能,使别组的抢答开关不起作用。 3、电路具有回答问题时间控制功能。要求回答问题时间小于等于100s(显示为0~99),时间显示采用倒计时方式。当达到限定时间时,发出声响以示报警。 三、设计思路 根据设计要求可知,系统的输入信号有:各组的抢答按钮d1、d2、d3、d4,主持人按钮host,系统时钟信号clk,数码管的片选信号;系统的输出信号有:首先按下按钮的组别信号sel, 声音信号sound,倒计时显示信号q[6..0]。为实现设计要求,电路由抢答鉴别模块、锁存器模块、转换模块、倒计时模块、片选信号产生模块、3选1模块、显示译码模块和一些门电路组成。总体框图如图16-1所示。 四、设计文件 1、顶层原理图 智力竞赛抢答计时器的顶层原理图如图16-1所示 图16-1 智力抢答器的原理图 2、底层源程序 (1)抢答鉴别模块FENG的VHDL源程序 抢答鉴别模块FENG如图16-2所示,该模块在第一个选手按下按键后,输出高电平给锁存器,锁存当时的按键状态。 【例16-1】--feng.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FENG IS PORT(CP,CLR:IN STD_LOGIC; Q :OUT STD_LOGIC); END FENG; ARCHITECTURE FENG_ARC OF FENG IS 图16-2抢答鉴别 模块FENG BEGIN PROCESS(CP,CLR) BEGIN IF CLR='0'THEN Q<='0'; ELSIF CP'EVENT AND CP='0'THEN Q<='1'; END IF; END PROCESS; END FENG_ARC; (2)片选信号产生模块SEL的VHDL源程序 片选信号产生模块SEL如图16-3所示,该模块产生数码管片选信号。 【例16-2】--sel.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SEL IS PORT(CLK:IN STD_LOGIC; a :OUT INTEGER RANGE 0 TO 7); END SEL; ARCHITECTURE SEL_ARC OF SEL IS 图16-3 片选信号产生模块SEL BEGIN PROCESS(CLK) VARIABLE AA:INTEGER RANGE 0 TO 7; BEGIN IF CLK'EVENT AND CLK='1'THEN AA:=AA+1; END IF; A<=AA; END PROCESS; END SEL_ARC; (3)锁存器模块LOCKB的VHDL源程序 锁存器模块LOCKB如图16-4所示。该模块将第一个抢答的结果锁存,同时送出ALM信号,实现声音提示。 【例16-3】--lockb.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY LOCKB IS PORT(D1,D2,D3,D4:IN STD_LOGIC; CLK,CLR:IN STD_LOGIC; Q1,Q2,Q3,Q4,ALM:OUT STD_LOGIC); END LOCKB; ARCHITECTURE LOCK_ARC OF LOCKB IS BEGIN PROCESS(CLK) BEGIN IF CLR='0'THEN Q1<='0'; Q2<='0'; Q3<='0'; Q4<='0'; ALM<='0'; 图16-4 模块LOCKB ELSIF CLK'EVENT AND CLK='1'THEN Q1<=D1; Q2<=D2; Q3<=D3; Q4<=D4; ALM<='1'; END IF; END PROCESS; END LOCK_ARC; (4)转换模块CH41A的VHDL源程序 转换模块CH41A如图16-5所示,该模块将抢答结果转换为二进制数。 【例16-4】--ch41a..vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CH41A IS PORT(D1,D2,D3,D4:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END CH41A; ARCHITECTURE CH41_ARC OF CH41A IS 图16-5 转换模块CH41A BEGIN PROCESS(D1,D2,D3,D4) VARIABLE TMP:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN TMP:=D1&D2&D3&D4; CASE TMP IS WHEN "0111"=>Q<="0001"; WHEN "1011"=>Q<="0010"; WHEN "1101"=>Q<="0011"; WHEN "1110"=>Q<="0100"; WHEN OTHERS=>Q<="1111"; END CASE; END PROCESS; END CH41_ARC; (5)3选1模块CH31A的VHDL源程序 3选1模块CH31A如图16-6所示,该模块由SEL选择,输出抢答成功的号数,或倒计时。 【例16-5】--ch31a.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CH31A IS PORT(SEL:IN STD_LOGIC_VECTOR(2 DOWNTO 0); D1,D2,D3:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END CH31A; ARCHITECTURE CH31_ARC OF CH31A IS BEGIN PROCESS(SEL,D1,D2,D3) BEGIN CASE SEL IS WHEN "000"=>Q<=D1; WHEN "001"=>Q<=D2; WHEN "111"=>Q<=D3; WHEN OTHERS=>Q<="1111"; END CASE; END PROCESS; 图16-6 3选1 模块CH31A END CH31_ARC; (6)倒计时模块COUNT的VHDL源程序 倒计时模块COUNT如图16-7所示,该模块实现答题时间的倒计时,在计满100s后送出声音提示。 【例16-6】--count.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNT IS PORT(CLK,EN:IN STD_LOGIC; 图16-7 倒计时 模块COUNT H,L:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SOUND:OUT STD_LOGIC); END COUNT; ARCHITECTURE COUNT_ARC OF COUNT IS BEGIN PROCESS(CLK,EN) VARIABLE HH,LL:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF CLK'EVENT AND CLK='1'THEN IF EN='1'THEN IF LL=0 AND HH=0 THEN SOUND<='1'; ELSIF LL=0 THEN LL:="1001"; HH:=HH-1; ELSE LL:=LL-1; END IF; ELSE SOUND<='0'; HH:="1001"; LL:="1001"; END IF; END IF; H<=HH; L<=LL; END PROCESS; END COUNT_ARC; (7)显示译码模块DISP的VHDL源程序 显示译码模块DISP如图16-8所示,。 【例16-7】--disp.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DISP IS 图16-8 显示译码模块DISP PORT(D:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END DISP; ARCHITECTURE DISP_ARC OF DISP IS BEGIN PROCESS(D) BEGIN CASE D IS WHEN"0000"=>Q<="0111111"; WHEN"0001"=>Q<="0000110"; WHEN"0010"=>Q<="1011011"; WHEN"0011"=>Q<="1001111"; WHEN"0100"=>Q<="1100110"; WHEN"0101"=>Q<="1101101"; WHEN"0110"=>Q<="1111101"; WHEN"0111"=>Q<="0100111"; WHEN"1000"=>Q<="1111111"; WHEN"1001"=>Q<="1101111"; WHEN OTHERS=>Q<="0000000"; END CASE; END PROCESS; END DISP_ARC; 五、系统仿真 智力竞赛抢答计时器的时序仿真波形如图16-10所示。由图可见,d2首先抢答,当sel为111时, Q[6..0]=5B,ch31a的Q端为2,表示2号抢答成功,此后d4再按开关不起作用。 图16-9 智力竞赛抢答计时器的时序仿真图 六、引脚锁定 端口分类 设计实体 端口名称 GW48-CK 按键、显示器 结构图上的 信号名 目标芯片 引脚号 输入端口 CLR 时钟 CLOCK0 2 D1 键3 PIO8 17 D2 键4 PIO9 18 D3 键5 PIO10 19 D4 键6 PIO11 21 HOST 键8 PIO13 23 输出端口 Q[6..0] 数码管8 PIO46~40 78,73-70,67,66 SEL[2..0] PIO18,17,16 29,28,27 SOUND SPKER 3 CLKY PIO12 22 目标芯片:EPF10K10CL84-4 模式:NO.6 七、硬件验证 参加智力竞赛的同学分别是D1(键3),D2(键4),D3 (键5),D4(键6 ),而主持人是键8。通过队员们按键开关的抢答,响应显示灯亮并伴有声响,说明已经有队员抢答了,此时抢答器不再接受其他队员的请求信号。 八、知识链接 十、同步练习

一周热门 更多>