您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页太原理工大学EDAFPGA八路抢答器应用设计课程设计

太原理工大学EDAFPGA八路抢答器应用设计课程设计

来源:爱够旅游网
太原理工大学EDAFPGA八路抢答器应用设计课程设计

太原理工大学

CPLD/FPGA应用设计 课程设计

设计名称 八路抢答器 专业班级 测控13-1班 学 号 2013101561 姓 名 王文俊 指导教师 张 博 同 组 人 王文俊,云崇碧

1 / 11

太原理工大学EDAFPGA八路抢答器应用设计课程设计

太原理工大学现代科技学院

学生姓名 王文俊 课程名称 CPLD/FPGA应用设计 课程设计任务书

专业班级 测控13-1 设计名称 8路抢答器 设计周数 1.5周 指导教师 张博 设计一个8路抢答器,具体要求如下: 设计 任务 主要 设计 参数 (1)设计具有一个可容纳8组参赛者的数字智力抢答器,每组设置一个抢答按钮供抢答者使用。 ( 2 ) 主持人按键清零,数码管显示0,进入抢答状态; (3)主持人发出开始命令,8人开始抢答,若有人先按下抢答按钮,数码管显示该组号码,其他人再按抢答按钮,系统不再响应; (4)设置记分电路,可显示每组选手的分数; (5)设置计时显示。 (1) 根据选题要求,进行方案比较,画出系统框图; 设计内容 设计要求 (2) 使用VHDL语言描述各单元电路; (3) 利用Quartus II10.0软件对单元电路进行编译,仿真,引脚锁定,下载调试; (4) 撰写课程设计任务书。 主要参考 资 料 1张文爱.EDA技术与FPGA应用设计.电子工业出版社,2013 2贾秀美.数字电路硬件设计实践.高等教育出版社,2008 学生提交 归档文件 课程设计说明书,主要包括以下内容: (1) 设计方案,系统框图,原理分析; (2) 系统各模块的VHDL源程序; (3) 综合编程部分,包括各模块的综合结果,仿真分析,系统管脚定义,下载验证结果; (4) 设计总结部分,指出设计系统的特点及选用方案优缺点,提出改进意见及展望,总结设计收获,体会; (5) 参考文献。 指导教师签名: 日期:

太原理工大学EDAFPGA八路抢答器应用设计课程设计

一、设计目的

1、加深对VHDL语言设计的理解;

2、通过对抢答器的设计加深对CPLD/FPG课程 3、通过对抢答器的设计了解简易集成电路的设 二、设计要求

1.设计具有一个可容纳8组参赛者的数字智力抢答器,每组设置一个抢答按钮供抢答者使用。 2.主持人按键清零,数码管显示0,进入抢答状态;

3.主持人发出开始命令,8人开始抢答,若有人先按下抢答按钮,数码管显示该组号码,其他人再按抢答按钮,系统不再响应;

4.设置记分电路,可显示每组选手的分数; 5.设置计时显示。 三、设计方案

理解 计思路。

根据系统设计要求可知,系统的输入信号有:各组的抢答按钮A、B、C、D、E、F、G、H,系统清零信号CLR,系统时钟信号CLK,计分复位信号RET,加分按钮信号ADD,计时预置控制信号LDN,计时使能信号EN,计时预置调整信号按钮AN、BN,系统的输出信号有:4个组抢答成功与否的指示灯控制信号输出口LEDA、LEDB、LEDC、LEDD、LEDE、LEDF、LEDG、LEDH,4个组抢答时的计时数码管显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。

本次课程设计的主要目的旨在通过完成一个 “抢答器”的设计,达到对EDA技术的熟练掌握,提升对《CPLD/FPGA技术及应用》课程所学内容的掌握和应用。

以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。基于VHDL程序设计中拥有输入设计流程 ,其包括设计输入,综合,适配,仿真测试和编程下载等方法。与其他应用软件相比,他提供了更强大、更直观便捷和操作灵活的原理图输入设计功能,同时还配备了更丰富的适用于各种需要的元件库,其中包括基本的逻辑元件,宏功能元件,以及类似于IP核的参数可设置的宏功能块LPM库。

设计者不必具备许多诸如编程技术,硬件描述语言等知识就能迅速入门,完成较大规模的电路设计系统。

能进行任意层次的数字系统设计,传统的数字电路实验只能完成单一层次的设计。 能对系统中的任意层次,或任一元件的功能进行精确的时序仿真。

3 / 11

太原理工大学EDAFPGA八路抢答器应用设计课程设计

通过时序仿真能迅速定位电路系统中的错误所在,并及时纠正。

