基于VHDL语言的四位抢答器

四位VHDL 抢答器

一、设计理念:

1.1 需要设计的是四名选手的抢答过程所用到的抢答器,分别用S0~S3四个按钮表示。

1.2 设置一个由主持人控制的“复位”开关S ,按下此开关后以前的状态复位并且重新开始计时抢答。

1.3 抢答器具有锁存与显示功能。选手按动自己相应的抢答按钮,系统锁存对应的编号,并在LED 数码管上显示出来。同时,扬声器发出提示音。锁存器实行优先锁存,因此,最先按动抢答按钮的选手编号将被显示,一直到主持人按下复位开关清除为止。

1.4 抢答器规定在一定时间内抢答,暂定为0-99s ,当主持人按下复位开关后开始计时。

1.5 若在规定时间内无人抢答,扬声器发出提示音并停止抢答过程,此时定时显示器上显示00。

二、设计内容

2.1系统大致过程分析

抢答器系统的结构分为抢答鉴别lock 模块、定时模块、译码模块和报警器模块。抢答器各步骤中最关键的是锁存,在选手按下抢答器的同时,LED 数码管上将显示计时器的剩余有效时间(个位和十位)和选手号。他们输出全都为BCD 码输出,这样便于和显示译码器连接除此之外,整个抢答器还需有一个“复位开始”信号,以便抢答器能实现清零和开始。。当主持人按下控制键、选手按下抢答键蜂鸣器短暂响起。

2.2 方案设计

1) 抢答鉴别lock 模块:

这个模块就是起到抢答过程中的抢答功能。模块中的输入端除了四个抢答输入信号(S0,S1,S2,S3)、时钟信号CLK 和公用的时间控制系统的复位端外,还有一个以时间控制系统的警报(WARN )输出信号为信号源的WARN 输入。其中时钟信号是个高频信号,用来扫描S0,S1,S2,S3是否有信号输入。输出端有对应于4位选手编号的LED 指示灯和用来锁存当前状态的4线2进制输出端外,还有一个STOP 端用来指示S0,S1,S2,S3按钮状态(控制计时器停止)。

这个模块中一直作用的是高频时钟信号,主持人按下复位键,所以输出端都清零,抢答开始,计时器开始计时。在有效时间内若有选手按下抢答键,STOP 就有就发出高电平到时间控制系统的STOP 端,计时器停止计时。按下抢答键的选手对应的指示灯亮,锁存器输出到译码显示模块,显示优先抢答人的编号,同时锁定输入端S ,阻止系统响应其他抢答者的信号。如果有效时间内无人抢答,计时模块发出报警提示音,并反馈给抢答鉴别模块以禁止选手抢答。

2)定时模块:

定时模块的输入端包括时钟信号CLK1、系统复位信号CLEAR 和一个STOP 输入信号;输出端时间状态显示信号高位HIGH 和低位LOW ,无人抢答时计时中止警报信号WARN 。 模块主要实现抢答过程中的计时功能,抢答开始后计时,N 秒有效时间内若无人抢答,显示超时,并输出信号至WARN 报警。若计时N 秒内有人抢答则由鉴别模块输出STOP 信号

停止计时,显示出抢答者的按抢答器的时间,同时输出一个信号经WARN 传到抢答鉴别系统,锁存不让其他选手抢答。

3)译码模块:

将抢答过程中锁存的BCD 码转换成7段码,并且用LED 显示。

4)报警器模块:

报警器模块主要实现抢答过程中的报警功能,当主持人按下复位键,有效时间内有人抢答或是计时已满无人抢答之后蜂鸣器开始报警,输出SOUND 有效电平为高电平.

三、设计步骤及数据

3.1 各单元电路软件设计

1)抢答器鉴别模块VHDL 程序及模块:

在这个模块中主要实现抢答过程中的抢答功能,并且能实现当有一路抢答按键按下时,该路抢答信号将其余个绿抢答封锁的功能。在这个模块输入端有WARN 输入(以时间控制系统的WARN 输出信号为信号源) 、一个和“时间控制系统”公用的CLEAR 端、4人抢答输入信号端S0,S1,S2,S3和有一个时钟信号端CLK ,这个时钟信号是个高频信号,用以扫描S0,S1,S2,S3是否有信号输入。输出端有对应于S0,S1,S2,S3编号的4个指示灯LED 和4线2进制输出端STATES (用于锁存当前的状态),还有一个STOP 端用于指示S0,S1,S2,S3按钮状态(控制计时器停止)。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY LOCK IS

