EDA课程设计数字式竞赛抢答器Word文档下载推荐.docx
《EDA课程设计数字式竞赛抢答器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDA课程设计数字式竞赛抢答器Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
加分减分
图1抢答器总体框图
由主体电路和扩展电路两部分构成,主体电路完成基本的抢答功能,即开始抢答后,当选手按动抢答键时,能显示选手的编号,同时能封锁输入电路,禁止其他选手抢答。
扩展电路完成各选手的得分显示功能。
3、课程设计报告内容
总体设计电路
模块设计和相应模块程序
(一)抢答鉴别模块
1、VHDL源程序
libraryieee;
--抢答鉴别模块
useqdjbis
port(rst,clk2:
instd_logic;
s0,s1,s2,s3:
states:
bufferstd_logic_vector(3downto0);
tmp:
outstd_logic);
endqdjb;
architectureoneofqdjbis
signalst:
std_logic_vector(3downto0);
begin
p1:
process(s0,rst,s1,s2,s3,clk2)
begin
ifrst='
0'
then
tmp<
='
;
st<
="
0000"
elsifclk2'
eventandclk2='
1'
then
if(s0='
orst(0)='
)andnot(st
(1)='
orst
(2)='
orst(3)='
)thenst(0)<
endif;
if(s1='
orst
(1)='
)andnot(st(0)='
)thenst
(1)<
if(s2='
)thenst
(2)<
if(s3='
)thenst(3)<
tmp<
=s0ors1ors2ors3;
endif;
endprocessp1;
p2:
process(states(0),states
(1),states
(2),states(3))
if(st="
)thenstates<
elsif(st<
0001"
0010"
0100"
0011"
1000"
endif;
endprocessp2;
endone;
抢答鉴别模块图
抢答鉴别模块用来准确直观地判断A、B、C、D、E、F六组抢答者谁最先按下按钮,并为显示端送出信号,通过数显和蜂鸣等途径使观众能够清楚地知道是哪一组抢答成功,是整个系统的核心部分。
同时组别显示端为下一模块输入信号,以方便主持人为该组抢答成功者进行加减分的操作。
(二)计时模块
usejsis
port(clk,rst,s,stop:
warn:
outstd_logic;
ta,tb:
bufferstd_logic_vector(3downto0));
endjs;
architectureoneofjsis
signalco:
std_logic;
process(clk,rst,s,stop,ta)
orstop='
ta<
elsifclk'
eventandclk='
co<
ifs='
ifta="
1001"
co<
elseta<
=ta-1;
endif;
process(co,rst,s,stop,tb)
tb<
elsifco'
eventandco='
iftb="
thentb<
elsetb<
=tb-1;
计时模块图
在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行30秒的倒计时,并且在30秒倒计时后无人抢答显示超时并报警。
其中有抢答时钟信号clk2;
系统复位信号rst;
抢答使能信号s;
抢答状态显示信号states;
无人抢答警报信号warn;
计时中止信号stop;
计时十位和个位信号tb,ta。
(三)数据选择模块
1、VHDL源程序
usesjxzis
port(a,b,c:
instd_logic_vector(3downto0);
clk2,rst:
instd_logic;
s:
outstd_logic_vector(1downto0);
y:
outstd_logic_vector(3downto0));
endsjxz;
architecturebody_chooserofsjxzis
signalcount:
std_logic_vector(1downto0);
s<
=count;
process(clk2,rst)
if(rst='
)thencount<
00"
elsif(clk2'
)then
if(count>
10"
count<
elsecount<
=count+1;
endif;
casecountis
when"
=>
y<
=a;
01"
=b;
=c;
whenothers=>
null;
endcase;
endPROCESS;
endbody_chooser;
数据选择模块图
在这个模块中主要实现抢答过程中的数据输入功能,输入信号a[3..0]、b[3..0]、c[3..0];
计数输出信号s;
数据输出信号y;
计数脉冲clk2,实现a、b、c按脉冲轮流选通,在数码管上显示。
(四)译码模块
LIBRARYIEEE;
USEYMQIS
PORT(AIN4:
INSTD_LOGIC_VECTOR(3DOWNTO0);
DOUT7:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDYMQ;
ARCHITECTUREARTOFYMQIS
BEGIN
PROCESS(AIN4)
BEGIN
CASEAIN4IS
WHEN"
DOUT7<
1111110"
--0
0110000"
--1
1101101"
--2
1111001"
--3
0110011"
--4
0101"
1011011"
--5
0110"
1011111"
--6
0111"
1110000"
--7
1111111"
--8
1111011"
--9
WHENOTHERS=>
0000000"
ENDCASE;
ENDPROCESS;
ENDARCHITECTUREART;
译码模块图
在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。
3、4仿真及仿真结果分析
抢答鉴别
计时模块
译码
实验调试结果
抢答鉴别模块仿真分析:
当鉴别模块的清零信号CLR为高电平时,无论A、B、C、D四组参赛者谁按下抢答按钮,系统输出均为零,同时组别显示端G输出信号也显示为零;
当清零信号CLR为低电平时,A、B、C、D四组参赛者谁先按下抢答按钮,组别显示端就显示该组别的号码。
假如C组按下抢答按钮时,组别输出为0010,同时C组的显示灯被点亮。
仿真图上显示的为A先抢答,因为在微秒之间A、C虽然都按抢答键,但CLR为有效状态,所以在此时间段内的抢答无效。
计分模块仿真分析:
首先应该清楚,在计分器电路的设计中,按十进制进行加减分操作的,当出现时钟信号上升沿CLK就可以完成对参赛者加减分操作。
智能抢答器记分模块的仿真时以加分操作为例。
由仿真图3-10可知以下情况:
(1)系统设计过程