四:设计模块方框图

根据抢答器的功能要求,可以得出如下模块系统结构图:

五 模块功能分析

1 抢答输入开关电路 该电路由8个开关按键组成,每一个选手与一个开关对应。开关为常开型,即当按下开关时,开关自动的弹开断开,此时输入抢答信号自动变为高电平;当按下抢答开关时,开关闭合,输入抢答信号为低电平。

2 锁存器 当只要有一个且为任意一个抢答输入信号产生时,触发器电路被触发,在输出端产生相应的开关电平信息,同时为避免之后的抢答开关按钮也按下产生错乱,最先产生的输出电平变化又反馈回来将触发器锁定住,并保持输出的电平信息。这样就避免了抢答先后发生紊乱不清楚的现象发生。 3 编码器 编码器的作用是将开关信息转化为8421BCD码,以提供数字显示电路所需要的编码输入。 4 译码器 译码器的作用是将编码器输出的8421BCD码转化为数码管需要的逻辑状态,译码器由七段共阴二极管组成,高位在左,低位在右,如当输入译码器的信号为“”时,数码管的七个段g,f,e,d,c,b,a分别接1,1,0,1,1,0,1,接有高电平的段亮,于是数码管显示为“5”。 5 解锁器

当触发锁存电路被锁存后,若要进行下一轮的重新抢答,则需要将锁存器解锁,可通过强迫是复位控制置为1,使锁存处于等待锁存状态,以准备进行下一轮的抢答。

8路抢答器源VHDL程序,(包含倒计时dqs,数码shuma,计分器jfq程序)

4 / 11

太原理工大学EDAFPGA八路抢答器应用设计课程设计

library IEEE;

use IEEE.STD_LOGIC_11.ALL; use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL; entity qiangdaqi is port( rst: in std_logic; clk: in std_logic; key : in std_logic; en:in std_logic;

q1,q2,q3,q4,q5,q6,q7,q8: in std_logic; shuma: out std_logic_vector( 6 downto 0); led: out std_logic_vector( 7 downto 0); jfq: out std_logic_vector( 6 downto 0); djs: out std_logic_vector( 6 downto 0) );

end qiangdaqi;

architecture Behavioral of qiangdaqi is signal s: std_logic_vector(3 downto 0); signal q: std_logic_vector(7 downto 0); signal max: std_logic;

signal b: std_logic_vector(3 downto 0):=\"0000\"; signal A: std_logic_vector(3 downto 0):=\"0011\"; signal cnt: std_logic_vector( 25 downto 0); signal clks: std_logic; begin

process(rst,clk,clks) begin

if rst='0' then

cnt<=(others=>'0');

elsif clk'event and clk='1' then cnt<=cnt+1; end if;

clks<=cnt(24); end process;

process(en,A,clks) begin

if clks'event and clks='1' and en='1' then case A is

when \"0000\" => djs<=\"1000000\"; when \"0001\" => djs<=\"1111001\"; when \"0010\" => djs<=\"0100100\"; when \"0011\" => djs<=\"0110000\"; when others => null; end case;

5 / 11

太原理工大学EDAFPGA八路抢答器应用设计课程设计

if a/=\"0000\" then a<=a-\"0001\"; end if; end if;

end process; process(rst,clk) begin

q<=q8&q7&q6&q5&q4&q3&q2&q1; if rst='0' then s<=\"0000\";

elsif clk'event and clk='1' and A=\"0000\"then case q is

when \"10000000\" => s<=\"0001\"; when \"01000000\" => s<=\"0010\"; when \"00100000\" => s<=\"0011\"; when \"00010000\" => s<=\"0100\"; when \"00001000\" => s<=\"0101\"; when \"00000100\" => s<=\"0110\"; when \"00000010\" => s<=\"0111\"; when \"00000001\" => s<=\"1000\"; when others=>null; end case; end if;

end process;

process(rst,clk,s,A) begin

if rst='0' then max<='0';

elsif clk'event and clk='1' and A=\"0000\" then if s>0 then max<='1'; end if; end if;

end process;

process(rst,max,s,A) begin

if rst='0' then

shuma<=(others=>'1');

elsif max'event and max='1' and A=\"0000\" then if s(3)='0' and s(2)='0' and s(1)='0' and s(0)='0' then shuma<=\"1111111\";

elsif s(3)='0' and s(2)='0' and s(1)='0' and s(0)='1'then shuma<=\"1111001\";

elsif s(3)='0' and s(2)='0' and s(1)='1' and s(0)='0'then

6 / 11

