EDA 大作业
EDA技术大作业 全自动洗衣机控制器

《EDA技术》大作业电子钟电路设计要求:1、准确计时,以数字形式显示时、分、秒的时间;2、小时为24进制,分与秒的计时要求为60进制;3、具有校时功能;、整点报时。
4:姓名:学号武启明1893130125:班级科学:专业与光电信息131 工程安徽科技学院数理与信息工程学院物电系EDA全自动洗衣机控制器1设计目的《EDA技术与应用》课程是电子信息工程、自动控制、计算机科学与工程等专业的技术课之一,具有很强的工程实践性。
通过本次课程设计来掌握现代硬件数字电路的软件化设计的基本方法、掌握应用VHDL及EDA 工具开发设计各种电路的基本方法,以及对现代电子设计自动化技术有一定的了解,会把所学的专业知识更好的用到实践中去。
2设计的主要内容和要求(1)设计一简易全自动洗衣机控制器。
该控制器由两大状态A和B组成,每个状态分三个子状态,每个状态分别由选择A和选择B控制。
其中A为步进选择按纽,每步跳转一个子状态、B也为步进选择按纽,但每步选择B中的所有组合中的一种。
(2)过程启动由启动/暂停键控制(暂停键在过程启动后任意时间可暂停/恢复过程)。
(3)过程启动后洗衣机盖开启能任意控制。
(4)能设置实现多次洗衣的功能。
3整体设计方案本次设计大致可以分成两个模块来看待:控制端和工作端。
控制部分使用了三个进程来处理,进程一控制状态COUNT_M,进程二控制状态:当连顺出现一个,两个,COUNT_M,进程三控制开始和暂停。
其中,COUNT_N.三个高电平时分别表示强洗,标准,弱洗三种状态的洗衣过程。
再者,COUNT_N:当出现一个,两个,三个高电平时分别表示洗涤,漂洗与甩干,甩干。
其次,信号START控制洗衣机的暂停和重新启动。
工作部分使用了一个进程来处理,在该进程中主要处理强制开盖,洗衣的各个状态。
控制端中,中间变量SG是工作结束标志信号, DT是状态的中间变量。
COOK为强开洗衣机盖子信号端,DCP输入状态中间信号。
LOOK为时间到输出停机,当其输出为高电平时所有数据为0。
EDA技术大作业(一)——4路抢答器的设计

EDA技术大作业(一)4路抢答器的设计1.设计要求利用基本逻辑门电路、组合逻辑电路和触发器,设计一个四人抢答器。
要求:1)四个参加者编号为A、B、C和D,对应组号为1~4,每个参加者控制一个按键,用其发出抢答信号。
2)主持人有一个控制按键,用于将系统清零,即数码显示管灯灭,并控制抢答开始。
3)参加者按抢答按钮,蜂鸣器响铃,对应的指示灯亮,同时数码管上显示最先抢答者的组号。
4)电路具有互锁功能,有人优先抢答后系统能自动关闭其他路的输入信号。
2.设计报告要求1)给出设计方案,画出设计电路框图,并对各个功能模块进行简单的描述。
2)在multiSIM 2001下绘制仿真电路图,并进行仿真验证。
提示:采用CMOS器件设计抢答器(也可以采用74LSXXX系列芯片)数码显示抢答器采用CMOS电路制作,由触发器、编译码电路、数码管、LED指示灯和蜂鸣器等组成,数码管用于显示抢答者的组号,电路框图如下图所示。
(1)数码显示抢答器框图(2)参考电路(仅供参考,请自己设计)这里采用CMOS器件4511、4013、4069、4072设计4路抢答器,图中J1~J4为抢答按钮,J5为复位按钮,4013为D触发器,4069为反相器,4072为4输入或门,4511为4线-七段锁存/译码/驱动器。
(3)仿真分析依次按下A、B、C、D键观察数码管显示状态和蜂鸣器的输出状态。
按下复位键R,观察数码管显示状态和蜂鸣器的输出状态。
南京航空航天大学金城学院本科生实验报告课程名称:EDA技术设计题名:4路抢答器的设计学生姓名:XXX班级学号:XXXXX2010年X月X日一、实验题目和要求二、设计框图三、设计电路图要求对电路图进行简单的功能描述四、仿真结果和分析五、对本课程的几点建议附:个人联系方式手机:E-mail:。
eda大作业

