您的当前位置:首页(完整word版)八路抢答器EDA课程设计VHDL

(完整word版)八路抢答器EDA课程设计VHDL

2024-07-19 来源:小侦探旅游网


第一章 EDA技术简介

EDA在通信行业(电信)里的另一个解释是企业数据架构,EDA给出了一个企业级的数据架构的总体视图,并按照电信企业的特征,进行了框架和层级的划分。

20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计进行八路抢答器的系统,大量工作可以通过计算机完成,并可以将抢答器从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。

1

第二章 八路抢答器设计目的和要求

第一节 设计目的

学习ALTERA公司的FPGA/CPLD的结构、特点和性能。学习集成开发软件MAX+plus II/Quartus II的使用及设计过程。熟悉EDA工具设计数字电路设计方法,掌握VHDL硬件描述语言设计方法。根据给定题目设计数字电路,来加深对可编程逻辑器件的理解和掌握。

第二节 设计具体要求及功能

在所选择器件内完成八路抢答器的设计,要求设计完成后芯片具有抢答器的全部功能、包括显示和操作接口。抢答器要求有八路抢答输入,抢答逻辑设计合理(具有抢答锁定),抢答编号显示,抢答成功指示,抢答完成后状态复位。在相应的器件平台上完成设计的输入、编译、综合或适配通过。

8路抢答器控制系统是娱乐活动中经常使用的重要基础设备之一,根据抢答要求,系统所需实现的功能如下:

(1)主持人按键清零,数码显示0,蜂鸣器不叫,进入抢答状态。 (2)主持人发出开始命令,8人开始抢答。其中一人先按下抢答键,蜂鸣器发出鸣叫,数码显示该人号码,其他人再按键,系统不再响应,直至主持人按键清零,下一次抢答开始。

2

第三章 设计思路及系统结构

第一节 八路抢答器控制系统的设计思路与功能

抢答器同时供8名选手或8个代表队比赛,分别用8个按钮[a1]~[a8]。设置一个系统清除和抢答控制开关Reset, 该开关由主持人控制。抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,扬声器发出声响提示,数码显示选手号码。其他人再按键,系统进行了优先锁存,不再响应,优先抢答选手的编号一直保持到主持人将系统清除为止,下一次抢答开始。

扩展功能:该电路具有犯规报警功能。当主持人未按下开关开始抢答前,参赛选手若按下开关,则抢答系统发出蜂鸣声报警并显示犯规组别。

第二节 抢答器的工作原理简介

如图2-1所示为抢答器的结构框图,它由主体电路和扩展电路两部分组成。主体电路完成基本的抢答功能,即开始抢答后,当选手按动抢答键时,能显示选手的编号,同时能封锁输入电路,禁止其他选手抢答。扩展电路完成检测数码管工作情况。其工作原理为:接通电源后,主持人将开关拨到\"清除\"状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置于\"开始\"状态,宣布\"开始\"抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作\"清除\"和\"开始\"状态开关。

图2-1 抢答器结构框图

3

第三节 抢答器的工作流程

加载运 正常流犯规流开开始数码管显 示FFF开开始前有选显示犯规选手号码并伴有语倒计时结 有选手 显示显示选手号码,倒计 时时间,语音报若超过答题 时间,则答题根据选手

图2-2

抢答器的基本工作原理:在抢答竞赛或呼叫时,有多个信号同时或不

4

同时送入主电路中,抢答器内部的寄存器工作,并识别、记录第一个号码,同时内部的定时器开始工作,记录有关时间并产生超时信号。在整个抢答器工作过程中,显示电路、语音电路等还要根据现场的实际情况向外电路输出相应信号。抢答器的工作流程分为、系统复位、正常流程、犯规流程等几部分,如图2-2所示。

5

第四章 抢答器的电路设计

第一节 抢答器的总体结构

如图4-1所示为总体方框图。接通电源后,后台工作人员将检测开关S置“检测”状态,数码管在正常清除下,显示“

”;当后台工作人

员将检测开关S置“抢答”状态,主持按系统清除按键,抢答器处于禁

止状态,编号显示器灭灯;主持人松开,宣布“开始”,抢答器工作。选手按动抢答按键,抢答器完成:优先判断、编号锁存、编号显示。当一轮抢答之后,优先抢答选手的编号一直保持到主持人将系统清除为止。如果再次抢答必须由主持人再次按动系统清除按键。

