六人抢答器设计报告

湖南人文科技学院

课程设计报告

课程名称:

设计题目: 六人抢答器

系 别: 通信与控制工程系

专 业: 电子信息工程 班 级: 电子信息二班 学生姓名: 鄢卫 张幸 学 号: 08409228 08409226 起止日期: 2011年06月14日~2011年06月26日 指导教师: 姚 毅 教研室主任: 侯海良

摘 要

本次设计在EDA开发平台QUARTUSⅡ6.0上利用VHDL语言设计六人抢答器电路。电路中设有六个抢答键,可供六人同时抢答;我们利用一个二十进制计数器,将其输入频率设定为一赫兹,成功实现了二十秒倒计时的功能;我们利用VHDL语言中的IF和CASE语句结合空操作语句NULL实现开始抢答与超前抢答的区别;各个模块配以一时钟频率由蜂鸣器输出可实现抢答成功、超前抢答犯规、超时抢答等各种情况的报警效果;本设计采用的是杭州康芯电子有限公司生产的GW48系列/SOPC/EDA实验开发系统,FPGA目标芯片型号为Altera公司的Cyclone系列中的EPIC6Q240C8。芯片配置成功后锁定引脚下载即可进行硬件测试:选择实验电路结构图NO.5,使CLK1与CLKOCK5相接(接受1024Hz时钟频率),CLK 与CLOCK0相接(接受1Hz时钟频率),报警输出接SPEAK,六位选手分别对应实验箱上的1~6键,键7为抢答开始键,当其未按下就进行抢答则为超前犯规,按下后二十秒倒计时开始,选手进行抢答,按实验箱上的复位键则可重新开始下一轮的抢答。

关键词:六人抢答器;数码显示;信号封锁;犯规报警。

目 录

设计要求 .................................................................................................................................... 1 1 总体设计方案论论证与对比 ................................................................................................ 1

1.1 方案一 ......................................................................................................................... 1 1.2 方案二 ......................................................................................................................... 1 2顶层电路VHDL程序设计 .................................................................................................... 2 3 单元模块程序设计 ................................................................................................................ 5

3.1 二十秒倒计时模块 ..................................................................................................... 5 3.2 抢答成功选手按键模块 ............................................................................................. 6 3.3 超前抢答犯规模块 ..................................................................................................... 7 3.4 抢答成功报警模块 ................................................................................................... 11 4 六人抢答器电路系统仿真及功能分析与调试 .................................................................. 12

4.1 分立模块的仿真 ....................................................................................................... 12 4.2 总体设计模块的仿真 ............................................................................................... 14 5 实验设备和器件 .................................................................................................................. 15 6 引脚锁定和下载硬件测试及实验结果 .............................................................................. 15

6.1 引脚锁定 ................................................................................................................... 15 6.2 下载和硬件测试及实验结果 ................................................................................... 16 7 参考文献 .............................................................................................................................. 17 8 心得体会 .............................................................................................................................. 17 附录 .......................................................................................................................................... 18

六人抢答器

设计要求

抢答台数为6;具有抢答开始后20秒倒计时,20秒倒计时后六人抢答显示超时,并报警;能显示超前抢答台号并显示犯规报警;系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各路抢答信号封锁,同时铃声响起,直至该路按键松开,显示牌显示该路抢答台号。

1 总体设计方案论论证与对比

1.1 方案一

该方案方框图如图1:

在该方案中,由二十秒倒计时模块、抢答鉴别模块、锁存器模块等模块组成[3]。蜂鸣器和数码管分别起报警和显示台号的作用。但该方案中的数码管显示是由七段显示器的形式来显示台号的,由于实验箱电路结构与按键数目的限定,使得我们没有采用该方案。

1.2 方案二

该方案方框图如图2:

此方案中整个电路主要由超前抢答判别模块、二十秒倒计时模块、抢答成功按键模块、抢答报警模块四个模块组成[4]。其台号的显示都是将信号送入译码器译码之后再由数码管显示出来,结合前面六位选手的按键及开始键可得实验箱上模式5的电路结构满足硬件测试的要求。所以我们选定该方案来进行我们这次的课程设计。

2顶层电路VHDL程序设计

顶层电路VHDL程序如下 USE ieee.std_logic_1164.all; LIBRARY work; ENTITY jinaghu IS

port (rst : IN STD_LOGIC;--抢答开始键

clk : IN STD_LOGIC;--计数器时钟输入 clk1 : IN STD_LOGIC;--蜂鸣器时钟输入

AIN : IN STD_LOGIC_VECTOR(6 downto 1);--选手按键 speak : OUT STD_LOGIC;--蜂鸣器 cout : OUT STD_LOGIC; --超时抢答报警

shuma : OUT STD_LOGIC_VECTOR(3 downto 0);--抢答成功显示台号数码管

shuma1 : OUT STD_LOGIC_VECTOR(3 downto 0);

shuma2 : OUT STD_LOGIC _VECTOR(3 downto 0); shuma3 : OUT STD_LOGIC_VECTOR(3 downto 0);

shuma4 : OUT STD_LOGIC_VECTOR(3 downto 0); shuma5 : OUT STD_LOGIC_VECTOR(3 downto 0);

shuma6 : OUT STD_LOGIC_VECTOR(3 downto 0));

END jinaghu;

