EDA课程设计--VHDL四路智力抢答器

更新时间:2024-01-19 00:09:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VHDL四路智力抢答器EDA课程设计

一、任务与目的

1.1熟练掌握EDA工具软件Quartus的使用

1.2 熟悉使用VHDL硬件描述语言描述数字电路 1.3学会使用VHDL进行大规模集成电路设计

1.4学习使用CPLD/FPGA实验系统硬件验证电路设计的正确性 1.5初步掌握EDA技术并具备一定的可编程逻辑芯片的开发能力

二、设计题目与要求

2.1设计题目

四路智力竞赛抢答器 2.2设计要求

1.按所布置的题目要求,每一位学生独立完成全过程 2.分模块层次化的设计;

3.各功能模块的底层文件必须用VHDL语言设计,顶层文件可以用VHDL语言设计,也可以用原理图设计。 2.3设计内容

设计一个可容纳四组参赛者同时抢答的数字抢答器。主持人可控制系统发的清零和抢答的开始,控制电路可实现最快抢答选手按键抢答的判别和锁定功能,并禁止后续其他选手抢答。抢答选手确定后给出选手编号的显示,抢答选手的编号显示保持到系统被清零为止,若提前抢答则对相应的抢答组发出警告。

*扩展内容:增加答题限时的功能,在确定了抢答成功有效后,有主持人按下答题限时功

能键,开始9s的倒计时。在计时结束后,超时提示LED闪烁。在主持人按下clear开关时限时复位。

三、功能分析

四路智力竞赛抢答器按功能设计分为三个模块

1. 抢答锁存模块,在主持人发出抢答指令后(start=’1’),若有参赛者按下抢答按钮,则

显示器显示抢答组别,同时电路处于自锁状态,使其它组的抢答器不起作用。主持人可以用清零按钮进行清零(clr=’0’).若抢答指令未发出(start=’0’),而有参赛者按下抢答按钮,则发出警告信号(alm=1).

2. 显示功能模块,在参赛者抢答信号(组别)发出后,对参赛者信号进行译码,然后用

7段数码管显示出来。

3. 计时模块,在确定了抢答成功有效后,有主持人按下答题限时功能键,开始9s的倒

计时。在计时结束后,超时提示LED亮。在主持人按下clear开关时限时复位。(扩展模块)

四、设计思路分析,设计方案合理性分析与选择。

设计方案有两种:1.直接写一个程序,包括所要求的功能,

2.按功能模块分别写程序,然后用原理图联系起来. 方法1步骤简单,容易修改,对于多功能模块的设计,容易会造成思路混乱. 方法2对于多功能模块设计,思路清晰,但步骤较为复杂,且修改较为麻烦.

本次由于功能模块较多,我们采用方法二分模块设计。 此抢答器的输入信号有:各组抢答按钮A0,B0,C0,D0(低电平有效),清零端clr(低电平有效),抢答指令端start(高电平有效).时钟信号CLK。限时功能键time.

输出信号有:抢答信号(A,B,C,D)数码管显示信号(ao,bo,co,do,eo,fo,go),警告信号alm。时钟模块数码管显示信号at,bt,ct,dt,et,ft,gt.

五、源程序

LIBRARY IEEE;--抢答锁存模块+显示功能模块。 USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY QIANGDAQI IS

PORT(CLK,A0,B0,C0,D0:IN STD_LOGIC; start,clear:IN STD_LOGIC;

alm,A,B,C,D:OUT STD_LOGIC;

aO,bO,cO,dO,eO,fO,gO:OUT STD_LOGIC); END QIANGDAQI;

ARCHITECTURE behav OF QIANGDAQI IS

SIGNAL d_out7:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL D1,D2,D3,D4:STD_LOGIC; BEGIN

PRO1: PROCESS(CLK,A0,B0,C0,D0,start,clear,D1,D2,D3,D4) BEGIN IF clear='0' D1<='0';D2<='0';D3<='0';D4<='0';A<='0';B<='0';C<='0';D<='0';alm<='0';ELSE IF (start='1') THEN

IF CLK'EVENT AND CLK='1' THEN IF (A0='0')AND NOT(D2='1' OR D3='1' OR D4='1') THEN D1<='1'; ELSIF( B0='0')AND NOT(D1='1' OR D3='1' OR D4='1') THEN D2<='1'; ELSIF( C0='0')AND NOT(D1='1' OR D2='1' OR D4='1') THEN D3<='1'; ELSIF( D0='0')AND NOT(D1='1' OR D2='1' OR D3='1') THEN D4<='1'; END IF; END IF; ELSIF CLK'EVENT AND CLK='1' THEN --警告 IF (A0='0')AND NOT(D2='1' OR D3='1' OR D4='1') THEN alm<='1'; ELSIF( B0='0')AND NOT(D1='1' OR D3='1' OR D4='1') THEN alm<='1'; ELSIF( C0='0')AND NOT(D1='1' OR D2='1' OR D4='1') THEN alm<='1'; ELSIF( D0='0')AND NOT(D1='1' OR D2='1' OR D3='1') THEN alm<='1'; END IF; END IF; A<=D1;B<=D2; C<=D3;D<=D4; END IF;