图4-1

第二节 优先判断与编号锁存电路

优先判断与编号锁存电路如图4-2所示。电路选用优先编码器 74LS148 和锁存器 74LS279 来完成。该电路主要完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号;二是禁止其他选手按键,其按键操作无效。工作过程:系统清除按键按动时,74LS279的四个RS触发器的置0端均为0,使四个触发器均被置0。1Q为0,使74LS148的使能端 =0,74LS148处于允许编码状态,同时1Q为0,使74LS48的灭灯输入端 =0,数码管无显示。这时抢答器处于准备抢答状态。

当系统清除按键松开时,抢答器处于等待状态。当有选手将按键开关按下时,抢答器将接受并显示抢答结果,假设按下的是S4,则74LS148的编码输出为011,此代码送入74LS279锁存后,使4Q3Q2Q=100,亦即

6

74LS148的输入为0100;又74LS148的优先编码标志输出 为0,使1Q=1,即 =1,74LS48处于译码状态,译码的结果显示为“4”。同时1Q=1,使74LS148的 =1,74LS148处于禁止状态,从而封锁了其他按键的输入。此外,当优先抢答者的按键松开再按下时,由于仍为1Q=1,使 =1,74LS148仍处于禁止状态,确保不会接受二次按键时的输入信号,保证了抢答者的优先性。(74LS148为8线-3线优先编码器,表1为其真值表,图3为逻辑图;74LS279为四个/R-/S 锁存器,表2为其真值表,图4为逻辑图。) R总VCC系统清除按键HPRI/BCD抢答按键S0S1S2S3S4S5S6S7RLRES2LEDGND10111213123450/Z101/Z112/Z123/Z134/Z145/Z156/Z167/Z17V18ENa101112131415161711235610111297614151R1S11S22R2S3R3S13S24R4S1Q41Q18a15142Q72Q3Q93Q1a2a4a4Q134Q

图4-2

Inputs Outputs S R Q

H H Q0 7

L H H H L L

Not L L sure 8

第五章 抢答器的单元电路设计

简易逻辑数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。现简单介绍抢答器设计中的抢答电路、定时电路、报警电路、时序控制电路、显示及译码电路。

第一节 抢答器设计中的抢答电路

参考电路如图5-1所示。该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。

工作过程:开关S置于“清除”端时,RS触发器的R端均为0,4个触发器输出置0,使74LS148的ST=0,使之处于工作状态。当开关S置于“开始”时,抢答器处Y2Y1Y0010,YEX0,经RS锁存后,1Q=1,

BI=1,74LS48处于工作状态,4Q3Q2Q=101,经译码显示为“5”。此外,

1Q=1,使74LS148ST=1,处于禁止状态,封锁其他按键的输入。当按键松开即按下时,74LS148的YEX1,此时由于仍为1Q=1,使ST=1,所以74LS148仍处于禁止状态,确保不会出二次按键时输入信号,保证了抢答者的优先性。如有再次抢答需由主持人将S开关重新置于“清除”然后再进行下一轮抢答。(LS148为8线-3线优先编码器。)

9

图5-1

第二节 抢答器设计中的定时电路

由节目主持人根据抢答题的难易程度,设定一次抢答的时间,通过预置时间电路对计数器进行预置,计数器的时钟脉冲由秒脉冲电路提供。可预置时间的电路选用十进制同步加减计数器74LS192进行设计,具体电路如图5-2所示。本设计是以555构成震荡电路,由74LS192来充当计数器,构成抢答器的倒计时电路。该电路简单,无需用到晶振,芯片都是市场上容易购得的。设计功能完善,能实现直接清零、启动。

10

图5-2

第三节 抢答器设计中的报警电路

由555定时器和三极管构成的报警电路如图5-3所示。其中555构成多谐振荡器,振荡频率fo=1.43/[(RI+2R2)C],其输出信号经三极管推动扬声器。PR为控制信号,当PR为高电平时,多谐振荡器工作,反之,电路停振。

11

图5-3

第四节 抢答器设计中的时序控制电路

