FPGA设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上海电力学院

课程设计报告

课程设计名称:FPGA设计实践

设计课题名称:抢答器设计

班级:2007141 指导老师:赵倩、叶波姓名:高文飞学号:20072672 成绩:设计时间:19周设计地点:集成电路设计实验室

计算机信息与工程学院

抢答器设计报告

一、设计目的:

本课程的授课对象是电子科学与技术专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相结合的重要环节。

本课程有助于培养学生的数字电路设计方法、掌握模块划分、工程设计思想与电路调试能力,为以后从事各种电路设计、制作与调试工作打下坚实的基础

二、实验器材和工具软件:

PC机一台、QuartusII软件、DE2板。

三、设计内容:

(1)抢答器可容纳四组12位选手,每组设置三个抢答按钮供选手使用。

(2)电路具有第一抢答信号的鉴别和锁存功能。在主持人将系统复位并发出抢答指令后,蜂鸣器提示抢答开始,时显示器显示初始时间并开始倒计时,若参赛选手按抢答按钮,则该组指示灯亮并用组别显示器显示选手的组别,同时蜂鸣器发出“嘀嘟”的双音频声。此时,电路具备自锁功能,使其它抢答按钮不起作用。

(3)如果无人抢答,计时器倒计时到零,蜂鸣器有抢答失败提示,主持人可以按复位键,开始新一轮的抢答。

(4)设置犯规功能。选手在主持人按开始键之前抢答,则认为犯规,犯规指示灯亮和显示出犯规组号,且蜂鸣器报警,主持人可以终止抢答执行相应惩罚。

(5)抢答器设置抢答时间选择功能。为适应多种抢答需要,系统设

有10秒、15秒、20秒和3O秒四种抢答时间选择功能。

四、设计具体步骤:

首先把系统划分为组别判断电路模块groupslct,犯规判别与抢答信号判别电路模块fgqd,分频电路模块fpq1,倒计时控制电路模块djs,显示时间译码电路模块num_7seg模块,组别显示模块showgroup 模块这六个模块,各模块设计完成后,用电路原理图方法将各模块连接构成系统。

各模块功能及代码:

1、组别判别模块

(1)功能:可容纳四组12位选手,每组设置三个抢答按钮供选手使用。若参赛选手按抢答按钮,则输出选手的组别。此时,电路具备自锁功能,使其它抢答按钮不起作用。

(2)原理:在每次时钟(50MHz)上升沿时判断按键,将按下按键的组别赋给一内部信号“h”(没有按键按下时h=“0000”),由于人的反应速度远远小于50MHz,所以可选出最先按下按键的那组。

当复位键按下时(clr=‘1’)输出g=“0000”并且将另一内部信号rst 置1。当复位后(rst=‘1’)有按键按下时将h的值给输出信号g,并且将标志信号rst清零。这样就实现最快按键组别的输出与组别锁存功能。

(3)程序代码:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity groupslct is

port(

clock,clr:in std_logic;

a,b,c,d:in std_logic_vector(2 downto 0);

g:out std_logic_vector(3 downto 0)

);

end groupslct;

architecture behave_groupslct of groupslct is

signal h : std_logic_vector(3 downto 0);

signal rst : std_logic;

begin

h<="0000" when (a="000" and b="000" and c="000" and d="000") else

"0001" when (a/="000" and b="000" and c="000" and d="000") else

"0010" when (a="000" and b/="000" and c="000" and d="000") else

"0100" when (a="000" and b="000" and c/="000" and d="000") else

"1000" when (a="000" and b="000" and c="000" and d/="000") else

"0000";

process

begin

wait on clock until rising_edge(clock);

if clr='1' then

rst<='1';

g<="0000";

end if;

if h/="0000" then

if rst='1' then

g<=h;

rst<='0';

end if;

end if;

end process;

end behave_groupslct;

2、犯规判别与抢答信号判别模块

(1)功能:若参赛选手在主持人按开始键之后按抢答按钮,则使该组指示灯亮并输出选手的组别,同时蜂鸣器发出响声。

选手在主持人按开始键之前抢答,则认为犯规,犯规指示灯亮并输出犯规组号,且蜂鸣器报警。

(2)原理:c[3..0]接组别判别模块的g[3..0],即此时c为按键组别的信息。go接主持人的“开始”按键。由于无论是在正常情况还是犯规情况下按下按键,都必须显示按键的组别且蜂鸣器响,所以将c的值给hex以输出按键组别,且在有按键按下(c/="0000")时输出fm为‘1’,否则为‘0’。若在开始之前有按键按下时,即go='0'且c/="0000",输出ledfg为‘1’,否则为‘0’。若在开始之后有按键按下,将c的值给led,使该组指示灯亮,开始之前led输出“0000”。

(3)程序代码:

library ieee;

use ieee.std_logic_1164.all;

相关文档
最新文档