电子设计自动化技术实训 CSH
End if; Cp<=cnt2+1; End if; Cp<=cnt2(5); End process; Process(cp) Begin
If(cp’event and cp=’1’)then
Case count2(2downto0) is——根据count2输出行控制信号。 When”000”=>h<=”10000000”; When”001”=>h<=”01000000”; When”010”=>h<=”00100000”; When”011”=>h<=”00010000”; When”100”=>h<=”00001000”; When”101”=>h<=”00000100”; When”110”=>h<=”00000010”; When”111”=>h<=”00000001”; When others =>h<=”00000000”; End case;
If count2<=”0111”then ——如果扫描的是前8行,则逐行扫描。 Count1<=count1+1;——扫描下一点。
Case count1(2downto0)is ——根据count2输出列控制信号。 When “000”=>v<=”01111111”; When ”001”=>v<=”10111111”; When “010”=>v<=”11011111”; When “011”=>v<=”11101111”; When “100”=>v<=”11110111”; When “101”=>v<=”11111011”; When “110”=>v<=”11111101”; When “111”=>v<=”11111110”; When “others =>v<=”11111111”; End case;
If count2=”111”then count2<=count2+1;end if;——扫描完一行行计数器加1。 Else ——若扫描的是后8行,则2点到扫描。 If count1=”010”then count1<=”111”;else count1<=count1+1;end if; ——使count1清零,准备下次循环。
Case count1(1downto0)is——根据count1输出列控制信号。
When”00”=>v<=”00111111”; When”01”=>v<=”11001111”; When”10”=>v<=”11110011”;
11
电子设计自动化技术实训 CSH
When”11”=>v<=”11111100”; When others =>v<=”11111111”; End case;
If count1(1downto0)=”11”then count2<=count2+1;end if; ——扫描完一行,行计数器加1。 End if; End if; Ho<=h; Vo<=v; End process; End scanpixel;
12
五、 程序说明
此程序主要由分频电路,行,列控制电路组成。
电子设计自动化技术实训 CSH 13
课题4 抢答器
一、 设计任务及要求
设计2人抢答器。要求如下:
1. 两人抢答,先抢为有效,用发光二极管显示是否抢到优先答题权。 2. 每人2为计分显示,答错了不加分,答对了可加10、20、30分。 3. 每题结束后,裁判按复位,可重新抢答下一题。 4. 累计加分可由裁判随时清零。
二、 可选器件
EPM130208-2、共阴极七段数码管,按键开关、电阻、电容。
三、 设计总体框图
抢答器总体框图如图4所示。 重新抢答 抢答者1输入
抢答者2输入
裁判
加 分
裁判
清 零
裁判复位 抢 答 判 断 显示抢答 指示灯 加分电路 显示加分 结 果 图4 抢答器总体框
四、 源程序
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_signed.all; entity qb is
port(i1,i2:in bit;——抢答器两输入端。 Reset: in bit;——抢答器复位端。
G10,g10,g30:in bit;——加分输入端10分、20分、30分。
电子设计自动化技术实训 CSH
Light1,light2:out bit:=’0’;——抢答标志灯。
Tll:out std_logic_vector(6downto0):=”0111111”;——“tl1、tl2”,显示第一个人得分。 Tl2:out std_logic_vector(6downto0):=”0111111”;
T21:out std_logic_vector(6downto0):=”0111111”;——“t21t22”显示第二个人得分。 Clk:in bit;——时钟输入端。 Cong:in bit ——清零控制端。 ); end qb;
architecture stru of qb is signal cs1:integer range0to9; sitgnal cs2:integer range 0to9: signal a,b:bit:=’0’; signall1,l2:bit:=’0’; begin process(clk) begin
if clk’event and clk =’1’ then if(cong=’1’)then if(reset=’1’)then
if(i1=’0’and a=’0’)then l1<=’1’;a<=’1’;——抢答。 Elsif (i2=”’0’and a=’0’) then l2<=’1’; a<=’1’; End if;
If(g10=’0’and l1=’1’and b=’0’)then cs1<=cs1+1;b<=’1’; Elsif(g20=’0’and l1=’1’and b=’0’)then cs1<=cs1+2;b<=’1’; Elsif(g30=’0’and l1=’1’and b=’0’)then cs1<=cs1+2;b<=’1’; End if ——完成第一人的加分。
If(cs1=0)then tl1<=”0111111”;——显示。 Elsif (cs1=1)then t11<=”0000110”; Elsif (cs1=2)then t11<=”1011011”; Elsif (cs1=3)then t11<=”100111”; Elsif (cs1=4)then t11<=”1100110”; Elsif (cs1=5)then t11<=”1101101”; Elsif(cs1=6)then t11<=”1111101”; Elsif (cs1=7)then t11<=”0000111”; Elsif (cs1=8)then t11<=”1111111”; Elsif (cs1=9)then t11<=”1101111”; End if;
If (cs20)then t21<=”0111111”; Elsif (cs2=1)then t21<=”0000110”; Elsif(cs2=2)then t21<=”1011011”;
14
电子设计自动化技术实训 CSH
Elsif(cs2=3)then t21<=”1001111”; Elsif(cs2=4)then t21<=”1100110”; Elsif(cs2=5)then t21<=”1101101”; Elsif(cs2=6)then t21<=”1111101”; Elsif(cs2=7)then t21<=”0000111”; Elsif(cs2=8)then t21<=”1111111”; Elsif(cs2=9)then t21<=”1101111”; end if;
Else l1<=’0’;l2<=’0’;a<=’0’;b<=’0’; End if;
Elde cs1<=0;cs2<=0; l1<=’0’;l2<=’0’; end if; end process; end stru;
15
五、 程序说明
1. 此程序由3部分组成,即抢答、加分、显示。
2. 当一人抢到优先答题权,发光二极管亮,另一人再按按键无效。答题结束后,
裁判按复位键,可再次抢答。
3. 每人有两个数码管显示累加计分情况,分数分为3档,用按键来区别。