时序控制电路是抢答器设计的关键,它要完成以下三项功能: ①主持人将控制开关拨到\"开始\"位置时,扬声器发声,抢答电路和定时电路进人正常抢答工作状态。

②当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停止工作。

③当设定的抢答时间到,无人抢答时,扬声器发声,同时抢答电路和定时电路停止工作。

根据上面的功能要求,设计的时序控制电路如图 5-4所示。图中,门G1 的作用是控制时钟信号CP的放行与禁止,门G2的作用是控制74LS148的输人使能端 。图4-3的工作原理是:主持人控制开关从\"清除\"位置拨到\"开始\"位置时,来自于图4-1中的74LS279的输出 1Q=0,经G3反相, A=1,则时钟信号CP能够加到74LS192的CPD时钟输入端,定时电路进行递减计时。同时,在定时时间未到时,则\"定时到信号\"为1,门G2的输出ST=0,使 74LS148处于正常工作状态,从而实现功能

12

①的要求。当选手在定时时间内按动抢答键时,1Q=1,经 G3反相, A=0,封锁 CP信号,定时器处于保持工作状态;同时,门G2的输出ST=1,74LS148处于禁止工作状态,从而实现功能②的要求。当定时时间到时,则\"定时到信号\"为0,ST=1,74LS148处于禁止工作状态,禁止选手进行抢答。同时, 门G1处于关门状态,封锁 CP信号,使定时电路保持00状态不变,从而实现功能③的要求。集成单稳触发器74LS121用于控制报警电路及发声的时间。

图5-4

第五节 显示与译码电路

七段显示译码器与数码管如下图7段显示译码所示,74LS48将锁存器74LS279的信号译码,输出给数码管。当后台工作人员将S置于GND,

LT=0,使灯测试输入端(图中3号)=1,这时测试数码管工作情况;当

后台工作人员将S置于Vcc,LT=1,使灯测试输入端(图中3号)=1,这时正常译码。(74LS48为4线-七段译码器/驱动器,图4-6为逻辑图)

13

VCCSGND4537126&CT=0V201248BIN/7-SEG[T2]1G21a 20,21b 20,21c 20,21d 20,21e 20,21f 20,21g 20,211312111091514764219105abcdefgdpDPYafegdbcdp 7段显示译码器与数码管

74LS48逻辑图

14

第六章 基于VHDL的实体设计

MAX+plusⅡ是美国ALTERA公司提供的FPGA/CPLD开发集成环境,该公司是世界最大的可编程逻辑器件供应商之一。MAX+plusⅡ界面友好,使用便捷,被誉为业界最容易的EDA软件。下面详细论述使用MAX+plusⅡ软件设计8路抢答器控制系统的过程。

本设计采用用Altera公司MAX7000S系列的EPM7128SLC84-15来实现。(校EDA实验室EDA-V实验箱中所用CPLD芯片)。

第一节 程序设计

一 编码程序:

LIBRARY ieee;

USE ieee.std_logic_1164.ALL; ENTITY change IS

PORT(q1,q2,q3,q4,q5,q6,q7,q8: IN STD_LOGIC; clr : IN STD_LOGIC;

m: OUT STD_LOGIC_vector(3 downto 0); en: OUT STD_LOGIC); END change;

ARCHITECTURE a OF change IS BEGIN

process(q1,q2,q3,q4,q5,q6,q7,q8,clr) variable temp:STD_LOGIC_vector(7 downto 0); begin

15

temp:=q1&q2&q3&q4&q5&q6&q7&q8; case temp is

when\"01111111\"=>m<=\"0001\"; when\"10111111\"=>m<=\"0010\"; when\"11011111\"=>m<=\"0011\"; when\"11101111\"=>m<=\"0100\"; when\"11110111\"=>m<=\"0101\"; when\"11111011\"=>m<=\"0110\"; when\"11111101\"=>m<=\"0111\"; when\"11111110\"=>m<=\"1000\"; when others=>m<=\"1111\"; end case;

en <= temp(7) AND temp(6) AND temp(5) AND temp(4) AND temp(3) AND temp(2) AND temp(1) AND temp(0) AND clr; end process; END a;

16

二 锁存程序:

LIBRARY ieee;

USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY lock IS PORT(s1: IN STD_LOGIC; s2: IN STD_LOGIC; s3: IN STD_LOGIC; s4: IN STD_LOGIC; s5: IN STD_LOGIC; s6: IN STD_LOGIC; s7: IN STD_LOGIC; s8: IN STD_LOGIC; clr: IN STD_LOGIC;

q1,q2,q3,q4,q5,q6,q7,q8: OUT STD_LOGIC); END lock;

ARCHITECTURE a OF lock IS BEGIN

process(s1,s2,s3,s4,s5,s6,s7,s8,clr) begin

if(clr ='0') then q1<='1';q2<='1'; q3<='1';q4<='1'; q5<='1';q6<='1';

17

q7<='1';q8<='1'; else

q1<=s1;q2<=s2; q3<=s3;q4<=s4; q5<=s5;q6<=s6; q7<=s7;q8<=s8; end if; end process; END a;

三 抢答成功扬声器发声程序: LIBRARY ieee;

USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL;

18

ENTITY cnt IS

PORT(clk,en: in STD_LOGIC; sound1:out STD_LOGIC); END cnt;

ARCHITECTURE a OF cnt IS BEGIN

process(en,clk) begin

if(clk'event and clk='1') then if(en='1') then sound1<='1'; else

sound1<='0'; end if;end if; end process; END a;

19

四 数码管显示管

LIBRARY ieee;

USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY display IS

PORT(m: IN STD_LOGIC_VECTOR(3 downto 0); BCD: out STD_LOGIC_VECTOR(7 downto 0)); END display;

ARCHITECTURE a OF display IS BEGIN

PROCESS(m) BEGIN CASE m IS

WHEN \"0000\" => BCD <=\"00111111\"; WHEN \"0001\" => BCD <=\"00000110\"; WHEN \"0010\" => BCD <=\"01011011\"; WHEN \"0011\" => BCD <=\"01001111\"; WHEN \"0100\" => BCD <=\"01100110\"; WHEN \"0101\" => BCD <=\"01101101\"; WHEN \"0110\" => BCD <=\"01111101\"; WHEN \"0111\" => BCD <=\"00000111\"; WHEN \"1000\" => BCD <=\"01111111\"; WHEN \"1001\" => BCD <=\"01101111\";

WHEN OTHERS => BCD <=\"00000000\";

20

END CASE; END PROCESS; END a;

第二节 编译管脚设置

程序输入完成后然后选择用于编程的目标芯片:选择菜单 “Assign”→“Device”, 窗口中的 Device Family 是器件序列栏, 先在此栏中选择 MAX7000S。然后选择 EMP7128SLC84- 15 器件, 按 OK,就可以进行编译了,经“MAX+PLUSE II”中的“Compiler”菜单编译,以验证设计结果是否符合要求,如果有问题,则返回原设计文件再次进行修改, 直到正确为止。

21

编译无误后经“MAX+PLUSE II”中的“FLOORPLAN EDITOR” 菜单,进行输入、输出管脚设置,将元件端口放置到 EPM7128SLC84- 15芯片适当的I/O 口,并用手工调整按图十三所示设置。

第三节 仿真

编译成功后进行仿真。首先建立波形文件。波形文件建好 并存盘后。选择菜单“Max+plusII”→“simulator”,启动仿真操作,结束后观察仿真波形( 图十四所示) 。从仿真波形看, 符合设计要求。

图十四 顶层仿真波形图

s1,s2,s3,s4,s5,s6,s7,s8输入 q1,q2,q3,q4,q5,q6,q7,q8锁存输出 M编码输出和BCD显示输入 clk时钟

clr 0,清零 1为开始抢答 en抢答成功 BCD数码管显示输出

22

心得体会

在课程设计的这段时间里,我认为收获还是很多的,不但进一步掌握了数字电子技术的基础知识及一门专业仿真软件的基本操作,还提高了自己的设计能力及动手能力,同时对于智能抢答器来了个系统的总结。更多的是让我看清了自己,明白了凡事需要耐心,实践是检验学习的唯一标准。理论知识的不足在这次课设中表现的很明显。这将有助于我今后的学习,端正自己的学习态度,从而更加努力的学习。总之,通过本次课程设计不但让我又学到了一些知识,而且也提高了我的综合能力。使我在各方面都得到了锻炼,非常感谢我的同组同学,也非常感谢我们的指导老师,使我们这次的课程设计任务圆满完成。

23

参考文献

1.康华光 主编,《电子技术基础-数字部分》,高等教育出版社,1998。 2.谭会生等 主编,《EDA技术及应用》,西安电子科技大学出版社,2001 3.潘松等 主编,《EDA技术实用教程》,科学出版社,2006 4.雷伏容 主编,《VHDL电路设计》,清华大学出版社,2006 5.Charles H.Roth等著,《数字系统设计与VHDL》,电子工业出版社 6.丁建伟.《抢答器电路设计》[J].兰州工业高等专科学校学报,2008,(04).13-17.

7.王冬梅,张建秋.《八路抢答器设计与实现》[J]. 佳木斯大学学报(自然科学版), 2009,(06).22-26.

8.蔡明生,黎福海,徐文玉.电子设计.北京:高等教育出版社.2004. 9.王树昆,赵晓巍,EDA技术在教学中的应用.吉林工程技术师范学院学报,2003;19(9):4-7

24

附录

元器件清单: 74LS48 74LS121 74LS148 74LS192 74LS279 NE555 电阻1 KΩ 电阻10 KΩ 电阻15 KΩ 电阻4.7 KΩ 电阻5.1 KΩ 电阻100 KΩ 3个 1个 1个 2个 1个 2个 1个 9个 1个 1个 1个 1个 电阻68 KΩ 电阻510Ω 电容10uF 电容0.1uF 电容100uF 发光二极管 按键开关 共阴数码管 74LS00 74LS11 三极管3DG12 1个 2个 2个 1个 1个 2个 9个 3个 1个 1个 1个 总程序:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY total IS PORT(clk: IN STD_LOGIC; clr: IN STD_LOGIC;

s1,s2,s3,s4,s5,s6,s7,s8 : IN STD_LOGIC; sound1 : OUT STD_LOGIC;

BCD: OUT STD_LOGIC_vector(7 downto 0); END total;

ARCHITECTURE total_run OF total IS COMPONENT change

PORT(q1,q2,q3,q4,q5,q6,q7,q8: IN STD_LOGIC;

25

clr: IN STD_LOGIC;

m: OUT STD_LOGIC_vector(3 downto 0); en: OUT STD_LOGIC);

END COMPONENT; COMPONENT cnt

PORT(clk,en: in STD_LOGIC; sound1:out STD_LOGIC); END COMPONENT; COMPONENT display

PORT(l: IN STD_LOGIC_VECTOR(3 downto 0); BCD1: OUT STD_LOGIC_VECTOR(7 downto 0)); END COMPONENT;

signal en : STD_LOGIC;

signal m : STD_LOGIC_vector(3 downto 0); signal q1,q2,q3,q4,q5,q6,q7,q8 : STD_LOGIC; BEGIN

u1 : lock PORT

MAP(s1,s2,s3,s4,s5,s6,s7,s8,clr,q1,q2,q3,q4,q5,q6,q7,q8);

u2 : change PORT

MAP(q1,q2,q3,q4,q5,q6,q7,q8,clr,m,en); u3 : cnt PORT MAP(clk,en,sound1); u4 : display PORT MAP(m, BCD); END total_run;

26

VCCCVGNDERSRWVVC5CL1150HTXDVCC5VCTS35U113VCC2210U8B29VCC74S04NVCC5V2021271601417087126ABCDVCCA0A1A2GSEO35~LT~RBI~BI/RBOGND141516976182VCC12VCC05VCCOAOBOCODOEOFOG462430101112131234581613121110915147D0D1D2D3D4D5D6D7EIGND74LS148D32974LS48DU427

2528XFG1301119D7D6D5D4D3D2D1D0

T1153334RXDRTSU9VCC3637383940414224

VCC5V74STD116NVCCVCCS1123456789101112~1CLR~1G1~1G21D11Q11D21Q21D31Q31D41Q4GNDVCC2Q42D42Q32D32Q22D22Q12D1~2G2~2G1~2CLR2423222120191817161514135V044CRVCCS2CR43U3184526300123456789101112~1CLR~1G1~1G21D11Q11D21Q21D31Q31D41Q4GNDVCC2Q42D42Q32D32Q22D22Q12D1~2G2~2G1~2CLR24232221201918171615141374STD116N

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