用VHDL语言实现四人智力竞赛抢答器的设计,高分寻高人解答

用VHDL语言实现四人智力竞赛抢答器的设计,高分寻高人解答,第1张

模块VHDL源代码

1、抢答鉴别模块FENG的VHDL源程序

--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

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.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 片选信号产生模块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.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' 模块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..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 转换模块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源程序

--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

END CH31_ARC

6、倒计时模块COUNT的VHDL源程序

倒计时模块COUNT如图16-7所示,该模块实现答题时间的倒计时,在计满100s后送出声音提示。

--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倒计时 模块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.vhd

LIBRARY IEEE

USE IEEE.STD_LOGIC_1164.ALL

ENTITY DISP IS 显示译码模块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

'以一个二维数组存题目与答案高雀没,第一个维是题目,第二个维是答案

Dim A(2, 1) As String

Dim Timu As Integer

Private Sub C1_Click()

If T1.Text = A(Timu, 1) Then

MsgBox "√ 很聪明呦"

Else

MsgBox "× 再接再厉", vbCritical

End If

End Sub

Private Sub C2_Click()

Label2.Caption = A(Timu, 1)

End Sub

Private Sub C3_Click()

Dim n As Integer

Randomize

Do

n = Int(Rnd * (UBound(A, 1) + 1))

If n <>Timu Then Timu = n: Exit Do

Loop

Label1.Caption = A(Timu, 0)

End Sub

Private Sub C4_Click()

End

End Sub

Private Sub Form_Load()

'背景载入

Dim Imagepath As String

Imagepath = "图片路径"

If Len(Dir(Imagepath)) >0 Then Me.Picture = LoadPicture(Imagepath)

'示例载入三个谜语与答案,

A(0, 0) = "什么东西和左耳最像"戚纳

A(0, 1) = "右耳"

A(1, 0) = "什么岁仿字母最多人听"

A(1, 1) = "CD"

A(2, 0) = "我帅不"

A(2, 1) = "帅"

Call C3_Click

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12387351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存