PORT( CLK,CLEAR:IN STD_LOGIC;

WARN:IN STD_LOGIC;

S0,S1,S2,S3:IN STD_LOGIC;

STATES:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

STOP:OUT STD_LOGIC;

LED:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END LOCK;

ARCHITECTURE ONE OF LOCK IS

SIGNAL G:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(CLEAR,CLK,S0,S1,S2,S3)

BEGIN

IF CLEAR='1' THEN G

ELSIF CLK'EVENT AND CLK='1' THEN

IF WARN='0' THEN

IF( S3='1')AND NOT(G(0)='1' OR G(1)='1' OR G(2)='1') THEN

G(3)

ELSIF( S2='1')AND NOT(G(0)='1' OR G(1)='1' OR G(3)='1') THEN

G(2)

ELSIF( S1='1')AND NOT(G(0)='1' OR G(2)='1' OR G(3)='1') THEN

G(1)

ELSIF( S0='1')AND NOT(G(1)='1' OR G(2)='1' OR G(3)='1') THEN

G(0)

END IF;

STOP

END IF;

END IF;

CASE G IS

WHEN "0001"=>STATES

WHEN "0010"=>STATES

WHEN "0100"=>STATES

WHEN "1000"=>STATES

WHEN OTHERS=>STATES

END CASE;

END PROCESS;

END ARCHITECTURE ONE;

2)译码模块VHDL 程序及模块:

将抢答过程中锁存的BCD 码转换成7段码用于LED 的显示。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CODE IS

PORT(INSTATES: IN STD_LOGIC_VECTOR(3 DOWNTO 0);

QOUT: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

END CODE;

ARCHITECTURE TWO OF CODE IS

BEGIN

PROCESS(INSTATES)

BEGIN

CASE INSTATES IS

WHEN "0000"=>QOUT

WHEN "0001"=>QOUT

WHEN "0010"=>QOUT

WHEN "0011"=>QOUT

WHEN "0100"=>QOUT

WHEN "0101"=>QOUT

WHEN "0110"=>QOUT

WHEN "0111"=>QOUT

WHEN "1000"=>QOUT

WHEN "1001"=>QOUT

WHEN OTHERS=>QOUT

END CASE;

END PROCESS;

END ARCHITECTURE TWO;

3)定时模块VHDL 程序及模块:

定时模块的输入端有时钟信号CLK 、系统复位信号CLEAR 和一个STOP 输入信号;输出端有秒时间状态显示信号高位HIGH 和低位LOW ,无人抢答时计时中止警报信号WARN 。这个模块中主要实现抢答过程中的计时功能,在抢答开始后进行N 秒的倒计时,并且在N 秒倒计时后无人抢答的情况下显示超时并输出信号至WARN 报警,或者只要N 秒内有人抢答,由抢答鉴别模块输出的STOP 信号控制停止计时,并显示优先抢答者的抢答时刻,输出一个信号经WARN 传至“抢答鉴别系统”,锁存不再让选手抢答。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY COUNT IS

PORT(CLK,CLEAR,STOP:IN STD_LOGIC;

WARN:OUT STD_LOGIC;

HIGH,LOW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END COUNT;

ARCHITECTURE THREE OF COUNT IS

SIGNAL HS:STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL LS:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(CLK)

BEGIN

IF CLEAR='1' THEN

HS

ELSIF CLK'EVENT AND CLK='1' THEN

LS

IF LS="0000" THEN

LS

IF HS="0000" AND LS="0000" THEN

WARN

IF STOP='1' THEN

HS

LS

WARN

END IF;

END IF;

END IF;

END IF;

HIGH

END PROCESS;

END ARCHITECTURE THREE;

4)报警模块VHDL :

在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内(N 秒内)有人抢答或是倒计时到了之后蜂鸣器开始报警,输出SOUND 有效电平为高

.

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY ALARM IS

