棋类竞赛计时钟 报告Word格式文档下载.docx
《棋类竞赛计时钟 报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《棋类竞赛计时钟 报告Word格式文档下载.docx(23页珍藏版)》请在冰点文库上搜索。
3.选择模块
使用轮流显示甲乙双方的规定计时时间,其优点是能够在显示管较少的情况中正常计时。
4.显示模块
这是一个动态扫描显示电路,在相对应的显示管上显示八个输入端口的输入的数据。
5.报警模块
在30秒计时器,计时完后,分别采用两种方式(提示灯和警鸣)来进行报警。
3.系统总体框图
系统的总体框图如下所示:
输入
输出输出
二单元电路设计
1.控制模块
控制模块,是整个电路的核心,控制着整个计时的变化过程,其仿真结果如下所示:
图中count2ha是甲方2小时规定时间的进位,count30sa是甲方30秒倒计时的进位,en2ha控制甲方的2小时的规定时间的继续\暂停,en30sa控制甲方30秒计数器的暂停\继续,clr30sa是控制甲方30秒计时起的清零,count2hb是乙方2小时规定时间的进位,count30sb是乙方30秒倒计时的进位,en2hb控制乙方的2小时的规定时间的继续\暂停,en30sb控制乙方30秒计数器的暂停\继续,clr30sb控制乙方30秒计时器的清零。
2.计时器模块
分为三十秒倒计时模块和2小时规定计时模块
三十秒计时器是一个减法计数器,在规定2小时计时完成后进行的最后30秒倒计时,其仿真结果如下所示:
由此可知此模块30秒倒计时miaozhong1为30秒倒计时个位数,miaozhong2为倒计时的十位数,倒计时完成后产生一个进位count30,接入控制器中。
2小时规定计时器则是一个加法计时器,完成规定时间的计时,2其仿真结果如下所示:
由图可看出,此模块所显示的是分和时的计时,fenzhong1为60分钟的个位数,fenzhong2为60分钟的十位数。
时钟为小时数。
2小时后count也产生一个进位接入控制器中。
3.选择器模块
选择器模块是其本质是一个选择型开关,是对甲乙双方进行选择的模块当。
当start为0时,选用甲方,当start为1时,则选择乙方。
其仿真结果如下所示:
输入端口a、b、c、d、e代表着甲方用时情况,分别接入30秒个位、30秒十位、2小时分个位、2小时分十位、2小时时个位。
输入端口f、g、h、i、k代表着乙方用时情况,分别接入30秒个位、30秒十位、2小时分个位、2小时分十位、2小时时个位。
输出端口m30s1,m30s2,Fg,fenzhong,s,choose分别为30秒个位,30秒十位,60分钟个位,60分钟十位,小时位数,选择端口(用显示A,b表示甲乙方)。
4.显示模块
将所需显示的端口接入,采用位动态扫描显示,能更好的体现出甲乙双方比赛记录时间的整个过程。
甲方为‘1010’显示出A,乙方为‘1011’显示出b。
输入端口d0,d1,d3,d4,d5,d7分别接入30秒个位,30秒十位,60分钟个位,60分钟十位,小时位数,选择端口(用显示A,b表示甲乙方)。
5.报警模块
报警模块是甲方或乙方将最后30秒用尽后,提出警报,则代表甲方或乙方比赛失败,其仿真图如下所示:
由图可知,co30sa接入甲方30秒进位,co30sb接入乙方30秒进位,任意一方用尽30秒后会产生警报声,区分甲乙双方的是图中a,b(代表甲乙方)所接入的显示灯不同。
三编程下载
各模块程序清单如下:
1.控制器程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
ENTITYkongzhiqiIS
PORT
(count2ha,count30sa,count2hb,count30sb:
INSTD_LOGIC;
clrkongzhiqi,s:
en2ha,en30sa,en2hb,en30sb,clr30sa,clr30sb:
OUTSTD_LOGIC);
ENDkongzhiqi;
ARCHITECTUREaOFkongzhiqiIS
BEGIN
PROCESS(s,count2ha)
BEGIN
if(s='
0'
)thenen2ha<
='
;
elsif(count2ha='
)then
en2ha<
1'
elseen2ha<
ENDIF;
ENDPROCESS;
PROCESS(s,count2ha,count30sa)
if(count30sa='
)thenen30sa<
ands='
en30sa<
elseen30sa<
PROCESS(s,count2hb)
)thenen2hb<
elsif(count2hb='
en2hb<
elseen2hb<
PROCESS(s,count2hb,count30sb)
if(count30sb='
)thenen30sb<
en30sb<
elseen30sb<
ENDIF;
PROCESS(s,clrkongzhiqi)
if(clrkongzhiqi='
)thenclr30sa<
elsif(s='
clr30sa<
elseclr30sa<
)thenclr30sb<
elsif(s='
clr30sb<
elseclr30sb<
enda;
3.计时器程序
30秒计时器程序
ENTITYsanshimiaoIS
(clk:
clr,en:
count30:
OUTSTD_LOGIC;
miaozhong1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
miaozhong2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDsanshimiao;
ARCHITECTUREaOFsanshimiaoIS
SIGNALbcd1n:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALvcd10n:
PROCESS(clk,clr,en)
if(clr='
)thencount30<
elsif(clk'
EVENTANDclk='
)then
if(bcd1n=0andvcd10n=0)then
count30<
ENDIF;
ENDPROCESS;
PROCESS(clk,clr)
BEGIN
IF(clr='
)THEN
bcd1n<
="
1001"
ELSIF(clk'
)THEN
IF(en='
)THEN
IF(bcd1n=0)THEN
bcd1n<
ELSIF(bcd1n=0andvcd10n=0)THEN
bcd1n<
ELSE
=bcd1n-1;
ENDIF;
miaozhong1<
=bcd1n;
miaozhong2<
=vcd10n;
PROCESS(clk,clr)
IF(clr='
vcd10n<
0010"
IF(en='
)THEN
IF(bcd1n=0ANDvcd10n=0)THEN
vcd10n<
ELSIF(bcd1n=0)THEN
=vcd10n-1;
ELSE
=vcd10n;
2小时计时器程序
ENTITYerxiaoshiIS
clr:
en:
count:
OUTSTD_LOGIC;
fenzhong1,shizhong1:
fenzhong2:
ENDerxiaoshi;
ARCHITECTUREaOFerxiaoshiIS
SIGNALbcd11n:
SIGNALvcd110n:
SIGNALbcd21n:
SIGNALvcd210n:
SIGNALbcd31n:
SIGNALvcd310n:
SIGNALco,co1:
STD_LOGIC;
PROCESS(co,clr)
IF(clr='
bcd21n<
0000"
ELSIF(co'
EVENTANDco='
IF(bcd21n=9)THEN
bcd21n<
="
)THEN
bcd21n<
=bcd21n+1;
=bcd21n;
ENDIF;
PROCESS(co,clr)
IFclr='
THEN
vcd210n<
IF(vcd210n=5)THEN
vcd210n<
vcd210n<
=vcd210n+1;
=vcd210n;
PROCESS(co)
if(co'
if(bcd21n=9andvcd210n=5)then
co1<
elseco1<
fenzhong1<
fenzhong2<
=vcd210n;
shizhong1<
=bcd31n;
bcd11n<
IF(bcd11n=9)THEN
bcd11n<
bcd11n<
=bcd11n+1;
=bcd11n;
vcd110n<
IF(vcd110n=5)THEN
vcd110n<
vcd110n<
=vcd110n+1;
=vcd110n;
PROCESS(clk)
if(clk'
if(bcd11n=9andvcd110n=5)then
co<
elseco<
PROCESS(co1,clr)
bcd31n<
ELSIF(co1'
EVENTANDco1='
IF(bcd31n=1)THEN
bcd31n<
bcd31n<
=bcd31n+1;
if(clk'
if(bcd21n=9andvcd210n=5andbcd31n=1andbcd11n=9andvcd110n=5)then
count<
elsif(clr='
)thencount<
endif;
3.选择器程序
ENTITYchooseqiIS
(start:
a,b,c,d,e:
inSTD_LOGIC_VECTOR(3DOWNTO0);
f,g,h,i,j:
inSTD_LOGIC_VECTOR(3DOWNTO0);
30s1,30s2,Fg,fengzhong,S,choose:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDchooseqi;
ARCHITECTUREaOFchooseqiIS
PROCESS(start,a,b,c,d,e,f,g,h,i,j)
if(start='
30s1<
=a;
30s2<
=b;
Fg<
=c;
fengzhong<
=d;
S<
=e;
choose<
1010"
else30s1<
=f;
=g;
=h;
=i;
=j;
1011"
4.显示器程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYxianshiqiIS
PORT(CLK:
d0,d1,d3,d4,d5,d7:
inSTD_LOGIC_VECTOR(3DOWNTO0);
SG:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
--段控制信号输出
BT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
--位控制信号输出
END;
ARCHITECTUREoneOFxianshiqiIS
SIGNALCNT8:
STD_LOGIC_VECTOR(2DOWNTO0);
SIGNALA:
STD_LOGIC_VECTOR(3DOWNTO0);
P1:
PROCESS(CNT8)
CASECNT8IS
WHEN"
000"
=>
BT<
00000001"
;
A<
=d0;
001"
00000010"
=d1;
010"
00000100"
1101"
011"
00001000"
=d3;
100"
00010000"
=d4;
101"
00100000"
1100"
when"
110"
01000000"
=d5;
111"
10000000"
=d7;
WHENOTHERS=>
NULL;
ENDCASE;
ENDPROCESSP1;
P2:
PROCESS(CLK)
IFCLK'
EVENTANDCLK='
THEN
CNT8<
=CNT8+1;
ENDPROCESSP2;
P3:
PROCESS(A)
CASEAIS
=>
SG<
00111111"
0001"
00000110"
01011011"
0011"
01001111"
0100"
01100110"
0101"
01101101"
0110"
01111101"
0111"
00000111"
1000"
01111111"
01101111"
01110111"
01111100"
WHEN"
SG<
00000000"
ENDPROCESSP3;
5.报警器程序
useieee.std_lo