EDA课程设计(四路抢答器)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
译码电路位码:
Library ieee; use ieee.std_logic_1164.all; entity ymq is port(bcd:in std_logic_vector(3 downto 0); dout:out std_logic_vector(6 downto 0)); end ymq; architecture at1 of ymq is begin process(bcd) begin case bcd is when"0000"=>dout<="0111111"; when"0001"=>dout<="0000110"; when "0010"=>dout<="1011011"; when "0011"=>dout<="1001111"; when"0100"=>dout<="1100110"; when "0101"=>dout<="1101101"; when "0110"=>dout<="1111101"; when "0111"=>dout<="0000111"; when "1000"=>dout<="1111111"; when"1001"=>dout<="1110011"; when others=>dout<="1111111"; end case; end process; end at1;
设计流程图:
抢答器设计步骤-鉴别模块
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity xsjb is port(rst,clk2:in std_logic; s0,s1,s2,s3:in std_logic; states:buffer std_logic_vector(3 downto 0); light:buffer std_logic_vector(3 downto 0); warn:out std_logic); end xsjb ; architecture one of xsjb is signal st:std_logic_vector(3 downto 0); begin p1:process(s0,rst,s1,s2,s3,clk2) begin if rst='0' then warn<='0';st<="0000"; elsif clk2'event and clk2='1' then if (s0='1' or st(0)='1')and not( st(1)='1' or st(2)='1' or st(3)='1' ) then st(0)<='1'; end if ; if (s1='1' or st(1)='1')and not( st(0)='1' or st(2)='1' or st(3)='1' ) then st(1)<='1'; end if ;
抢答器功能说明:
抢答开始后,当第一个人按下按键后,则在显示器上 显示该组的号码,对应的灯亮,同时电路将其他各组 按键封锁,使其不起作用。若抢答时间内无人抢答, 则报警灯亮。回答完问题后,由主持人将所有按键恢 复,重新开始下一轮抢答。
课程设计思路:
先设计一个四路信号的判决电路,当有抢答信号时记 录下抢答信号并实行优先锁存,然后就要设计出计时 电路,当20秒没有选手抢答时报警,最后就是要设计 出报警电路,报警电路通过逻辑设计出当有选手按下 报警下和当20 秒没有选手抢答报警下,表示此次抢答 结束。
抢答器设计步骤-报警模块 :
library ieee; use ieee.std_logic_1164.all; entity baojin is port(rst:in std_logic; warn:in std_logic; clk:in std_logic; ta,tb:in integer range 0 to 9; stop:in std_logic; alm:out std_logic ); end; architecture bhv of baojin is begin process(warn,ta,tb,stop,clk,rst) begin if warn='1'then alm<=clk; elsif rst='0' then alm<='0'; elsif stop='1'then alm<='0'; elsif ta=0 and tb=0 then alm<=clk; else alm<='0'; end if; end process; end;
抢答器设计步骤-数码管显示模块2(译码 ):
译码电路段码:
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity yima is port( s : in std_logic_vector(1 downto 0); bit1,bit2,bit3 : out std_logic); end entity; architecture art of yima is signal dout : std_logic_vector(7 downto 0); begin process(s) begin case s is when "00" => dout<="00000001"; when "01" => dout<="00000010"; when "10" => dout<="00000100"; when others => dout<="XXXXXXXX"; end case; end process; bit1<=dout(0);bit2<=dout(1);bit3<=dout(2); end architecture;
Biblioteka Baidu
抢答器设计步骤-计数模块:
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity JS is port(clk1,rst,start,stop:in std_logic; ta,tb:buffer std_logic_vector(3 downto 0)); end JS; architecture one of JS is signal co:std_logic; begin p1:process(clk1,rst,start,stop,ta) begin if rst='0' or stop='1' then ta<="0000"; elsif clk1'event and clk1='1' then co<='0'; if start='1' then if ta="0000" then ta<="1001";co<='1'; else ta<=ta-1; end if; end if; end if; end process p1; p2:process(co,rst,start,stop,tb) begin if rst='0' or stop='1' then tb<="0010"; elsif co'event and co='1' then if start='1' then if tb="0000" then tb<="0001"; else tb<=tb-1; end if; end if; end if; end process p2; end one ;
when "00" => dout<=count1; when "01" => dout<=count2; when "10" => dout<=count3; when others => dout<="XXXX"; end case; temp<=temp+1; if(temp="10") then temp<="00"; end if; end if; end process; end architecture;
鉴别模块功能介绍:
在这个模块中主要实现抢答过程中的抢答功能,能记 录无论是正常抢答还是朝前抢答者的台号,并且能实 现当有一路抢答按键按下时,该路抢答信号将其余的 抢答信号封锁的功能。其中有四个抢答信号s0、s1、s2、 s3;抢答状态显示信号states;抢答与警报时钟信号clk; 系统复位信号rst;警报信号warm。
报警模块功能介绍:
在这个模块中主要实现抢答过程中的报警功能,当主 持人按下控制键,有限时间内有人抢答或是计数到时 蜂鸣器开始报警,计数停止信号stop;状态输出信号 alm;计数脉冲clk。
抢答器设计步骤-数码管显示模块1 (扫描 ):
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity scan is port(clk : in std_logic; count1,count2,count3 : in std_logic_vector(3 downto 0); s : out std_logic_vector(1 downto 0); dout : out std_logic_vector(3 downto 0)); end entity; architecture art of scan is signal temp :std_logic_vector(1 downto 0); begin process(clk) begin if(clk'event and clk='1')then s<=temp; case temp is
:
if (s2='1' 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 ; warn<=st(0) or st(1) or st(2) or st(3); end if ; end process p1; p2:process(states(0),states(1),states(2),states(3),light) begin if (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; light<=states; end process p2; end one;
EDA课程设计 ——四路抢答器 EDA课程设计 ——四路抢答器
设计成员:张尧 王涛 王少泽 曹忠林
课程设计具体要求:
设计一个四路智能抢答器,要具有如下功能: 1)抢答器同时供4名选手使用,分别用4个按钮S0~S3表示。 2)设置一个系统清除和抢答控制开关S,该开关由主持人控制。 3)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编 号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手 抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系 统清除为止。 4)抢答器具有定时抢答功能,抢答时间为20秒。当主持人启动 “开始”键后,按秒进行倒计时,并有倒计时提示音。 5)如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁 止抢答,定时显示器上显示00。
计数模块功能介绍:
在这个模块中主要实现抢答过程中的计时功能,在有 抢答开始后进行20秒的倒计时,并且在20秒倒计时后 无人抢答显示超时并报警。其中有抢答时钟信号clk1; 系统复位信号rst;抢答使能信号start;无人抢答警报信 号warn;计时中止信号stop;计时十位和个位信号tb, ta。