ARCHITECTURE bdf_type OF jinaghu IS component anjian --元件U1例化 PORT(rst : IN STD_LOGIC; AIN6 : IN STD_LOGIC_VECTOR(6 downto 1);

shuma : OUT STD_LOGIC_VECTOR(3 downto 0));

end component;

component chaoqian --元件U2例化 PORT(clk1 : IN STD_LOGIC; rst : IN STD_LOGIC;

AIN6 : IN STD_LOGIC_VECTOR(6 downto 1); speak : OUT STD_LOGIC;

shuma1 : OUT STD_LOGIC_VECTOR(3 downto 0); shuma2 : OUT STD_LOGIC_VECTOR(3 downto 0); shuma3 : OUT STD_LOGIC_VECTOR(3 downto 0); shuma4 : OUT STD_LOGIC_VECTOR(3 downto 0); shuma5 : OUT STD_LOGIC_VECTOR(3 downto 0);

shuma6 : OUT STD_LOGIC_VECTOR(3 downto 0) );

end component;

component daojishi --元件U3例化 PORT(clk : IN STD_LOGIC; clk1 : IN STD_LOGIC; rst : IN STD_LOGIC;

shuma : IN STD_LOGIC_VECTOR(3 downto 0); speak : OUT STD_LOGIC;

cout : OUT STD_LOGIC);

end component;

component qiangdabao --元件U3例化 PORT(rst : IN STD_LOGIC; clk1 : IN STD_LOGIC;

AIN6 : IN STD_LOGIC_VECTOR(6 downto 1);

speak : OUT STD_LOGIC);

end component;

signal SYNTHESIZED_WIRE_17 : STD_LOGIC_VECTOR(3 downto 0); signal SYNTHESIZED_WIRE_1 : STD_LOGIC; signal SYNTHESIZED_WIRE_2 : STD_LOGIC; signal SYNTHESIZED_WIRE_3 : STD_LOGIC; signal SYNTHESIZED_WIRE_4 : STD_LOGIC;

signal SYNTHESIZED_WIRE_18 : STD_LOGIC_VECTOR(3 downto 0); signal SYNTHESIZED_WIRE_19 : STD_LOGIC_VECTOR(3 downto 0); signal SYNTHESIZED_WIRE_20 : STD_LOGIC_VECTOR(3 downto 0); BEGIN

shuma3

shuma30

b2v_inst : anjianPORT MAP(rst =>rst, AIN6 => AIN, shuma => SYNTHESIZED_WIRE_17); --参数传递映射语句

b2v_inst1 : chaoqian PORT MAP(clk1 => clk1, rst => rst, AIN6 => AIN,

speak => SYNTHESIZED_WIRE_1, shuma1 => SYNTHESIZED_WIRE_18, shuma2 => SYNTHESIZED_WIRE_19, shuma3 => SYNTHESIZED_WIRE_20, shuma4 => shuma4, shuma5 => shuma5, shuma6 => shuma6);

b2v_inst2 : daojishi PORT MAP(clk => clk, clk1 => clk1, rst => rst,

shuma => SYNTHESIZED_WIRE_17, speak => SYNTHESIZED_WIRE_3, cout

=> cout);

b2v_inst3 : qiangdabao PORT MAP(rst => rst, clk1 => clk1, AIN6 => AIN,

speak => SYNTHESIZED_WIRE_2);

SYNTHESIZED_WIRE_4

3 单元模块程序设计

根据顶层原理图,共分为anjian模块、chaoqian模块、daojishi模块、qiangdabao模块这四个模块。其中anjian模块的功能是锁定抢答成功的选手的台号并显示,chaoqian模块可将超前抢答了的选手台号显示出来并伴随报警,daojishi模块进行二十秒倒计时并显示超时报警,qiangdabao模块主要是为抢答成功之后提供报警功能[2]。

3.1 二十秒倒计时模块

3.1.1二十秒倒计时模块原理图

daojishi

clkclk1rst

shuma[3..0]

speak

cout

3.1.2二十秒倒计时模块VHDL程序设计[1]

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity daojishi is

port (clk,clk1,rst: in std_logic;

shuma: inout std_logic_vector(3 downto 0);--主数码管 speak : out std_logic;

cout: inout std_logic);--进位,可用于超时显示 end daojishi;

architecture one of daojishi is begin

process(clk,rst)

variable cqi : std_logic_vector(7 downto 0); begin