太原理工大学EDAFPGA八路抢答器应用设计课程设计

shuma<=\"0100100\";

elsif s(3)='0' and s(2)='0' and s(1)='1' and s(0)='1'then shuma<=\"0110000\";

elsif s(3)='0' and s(2)='1' and s(1)='0' and s(0)='0'then shuma<=\"0011001\";

elsif s(3)='0' and s(2)='1' and s(1)='0' and s(0)='1'then shuma<=\"0010010\";

elsif s(3)='0' and s(2)='1' and s(1)='1' and s(0)='0'then shuma<=\"0000010\";

elsif s(3)='0' and s(2)='1' and s(1)='1' and s(0)='1'then shuma<=\"1111000\";

elsif s(3)='1' and s(2)='0' and s(1)='0' and s(0)='0' then shuma<=\"0000000\"; end if; end if;

end process;

process(rst,max,s,A) begin

if rst='0' then

led<=(others=>'0');

elsif max'event and max='1' and A=\"0000\" then if s(3)='0' and s(2)='0' and s(1)='0' and s(0)='0'then led<=\"00000000\";

elsif s(3)='0' and s(2)='0' and s(1)='0' and s(0)='1'then led<=\"00000001\";

elsif s(3)='0' and s(2)='0' and s(1)='1' and s(0)='0'then led<=\"00000010\";

elsif s(3)='0' and s(2)='0' and s(1)='1' and s(0)='1'then led<=\"00000100\";

elsif s(3)='0' and s(2)='1' and s(1)='0' and s(0)='0'then led<=\"00001000\";

elsif s(3)='0' and s(2)='1' and s(1)='0' and s(0)='1'then led<=\"00010000\";

elsif s(3)='0' and s(2)='1' and s(1)='1' and s(0)='0'then led<=\"00100000\";

elsif s(3)='0' and s(2)='1' and s(1)='1' and s(0)='1' then led<=\"01000000\";

elsif s(3)='1' and s(2)='0' and s(1)='0' and s(0)='0'then led<=\"10000000\"; end if; end if;

end process; process(key,b) begin

7 / 11

太原理工大学EDAFPGA八路抢答器应用设计课程设计

if key'event and key='1' then b<=b+\"0001\"; end if ;

if b=\"1010\" then b<=\"0000\"; end if; case b is

when \"0000\" => jfq<=\"1000000\"; when \"0001\" => jfq<=\"1111001\"; when \"0010\" => jfq<=\"0100100\"; when \"0011\" => jfq<=\"0110000\"; when \"0100\" => jfq<=\"0011001\"; when \"0101\" => jfq<=\"0010010\"; when \"0110\" => jfq<=\"0000010\"; when \"0111\" => jfq<=\"1111000\"; when \"1000\" => jfq<=\"0000000\"; when \"1001\" => jfq<=\"0010000\"; when others => null; end case; end process;

end Behavioral;

8 / 11

太原理工大学EDAFPGA八路抢答器应用设计课程设计

实验结果图:

9 / 11

太原理工大学EDAFPGA八路抢答器应用设计课程设计

10 / 11

太原理工大学EDAFPGA八路抢答器应用设计课程设计

实物图显示

六:调试

引脚锁定完成,便进行硬件下载命令。试验箱接通电源后,便进行实验验证,按下清零键res,然后按下抢答的开关按钮,当下按的是第几个编号,数码管显示的就是该编号,再按其他的抢答按钮已无反应,表示抢答成功,该锁存模块电路时正确的。然后再按下清零键rest,再逐一尝试其他的抢答开关按钮,观察是否都能正常工作,如果都正常工作,则表示该8路智能抢答器设计正确。 打开实验箱,讲导线连接到对应的引脚上,按下复位键,此时只有发光二级管是亮的,然后按下一号组,同时显示器上显示1,这时再按下2,显示器仍然显示1.按下复位键,先按2,再按3,显示器显示2。这个时候实验成功

七、实验心得

通过这次的EDA课程设计,让我熟练地掌握了EDA设计Quartus II10.0软件的操作,使用VHDL语言,对应填写管教,安装硬件驱动,连接EDA实验箱出来结果,之前学会了基本的课程设计以及编译仿真的操作,这次的智能抢答器又让我学到很多,但是其中也遇到了很多困难。我们小组三个人,由我们共同来完成这个设计实验。

在设计的过程中我进一步了解了设计的步骤和原理,进一步加深了对《CPLD/FPGA应用设计》这门课的理解,增强了以后学习的兴趣,为以后的工作积累了一定的经验。这让我们知道了以前并不了解的知识。

11 / 11

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务