PORT(CLEAR,WARN:IN STD_LOGIC;

SOUND:OUT STD_LOGIC);

END ;

ARCHITECTURE FOUR OF ALARM IS

BEGIN

PROCESS(WARN,CLEAR)

BEGIN

IF CLEAR='1' THEN SOUND

ELSIF WARN='1' THEN

SOUND

ELSE SOUND

END IF;

END PROCESS;

END ;

3.2 各单元设计电路的仿真波形图

1)抢答鉴别模块仿真图:

2)译码模块仿真图:

3)记时模块仿真图:

部分仿真图(1):

部分仿真图(2):

4)报警模块仿真图:

3.3 总电路连线图:

总电路仿真图:

四、设计总结

五、参考文献

[1] 、李国洪,沈明山:《可编程逻辑器件EDA 技术与实践》,机械工业出版社

[2]、江国强:《EDA 技术习题与实验》,电子工业出版社

[3]、曹昕燕,周风臣,聂春燕:《EDA 技术试验与课程设计》,清华大学出版社

[4]、黄仁欣:《EDA 技术实用教程》,清华大学出版社

四位VHDL 抢答器

一、设计理念:

1.1 需要设计的是四名选手的抢答过程所用到的抢答器,分别用S0~S3四个按钮表示。

1.2 设置一个由主持人控制的“复位”开关S ,按下此开关后以前的状态复位并且重新开始计时抢答。

1.3 抢答器具有锁存与显示功能。选手按动自己相应的抢答按钮,系统锁存对应的编号,并在LED 数码管上显示出来。同时,扬声器发出提示音。锁存器实行优先锁存,因此,最先按动抢答按钮的选手编号将被显示,一直到主持人按下复位开关清除为止。

1.4 抢答器规定在一定时间内抢答,暂定为0-99s ,当主持人按下复位开关后开始计时。

1.5 若在规定时间内无人抢答,扬声器发出提示音并停止抢答过程,此时定时显示器上显示00。

二、设计内容

2.1系统大致过程分析

抢答器系统的结构分为抢答鉴别lock 模块、定时模块、译码模块和报警器模块。抢答器各步骤中最关键的是锁存,在选手按下抢答器的同时,LED 数码管上将显示计时器的剩余有效时间(个位和十位)和选手号。他们输出全都为BCD 码输出,这样便于和显示译码器连接除此之外,整个抢答器还需有一个“复位开始”信号,以便抢答器能实现清零和开始。。当主持人按下控制键、选手按下抢答键蜂鸣器短暂响起。

2.2 方案设计

1) 抢答鉴别lock 模块:

这个模块就是起到抢答过程中的抢答功能。模块中的输入端除了四个抢答输入信号(S0,S1,S2,S3)、时钟信号CLK 和公用的时间控制系统的复位端外,还有一个以时间控制系统的警报(WARN )输出信号为信号源的WARN 输入。其中时钟信号是个高频信号,用来扫描S0,S1,S2,S3是否有信号输入。输出端有对应于4位选手编号的LED 指示灯和用来锁存当前状态的4线2进制输出端外,还有一个STOP 端用来指示S0,S1,S2,S3按钮状态(控制计时器停止)。

这个模块中一直作用的是高频时钟信号,主持人按下复位键,所以输出端都清零,抢答开始,计时器开始计时。在有效时间内若有选手按下抢答键,STOP 就有就发出高电平到时间控制系统的STOP 端,计时器停止计时。按下抢答键的选手对应的指示灯亮,锁存器输出到译码显示模块,显示优先抢答人的编号,同时锁定输入端S ,阻止系统响应其他抢答者的信号。如果有效时间内无人抢答,计时模块发出报警提示音,并反馈给抢答鉴别模块以禁止选手抢答。

2)定时模块:

定时模块的输入端包括时钟信号CLK1、系统复位信号CLEAR 和一个STOP 输入信号;输出端时间状态显示信号高位HIGH 和低位LOW ,无人抢答时计时中止警报信号WARN 。 模块主要实现抢答过程中的计时功能,抢答开始后计时,N 秒有效时间内若无人抢答,显示超时,并输出信号至WARN 报警。若计时N 秒内有人抢答则由鉴别模块输出STOP 信号