if (rst='1') and (clk'event and clk='1') then if cqi'0'); end if; end if;

if (cqi>20) and (cqi

if (cout='1') and (shuma="0000") and (rst='1')then speak

end process; end one;

3.2 抢答成功选手按键模块

3.2.1抢答成功选手按键模块原理图

anjian

rst

shuma[3..0]

AIN6[6..1]

3.2.2 抢答成功选手按键模块VHDL程序设计

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity anjian is

port (rst: in std_logic;

AIN6: in std_logic_vector(6 downto 1);--六位选手抢答输入 shuma:out std_logic_vector(3 downto 0));--主数码管 end anjian ;

architecture one of anjian is begin

process(AIN6,rst)

variable temp: std_logic_vector(3 downto 0); begin

if rst='1' then

if AIN6="000000" then temp:="0000";

elsif AIN6="000001" then temp:="0001" ; elsif AIN6="000010" then temp:="0010" ; elsif AIN6="000100" then temp:="0011" ; elsif AIN6="001000" then temp:="0100" ; elsif AIN6="010000" then temp:="0101" ; elsif AIN6="100000" then temp:="0110" ; else null; end if; end if;

shuma

3.3 超前抢答犯规模块

3.3.1超前抢答犯规模块原理图

chaoqian

clk1speak

rst

shuma1[3..0]AIN6[6..1]

shuma2[3..0] shuma3[3..0] shuma4[3..0] shuma5[3..0] shuma6[3..0]

--1 --2 --3 --4 --5 --6

3.3.2超前抢答犯规模块VHDL程序设计

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity chaoqian is

port (clk1,rst: in std_logic;

AIN6:in std_logic_vector(6 downto 1); speak : out std_logic;

shuma1,shuma2,shuma3:out std_logic_vector(3 downto 0); shuma4,shuma5,shuma6:out std_logic_vector(3 downto 0)); end chaoqian;

architecture one of chaoqian is

signal abc:std_logic_vector(6 downto 0); begin

abc

variable tepm: std_logic_vector(3 downto 0); begin

case abc is

when "0000001"=>shuma1

when "0000010"=>shuma1

when "0000100"=>shuma1

when "0001000"=>shuma1

when "0010000"=>shuma1

when "0100000"=>shuma1

when "0000011"=>shuma1

when "0000101"=>shuma1

when "0001001"=>shuma1

when "0010001"=>shuma1

when "0100001"=>shuma1

when "0000110"=>shuma1

when "0001010"=>shuma1

when "0010010"=>shuma1

when "0100010"=>shuma1

when "0001100"=>shuma1

when "0010100"=>shuma1

when "0100100"=>shuma1

when "0011000"=>shuma1

when "0101000"=>shuma1

when "0110000"=>shuma1

when "0000111"=>shuma1

when "0001011"=>shuma1

when "0010011"=>shuma1

when "0100011"=>shuma1

when "0001101"=>shuma1

when "0010101"=>shuma1

when "0100101"=>shuma1

when "0011001"=>shuma1

when "0101001"=>shuma1

when "0110001"=>shuma1

when "0001110"=>shuma1

when "0010110"=>shuma1

when "0100110"=>shuma1

when "0011010"=>shuma1

when "0101010"=>shuma1

when "0110010"=>shuma1

when "0011100"=>shuma1

when "0101100"=>shuma1

when "0110100"=>shuma1

when "0111000"=>shuma1

when "0111100"=>shuma1

when "0111010"=>shuma1

when "0110110"=>shuma1

when "0101110"=>shuma1

when "0011110"=>shuma1

when "0111001"=>shuma1

when "0110101"=>shuma1

when "0101101"=>shuma1

when "0011101"=>shuma1

when "0110011"=>shuma1

when "0101011"=>shuma1

when "0011011"=>shuma1

when "0100111"=>shuma1

when "0010111"=>shuma1

when "0001111"=>shuma1shuma1

when "0111101"=>shuma1shuma1shuma1shuma1shuma1shuma1 shuma1

shuma4

3.4 抢答成功报警模块

3.4.1抢答成功报警模块原理图

qiangdabao

rstclk1

AIN6[6..1]speak

3.4.2抢答成功报警模块VHDL程序设计[5]

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity qiangdabao is

port (rst,clk1: in std_logic;

AIN6: in std_logic_vector(6 downto 1);

speak : out std_logic);

end qiangdabao;

architecture one of qiangdabao is begin

process(rst,AIN6(1),AIN6(2),AIN6(3),AIN6(4),AIN6(5),AIN6(6)) begin

if (rst='1') and ((AIN6(1) or AIN6(2) or AIN6(3) or AIN6(4) or AIN6(5) or AIN6(6))='1')

then speak

4 六人抢答器电路系统仿真及功能分析与调试

4.1 分立模块的仿真

4.1.1二十秒倒计时模块的仿真 (1)波形仿真

将所编写的二十秒倒计时模块daojishi的程序设为工程,选用Altera公司的Cyclone系列中的EPIC6Q240C8为目标芯片进行仿真。

仿真结果如下图:

(2)模块功能分析

当抢答开始后(rst为1),若二十秒内无人抢答,则报警灯亮(cout为1),同时蜂鸣器进行报警(speak的输出频率为clk1的频率),综上可得二十秒倒计时并超时报警的功能要求。

4.1.2抢答成功选手按键模块的仿真 (1)波形仿真

将编写的抢答成功选手按键模块anjian的程序设为工程,选用Altera公司的Cyclone系列中的EPIC6Q240C8为目标芯片进行仿真。

仿真结果如下图:

(2)模块功能分析

抢答开始后,各位选手可进行抢答,其中最先抢答的选手的台号将显示于数码管shuma上,从仿真波形图上我们可以看出当1号选手最先抢答后,其它选手再按抢答键无效,显示台只显示1号选手的台号。 4.1.3超前抢答犯规模块的仿真 (1)波形仿真

将编写的超前抢答犯规模块chaoqian的程序设为工程,选用Altera公司的Cyclone系列中的EPIC6Q240C8为目标芯片进行仿真。

仿真结果如下图9:

(2)模块功能分析

当开始键为0(未开始)时,无论哪位选手抢答即为超前抢答犯规,其台号将分别显示于各自的数码管上,同时蜂鸣器进行报警。 4.1.4抢答成功报警模块 (1)波形仿真

将编写的抢答成功报警模块qiangdabao的程序设为工程,选用Altera公司的Cyclone系列中的EPIC6Q240C8为目标芯片进行仿真。

仿真结果如下图10:

(2)模块功能分析

由仿真图我们可以看出:当开始抢答后,只要有人抢答成功,蜂鸣器就会对其进行报警,表示抢答结束,系统复位后即可进行下一轮的抢答。

4.2 总体设计模块的仿真 (1) 波形仿真

利用顶层原理图创建工程,将各分立模块的程序添入工程打包,将所编写的二十秒倒计时模块daojishi的程序设为工程,选用Altera公司的Cyclone系列中的EPIC6Q240C8为目标芯片进行仿真。

仿真结果如下图11:

(2)功能分析

由仿真图我们可以清楚地看到超前抢答选手的台号会依次显示于与各自相对应的数码管上,并伴有报警提示,抢答开始后,第一位抢答成功的选手台号将显示于主数码管shuma上,其它选手再抢答则无效。

5 实验设备和器件

(1) 计算机一台

(2) EDA/SOP实验开发系统GW48-PK2 1套 (3) QuartusⅡ6.0开发软件一套

6 引脚锁定和下载硬件测试及实验结果

6.1 引脚锁定

选定NO.5电路结构,引脚锁定如下图所示:

6.2 下载和硬件测试及实验结果

我们采用的是杭州康芯电子有限公司生产的GW48系列/SOPC/EDA实验开发系统,FPGA目标芯片型号为Altera公司的Cyclone系列中的EPIC6Q240C8。选择实验电路结构图NO.5,使CLK1与CLKOCK5相接(接受1024Hz时钟频率),CLK 与CLOCK0

接(接受1Hz时钟频率),报警输出接SPEAK,当有人犯规或抢答成功或是抢答超时,蜂鸣器会发出嘀嘀嘀的报警声。六位选手分别对应实验箱上的1~6键,键7为抢答开始键,当未按下键7就进行抢答则为超前犯规,按下后二十秒倒计时开始,选手进行抢答,按实验箱上的复位键则可重新开始下一轮的抢答。当有人抢答成功或犯规抢答时,数码管会显示抢答成功者和犯规选手的台号。 7 参考文献

[1] 潘松.EDA技术与VHDL(第2版).北京:清华大学出版社,2007 [2] 李宗伯译.VHDL设计表示和综合.北京:机械工业出版社,2002 [3] 王金明.数字系统设计与Verilog HDL.北京:电子工业出版社,2002 [4] 王锁萍.电子设计自动化教程.成都:电子科技大学出版社,2000 [5] 徐志军.CPLD/FPGA的开发与应用.北京:电子工业出版社,2002

8 心得体会

课程设计是针对某一理论课程的要求,对学生进行综合性实践训练的实践教学环节,可以提高学生运用课程中所学的理论知识与实践紧密结合,独立地解决实际问题的能力。在这次课程设计过程中使我从中学到许多以前在课本和课堂上所无法学到的,特别是在课程设计过程中查找资料的过程中从中学到许多以前在课本和课堂上所无法学到的并从中体会到许多的乐趣,从而丰富了自己,使自己无论是上课时还是在课余都感到很充实。在本次课程设计的过程中,曾得到过老师与几位同学的悉心指导与帮助,才使得我们的设计非常圆满的完成,在此对他们表示我们最衷心的感谢,谢谢你们!

因学习知识的能力和时间有限,并且此次EDA课程设计对于我们来说还只是初体验,因此在本次的课程设计过程中,难免存在错误,恳请老师给以批评指正,并再次感谢曾帮助过我们的老师和同学。

附录

顶层模块原理图如下图所示:

湖南人文科技学院

课程设计报告

课程名称:

设计题目: 六人抢答器

系 别: 通信与控制工程系

专 业: 电子信息工程 班 级: 电子信息二班 学生姓名: 鄢卫 张幸 学 号: 08409228 08409226 起止日期: 2011年06月14日~2011年06月26日 指导教师: 姚 毅 教研室主任: 侯海良

摘 要

本次设计在EDA开发平台QUARTUSⅡ6.0上利用VHDL语言设计六人抢答器电路。电路中设有六个抢答键,可供六人同时抢答;我们利用一个二十进制计数器,将其输入频率设定为一赫兹,成功实现了二十秒倒计时的功能;我们利用VHDL语言中的IF和CASE语句结合空操作语句NULL实现开始抢答与超前抢答的区别;各个模块配以一时钟频率由蜂鸣器输出可实现抢答成功、超前抢答犯规、超时抢答等各种情况的报警效果;本设计采用的是杭州康芯电子有限公司生产的GW48系列/SOPC/EDA实验开发系统,FPGA目标芯片型号为Altera公司的Cyclone系列中的EPIC6Q240C8。芯片配置成功后锁定引脚下载即可进行硬件测试:选择实验电路结构图NO.5,使CLK1与CLKOCK5相接(接受1024Hz时钟频率),CLK 与CLOCK0相接(接受1Hz时钟频率),报警输出接SPEAK,六位选手分别对应实验箱上的1~6键,键7为抢答开始键,当其未按下就进行抢答则为超前犯规,按下后二十秒倒计时开始,选手进行抢答,按实验箱上的复位键则可重新开始下一轮的抢答。

关键词:六人抢答器;数码显示;信号封锁;犯规报警。

目 录

设计要求 .................................................................................................................................... 1 1 总体设计方案论论证与对比 ................................................................................................ 1

1.1 方案一 ......................................................................................................................... 1 1.2 方案二 ......................................................................................................................... 1 2顶层电路VHDL程序设计 .................................................................................................... 2 3 单元模块程序设计 ................................................................................................................ 5

3.1 二十秒倒计时模块 ..................................................................................................... 5 3.2 抢答成功选手按键模块 ............................................................................................. 6 3.3 超前抢答犯规模块 ..................................................................................................... 7 3.4 抢答成功报警模块 ................................................................................................... 11 4 六人抢答器电路系统仿真及功能分析与调试 .................................................................. 12

4.1 分立模块的仿真 ....................................................................................................... 12 4.2 总体设计模块的仿真 ............................................................................................... 14 5 实验设备和器件 .................................................................................................................. 15 6 引脚锁定和下载硬件测试及实验结果 .............................................................................. 15

6.1 引脚锁定 ................................................................................................................... 15 6.2 下载和硬件测试及实验结果 ................................................................................... 16 7 参考文献 .............................................................................................................................. 17 8 心得体会 .............................................................................................................................. 17 附录 .......................................................................................................................................... 18

六人抢答器

设计要求

抢答台数为6;具有抢答开始后20秒倒计时,20秒倒计时后六人抢答显示超时,并报警;能显示超前抢答台号并显示犯规报警;系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各路抢答信号封锁,同时铃声响起,直至该路按键松开,显示牌显示该路抢答台号。

1 总体设计方案论论证与对比

1.1 方案一

该方案方框图如图1:

在该方案中,由二十秒倒计时模块、抢答鉴别模块、锁存器模块等模块组成[3]。蜂鸣器和数码管分别起报警和显示台号的作用。但该方案中的数码管显示是由七段显示器的形式来显示台号的,由于实验箱电路结构与按键数目的限定,使得我们没有采用该方案。

1.2 方案二

该方案方框图如图2:

此方案中整个电路主要由超前抢答判别模块、二十秒倒计时模块、抢答成功按键模块、抢答报警模块四个模块组成[4]。其台号的显示都是将信号送入译码器译码之后再由数码管显示出来,结合前面六位选手的按键及开始键可得实验箱上模式5的电路结构满足硬件测试的要求。所以我们选定该方案来进行我们这次的课程设计。

2顶层电路VHDL程序设计

顶层电路VHDL程序如下 USE ieee.std_logic_1164.all; LIBRARY work; ENTITY jinaghu IS

port (rst : IN STD_LOGIC;--抢答开始键

clk : IN STD_LOGIC;--计数器时钟输入 clk1 : IN STD_LOGIC;--蜂鸣器时钟输入

AIN : IN STD_LOGIC_VECTOR(6 downto 1);--选手按键 speak : OUT STD_LOGIC;--蜂鸣器 cout : OUT STD_LOGIC; --超时抢答报警

shuma : OUT STD_LOGIC_VECTOR(3 downto 0);--抢答成功显示台号数码管

shuma1 : OUT STD_LOGIC_VECTOR(3 downto 0);

shuma2 : OUT STD_LOGIC _VECTOR(3 downto 0); shuma3 : OUT STD_LOGIC_VECTOR(3 downto 0);

shuma4 : OUT STD_LOGIC_VECTOR(3 downto 0); shuma5 : OUT STD_LOGIC_VECTOR(3 downto 0);

shuma6 : OUT STD_LOGIC_VECTOR(3 downto 0));

END jinaghu;

ARCHITECTURE bdf_type OF jinaghu IS component anjian --元件U1例化 PORT(rst : IN STD_LOGIC; AIN6 : IN STD_LOGIC_VECTOR(6 downto 1);

shuma : OUT STD_LOGIC_VECTOR(3 downto 0));

end component;

component chaoqian --元件U2例化 PORT(clk1 : IN STD_LOGIC; rst : IN STD_LOGIC;

AIN6 : IN STD_LOGIC_VECTOR(6 downto 1); speak : OUT STD_LOGIC;

shuma1 : OUT STD_LOGIC_VECTOR(3 downto 0); shuma2 : OUT STD_LOGIC_VECTOR(3 downto 0); shuma3 : OUT STD_LOGIC_VECTOR(3 downto 0); shuma4 : OUT STD_LOGIC_VECTOR(3 downto 0); shuma5 : OUT STD_LOGIC_VECTOR(3 downto 0);

shuma6 : OUT STD_LOGIC_VECTOR(3 downto 0) );

end component;

component daojishi --元件U3例化 PORT(clk : IN STD_LOGIC; clk1 : IN STD_LOGIC; rst : IN STD_LOGIC;

shuma : IN STD_LOGIC_VECTOR(3 downto 0); speak : OUT STD_LOGIC;

cout : OUT STD_LOGIC);

end component;

component qiangdabao --元件U3例化 PORT(rst : IN STD_LOGIC; clk1 : IN STD_LOGIC;

AIN6 : IN STD_LOGIC_VECTOR(6 downto 1);

speak : OUT STD_LOGIC);

end component;

signal SYNTHESIZED_WIRE_17 : STD_LOGIC_VECTOR(3 downto 0); signal SYNTHESIZED_WIRE_1 : STD_LOGIC; signal SYNTHESIZED_WIRE_2 : STD_LOGIC; signal SYNTHESIZED_WIRE_3 : STD_LOGIC; signal SYNTHESIZED_WIRE_4 : STD_LOGIC;

signal SYNTHESIZED_WIRE_18 : STD_LOGIC_VECTOR(3 downto 0); signal SYNTHESIZED_WIRE_19 : STD_LOGIC_VECTOR(3 downto 0); signal SYNTHESIZED_WIRE_20 : STD_LOGIC_VECTOR(3 downto 0); BEGIN

shuma3

shuma30

b2v_inst : anjianPORT MAP(rst =>rst, AIN6 => AIN, shuma => SYNTHESIZED_WIRE_17); --参数传递映射语句

b2v_inst1 : chaoqian PORT MAP(clk1 => clk1, rst => rst, AIN6 => AIN,

speak => SYNTHESIZED_WIRE_1, shuma1 => SYNTHESIZED_WIRE_18, shuma2 => SYNTHESIZED_WIRE_19, shuma3 => SYNTHESIZED_WIRE_20, shuma4 => shuma4, shuma5 => shuma5, shuma6 => shuma6);

b2v_inst2 : daojishi PORT MAP(clk => clk, clk1 => clk1, rst => rst,

shuma => SYNTHESIZED_WIRE_17, speak => SYNTHESIZED_WIRE_3, cout

=> cout);

b2v_inst3 : qiangdabao PORT MAP(rst => rst, clk1 => clk1, AIN6 => AIN,

speak => SYNTHESIZED_WIRE_2);

SYNTHESIZED_WIRE_4

3 单元模块程序设计

根据顶层原理图,共分为anjian模块、chaoqian模块、daojishi模块、qiangdabao模块这四个模块。其中anjian模块的功能是锁定抢答成功的选手的台号并显示,chaoqian模块可将超前抢答了的选手台号显示出来并伴随报警,daojishi模块进行二十秒倒计时并显示超时报警,qiangdabao模块主要是为抢答成功之后提供报警功能[2]。

3.1 二十秒倒计时模块

3.1.1二十秒倒计时模块原理图

daojishi

clkclk1rst

shuma[3..0]

speak

cout

3.1.2二十秒倒计时模块VHDL程序设计[1]

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity daojishi is

port (clk,clk1,rst: in std_logic;

shuma: inout std_logic_vector(3 downto 0);--主数码管 speak : out std_logic;

cout: inout std_logic);--进位,可用于超时显示 end daojishi;

architecture one of daojishi is begin

process(clk,rst)

variable cqi : std_logic_vector(7 downto 0); begin

if (rst='1') and (clk'event and clk='1') then if cqi'0'); end if; end if;

if (cqi>20) and (cqi

if (cout='1') and (shuma="0000") and (rst='1')then speak

end process; end one;

3.2 抢答成功选手按键模块

3.2.1抢答成功选手按键模块原理图

anjian

rst

shuma[3..0]

AIN6[6..1]

3.2.2 抢答成功选手按键模块VHDL程序设计

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity anjian is

port (rst: in std_logic;

AIN6: in std_logic_vector(6 downto 1);--六位选手抢答输入 shuma:out std_logic_vector(3 downto 0));--主数码管 end anjian ;

architecture one of anjian is begin

process(AIN6,rst)

variable temp: std_logic_vector(3 downto 0); begin

if rst='1' then

if AIN6="000000" then temp:="0000";

elsif AIN6="000001" then temp:="0001" ; elsif AIN6="000010" then temp:="0010" ; elsif AIN6="000100" then temp:="0011" ; elsif AIN6="001000" then temp:="0100" ; elsif AIN6="010000" then temp:="0101" ; elsif AIN6="100000" then temp:="0110" ; else null; end if; end if;

shuma

3.3 超前抢答犯规模块

3.3.1超前抢答犯规模块原理图

chaoqian

clk1speak

rst

shuma1[3..0]AIN6[6..1]

shuma2[3..0] shuma3[3..0] shuma4[3..0] shuma5[3..0] shuma6[3..0]

--1 --2 --3 --4 --5 --6

3.3.2超前抢答犯规模块VHDL程序设计

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity chaoqian is

port (clk1,rst: in std_logic;

AIN6:in std_logic_vector(6 downto 1); speak : out std_logic;

shuma1,shuma2,shuma3:out std_logic_vector(3 downto 0); shuma4,shuma5,shuma6:out std_logic_vector(3 downto 0)); end chaoqian;

architecture one of chaoqian is

signal abc:std_logic_vector(6 downto 0); begin

abc

variable tepm: std_logic_vector(3 downto 0); begin

case abc is

when "0000001"=>shuma1

when "0000010"=>shuma1

when "0000100"=>shuma1

when "0001000"=>shuma1

when "0010000"=>shuma1

when "0100000"=>shuma1

when "0000011"=>shuma1

when "0000101"=>shuma1

when "0001001"=>shuma1

when "0010001"=>shuma1

when "0100001"=>shuma1

when "0000110"=>shuma1

when "0001010"=>shuma1

when "0010010"=>shuma1

when "0100010"=>shuma1

when "0001100"=>shuma1

when "0010100"=>shuma1

when "0100100"=>shuma1

when "0011000"=>shuma1

when "0101000"=>shuma1

when "0110000"=>shuma1

when "0000111"=>shuma1

when "0001011"=>shuma1

when "0010011"=>shuma1

when "0100011"=>shuma1

when "0001101"=>shuma1

when "0010101"=>shuma1

when "0100101"=>shuma1

when "0011001"=>shuma1

when "0101001"=>shuma1

when "0110001"=>shuma1

when "0001110"=>shuma1

when "0010110"=>shuma1

when "0100110"=>shuma1

when "0011010"=>shuma1

when "0101010"=>shuma1

when "0110010"=>shuma1

when "0011100"=>shuma1

when "0101100"=>shuma1

when "0110100"=>shuma1

when "0111000"=>shuma1

when "0111100"=>shuma1

when "0111010"=>shuma1

when "0110110"=>shuma1

when "0101110"=>shuma1

when "0011110"=>shuma1

when "0111001"=>shuma1

when "0110101"=>shuma1

when "0101101"=>shuma1

when "0011101"=>shuma1

when "0110011"=>shuma1

when "0101011"=>shuma1

when "0011011"=>shuma1

when "0100111"=>shuma1

when "0010111"=>shuma1

when "0001111"=>shuma1shuma1

when "0111101"=>shuma1shuma1shuma1shuma1shuma1shuma1 shuma1

shuma4

3.4 抢答成功报警模块

3.4.1抢答成功报警模块原理图

qiangdabao

rstclk1

AIN6[6..1]speak

3.4.2抢答成功报警模块VHDL程序设计[5]

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity qiangdabao is

port (rst,clk1: in std_logic;

AIN6: in std_logic_vector(6 downto 1);

speak : out std_logic);

end qiangdabao;

architecture one of qiangdabao is begin

process(rst,AIN6(1),AIN6(2),AIN6(3),AIN6(4),AIN6(5),AIN6(6)) begin

if (rst='1') and ((AIN6(1) or AIN6(2) or AIN6(3) or AIN6(4) or AIN6(5) or AIN6(6))='1')

then speak

4 六人抢答器电路系统仿真及功能分析与调试

4.1 分立模块的仿真

4.1.1二十秒倒计时模块的仿真 (1)波形仿真

将所编写的二十秒倒计时模块daojishi的程序设为工程,选用Altera公司的Cyclone系列中的EPIC6Q240C8为目标芯片进行仿真。

仿真结果如下图:

(2)模块功能分析

当抢答开始后(rst为1),若二十秒内无人抢答,则报警灯亮(cout为1),同时蜂鸣器进行报警(speak的输出频率为clk1的频率),综上可得二十秒倒计时并超时报警的功能要求。

4.1.2抢答成功选手按键模块的仿真 (1)波形仿真

将编写的抢答成功选手按键模块anjian的程序设为工程,选用Altera公司的Cyclone系列中的EPIC6Q240C8为目标芯片进行仿真。

仿真结果如下图:

(2)模块功能分析

抢答开始后,各位选手可进行抢答,其中最先抢答的选手的台号将显示于数码管shuma上,从仿真波形图上我们可以看出当1号选手最先抢答后,其它选手再按抢答键无效,显示台只显示1号选手的台号。 4.1.3超前抢答犯规模块的仿真 (1)波形仿真

将编写的超前抢答犯规模块chaoqian的程序设为工程,选用Altera公司的Cyclone系列中的EPIC6Q240C8为目标芯片进行仿真。

仿真结果如下图9:

(2)模块功能分析

当开始键为0(未开始)时,无论哪位选手抢答即为超前抢答犯规,其台号将分别显示于各自的数码管上,同时蜂鸣器进行报警。 4.1.4抢答成功报警模块 (1)波形仿真

将编写的抢答成功报警模块qiangdabao的程序设为工程,选用Altera公司的Cyclone系列中的EPIC6Q240C8为目标芯片进行仿真。

仿真结果如下图10:

(2)模块功能分析

由仿真图我们可以看出:当开始抢答后,只要有人抢答成功,蜂鸣器就会对其进行报警,表示抢答结束,系统复位后即可进行下一轮的抢答。

4.2 总体设计模块的仿真 (1) 波形仿真

利用顶层原理图创建工程,将各分立模块的程序添入工程打包,将所编写的二十秒倒计时模块daojishi的程序设为工程,选用Altera公司的Cyclone系列中的EPIC6Q240C8为目标芯片进行仿真。

仿真结果如下图11:

(2)功能分析

由仿真图我们可以清楚地看到超前抢答选手的台号会依次显示于与各自相对应的数码管上,并伴有报警提示,抢答开始后,第一位抢答成功的选手台号将显示于主数码管shuma上,其它选手再抢答则无效。

5 实验设备和器件

(1) 计算机一台

(2) EDA/SOP实验开发系统GW48-PK2 1套 (3) QuartusⅡ6.0开发软件一套

6 引脚锁定和下载硬件测试及实验结果

6.1 引脚锁定

选定NO.5电路结构,引脚锁定如下图所示:

6.2 下载和硬件测试及实验结果

我们采用的是杭州康芯电子有限公司生产的GW48系列/SOPC/EDA实验开发系统,FPGA目标芯片型号为Altera公司的Cyclone系列中的EPIC6Q240C8。选择实验电路结构图NO.5,使CLK1与CLKOCK5相接(接受1024Hz时钟频率),CLK 与CLOCK0

接(接受1Hz时钟频率),报警输出接SPEAK,当有人犯规或抢答成功或是抢答超时,蜂鸣器会发出嘀嘀嘀的报警声。六位选手分别对应实验箱上的1~6键,键7为抢答开始键,当未按下键7就进行抢答则为超前犯规,按下后二十秒倒计时开始,选手进行抢答,按实验箱上的复位键则可重新开始下一轮的抢答。当有人抢答成功或犯规抢答时,数码管会显示抢答成功者和犯规选手的台号。 7 参考文献

[1] 潘松.EDA技术与VHDL(第2版).北京:清华大学出版社,2007 [2] 李宗伯译.VHDL设计表示和综合.北京:机械工业出版社,2002 [3] 王金明.数字系统设计与Verilog HDL.北京:电子工业出版社,2002 [4] 王锁萍.电子设计自动化教程.成都:电子科技大学出版社,2000 [5] 徐志军.CPLD/FPGA的开发与应用.北京:电子工业出版社,2002

8 心得体会

课程设计是针对某一理论课程的要求,对学生进行综合性实践训练的实践教学环节,可以提高学生运用课程中所学的理论知识与实践紧密结合,独立地解决实际问题的能力。在这次课程设计过程中使我从中学到许多以前在课本和课堂上所无法学到的,特别是在课程设计过程中查找资料的过程中从中学到许多以前在课本和课堂上所无法学到的并从中体会到许多的乐趣,从而丰富了自己,使自己无论是上课时还是在课余都感到很充实。在本次课程设计的过程中,曾得到过老师与几位同学的悉心指导与帮助,才使得我们的设计非常圆满的完成,在此对他们表示我们最衷心的感谢,谢谢你们!

因学习知识的能力和时间有限,并且此次EDA课程设计对于我们来说还只是初体验,因此在本次的课程设计过程中,难免存在错误,恳请老师给以批评指正,并再次感谢曾帮助过我们的老师和同学。

附录

顶层模块原理图如下图所示:


相关内容

  • 礼仪风采大赛策划方案
  • 活动背景及活动意义:风采礼仪大赛是我校校学生会女生部主办的一个品牌活动,此次与设计艺术学院公关部共同举办,意义在于普及礼仪知识.提高全校学生的个人素质和修养,寻找.塑造长沙理工大学形象气质好.综合素质强的大学生,为同学们打造一个展示自己风采的舞台,希望大家能在比赛的过程中学会与人交往和合作的大学生礼 ...

  • 迎新晚会创意点
  • 迎新晚会创意点 一.开场 1.先由短片引出,短片可以由校园里随机找到的同学说晚会主题,剪辑在一起.主持人出场后再引领全场一起喊出口号.可快速调动气氛 2.开场节目应是比较high的,能与观众产生共鸣的,比如演员可以从观众席走出,更能调动现场气氛. 二.节目 1.创意走秀:用报纸或废品做成时装,让模特 ...

  • 大学趣味活动策划书
  • 13工商管理班户外活动策划书 现在大学生大部分都有自己的电脑了,在大一的时候还可以经常出去活动一下,可是现在的我们几乎没有同学去活动,整天就知道待在宿舍电脑旁边,自己干自己的事情. 这样下去的话,我们的思想境界是高了,在网络上学到的东西真的有不少,可是我们的身体素质呢,电脑紫外线是最摧残人的身体的了 ...

  • 中国大象六人转椅行业发展研究报告
  • 核心内容提要 市场规模(Market Size) 市场规模(Market Size),即市场容量,本报告里,指的是目标产品或行业的整体规模,通常用产值.产量.消费量.消费额等指标来体现市场规模.千讯咨询对市场规模的研究,不仅要对过去五年的市场规模进行调研摸底,同时还要对未来五年行业市场规模进行预测分 ...

  • 团委活动策划
  • 外国语学院 分团委 策 划 书 团委晚会策划书 活动简介 一.主题:团委大家庭的快乐生活 二.目的及意义:通过团委内部成员及集体的展示,加强团委成员的 素质,提高团委内部交流,相互增进友谊,加强联系.. 三.时间:12月24日 四.地点:经法楼 五.参与者:分团委全体成员 活动安排 一.活动筹备 1 ...

  • 第7课戊戌变法教学设计
  • 第7课 戊戌变法 教学设计 [授课教师] 郑少燕 [授课类型] 新授课 [教学目标] 1.知识与技能 ①知识目标:使学生掌握戊戌变法的主要内容,分析戊戌变法失败原因. ②能力目标: a.引导学生思考分析和理解维新变法运动兴起的背景,归纳和总结康.梁维新变法的主要活动. b.通过讨论"维新变 ...

  • EDA四人抢答器实验设计报告
  • EDA 实习-抢答器设计报告 课题名称:EDA 实习--抢答器 专业班级:2011 级电子班 姓 名:侯凤萍 陈亮 指导老师: 贺涛 2012 年 12 月 21 日 -1- 目录 一:EDA 抢答器设计的目的及意义------3 二:设计整体思路------------.3 2.1 设计要求--- ...

  • 班级活动策划书
  • ㈠ 活动策划书 我的青春,我做主 --班级[雨母山烧烤]活动策划书 主办班级:南华大学信管101班 策划人:牟超 活动目的: 培养班级同学的团队精神和协作的能力,提高班集体凝聚力,增进同学间的的友谊,丰富大家的课余生活. [活动名称]:大家一起来,我要我精彩. [活动主题]:我的青春,我做主--班级 ...

  • 三路智力竞赛抢答器设计实验报告
  • 工程系 2011级计算机应用技术专业 <数字电子>课程设计报告 (2011/2012学年 第二学期) 设计题目: 三路智力竞赛抢答器设计 制 作 人:舒乐 实 验 者:舒乐 指导老师:杨莉 实验时间:2012/6/12 报告制作时间:2012/6/13 ☆版权所有☆☆仿冒必究☆ 殷超浩 ...