END PROCESS;

PRO2:process(D1,D2,D3,D4)--显示电路

THEN variable ASG:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF D1='1' THEN ASG:=\ ELSIF D2='1' THEN ASG:=\ ELSIF D3='1' THEN ASG:=\ ELSIF D4='1' THEN ASG:=\ ELSE ASG:=\ END IF; CASE ASG IS WHEN \显示0 WHEN \显示1 WHEN \显示2 WHEN \显示3 WHEN \显示4 WHEN OTHERS => d_out7 <=\ END CASE; aO<=d_out7(0); bO<=d_out7(1); cO<=d_out7(2); dO<=d_out7(3); eO<=d_out7(4); fO<=d_out7(5); gO<=d_out7(6); END PROCESS; END behav;

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- LIBRARY IEEE; --计时功能模块+显示模块 USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JISHI IS

PORT(CLK:IN STD_LOGIC; clr,time1:IN STD_LOGIC; alm2:OUT STD_LOGIC;

at,bt,ct,dt,et,ft,gt:OUT STD_LOGIC); END JISHI;

ARCHITECTURE behav OF JISHIIS

SIGNAL G:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL D:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNALdout:STD_LOGIC_VECTOR(6 D OWNTO 0); SIGNAL CLK1: STD_LOGIC; BEGIN

pro1:PROCESS(CLK,D,CLK1)--分频电路,CLK用250hz

BEGIN IF CLK'EVENT AND CLK='1' THEN IF D<249 THEN D<=D+1; ELSE D<=(OTHERS=>'0');CLK1<=NOT CLK1; END IF; END IF; END PROCESS;

Pro2:PROCESS(CLK1,time1)--计时电路1

VARIABLE G1:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

IF clr='0' THEN G1:=\ ELSIF time1 ='0' THEN G1:=\ ELSIF CLK1'EVENT AND CLK1='1' THEN IF NOT(G1=\ IF G1>0 THEN G1:=G1-1; END IF; ELSE alm2<='1'; END IF; END IF; G<=G1; END PROCESS;

pro3:PROCESS(G)--显示电路 BEGIN CASE G IS WHEN \显示0 WHEN \显示1 WHEN \显示2 WHEN \显示3 WHEN \显示4 WHEN \显示5 WHEN \显示6 WHEN \显示7 WHEN \显示8 WHEN \显示9 WHEN OTHERS =>NULL; END CASE; at<=dout(0); bt<=dout(1); ct<=dout(2); dt<=dout(3); et<=dout(4); ft<=dout(5); gt<=dout(6);

END PROCESS; END behav;

六、仿真图

抢答模块仿真。

分频波形

显示抢答人各倒计时

六、在CPLD\\FPGA实验系统上下载,进行硬件验证情况。

这次我们使用的是KHF-3实验箱,使用的是ALTERA公司的ACEX1K系列芯片,型号是EP1L30QC208-3。共有208个引脚。

硬件验证情况:能基本实现抢答器功能,计时器部分功能未能准确实现,可能是编写程序不严密做成,有待改进。 七、实验中遇到的问题 1.编译不成功有错误。

解决方法:了解清楚编写规则,改进程序。 2.仿真结果与理论结果有出入。

解决方法:检查程序,并改写程序。 3.实验箱没有理想的脉冲源。

解决方法:设计分频程序,对原有的脉冲进行分频以获得理想的脉冲。

八、总结设计收获和体会:

通过一周的紧张工作,最后完成了我的设计任务—基于VHDL的四路智力竞赛抢答器。通过本次课程设计的学习,我深深体会到了设计课题的重要性和目的性所在。本次设计任务不仅培养了我们实践操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主进行设计的能力。它不仅是学习知识的好机会,也是我们对所学知识的一次综合检验和复习,使我明白到自己的缺陷所在,从而查漏补缺。

六、在CPLD\\FPGA实验系统上下载,进行硬件验证情况。

这次我们使用的是KHF-3实验箱,使用的是ALTERA公司的ACEX1K系列芯片,型号是EP1L30QC208-3。共有208个引脚。

硬件验证情况:能基本实现抢答器功能,计时器部分功能未能准确实现,可能是编写程序不严密做成,有待改进。 七、实验中遇到的问题 1.编译不成功有错误。

解决方法:了解清楚编写规则,改进程序。 2.仿真结果与理论结果有出入。

解决方法:检查程序,并改写程序。 3.实验箱没有理想的脉冲源。

解决方法:设计分频程序,对原有的脉冲进行分频以获得理想的脉冲。

八、总结设计收获和体会:

通过一周的紧张工作,最后完成了我的设计任务—基于VHDL的四路智力竞赛抢答器。通过本次课程设计的学习,我深深体会到了设计课题的重要性和目的性所在。本次设计任务不仅培养了我们实践操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主进行设计的能力。它不仅是学习知识的好机会,也是我们对所学知识的一次综合检验和复习,使我明白到自己的缺陷所在,从而查漏补缺。

本文来源:https://www.bwwdw.com/article/8exo.html

Top