停止计时,显示出抢答者的按抢答器的时间,同时输出一个信号经WARN 传到抢答鉴别系统,锁存不让其他选手抢答。

3)译码模块:

将抢答过程中锁存的BCD 码转换成7段码,并且用LED 显示。

4)报警器模块:

报警器模块主要实现抢答过程中的报警功能,当主持人按下复位键,有效时间内有人抢答或是计时已满无人抢答之后蜂鸣器开始报警,输出SOUND 有效电平为高电平.

三、设计步骤及数据

3.1 各单元电路软件设计

1)抢答器鉴别模块VHDL 程序及模块:

在这个模块中主要实现抢答过程中的抢答功能,并且能实现当有一路抢答按键按下时,该路抢答信号将其余个绿抢答封锁的功能。在这个模块输入端有WARN 输入(以时间控制系统的WARN 输出信号为信号源) 、一个和“时间控制系统”公用的CLEAR 端、4人抢答输入信号端S0,S1,S2,S3和有一个时钟信号端CLK ,这个时钟信号是个高频信号,用以扫描S0,S1,S2,S3是否有信号输入。输出端有对应于S0,S1,S2,S3编号的4个指示灯LED 和4线2进制输出端STATES (用于锁存当前的状态),还有一个STOP 端用于指示S0,S1,S2,S3按钮状态(控制计时器停止)。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY LOCK IS

PORT( CLK,CLEAR:IN STD_LOGIC;

WARN:IN STD_LOGIC;

S0,S1,S2,S3:IN STD_LOGIC;

STATES:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

STOP:OUT STD_LOGIC;

LED:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END LOCK;

ARCHITECTURE ONE OF LOCK IS

SIGNAL G:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(CLEAR,CLK,S0,S1,S2,S3)

BEGIN

IF CLEAR='1' THEN G

ELSIF CLK'EVENT AND CLK='1' THEN

IF WARN='0' THEN

IF( S3='1')AND NOT(G(0)='1' OR G(1)='1' OR G(2)='1') THEN

G(3)

ELSIF( S2='1')AND NOT(G(0)='1' OR G(1)='1' OR G(3)='1') THEN

G(2)

ELSIF( S1='1')AND NOT(G(0)='1' OR G(2)='1' OR G(3)='1') THEN

G(1)

ELSIF( S0='1')AND NOT(G(1)='1' OR G(2)='1' OR G(3)='1') THEN

G(0)

END IF;

STOP

END IF;

END IF;

CASE G IS

WHEN "0001"=>STATES

WHEN "0010"=>STATES

WHEN "0100"=>STATES

WHEN "1000"=>STATES

WHEN OTHERS=>STATES

END CASE;

END PROCESS;

END ARCHITECTURE ONE;

2)译码模块VHDL 程序及模块:

将抢答过程中锁存的BCD 码转换成7段码用于LED 的显示。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CODE IS

PORT(INSTATES: IN STD_LOGIC_VECTOR(3 DOWNTO 0);

QOUT: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

END CODE;

ARCHITECTURE TWO OF CODE IS

BEGIN

PROCESS(INSTATES)

BEGIN

CASE INSTATES IS

WHEN "0000"=>QOUT

WHEN "0001"=>QOUT

WHEN "0010"=>QOUT

WHEN "0011"=>QOUT

WHEN "0100"=>QOUT

WHEN "0101"=>QOUT

WHEN "0110"=>QOUT

WHEN "0111"=>QOUT

WHEN "1000"=>QOUT

WHEN "1001"=>QOUT

WHEN OTHERS=>QOUT

END CASE;

END PROCESS;

END ARCHITECTURE TWO;

3)定时模块VHDL 程序及模块:

定时模块的输入端有时钟信号CLK 、系统复位信号CLEAR 和一个STOP 输入信号;输出端有秒时间状态显示信号高位HIGH 和低位LOW ,无人抢答时计时中止警报信号WARN 。这个模块中主要实现抢答过程中的计时功能,在抢答开始后进行N 秒的倒计时,并且在N 秒倒计时后无人抢答的情况下显示超时并输出信号至WARN 报警,或者只要N 秒内有人抢答,由抢答鉴别模块输出的STOP 信号控制停止计时,并显示优先抢答者的抢答时刻,输出一个信号经WARN 传至“抢答鉴别系统”,锁存不再让选手抢答。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY COUNT IS