e d a大作业本页仅作为文档页封面,使用时可以删除This document is for reference only-rar21year.March班级 021291学号 02129057EDA实验报告学院电子工程学院专业电子信息工程学生姓名 02129057导师姓名纠博交通控制器一.设计目标设计一个十字路口交通控制系统,其东西,南北两个方向除了有红、黄、绿灯指示是否允许通行外,还设有时钟,以倒计时方式显示每一路允许通行的时间,绿灯,黄灯,红灯的持续时间分别是70、5和75秒。
当东西或南北两路中任一道上出现特殊情况,例如有消防车,警车要去执行任务,此时交通控制系统应可由交警手动控制立即进入特殊运行状态,即两条道上的所有车辆皆停止通行,红灯全亮,时钟停止计时,且其数字在闪烁。
当特殊运行状态结束后,管理系统恢复原来的状态,继续正常运行。
二.设计思路与实施方案1.设计目标思路整理①在十字路口的两个方向上各设一组红、绿、黄灯,显示顺序为其中一方向(东西方向)是绿灯、黄灯、红灯;另一方向(南北方向)是红灯、绿灯、黄灯。
②设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间,其中绿灯、黄灯、红灯的持续时间分别是70s、5s和75s。
③当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯亮,倒计时停止,且显示数字在闪烁。
当特殊运行状态结束后,控制器恢复原来状态,继续正常运行。
2.原理分析本系统主要由分频器,计数器,控制器,倒计时显示器等电路组成。
分频器将晶振送来的50MHZ信号变为1HZ时钟信号;计数器实现总共150秒的计数,它也是交通控制系统的一个大循环;控制器控制系统的状态转移和红黄绿灯的信号输出;倒计时显示电路实现75秒,70秒及5秒的倒计时和显示功能。
整个系统的工作时序受控制器控制,是系统的核心。
基于此,做出交通控制系统的转移图如下:其中,s0:A方向绿灯亮,B方向红灯亮,此状态持续70秒;S1:A方向黄灯亮,B方向红灯亮,此状态持续5秒;S2:A方向红灯亮,B方向绿灯亮,此状态持续70秒;S3:A方向红灯亮,B方向黄灯亮,此状态持续5秒;S4:紧急制动状态,A方向红灯亮,B方向红灯亮,当hold=‘0‘时进入这种状态。
EDA实验课程大作业报告:设计制作一个用于十字路口的交通灯控制器

