




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告课程设计名称: FPGA设计实践 设计课题名称: 抢答器设计设计 抢答器设计设计报告一、 设计目的:本课程的授课对象是电子科学与技术专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相结合的重要环节。本课程有助于培养学生的数字电路设计方法、掌握模块划分、工程设计思想与电路调试能力,为以后从事各种电路设计、制作与调试工作打下坚实的基础。二、 实验器材和工具软件:实验器材:PC机一台、DE2板;工作软件:QuartusII9.0。三、 设计内容:(1)抢答器可容纳四组12位选手,每组设置三个抢答按钮供选手使用。(2)电路具有第一抢答信号的鉴别和锁存功能。在主持人将系统复位并发出抢答指令后,蜂鸣器提示抢答开始,时显示器显示初始时间并开始倒计时,若参赛选手按抢答按钮,则该组指示灯亮并用组别显示器显示选手的组别,同时蜂鸣器发出“嘀嘟”的双音频声。此时,电路具备自锁功能,使其它抢答按钮不起作用。(3)如果无人抢答,计时器倒计时到零,蜂鸣器有抢答失败提示,主持人可以按复位键,开始新一轮的抢答。(4)设置犯规功能。选手在主持人按开始键之前抢答,则认为犯规,犯规指示灯亮和显示出犯规组号,且蜂鸣器报警,主持人可以终止抢答执行相应惩罚。(5)抢答器设置抢答时间选择功能。为适应多种抢答需要,系统设有10秒、15秒、20秒和3O秒四种抢答时间选择功能 。四、 设计具体步骤:具体的功能模块的实现:(一) 组别判断电路模块(1)实现功能:实现四组十二位选手的组别判断功能,每组设置三个抢答按钮。若选手成功抢答,则输出选手所在组别。同时电路自锁功能,使其它抢答按钮不起作用。如下图所示:(2)端口说明1)输入端a2.0:外接第一组三位选手的抢答按钮;b2.0:外接第二组三位选手的抢答按钮;c2.0:外接第三组三位选手的抢答按钮;d2.0:外接第四组三位选手的抢答按钮;clk:外接模块时钟信号;clr:外接模块复位按钮。2)输出端s3.0:抢答四组输出端。3)内部信号h:存放小组抢答信号。reset:复位功能。(3)原理:在每次时钟上升沿时判断按键,将扫描到的组别赋给内部信号“h”,若没有按键被按下,则h=“0000”;当复位按钮按下时,即clr=1,则输出s=“0000”并且将另一内部信号reset置1;当复位后,即reset=1,则当有按键按下时将h的值给输出信号s,并且将标志信号reset清零,完成按键组别的输出与组别锁存功能。(4)用VHDL语言实现如下:组别判断电路模块oroLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY oro IS PORT(a,b,c,d:IN STD_LOGIC_VECTOR(2 DOWNTO 0); -四组十二人输入端 s :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -四组输出端 clk,clr :IN STD_LOGIC );END oro;ARCHITECTURE behave_oro OF oro ISSIGNAL h : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL reset :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(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF clr=1 THEN reset=1; s=0000; -复位清零 END IF; IF h/=0000 THEN IF reset=1 THEN s=h; -选中小组输出 reset=0; END IF; END IF; END IF; END PROCESS; END behave_oro;(二) 犯规控制电路模块(1)实现功能:选手在主持人开始倒计时之前抢答,则认为犯规,犯规指示灯亮并输出犯规组号,且蜂鸣器报警。如下图所示:(2)端口说明1)输入端en:倒计时启动输入端;a3.0:按键组别的信息输入端;2)输出端s3.0: hex3.0:y:连接外部违规指示灯输出端;bell:连接外部蜂鸣器输出端;(3)原理:组别判别模块的s输入至a,则a为按键组别的信息;en接主持人的“开始”按键;由于无论是在正常情况还是犯规情况下按下按键,都必须显示按键的组别且蜂鸣器响,所以将a的值给hex以输出按键组别,且在有按键被按下,即a/=0000时,bell输出为1,否则为0;若在开始之前有按键按下,即en=0且a/=0000时,y输出为1,否则为0;若在开始之后有按键按下,将a的值给s,使该组指示灯亮,开始之前s输出“0000”。(4)用VHDL语言实现如下:-犯规控制电路模块WGLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY wg ISPORT( en :IN STD_LOGIC; a :in std_logic_vector(3 downto 0); s :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -led显示组别号 hex :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); y,bell:OUT STD_LOGIC); -犯规灯输出端,蜂鸣器输出端END wg;ARCHITECTURE behave_wg OF wg ISBEGIN hex=a; s=a WHEN en=1 ELSE 0000; y=1 WHEN en=0 AND a/=0000 ELSE 0; bell=1 WHEN a/=0000 ELSE 0;END behave_wg;(三) 抢答信号判别电路模块(1) 实现功能:将抢答到的组别信息显示在7段数码管上。如下图所示:(2)端口说明1)输入端s:抢答组别输入端;2)输出端ex:抢答组别号输出端。(3)原理: 数码管由7段显示输出,利用7个位的组合输出,可以形成0-9的数字对应显示。试验中所用到的为低电平有效,故此,输出0为亮,1为暗。(4)用VHDL语言实现如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY qd ISPORT(s :IN STD_LOGIC_VECTOR(3 DOWNTO 0); -抢答组别输入端 ex :OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -抢答组别号输出端END qd;ARCHITECTURE behave_qd OF qd IS BEGIN WITH s(3 DOWNTO 0) SELECT ex= 1111001 WHEN 0001 , -第一组 0100100 WHEN 0010 , -第二组 0110000 WHEN 0100 , -第三组 0011001 WHEN 1000 , -第四组 1111111 WHEN OTHERS; -没人选择END behave_qd;(四) 分频电路模块(1)实现功能:将抢答到的组别信息显示在7段数码管上。如下图所示:(2)端口说明1)输入端clkin:频率输入端;2)输出端clkout:频率输出端。(3)原理: 对一个2X分频的电路电路来说,counter上限是N=x-1。50MHz分频为1Hz频率时钟即每1秒亮一下(4)用VHDL语言实现如下:-分频电路模块DIVLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY div ISPORT(clkin : IN STD_LOGIC; clkout: OUT STD_LOGIC);END div;ARCHITECTURE behave_div OF div ISconstant N:Integer:=24999999; -50MHz分频为1Hz频率时钟即每1秒亮一下SIGNAL counter:Integer RANGE 0 TO N;SIGNAL clk:STD_LOGIC;BEGIN PROCESS(clkin) BEGIN IF RISING_EDGE(clkin)THEN IF counter=N THEN counter=0; clk= NOT clk; ELSE counter=counter+1; END IF; END IF; END PROCESS;clkout=clk;END behave_div;(五) 倒计时控制电路模块(1)实现功能:具有10秒、15秒、20秒和30秒四种抢答时间选择功能,并对所选择模式进行倒计,判断倒计时是否到0。如下图所示: (2)端口说明1)输入端clk:1Hz分频输入端;clr: 外接模块复位输入端;en:启动输入端;g:组别输入端;s:倒计时模式选择输入端;2)输出端q:倒计时显示当前时间输出端;t:倒计时到0后蜂鸣器警报输出端。(3)原理: clk接1Hz分频器,g接组别判别模块的输出s。通过判断s的值设置内部减法计数器的初始值q端输出当前计数值。当计数到0且g=“0000”时t输出高电平以驱动蜂鸣器,发出时间到的警报。(4)用VHDL语言实现如下:-倒计时控制电路模块DJSLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY djs ISPORT(clk,clr,en:IN STD_LOGIC; g :IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; s :IN STD_LOGIC_VECTOR(1 downto 0); q :BUFFER STD_LOGIC_VECTOR(4 downto 0); t :OUT STD_LOGIC); END djs;ARCHITECTURE behave_djs OF djs ISBEGIN PROCESS(clk,clr,s) BEGIN IF (clr=1) THEN IF (s=00) THEN q=01010; -10s ELSIF (s=01) THEN q=01111; -15s ELSIF (s=10) THEN q=10100; -20s ELSE q=11110; -30s END IF; ELSE IF RISING_EDGE(clk) THEN IF en=1 THEN q=q-1; IF (q=00000 AND g=0000) THEN t=1; ELSE t=0; END IF; END IF; END IF; END IF; END PROCESS;END behave_djs;(六) 显示译码电路模块(1)实现功能:倒计时时间在7段数码管上输出。如下图所示:(2)端口说明1)输入端din:倒计时时间输入端;2)输出端dout:倒计时时间输出端。(3)原理:数码管由7段显示输出,利用7个位的组合输出,可以形成0-9的数字对应显示。试验中所用到的为低电平有效,故此,输出0为亮,1为暗。(4)用VHDL语言实现如下:-显示译码电路模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY led ISPORT (din:IN STD_LOGIC_VECTOR(4 DOWNTO 0); dout:OUT STD_LOGIC_VECTOR(13 DOWNTO 0);END led;ARCHITECTURE behave_led OF led ISBEGIN WITH din(4 DOWNTO 0) SELECT dout=10000001000000 WHEN 00000 , -0 10000001111001 WHEN 00001 , -1 10000000100100 WHEN 00010 , -2 10000000110000 WHEN 00011 , -3 10000000011001 WHEN 00100 , -4 10000000010010 WHEN 00101 , -5 10000000000010 WHEN 00110 , -6 10000001111000 WHEN 00111 , -7 10000000000000 WHEN 01000 , -8 10000000010000 WHEN 01001 , -9 11110011000000 WHEN 01010 , -10 11110011111001 WHEN 01011 , -11 11110010100100 WHEN 01100 , -12 11110010110000 WHEN 01101 , -13 11110010011001 WHEN 01110 , -14 11110010010010 WHEN 01111 , -15 11110010000010 WHEN 10000 , -16 11110011111000 WHEN 10001 , -17 11110010000000 WHEN 10010 , -18 11110010010000 WHEN 10011 , -19 01001001000000 WHEN 10100 , -20 01001001111001 WHEN 10101 , -21 01001000100100 WHEN 10110 , -22 01001000110000 WHEN 10111 , -23 01001000011001 WHEN 11000 , -24 01001000010010 WHEN 11001 , -25 01001000000010 WHEN 11010 , -26 01001001111000 WHEN 11011 , -27 01001000000000 WHEN 11100 , -28 01001000010000 WHEN 11101 , -29 01100001000000 WHEN 11110 , -30 11111111111111 WHEN OTHERS; - END behave_led;(七) 蜂鸣器(1)实现功能:当倒计时倒计到0秒,或有人违规时,蜂鸣器响。如下图所示:(2)端口说明1)输入端 a:倒计时为0输入端;b:违规信号输入端;2)输出端sound:外接蜂鸣器输出端。(3)原理: 当a输入倒计时为0信号,或b输入违规信号时,蜂鸣器响。(4)用VHDL语言实现如下:-蜂鸣器控制电路模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity sound isport (a,b:in std_logic ; sound:out std_logic);end sound;architecture behave_sound of sound isbeginsound= a or b;end behave_sound;(八) 用原理图方法将各模块连接起来构成系统五、 设计收获以及存在的问题在这次课程设计中,我做的题目是抢答器的设计。我起初看到这个题目中有这么多的要求时感觉有点摸不着头脑,不知从哪里下手,但是在第一天查阅了大量相关资料后有了些许头绪,虽然那些资料中绝大部分的功能要求和我此次要做的要求是不一样的,但是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科级护理管理组织
- 重症超声右心功能评估
- 垃圾处理设施安全责任书废物处置与环境保护版
- 高科技园区场地租赁及配套设施建设合作协议
- 商业大厦清洁服务外包合同
- 高强度不锈钢驳接爪研发与市场推广协议
- 多元化餐饮业态合伙人合作协议范本
- 公共停车场场地使用与管理合同范本
- 民宿产业场地无偿使用协议
- 创新型产业园区厂房土地使用权转让合同
- 网络游戏代理合同通用版范文(2篇)
- SH/T 1485.4-1995工业用二乙烯苯中特丁基邻苯二酚含量的测定分光光度法
- GB/T 38807-2020超级奥氏体不锈钢通用技术条件
- GB/T 27773-2011病媒生物密度控制水平蜚蠊
- 质量风险识别项清单及防控措施
- 2022年石家庄交通投资发展集团有限责任公司招聘笔试试题及答案解析
- 中国华电集团公司信访事项处理程序
- 特种设备制造内审及管理评审资料汇编经典版
- EDI超纯水系统操作说明书
- 金属监督监理实施细则
- 2022年镇海中学提前招生模拟卷科学试卷
评论
0/150
提交评论