PORT(CLK,CLEAR,STOP:IN STD_LOGIC;

WARN:OUT STD_LOGIC;

HIGH,LOW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END COUNT;

ARCHITECTURE THREE OF COUNT IS

SIGNAL HS:STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL LS:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(CLK)

BEGIN

IF CLEAR='1' THEN

HS

ELSIF CLK'EVENT AND CLK='1' THEN

LS

IF LS="0000" THEN

LS

IF HS="0000" AND LS="0000" THEN

WARN

IF STOP='1' THEN

HS

LS

WARN

END IF;

END IF;

END IF;

END IF;

HIGH

END PROCESS;

END ARCHITECTURE THREE;

4)报警模块VHDL :

在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内(N 秒内)有人抢答或是倒计时到了之后蜂鸣器开始报警,输出SOUND 有效电平为高

.

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY ALARM IS

PORT(CLEAR,WARN:IN STD_LOGIC;

SOUND:OUT STD_LOGIC);

END ;

ARCHITECTURE FOUR OF ALARM IS

BEGIN

PROCESS(WARN,CLEAR)

BEGIN

IF CLEAR='1' THEN SOUND

ELSIF WARN='1' THEN

SOUND

ELSE SOUND

END IF;

END PROCESS;

END ;

3.2 各单元设计电路的仿真波形图

1)抢答鉴别模块仿真图:

2)译码模块仿真图:

3)记时模块仿真图:

部分仿真图(1):

部分仿真图(2):

4)报警模块仿真图:

3.3 总电路连线图:

总电路仿真图:

四、设计总结

五、参考文献

[1] 、李国洪,沈明山:《可编程逻辑器件EDA 技术与实践》,机械工业出版社

[2]、江国强:《EDA 技术习题与实验》,电子工业出版社

[3]、曹昕燕,周风臣,聂春燕:《EDA 技术试验与课程设计》,清华大学出版社

[4]、黄仁欣:《EDA 技术实用教程》,清华大学出版社


相关内容

  • VHDL四人抢答器实验报告
  • 题目:硬件描述语言实验十三:四人抢答器 姓名:*** 学号: *** 地点: 主楼402 时间: 5月9日 一.实验目的: 进一步练习VHDL语言设计工程的建立与仿真的步骤和方法.熟悉VHDL语言基本设计实体的编写方法. 二.实验环境: PC个人计算机.Windows XP操作系统.Quartus ...

  • 六人抢答器设计报告
  • 湖南人文科技学院 课程设计报告 课程名称: 设计题目: 六人抢答器 系 别: 通信与控制工程系 专 业: 电子信息工程 班 级: 电子信息二班 学生姓名: 鄢卫 张幸 学 号: 08409228 08409226 起止日期: 2011年06月14日~2011年06月26日 指导教师: 姚 毅 教研室 ...

  • 8路抢答器系统的设计与实现
  • 数字抢答器系统的设计与实现 1 抢答器系统设计要求 数字抢答器,必须能够准确判断出第一位抢答者,并且通过数显.蜂鸣这些途径能让人们很容易得知谁是抢答成功者,并设置一定的回答限制时间,让抢答者在规定时间内答题,主持人根据答题结果控制抢答器的清零复位,掌握比赛的进程.所以我在设计8路数字抢答器的模块需要 ...

  • 自动化毕业设计论文题目
  • 自 动 化 毕 业 设 计 论 文 题 目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC12 ...

  • 通信工程毕业设计题目精选
  • 不管怎样,生活还是要继续向前走去.有的时候伤害和失败不见得是一件坏事,它会让你变得更好,孤单和失落亦是如此.每件事到最后一定会变成一件好事,只要你能够走到最后. 通信工程毕业设计题目精选 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激 ...

  • 单片机毕业设计题目
  • 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC1211的温度智能温度传感器 9. 机器视觉系统 ...

  • 电气自动化设计论文题目大全
  • 机电一体化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数 ...

  • 电气自动化毕业设计论文题目
  • 电 气 自 动 化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机 ...

  • PLC毕业设计论文题目
  • P L C 第1-100个PLC毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MS ...