交通灯控制器设计一.系统功能设计要求设计制作一个用于十字路口的交通灯控制器,要求如下:(1)南北和东西方向各有一组红、绿、黄灯来指挥交通,持续时间分别为25S,20S,和5S。
(2)当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止。
(3)当特殊情况结束后,控制器恢复原来状态,继续正常运行。
(4)用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间。
二.设计原理1.交通灯控制器的状态转换根据题目要求将将红绿灯的状态转换列成如下表:2.设计方案1)由于交通灯需要使用2位7段LED数码管指示通行剩余时间,故采用LED动态扫描方式显示当前时间。
频率设定CLK1k对应的频率为50MHZ。
2)控制模块是交通灯的核心,主要控制交通灯按工作顺序自动变换,同时控制倒计时模块工作,每当倒计时回零时,控制模块接收到一个计时信号,从而控制交通灯进入下一个工作状态。
3)每个方向有一组2位倒计时器模块,用以显示该方向交通灯剩余的点亮时间。
4)显示模块由两部分组成,一是由七段数码管组成的倒计时显示器,每个方向两个七段数码管;二是由发光二极管代替的交通灯,每个方向3个发光二极管。
三.变量符号说明其中,CLK1K为系统时钟信号输入端,SN为禁止通行信号输入通行信号输入端,light0为东西红灯信号输出端,light1为东西黄灯信号输出端,light2为东西绿灯信号输出端,light3为南北红灯信号输出端,light4为南北黄灯信号输出端,light5为南北绿灯信号输出端,led1、led2、led3、led4为数码管地址选择信号输出端。
四.代码说明library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Hongld ISport (clk1k,SN:in std_logic; --SN紧急情况led1, led2, led3, led4 :out std_logic_vector (6 downto 0);--显示管显示时间用light:out std_logic_vector (5 downto 0)); --红绿黄灯end Hongld;architecture traffic1 of Hongld ISsignal S:std_logic_vector (1 downto 0); --状态signal DXT:std_logic_vector(7 downto 0):=X"01"; --东西方向时间signal NBX:std_logic_vector(7 downto 0):=X"01"; --南北方向时间signal ART,AGT,AYT,BRT,BGT,BYT: std_logic_vector(7 downto 0); --红绿黄灯信号signal temp: integer range 0 to 49999999; --产生1s计数器时计数signal clk: std_logic;beginART<="00100101";AGT<="00100000";AYT<="00000100";BRT<="00100101";BGT<="00100000";BYT<="00000100";process(clk1k) -- 选频率为50MHZ beginif (clk1k'event and clk1k='1') thenif temp=49999999 thentemp<=0;clk<='1';elsetemp<=temp+1;clk<='0';end if;end if;end process;process(clk,DXT,NBX) --状态转换进程beginif clk'event and clk ='1' thenif(DXT ="00000001")OR (NBX = "00000001") then S<=S+1;else S<=S;end if; --状态转换结束end if;end process;process (clk,SN,S) --倒计时模块beginif SN = '1' then DXT<=DXT; NBX<=NBX;elseif clk'event and clk='1' thenif (DXT="0000000") OR (NBX="00000000") thencase S ISwhen "00"=>DXT<=ART; NBX<=BGT; --南北红灯、东西绿灯when "01"=>NBX<=BYT; --南北红灯、东西黄灯when "10"=>DXT<=AGT; NBX<=BRT; --南北绿灯、东西红灯when "11"=>DXT<=AYT; --南北黄灯、东西红灯when others=>NULL;end case;end if;if DXT/="00000000" thenif DXT(3 downto 0)= "0000" thenDXT(3 downto 0)<="1001";DXT(7 downto 4)<=DXT(7 downto 4)-1;else DXT(3 downto 0)<=DXT(3 downto 0)-1;DXT(7 downto 4)<=DXT(7 downto 4);end if;end if;if NBX/="00000000" thenif NBX(3 downto 0)="0000" thenNBX(3 downto 0)<="1001";NBX(7 downto 4)<=NBX(7 downto 4)-1;else NBX(3 downto 0)<=NBX(3 downto 0)-1;NBX(7 downto 4)<=NBX(7 downto 4);end if;end if;end if;end if;end process; --倒计时模块结束process(DXT,NBX,S,SN) --显示模块begincase NBX(3 downto 0) iswhen "0000"=>led1<="1000000";when "0010"=>led1<="0100100"; when "0011"=>led1<="0110000"; when "0100"=>led1<="0011001"; when "0101"=>led1<="0010010"; when "0110"=>led1<="0000010"; when "0111"=>led1<="1111000"; when "1000"=>led1<="0000000"; when "1001"=>led1<="0010000"; when others=>led1<="1111111"; end case;case NBX(7 downto 4) iswhen "0000"=>led2<="1000000"; when "0001"=>led2<="1111001"; when "0010"=>led2<="0100100"; when "0011"=>led2<="0110000"; when "0100"=>led2<="0011001"; when "0101"=>led2<="0010010"; when "0110"=>led2<="0000010"; when "0111"=>led2<="1111000"; when "1000"=>led2<="0000000"; when "1001"=>led2<="0010000"; when others=>led2<="1111111"; end case;case DXT(3 downto 0) iswhen "0000"=>led3<="1000000"; when "0001"=>led3<="1111001"; when "0010"=>led3<="0100100"; when "0011"=>led3<="0110000"; when "0100"=>led3<="0011001"; when "0101"=>led3<="0010010"; when "0110"=>led3<="0000010"; when "0111"=>led3<="1111000"; when "1000"=>led3<="0000000"; when "1001"=>led3<="0010000"; when others=>led3<="1111111"; end case;case DXT(7 downto 4) iswhen "0000"=>led4<="1000000"; when "0001"=>led4<="1111001"; when "0010"=>led4<="0100100";when "0100"=>led4<="0011001";when "0101"=>led4<="0010010";when "0110"=>led4<="0000010";when "0111"=>led4<="1111000";when "1000"=>led4<="0000000";when "1001"=>led4<="0010000";when others=>led4<="1111111";end case;if SN ='1' then light<="001001";elsecase S ISwhen "00"=>light<="010001";when "01"=> light <="100001";when "10"=> light <="001010";when "11"=> light <="001100";when others=>NULL;end case;end if;end process;end traffic1;五.仿真波形图仿真时序波形图。
EDA大作业

EDA大作业信号发生器的设计要求:(1) 产生方波、三角波、锯齿波、正弦波(2)产生波形的模式可选(3)频率为10KHz设计方案:1.总体设计思路1.1 设计步骤此设计将按模块式实现,据设计要求,设计总共分四大步份完成:(1)产生波形(四种波形:方波、三角波、矩形波和锯齿波)信号;(3)频率为10KHZ幅度固定;1.2设计思想利用VHDL编程,依据基本数字电路模块原理进行整合。
系统各部分所需工作时钟信号由输入系统时钟信号得到。
总体设计框图如下图1所示:波形输出2. 方案论证2.1方案采用VHDL语言来编程,然后下载文件到FPGA来实现。
VHDL语言是电子设计领域的主流硬件描述语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大降低了硬件设计任务,提高了设计效率和可靠性,要比模拟电路快得多。
该方案是利用FPGA具有的静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,极大地提高了电子系统设计的灵活性和通用性,设计图如图2。
图2 FPGA总体设计图(需要修改) 通过FPGA软件扫描方式将波形数据读出传输给DAC0832(为8分辨率的D/A转换集成芯片)产生波形输出。
这种方法在软、硬件电路设计上都简单,且与我们的设计思路紧密结合。
㈠3硬件选择4软件设计4.1.1 波形产生模块本设计用VHDL语言根据傅立叶函数采集点进行扫描,分别产生正弦波、三角波和矩形波。
以下介绍各种常用周期信号的傅立叶函数展开式。
4.1.3正弦波(1)设计思想正弦波发生分为两个步骤,即正弦波幅值采样存储和正弦波波形的还原输出。
幅值采样是将一个周期正弦波进行64等分,如图3所示,将64个采样点进行量化处理,量化值=255*sin360/64(V),将64点量化值存入存储器ROM。
正弦波形的产生是通过循环反复将存储器中的64点采样值通过DAC0832进行还原输出,得到幅值正比于64点采样值的正弦波。
(完整word版)EDA计算器设计大作业

计算器设计专业:电子信息工程设计者:本文介绍了一个简单的计算器的设计,该设计采用了现场可编程逻辑器件FPGA设计,并基于VHDL 语言实现加减乘除功能,并用十进制显示在数码管上.系统由计算部分、输入部分、选择部分、输出部分组成,计算部分为加法器、减法器、乘法器和除法器组成.使用Altera公司的QuartusII开发软件进行功能仿真并给出仿真波形,并下载到试验箱,用实验箱上的按键开关模拟输入,用数码管显示十进制计算结果.通过外部按键可以完成四位二进制数的加、减、乘、除四种运算功能,其结果简单,易于实现.关键字:VHDL,计算器,QuartusII一.实验目的 (4)二、流程图 (5)三.顶层原理图 (5)四、各个模块 (7)(1)加法器模块 (7)1、封装元件 (7)2、加法器程序 (7)3、仿真结果 (8)(2)减法器模块 (9)1、封装元件 (9)2、减法器程序 (10)3、仿真结果 (11)4、硬件运行结果 (11)(3)乘法器模块 (12)1、封装元件 (12)2、乘法器的设计思想 (13)3、乘法器程序 (14)4、仿真结果 (14)5、硬件运行结果 (15)(4)除法器模块 (16)1、封装元件 (16)2、除法器设计思想 (16)3、除法器程序 (16)4、仿真结果 (17)5、硬件运行结果 (17)(5)8位除法器 (18)1、封装元件 (18)2、8位除法器设计思想 (19)3、8位除法器程序 (19)4、仿真结果 (22)(6)数码管七段译码电路 (22)1、封装元件 (22)2、共阴极七段显示码十六进制转换表 (23)3、七段译码器程序 (23)4、仿真结果 (24)(7)选择模块 (24)1、封装元件 (24)2、程序 (25)五、管脚锁定 (26)六、小结与收获 (26)一.实验目的1、熟悉QuartusII软件的相关操作,掌握数字电路设计的基本流程.2、介绍QuartusII 的软件,掌握基本的设计思路,软件环境参数配置,仿真,管脚分配,下载等基本操作。
eda大作业题目 - 副本

参考题目
1、四位数字频率计(结果用四位数码管显示)。
2、字符液晶屏驱动电路(在液晶屏上显示自己的姓名,学号等)。
3、VGA显示器驱动电路(在VGA显示器上显示字符或汉子)。
4、Rs232串行收发电路。
(可与pc机通讯)。
5、简易电子琴。
6、乐曲演奏电路。
7、PS/2键盘按键识别电路。
8、周期测量电路。
9、视频采集电路。
10、I2C通讯电路。
11、8位硬件乘法器。
12、8位硬件除法器。
13、8位有符号数乘法器。
14、ASK调制与解调电路。
15、FSk调制与解调电路。
16、VGA图形显示驱动电路。
17、VGA逻辑分析仪。
18、FPGA中嵌入8051驱动液晶屏电路。
19、NES游戏移植。
20、俄罗斯方块游戏。
注:1以上题目仅供参考,可自行选题,若选择以上题目,每班只能
同时两人选择相同题目,但内容不能相同。
2 报告中应包含以下内容:(1)总体设计说明(2)各模块的设计实现(3)各模块的仿真结果(4)整个设计的仿真或实际结果。
3 设计若包含FPGA以外的电路,应在报告中体现。
4 严禁班与班之间抄袭,所有雷同者均不及格。
5 大作业封面每班要统一格式。
(姓名学号班级不能缺少)。
6 仿真用quartus,或modelsim。
eda大作业.

班级 021039学号 ********EDA报告题目 VHDL设计初步学院电子工程学院专业信息对抗技术学生姓名导师姓名目录第一章实验部分(秒表) (2)1、程序设计: (2)2、程序代码 (2)3、程序调试 (4)第二章习题部分 (8)习题一 (8)习题二 (8)习题三 (10)习题四 (11)习题五 (12)习题六 (14)习题七 (17)第一章实验部分(秒表)1、程序设计:秒表显示共有6位,两位显示分,两位显示秒,十分秒和百分秒各一位。
设计时使用一个计数器,随着时钟上升沿的到来循环计数,每计数一次,百分秒位加一,通过百分秒位满十进位来控制十分位的计数,十分位满十进位,依次类推,实现秒表计数。
为实现秒位的计时精确,百秒位必须以0.01秒的时间间隔计数,即时钟的频率是100Hz。
为此,本设计采用3MHz的时钟频率通过分频得到100Hz的时钟频率,再送给控制时钟以得到比较精确的CLK信号。
其中,时钟信号CLK为3MHz 的时钟频率,分频后得到的时钟为CLK2,输出引脚CLK2和输入引脚CLK2在外部相连,实现将分频后的时钟送入。
2、程序代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MIAOBIAO ISPORT (CLK,CLK1,STA,POS,STO,RST: IN STD_LOGIC;CQ1,CQ2,CQ3,CQ4,CQ5,CQ6 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CLK2:OUT STD_LOGIC);END MIAOBIAO;ARCHITECTURE BEHAV OF MIAOBIAO ISBEGINPROCESS(CLK) --由频率为3MHz的时钟产生频率为100Hz的时钟VARIABLE NUM:INTEGER RANGE 0 TO 15000;--定义计数器VARIABLE Q:STD_LOGIC;BEGINIF CLK'EVENT AND CLK='1' THENIF NUM=15000 THEN NUM:=0;Q:=NOT Q;--计数器每计数15000,时钟改变电平--值ELSE NUM:=NUM+1;END IF;END IF;CLK2<=Q;END PROCESS;PROCESS(CLK1,STA,POS,STO,RST)VARIABLE CQI1:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE CQI2:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE CQI3:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE CQI4:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE CQI5:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE CQI6:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF STO='1' THEN CQI1:=(OTHERS=>'0');CQI2:=(OTHERS=>'0');CQI3:=(OTHERS=>'0');CQI4:=(OTHERS=>'0');CQI5:=(OTHERS=>'0');CQI6:=(OTHERS=>'0');ELSIF CLK1'EVENT AND CLK1='1' THENIF STA='1' THENIF RST='0' THENIF POS='0' THENIF CQI1="1001" THEN CQI1:=(OTHERS => '0');--百分秒位满十进--位IF CQI2="1001" THEN CQI2:=(OTHERS => '0'); --十分秒位满十进--位IF CQI3="1001" THEN CQI3:=(OTHERS => '0'); --秒位满十进位IF CQI4="0101" THEN CQI4:=(OTHERS => '0'); --十秒位满六进位IF CQI5="1001" THEN CQI5:=(OTHERS => '0'); --分位满十进位IF CQI6="0101" THEN CQI6:=(OTHERS => '0'); --十分位满六进位ELSE CQI6:=CQI6+1;END IF;ELSE CQI5:=CQI5+1;END IF;ELSE CQI4:=CQI4+1;END IF;ELSE CQI3:=CQI3+1;END IF;ELSE CQI2:=CQI2+1;END IF;ELSE CQI1:=CQI1+1;END IF;END IF;END IF;END IF;IF RST='1' THENCQI1:=(OTHERS => '0');CQI2:=(OTHERS => '0');CQI3:=(OTHERS => '0');CQI4:=(OTHERS => '0');CQI5:=(OTHERS => '0');CQI6:=(OTHERS => '0');END IF;CQ1<=CQI1;CQ2<=CQI2;CQ3<=CQI3;CQ4<=CQI4;CQ5<=CQI5;CQ6<=CQI6;END IF;END PROCESS;END BEHAV;3、程序调试(1)时钟给出后,实现开始功能:(2)给时钟后,实现暂停功能:(3)给时钟后,实现复位功能:(4)给时钟后,实现停止功能:(5)综合功能地实现:第二章习题部分习题一(Ex-1)画出下例实体描述对应的原理图符号元件:ENTITY buf3s IS -- 实体1:三态缓冲器 PORT (input : IN STD_LOGIC ; -- 输入端enable : IN STD_LOGIC ; -- 使能端output : OUT STD_LOGIC ) ; -- 输出端END buf3x ;ENTITY mux21 IS --实体2: 2选1多路选择器 PORT (in0, in1, sel : IN STD_LOGIC;output : OUT STD_LOGIC);END ENTITY mux21;习题二(Ex-2)图中所示的是4选1多路选择器,试分别用IF_THEN语句和CASE语句的表达方式写出此电路的VHDL程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDAEDA技术课程大作业设计题目:数字抢答器学生姓名:张涛学号:201002050064专业班级:电气自动会技术二班2012年6月1日一:设计背景和方案设计用于竞赛的四人抢答器,功能如下:(1) 有多路抢答器,台数为四;(2) 具有抢答开始后20秒倒计时,20秒倒计时后无人抢答显示超时,并报警;(3) 能显示超前抢答台号并显示犯规警报;(4) 能显示各路得分,并具有加、减分功能;2、系统复位后进入抢答状态,当有一路抢答键按下时,该路抢答信号将其余各路抢答封锁,同时铃声响,直至该路按键松开,显示牌显示该路抢答台号。
3、用VHDL语言设计符合上述功能要求的四人抢答器,并用层次设计方法设计该电路设计思路:将该任务分成三个模块进行设计,分别为:抢答器鉴别模块、抢答器计时模块、抢答器记分模块,最后是撰写顶层文件。
抢答器鉴别模块:在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是朝前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余个绿抢答封锁的功能。
其中有四个抢答信号a、b、c、d;抢答使能信号en;抢答状态显示信号states;警报时钟信号clk2;系统复位信号rst;超前警报信号ring。
抢答器计时模块:在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时,并且在20秒倒计时后无人抢答显示超时并报警。
其中有抢答时钟信号clk;系统复位信号rst;抢答使能信号en;抢答状态显示信号states;无人抢答警报信号warn;计时中止信号stop;计时十位个位信号tb,ta。
抢答器记分模块:在这个模块中主要是给四个抢答信号记分,并给每个抢答信号预置5分,当抢答并答对时加1分,答错减1分,没有获得抢答保持不变。
其中有抢答时钟信号clk;系统复位信号rst;抢答使能信号en;抢答状态显示信号states;记分加减信号add(add=‘1’时为加,add=‘0’时为减);四个信号的得分显示信号a_out,b_out,c_out,d_out。
顶层文件:在这个模块中是对前三个模块的综合编写的顶层文件。
方案实施1:判断电路程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY OPT ISPORT(CLR:IN STD_LOGIC;--复位信号EN:IN STD_LOGIC;--抢答使能信号A,B,C,D:IN STD_LOGIC;--抢答按钮LEDA:OUT STD_LOGIC;--抢答成功指示灯LEDB:OUT STD_LOGIC;LEDC:OUT STD_LOGIC;LEDD:OUT STD_LOGIC;FALSE:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--提前抢答报警Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));--抢答成功组显示END OPT;ARCHITECTURE BEHAV OF OPT ISSIGNAL TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL TAG:STD_LOGIC;--设置锁存标志位BEGINTMP<=A&B&C&D;PROCESS(CLR,EN,A,B,D,TMP) --启动进程BEGINIF CLR='1' THEN --电路清零Q<="0000";LEDA<='0';LEDB<='0';LEDC<='0';LEDD<='0';FALSE<="0000";TAG<='0';ELSIF EN='0' THEN --提前抢答时报警IF A='1'THENFALSE(3)<='1';END IF;IF B='1'THENFALSE(2)<='1';END IF;IF C='1'THENFALSE(1)<='1';END IF;IF D='1'THENFALSE(0)<='1';END IF;ELSE --抢答开始FALSE<="0000"; --报警信号清零IF TAG='0' THEN --尚未有抢答成功者出现IF TMP="1000" THEN --A抢答成功LEDA<='1'; --A抢答成功只是灯亮LEDB<='0';LEDC<='0';LEDD<='0';Q<="1000"; --显示A抢答成功TAG<='1'; --锁存此状态ELSIF TMP="0100" THENLEDA<='0';LEDB<='1';LEDC<=’0’;LEDD<='0';Q<="0100";TAG<='1';ELSIF TMP="0010" THENLEDA<='0';LEDB<='0';LEDC<='1';LEDD<='0';Q<="0010";TAG<='1';ELSIF TMP="0001" THENLEDA<='0';LEDB<='0';LEDC<='0';LEDD<='1';Q<="0001";TAG<='1';END IF;END IF;END IF;END PROCESS;END BEHAV;封装图:CLR EN A B C DLEDA LEDB LEDC LEDDFALSE[3..0]Q[3..0]OPTinstRTL 图:波形仿真图:2:计分电路: 程序代码 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER ISPORT(ADD:IN STD_LOGIC; --加分信号CHOS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); --参赛组选择信号A2,A1,A0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --各组计分信号B2,B1,B0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);C2,C1,C0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);D2,D1,D0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COUNTER;ARCHITECTURE BEHAV OF COUNTER ISBEGINPROCESS(ADD,CHOS)V ARIABLE POINTS_A2:STD_LOGIC_VECTOR(3 DOWNTO 0); --定义变量V ARIABLE POINTS_A1:STD_LOGIC_VECTOR(3 DOWNTO 0);V ARIABLE POINTS_B2:STD_LOGIC_VECTOR(3 DOWNTO 0);V ARIABLE POINTS_B1:STD_LOGIC_VECTOR(3 DOWNTO 0);V ARIABLE POINTS_C2:STD_LOGIC_VECTOR(3 DOWNTO 0);V ARIABLE POINTS_C1:STD_LOGIC_VECTOR(3 DOWNTO 0);V ARIABLE POINTS_D2:STD_LOGIC_VECTOR(3 DOWNTO 0);V ARIABLE POINTS_D1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF ADD'EVENT AND ADD='1'THEN --加分信号上升沿有效IF CHOS="0001"THEN --A组答对加10分IF POINTS_A1="1001"THEN --十位为9POINTS_A1:="0000"; --十位清零IF POINTS_A2="1001"THEN --百位为9POINTS_A2:="0000"; --百位清零ELSEPOINTS_A2:=POINTS_A2+'1'; --否则百位加1 END IF;ELSEPOINTS_A1:=POINTS_A1+'1'; --否则十位加1 END IF;ELSIF CHOS="0010"THENIF POINTS_B1="1001"THENPOINTS_B1:="0000";IF POINTS_B2="1001"THENPOINTS_B2:="0000";ELSEPOINTS_B2:=POINTS_B2+'1';END IF;ELSEPOINTS_A1:=POINTS_B1+'1';END IF;ELSIF CHOS="0100"THENIF POINTS_C1="1001"THENPOINTS_C1:="0000";IF POINTS_C2="1001"THENPOINTS_C2:="0000";ELSEPOINTS_C2:=POINTS_C2+'1';END IF;ELSEPOINTS_C1:=POINTS_C1+'1';END IF;ELSIF CHOS="1000"THENIF POINTS_D1="1001"THENPOINTS_D1:="0000";IF POINTS_D2="1001"THENPOINTS_D2:="0000";ELSEPOINTS_D2:=POINTS_D2+'1';END IF;ELSEPOINTS_D1:=POINTS_D1+'1';END IF;END IF;END IF;A2<=POINTS_A2;A1<=POINTS_A1;A0<="0000";B2<=POINTS_B2;B1<=POINTS_B1;B0<="0000";C2<=POINTS_C2;C1<=POINTS_C1;C0<="0000";D2<=POINTS_D2;D1<=POINTS_D1;D0<="0000";END PROCESS;END BEHAV;封装图:ADD CHOS[3..0]A2[3..0]A1[3..0]A0[3..0]B2[3..0]B1[3..0]B0[3..0]C2[3..0]C1[3..0]C0[3..0]D2[3..0]D1[3..0]D0[3..0]COUNTERinst3:显示电路: 程序代码 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY OUTPUT ISPORT( DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); --输入信号DOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) –译码显示输出信号);END OUTPUT;ARCHITECTURE BEHAV OF OUTPUT ISBEGINPROCESS(DIN)BEGINCASE DIN IS --译码WHEN "0000"=>DOUT<="0111111";WHEN "0001"=>DOUT<="0000110";WHEN "0010"=>DOUT<="1011011";WHEN "0011"=>DOUT<="1001111";WHEN "0100"=>DOUT<="1100110";WHEN "0101"=>DOUT<="1101101";WHEN "0110"=>DOUT<="1111101";WHEN "0111"=>DOUT<="0000111";WHEN "1000"=>DOUT<="1111111";WHEN "1001"=>DOUT<="1101111";WHEN OTHERS=>DOUT<="0000000";END CASE;END PROCESS;END BEHAV;封装图:DIN[3..0]DOUT[6..0]OUTPUTinst波形仿真:4:顶层文件设计程序代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TOP ISPORT(CLR:IN STD_LOGIC;EN :IN STD_LOGIC;A,B,C,D:IN STD_LOGIC;ADD:IN STD_LOGIC;LEDA:OUT STD_LOGIC;LEDB:OUT STD_LOGIC;LEDC:OUT STD_LOGIC;LEDD:OUT STD_LOGIC;FALSE:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);FIRST:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SCOREA2:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SCOREA1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SCOREA0:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SCOREB2:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SCOREB1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SCOREB0:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SCOREC2:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SCOREC1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SCOREC0:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SCORED2:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SCORED1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SCORED0:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END TOP;ARCHITECTURE BEHAV OF TOP ISCOMPONENT OPT ISPORT( CLR:IN STD_LOGIC;EN :IN STD_LOGIC;A,B,C,D:IN STD_LOGIC;LEDA:OUT STD_LOGIC;LEDB:OUT STD_LOGIC;LEDC:OUT STD_LOGIC;LEDD:OUT STD_LOGIC;FALSE:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);Q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT OPT;COMPONENT COUNTER ISPORT(ADD:IN STD_LOGIC;CHOS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);A2,A1,A0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);B2,B1,B0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);C2,C1,C0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);D2,D1,D0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT COUNTER;COMPONENT OUTPUT ISPORT( DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT OUTPUT;SIGNAL Q:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL AA2,AA1,AA0:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL BB2,BB1,BB0:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL CC2,CC1,CC0:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DD2,DD1,DD0:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1:OPT PORT MAP(CLR,EN,A,B,C,D,LEDA,LEDB,LEDC,LEDD,FALSE,Q);U2:COUNTER PORT MAP(ADD,Q,AA2,AA1,AA0,BB2,BB1,BB0,CC2,CC1,CC0,DD2,DD1,DD0); --使用例化元件模块U3:OUTPUT PORT MAP(Q,FIRST);U4:OUTPUT PORT MAP(AA2,SCOREA2);U5:OUTPUT PORT MAP(AA1,SCOREA1);U6:OUTPUT PORT MAP(AA0,SCOREA0);U7:OUTPUT PORT MAP(BB2,SCOREB2);U8:OUTPUT PORT MAP(BB1,SCOREB1);U9:OUTPUT PORT MAP(BB0,SCOREB0);U10:OUTPUT PORT MAP(CC2,SCOREC2);U11:OUTPUT PORT MAP(CC1,SCOREC1);U12:OUTPUT PORT MAP(CC0,SCOREC0);U13:OUTPUT PORT MAP(DD2,SCORED2);U14:OUTPUT PORT MAP(DD1,SCORED1);U15:OUTPUT PORT MAP(DD0,SCORED0);END BEHAV;实验调试结果按下rst键清零,按下s键,观察数码管是否开始倒计时,扬声器是否发出报警声,按下s0,观察数码管是否显示1和抢答的时间,再按s1,s2,s3,s4.s5均不改变显示,按下rst键,观察是否清零,再按s键,不按别的,直到计时时间到,观察是否显示00,扬声器是否发出报警第一个按下键的小组,抢答信号判定电路LOCK通过缓冲输出信号的反馈将本参赛组抢先按下按键的信号锁存,并且以异步清零的方式将其他参赛组的锁存器清零,组别显示、计时和计分会保存到主持人对系统进行清零操作时为止。