西电eda大作业
西安电子科技大学EDA实验报告
EDA大作业及实验报告实验一:QUARTUS Ⅱ软件使用及组合电路设计仿真实验目的:学习QUARTUS Ⅱ软件的使用,掌握软件工程的建立,VHDL源文件的设计和波形仿真等基本内容;实验内容:1.四选一多路选择器的设计首先利用QuartusⅡ完成4选1多路选择器的文本编辑输入(mux41a.vhd)和仿真测试等步骤,给出仿真波形。
步骤:(1)建立工作库文件夹和编辑设计文件;(2)创建工程;(3)编译前设置;(4)全程编译;(5)时序仿真;(6)应用RTL电路图观测器(可选择)实验程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT(S10:IN STD_LOGIC_VECTOR(1 DOWNTO 0);A,B,C,D:IN STD_LOGIC;Q:OUT STD_LOGIC);END ENTITY mux41;ARCHITECTURE bhv OF mux41 ISBEGINPROCESS(A,B,C,D,S10)BEGINIF S10="00" THENQ<=A;ELSIF S10="01" THENQ<=B;ELSIF S10="10" THENQ<=C;ELSEQ<=D;END IF;END PROCESS;END bhv;波形仿真如图:其中,分别设置A,B,C,D四个输入都为10.0ns的方波,其占空比分别为25%,50%,75%,90%以作为四种输入的区分,使能端s10以此输入00(即[0]),01(即[1]),10(即[2]),11(即[3]),可以观察到输出端Q依次输出分别为A,B,C,D。
试验成功。
其RTL电路图为:2.七段译码器程序设计仿真2.1 原理:7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA或CPLD中实现。
EDA大作业格式规范交通信号灯
交通信号灯EDA技术课程大作业设计题目:交通信号灯学生姓名:学号:专业班级:2012年5月 4 日交通信号灯1.设计背景和设计方案1.1设计背景这学期我们学了EDA课程。
为了更加熟练掌握VHDL的设计流程及原理设计了交通信号灯。
交通信号灯有基于DSP设计的,有基于ARM嵌入式的,有基于单片机的,有基于EDA的,还可以用标准逻辑器件。
但是,这些控制方法的功能修改和调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统调试的难度。
所以,现在国内外大多采用EDA技术来实现交通灯控制系统的设计。
随着社会的发展,我国机动车辆的数量也在突飞猛涨。
基于这种情况,我国的道路交通问题已成为令人担忧的问题。
为了缓解交通压力,同时为了降低我国交通事故发生率运用控制系统控制设计成的交通信号灯已成为必然趋势。
在我们的日常生活中较为普遍并且容易操作,便于实现方案论证。
运用quartusii5.1软件实现此电路的设计与仿真。
1.2设计方案交通信号灯的逻辑变化可以使用一个有限状态机来实现。
通常,在最简单的情况下,十字路口的东西和南北两个方向分别有“红、绿、黄”三个交通灯,这三个灯的逻辑变化用来控制交通秩序。
在正常工作情况下,十字路口一般为两路交通灯,我们可以假设为南北方向和东西方向。
为了描述方便我们用E代表东,W代表西,S代表南,N代表北R代表红,G代表绿,Y代表黄。
东西和南北两个方向的红、黄、绿三个交通灯的状态变化顺序可以表示如表1.1所示。
表1.1 交通灯状态变化顺序表在系统复位时,其起始状态一般为两个方向均为红灯,即RR。
另外在某些情况下还有一种备用的工作模式,即两个方向均为黄灯(YY)。
因此在控制时,有多个控制输入信号,及复位信号(reset)和备用模式设置信号(std_by)。
2. 方案实施首先,在除去E盘以外的其他盘下新建一个文件夹,重命名为traffic(注意文件名不能有汉语)。
然后,打开quartusii5.1应用软件。
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点采样值的正弦波。
西电EDA大作业多功能彩灯
EDA设计报告彩灯控制器(老师:宗汝)班级:学号:姓名:一.设计要求设计能让一排灯(8只)自动改变显示花样的控制系统。
可将实验板上的一排发光二极管作为彩灯用。
控制器应有两种控制方式:◆规则变化。
变化节拍有0.5秒和0.25秒两种,交替出现,每种节拍可有8种花样,各执行一或二个周期后轮换。
彩灯变化方向有单向移动,双向移动,跳跃移动等。
◆随机变化。
变化花样相同,但节拍及花样的转换都随机出现。
二.设计方案(1).分频模块。
要产生快慢两种节拍,则首先需要有分频器模块,0.5秒和0.25秒两种则可选择四分频和八分频。
通过按键进行选择切换。
则clk为输入时钟信号,需经分频器分频并输入到LED显示电路;clr为复位清零信号,高电平有效,有效时,电路无条件的回到初始状态;OPT为频率快慢选择信号,低电平节奏快,高电平节奏慢;(2)LED显示模块。
经过分频的时钟信号输入LED显示电路中,使电路有规律的输出按照设定的各种花样变化。
xuan为选择彩灯变化花样信号,便于改变彩灯花样。
而最后就是输出彩灯变化花样led。
三.系统程序设计分频器模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity FENPINQI isport(clk:in std_logic;clr:in std_logic;opt:in std_logic;clkout:out std_logic);end FENPINQI;architecture arc of FENPINQI issignal clk_tmp: std_logic;signal counter: std_logic_vector(1 downto 0);beginprocess(clk,clr,opt)beginif clr='1' then --清零clk_tmp<='0';counter<="00";elsif clk'event and clk='1' thenif opt='0' then --四分频if counter="01" thencounter<="00";clk_tmp<=not clk_tmp;elsecounter<=counter+'1';end if;else --八分频if counter="11" thencounter<="00";clk_tmp<=not clk_tmp;elsecounter<=counter+'1';end if;end if;end if;end process;clkout<=clk_tmp; --输出分频后的信号end arc;花样一:--用分频器分频后的时钟来显示花样实现library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity HY1 isport(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led1:out std_logic_vector(7 downto 0));end HY1;architecture arc of HY1 istype state is(s0,s1,s2,s3,s4,s5,s6);signal current_state:state;signal light:std_logic_vector(7 downto 0);beginprocess(clr,clk1,xuan)isconstant l1:std_logic_vector(7 downto 0):="10000001";constant l2:std_logic_vector(7 downto 0):="01000010";constant l3:std_logic_vector(7 downto 0):="00100100";constant l4:std_logic_vector(7 downto 0):="00011000";constant l5:std_logic_vector(7 downto 0):="00100100";constant l6:std_logic_vector(7 downto 0):="01000010";beginif xuan="01"thenif clr='1' thencurrent_state<=s0;elsif(clk1'event and clk1='1') thencase current_state iswhen s0=>light<="ZZZZZZZZ";current_state<=s1;when s1=>light<=l1;current_state<=s2;when s2=>light<=l2;current_state<=s3;when s3=>light<=l3;current_state<=s4;when s4=>light<=l4;current_state<=s5;when s5=>light<=l5;current_state<=s6;when s6=>light<=l6;current_state<=s1;end case;end if;end if;end process;led1<=light;end arc;花样二:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity HY2 isport(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led2:out std_logic_vector(7 downto 0));end HY2;architecture arc of HY2 istype state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s 20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30);signal current_state:state;signal light:std_logic_vector(7 downto 0);beginprocess(clr,clk1,xuan)isconstant l1:std_logic_vector(7 downto 0):="00000000";constant l2:std_logic_vector(7 downto 0):="10000000";constant l3:std_logic_vector(7 downto 0):="11000000";constant l4:std_logic_vector(7 downto 0):="11100000";constant l5:std_logic_vector(7 downto 0):="11110000";constant l6:std_logic_vector(7 downto 0):="11111000"; constant l7:std_logic_vector(7 downto 0):="11111100"; constant l8:std_logic_vector(7 downto 0):="11111110"; constant l9:std_logic_vector(7 downto 0):="11111111"; constant l10:std_logic_vector(7 downto 0):="01111111"; constant l11:std_logic_vector(7 downto 0):="00111111"; constant l12:std_logic_vector(7 downto 0):="00011111"; constant l13:std_logic_vector(7 downto 0):="00001111"; constant l14:std_logic_vector(7 downto 0):="00000111"; constant l15:std_logic_vector(7 downto 0):="00000011"; constant l16:std_logic_vector(7 downto 0):="00000001"; constant l17:std_logic_vector(7 downto 0):="00000011"; constant l18:std_logic_vector(7 downto 0):="10000111"; constant l19:std_logic_vector(7 downto 0):="00001111"; constant l20:std_logic_vector(7 downto 0):="00011111"; constant l21:std_logic_vector(7 downto 0):="00111111"; constant l22:std_logic_vector(7 downto 0):="01111111"; constant l23:std_logic_vector(7 downto 0):="11111111"; constant l24:std_logic_vector(7 downto 0):="11111110"; constant l25:std_logic_vector(7 downto 0):="11111100"; constant l26:std_logic_vector(7 downto 0):="11111000"; constant l27:std_logic_vector(7 downto 0):="11110000"; constant l28:std_logic_vector(7 downto 0):="11100000"; constant l29:std_logic_vector(7 downto 0):="11000000"; constant l30:std_logic_vector(7 downto 0):="10000000"; beginif xuan="10" thenif clr='1' thencurrent_state<=s0;elsif(clk1'event and clk1='1') thencase current_state iswhen s0=>light<="ZZZZZZZZ";current_state<=s1;when s1=>light<=l1;current_state<=s2;when s2=>light<=l2;current_state<=s3;when s3=>light<=l3;current_state<=s4;when s4=>light<=l4;current_state<=s5;when s5=>light<=l5;current_state<=s6;when s6=>light<=l6;current_state<=s7;when s7=>light<=l7;current_state<=s8;when s8=>light<=l8;current_state<=s9;when s9=>light<=l9;current_state<=s10;when s10=>light<=l10;current_state<=s11;when s11=>light<=l11;current_state<=s12;when s12=>light<=l12;current_state<=s13;when s13=>light<=l13;current_state<=s14;when s14=>light<=l14;current_state<=s15;when s15=>light<=l15;current_state<=s16;when s16=>light<=l16;current_state<=s17;when s17=>light<=l17;current_state<=s18;when s18=>light<=l18;current_state<=s19;when s19=>light<=l19;current_state<=s20;when s20=>light<=l20;current_state<=s21;when s21=>light<=l21;current_state<=s22;when s22=>light<=l22;current_state<=s23;when s23=>light<=l23;current_state<=s24;when s24=>light<=l24;current_state<=s25;when s25=>light<=l25;current_state<=s26;when s26=>light<=l26;current_state<=s27;when s27=>light<=l27;current_state<=s28;when s28=>light<=l28;current_state<=s29;when s29=>light<=l29;current_state<=s30;when s30=>light<=l30;current_state<=s1;end case;end if;end if;end process;led2<=light;end art;花样三:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity HY3 isport(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led3:out std_logic_vector(7 downto 0));end HY3;architecture art of HY3 istype state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14); signal current_state:state;signal light:std_logic_vector(7 downto 0);beginprocess(clr,clk1,xuan)isconstant l1:std_logic_vector(7 downto 0):="10000000";constant l2:std_logic_vector(7 downto 0):="01000000"; constant l3:std_logic_vector(7 downto 0):="00100000"; constant l4:std_logic_vector(7 downto 0):="00010000"; constant l5:std_logic_vector(7 downto 0):="00001000"; constant l6:std_logic_vector(7 downto 0):="00000100"; constant l7:std_logic_vector(7 downto 0):="00000010"; constant l8:std_logic_vector(7 downto 0):="00000001"; constant l9:std_logic_vector(7 downto 0):="00000010"; constant l10:std_logic_vector(7 downto 0):="00000100"; constant l11:std_logic_vector(7 downto 0):="00001000"; constant l12:std_logic_vector(7 downto 0):="00010000"; constant l13:std_logic_vector(7 downto 0):="00100000"; constant l14:std_logic_vector(7 downto 0):="01000000"; beginif xuan="11" thenif clr='1'thencurrent_state<=s0;elsif(clk1'event and clk1='1')thencase current_state is --状态机转换when s0=>light<="ZZZZZZZZ";current_state<=s1;when s1=>light<=l1;current_state<=s2;when s2=>light<=l2;current_state<=s3;when s3=>light<=l3;current_state<=s4;when s4=>light<=l4;current_state<=s5;when s5=>light<=l5;current_state<=s6;when s6=>light<=l6;current_state<=s7;when s7=>light<=l7;current_state<=s8;when s8=>light<=l8;current_state<=s9;when s9=>light<=l9;current_state<=s10;when s10=>light<=l10;current_state<=s11;when s11=>light<=l11;current_state<=s12;when s12=>light<=l12;current_state<=s13;when s13=>light<=l13;current_state<=s14;when s14=>light<=l14;current_state<=s1;end case;end if;end if;end process;led3<=light;end art;花样四:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity HY4 isport(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led4:out std_logic_vector(7 downto 0));end HY4;architecture art of HY4 istype state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14); signal current_state:state;signal light:std_logic_vector(7 downto 0);beginprocess(clr,clk1,xuan)isconstant l1:std_logic_vector(7 downto 0):="10101010";constant l2:std_logic_vector(7 downto 0):="01010101";constant l3:std_logic_vector(7 downto 0):="10010010";constant l4:std_logic_vector(7 downto 0):="01001001";constant l5:std_logic_vector(7 downto 0):="10010100";constant l6:std_logic_vector(7 downto 0):="01001001";constant l7:std_logic_vector(7 downto 0):="00100100";constant l8:std_logic_vector(7 downto 0):="00011000";constant l9:std_logic_vector(7 downto 0):="00101010";constant l10:std_logic_vector(7 downto 0):="11000011";constant l11:std_logic_vector(7 downto 0):="01100000";constant l12:std_logic_vector(7 downto 0):="00111000";constant l13:std_logic_vector(7 downto 0):="10001100";constant l14:std_logic_vector(7 downto 0):="01001001";beginif xuan="00" thenif clr='1'thencurrent_state<=s0;elsif(clk1'event and clk1='1')thencase current_state iswhen s0=>light<="ZZZZZZZZ";current_state<=s1;when s1=>light<=l1;current_state<=s2;when s2=>light<=l2;current_state<=s3;when s3=>light<=l3;current_state<=s4;when s4=>light<=l4;current_state<=s5;when s5=>light<=l5;current_state<=s6;when s6=>light<=l6;current_state<=s7;when s7=>light<=l7;current_state<=s8;when s8=>light<=l8;current_state<=s9;when s9=>light<=l9;current_state<=s10;when s10=>light<=l10;current_state<=s11;when s11=>light<=l11;current_state<=s12;when s12=>light<=l12;current_state<=s13;when s13=>light<=l13;current_state<=s14;when s14=>light<=l14;current_state<=s1;end case;end if;end if;end process;led4<=light;end art;顶层设计:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity caideng8 isport(clk:in std_logic;clr:in std_logic;opt:in std_logic;xuan:in std_logic_vector(1 downto 0);led:out std_logic_vector(7 downto 0) --八路彩灯输出);end caideng8;architecture art of caideng8 iscomponent FENPINQI --对分频器模块进行定义port(clk:in std_logic;clr:in std_logic;opt:in std_logic;clkout:out std_logic);end component FENPINQI;component HY1 --对花样一模块进行定义port(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led1:out std_logic_vector(7 downto 0));end component HY1;component HY2 --对花样二模块进行定义port(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led2:out std_logic_vector(7 downto 0));end component HY2;component HY3 --对花样三模块进行定义port(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led3:out std_logic_vector(7 downto 0));end component HY3;component HY4port(clk1:in std_logic;clr:in std_logic;xuan:in std_logic_vector(1 downto 0);led4:out std_logic_vector(7 downto 0));end component HY4;signal s:std_logic; --定义中间变量signal l1:std_logic_vector(7 downto 0);signal l2:std_logic_vector(7 downto 0);signal l3:std_logic_vector(7 downto 0);signal l4:std_logic_vector(7 downto 0);beginu1:FENPINQI port map(clk,clr,opt,s);u2:HY1 port map(s,clr,xuan,l1);u3:HY2 port map(s,clr,xuan,l2);u4:HY3 port map(s,clr,xuan,l3);u5:HY4 port map(s,clr,xuan,l4);led<=l1 when xuan="01" elsel2 when xuan="10" elsel3 when xuan="11" elsel4;end art;四.仿真花样一仿真波形:clr为输入,是异步复位端,当为高电平时有效。
西电EDA作业
EDEAE工141具实践
8
Tools
E
选题六
DA
Prj6:根据参与的项目,自选适宜题目,完成相似内容。 目的: 1)掌握verilog语言对组合逻辑的描述; 2)学习testbench的设计方法 3)掌握仿真器(modelsim/verilog/VCS)的仿真、调试、波形输 出等常用技巧; 4)掌握DC约束规划方法、综合器使用、结果查看、后仿真等; 5)熟悉简单芯片从规划到实现方法。
EDEAE工141具实践
4
Tools
E
选题二
DA
Prj2:设计一款简单计算器,能够完成4位以内的加、减、乘、除法运算, 并以10进制形式说出结果。 目的: 1)掌握verilog语言对组合逻辑的描述; 2)学习testbench的设计方法 3)掌握仿真器(modelsim/verilog/VCS)的仿真、调试、波形输 出等常用技巧; 4)掌握DC约束规划方法、综合器使用、结果查看、后仿真等; 5)熟悉简单芯片从规划到实现方法。
综合设计工具: DC、Leda、nLint、Formality等 Layout与STA涉及工具:SOCEncount、Virtuso、Astro、Primetime、
Calibra、Dracula、Hercules等
有能力同学可以进一步练习后端版图设计部分。
EDEAE工141具实践
3
Tools
E
选题一
3. 提交上机文件,内容包括:
① 设计代码
EDEAE工141具实践
2
Tools
E
要求
DA
② 验证平台、覆盖率报告
③ 综合报告(约束、面积、性能)
④ 文件命名格式:学号_姓名_上机用户ID 说明
数字电子技术基础EDA大作业2终结报告(2016秋)
EDA大作业二终结报告█████████████一、预习报告二、阐述设计思路1、键盘读入模块键盘读入模块的作用是向下一模块(控制模块)传递按键是否按下以及按键值为多少。
根据矩阵键盘的原理,检测行线上的电平值,可以判断矩阵键盘中有无按键按下。
当检测到有按键被按下之后,对列线的电平值进行跑马灯式扫描(S1、S2、S3、S4状态,分别指扫描第1、2、3、4列的信号),若检测到某列有低电平则(进入S5状态)可以由当前的行线电平值和列线电平值确定所按键的值。
对于长按键的设计,当检测到有按键时进入S5状态(有按键按下的状态),检测到按键还在被按下状态(行线电平值不为1111)的话,则不进行下一次扫描,直到检测到按键被松开(行线电平值为1111)时,进行下一次扫描(进入S0状态)。
对于按键防抖的设计,当检测到行线电平值不为1111时,进入S1、S2、S3、S4状态时都再一次进行行线电平值的判断,如果此时行线电平值没有回到1111,则可以认定这次按键是有效的;若此时检测到行线电平值回到1111,则可以认定这是一个抖动,然后回到S0状态。
对于是否有按键按下的输出(key_ready),定义中间变量flag1、flag2、flag3以及按键按下标志flag,flag1是flag的延时,flag2是flag的上升沿检测结果,flag3是flag2的延时,flag2在有按键输出的时候只保持一个时钟周期,由于采用非阻塞式赋值,在有按键按下时flag3会产生一个时钟周期的高电平,作为有按键按下的标志(也可以直接以key_busy作为下一级输入,不过要取key_busy得下降沿,不符合同步电路的设计要求)。
键盘读入模块状态机示意图2、控制模块控制模块的作用是根据键盘读入模块读入的值进行处理,向显示模块传递要在数码管上显示的数字。
状态转化图如下。
若电路处于state_start状态,则数码管全灭,此时令num32(第3、2数码管显示的数字,即金钱)为21,num10(第1、0数码管显示的数字,即时间)为41(因为对于num32(num10)来说,0到20(40)的数字都在数码管有对应显示,所以选用21、41这两个无关数字作为全灭状态的输出,使数码管处于全灭状态,具体实现见显示模块),数码管全灭。
西电EDA大作业
《数字电路与系统设计》EDA实验报告班级:学号:姓名:西安电子科技大学电子工程学院毫秒表计时器一、实验功能简介:本系统是利用verilog语言设计,并在Basys2 FPGA开发板上实现的毫秒表计时器。
该系统从0.00s开始以0.01s为步长开始计时当计到0.99s时经过判定后个位加一变为1.00s,之后继续以0.01s为步长从1.00s开始计时直到1.99s,之后进行判定个位加一变为2.00s,继续上述循环,直到毫秒表计时计到59.99s 时进行判定时钟自动重置再继续从0.00s开始计时。
本系统设置了一个复位时钟,推动复位键可以在计时期间中断计时,归零后重新计时。
二、实验条件:1.Basys2 FPGA开发板Basys2 FPGA开发板是一个电路设计实现平台,任何人都可以通过它来搭建一个真正的数字电路。
Basys2是围绕着一个Spartan-3E FPGA芯片和一个Atmel AT90USB USB控制器搭建的,它提供了完整、随时可以使用的硬件平台,并且它适合于从基本逻辑器件到复杂控制器件的各种主机电路。
Basys2板上集成了大量的I/O设备和FPGA所需的支持电路。
主要特点如下:Xilinx Spartan 3E FPGA,10万或25万门,FPGA特性18位乘法器,72位高速双端口Block RAM,以及500MHz+运算能力,USB2.0高速接口提供FPGA配置和数据传输,Xilinx Platform Flash ROM可以无限次存储FPGA 配置,用户可配置晶振(25,50,100MHz),另附可连接第二个时钟晶振的插座,三个内置稳压器(1.2V,2.5V,和3.3V),允许使用3.5V-5.5V的外部电源供电,8个用户可编程LED指示灯,4个七段数码管显示器,4个按键开关,8个滑动开关,1个PS/2接口和1个8位VGA显示接口,4个6针用户扩展接口,可以用来连接Digilent PMOD附属电路板,需要Adept2.0或更新版本软件来进行操作。
西电最优化上机报告(大作业)
上机报告一.最速下降法算法简述:1.在本例中,先将最速下降方向变量赋一个值,使其二范数满足大于ε的迭代条件,进入循环。
2.将函数的一阶导数化简,存在一个矩阵,将其hesse矩阵存在另一个矩阵。
依照公式求出α,进而求出下一任迭代的矩阵初值。
循环内设置一个计数功能的变量,统计迭代次数。
3.求其方向导数的二范数,进行判别,若小于ε,则跳出循环,否则将继续迭代。
4.显示最优解,终止条件,最小函数值。
心得体会:最速下降法的精髓,无疑是求梯度,然后利用梯度和hesse矩阵综合计算,求解下一个当前最优解。
但是,要求函数是严格的凸函数,结合严格凸函数的大致图像,这就给初值的选取提供了一点参考。
例如在本例中,由于含有两个变量的二次方之和,结合大致图像,想当然的,初值的选取应当在原点附近;又因为变量的二次方之和后面,还减去了变量的一次形式和一次混合积,所以初值的选取应该再向第一象限倾斜。
综合以上考量,第一次选取(1,1)作为初值,判别精度方面,取到千分位,暂定为0.001。
运行以后,结果显示迭代了25次,最优解为(3.9995,1.9996),终止条件为5.4592e-04,目标函数为-8.0000。
这个结果已经相当接近笔算结果。
整体的运行也比较流畅,运算速度也比较快。
第二次取值,决定保留判别精度不变,将初值再适当向第一象限倾斜,取(2,2)作为初值,运行后,显示只迭代了11次!最优结果显示(3.9996,1.9997),终止条件为3.6204e-04,最优解-8.0000。
可见,最优结果更接近理想值,终止条件也变小了,最关键的是,迭代次数减少至第一次的一半以下!这说明以上初选取的方向是对的!第三次再进行初值细化,判别精度仍然不变,初值取(3,3)。
结果令人兴奋,只迭代了四次!最优解已经显示为(4.0000,2.0000),终止条件为2.4952e-04,目标函数-8.0000。
第四次,判别精度不变,取初值(4,4)。
EDA大作业
EDA技术课程大作业设计题目:移位相加8位硬件乘法器的设计学生姓名:曲毅学号:0990*******专业班级:通信1101移位相加8位硬件乘法器电路设计1. 设计背景和设计方案1.1设计背景纯组合逻辑构成的乘法器虽然工作速度比较快,但过于占用硬件资源,难以实现多位乘法器,基于PLD器件外接ROM九九表的乘法器则无法构成单片系统,也不实用。
这里介绍由八位加法器构成的以时序逻辑方式设计的八位乘法器,具有一定的实用价值,而且由FPGA构成实验系统后,可以很容易的用ASIC大型集成芯片来完成,性价比高,可操作性强。
1.2设计方案此设计是由八位加法器构成的以时序逻辑方式设计的八位乘法器,它的核心器件是八加法器。
所以关键是设计好八位加法器方案一八位直接宽位加法器,它的速度较快,但十分耗费硬件资源,对于工业化设计是不合理的方案二:由两个四位加法器组合八位加法器,其中四位加法器是四位二进制并行加法器它的原理简单,资源利用率和进位速度方面都比较好。
综合各方面的考虑,决定采用方案二。
由8位加法器构成的以时序逻辑方式设计的8位乘法器乘法通过逐向移位加原理来实现,从被乘数的最低位开始,若为1,则乘数左移与上一次和相加;若为0,左移后以全零相加,直至被乘数的最高位。
本乘法器结构框图如下:图1 基本结构框图本乘法器原理图如图2所示:由五个模块组成。
其中ARICTL是乘法运算控制电路,它的START信号上的上跳沿与高电平有2个功能,即16位寄存器清零和被乘数A[7..0]]向移位寄存器SREG8B加载;它的低电平则作为乘法使能信号,乘法时钟信号从ARICTL的CLK 输入。
当被乘数被加载于8位右移寄存器SREG8B后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。
当为1时:一位乘法器ANDARITH打开,8位乘数B[7..0]在同一节拍进入8位加法器,与上一次锁存在16位锁存器REG16B中的高8位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器。
EDA大作业2 设计一个循环显示电路
EDA大作业2 设计一个循环显示电路
一、目的
学习使用硬件描述语言设计数字电路方法。
二、任务
在FPGA实验箱上设计一个循环显示电路。
要求:在四位数码管上左移循环显示1, 9, 3, 5, 1, 9, ……;按下复位键后输出显示为0000;按下暂停键后循环停止;使用实验箱上50MHz晶振作为时钟源。
三、内容及步骤
1. 学习用硬件描述语言设计并完成分频功能,建议将50MHz分到5Hz;
2. 学习用状态机设计并完成循环显示功能;
3. 复习用波形仿真检查电路功能是否正确;
4. 使用State Machine Viewer功能观看状态转换图,检查编写的状态机是否正确;(自学,不检查)。
5. 下载到实验箱上验证功能。
四、验收步骤
整个project下载实现全部功能后,才能开始验收。
请同学们首先按以下步骤自查,做的过程中可以答疑,但每人只有一次验收机会。
1. 电路仿真及功能实现;
2. 循环显示电路下载及功能演示;
3. 验收后,上传全部设计文档
StateNumbers:S0:9351 s1:3519 s2:5193 s3:1935 Input : Reset pause clk
Output:Y11~Y0。
EDA大作业要求
《EDA技术》课程大作业要求项目一、自选一模拟电路(如功放电路),画出仿真电路图(包含虚拟仪器),并对该电路作仿真分析。
要求:1. 仿真电路图、仿真分析过程和结果以截图的形式表达。
2. 六种仿真分析方法中,选三种(必包含参数扫描分析)对电路分析。
3. 仿真结果中包含利用虚拟仪器检测的结果。
4. 对理论分析结果与仿真分析结果要作比较分析。
项目二、设计一8S循环的交通灯控制器(以74LS160D为核心,能读秒)。
要求:1.有简单的设计思路分析。
2.设计步骤明确并得到电原理图,并作仿真分析及说明。
3.用逻辑分析仪输出波形。
4.进阶任务:设计一60S循环的交通灯控制器(本任务可选择30s或60s)大作业文本打印格式要求:1.打印文稿用A4格式排版。
2.行距、字距以美观大方为宜。
3.一级标题用4号宋体、加粗,二级标题用5号宋体、加粗,正文用5号宋体。
4.图、表要有标注、编号(小5号宋体)。
5.封面格式见附页。
上交材料:1.项目设计报告一份(纸质)2.项目设计报告电子稿3.项目设计成果电子档注:电子文档存于以姓名学号为名的文件夹统一上交。
《EDA技术》课程大作业项目名称:实用电路仿真分析设计专业班级:学号:姓名:连云港职业技术学院信息工程学院年月日内容安排参考项目一:项目名称:xxxxxxxxxxxxxxxxx项目要求:1. xxxxxxxxxxxxx2. xxxxxxxxxxxxx项目设计准备分析:1. 2. 3.-------- 项目设计步骤:1. 2. 3.--------项目仿真结果及分析:xxxxxxxxxxxx------------项目二:(最后)课程学习心得()。
西电EDA满分大作业
EDA报告题目 VHDL设计初步学院电子工程学院专业学号导师姓名朱燕目录第一章实验部分(流水灯) (2)1、程序设计: (2)2、程序代码 ............................................................................................. 错误!未定义书签。
3、程序调试 ............................................................................................. 错误!未定义书签。
第二章习题部分.............................................................................................. 错误!未定义书签。
习题一 ....................................................................................................... 错误!未定义书签。
习题二 ....................................................................................................... 错误!未定义书签。
习题三 ....................................................................................................... 错误!未定义书签。
习题四 ....................................................................................................... 错误!未定义书签。
EDA期末大作业设计
EDA 课程设计报告题 目 简易电子琴 组 员 王维婷(3110403128) 郑雅亿(3110403131) 专业班级 电子信息工程112班宁波理工学院一、实验目的1.学习利用数控分频器、键盘实验。
2.理解PS/2键盘的基本原理。
二、实验原理本实验利用键盘的数字按键部分来控制电子琴的C调,DO RA,MI,FA,SO,LA,SI,分别用0,1,2,3,4,5,6,7来进行控制。
们使用了键盘的介入来进行控制。
组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的2个基本要素,首先让我们来了解音符与频率的关系。
乐曲的12平均率规定:每2个八度音(如简谱中的中音1与高音1)之间的频率相差1倍。
在2个八度音之间,又可分为12个半音,每2个半音的频率比为。
另外,音符A(简谱中的低音6)的频率为440Hz,音符B到C之间、E到F之间为半音,其余为全音。
由此可以计算出简谱中从低音1至高音1之间每个音符的频率,如图所示。
简谱中音符与频率的关系如图所示,为PS/2键盘的接口引脚图。
下图为PS/2键盘的通信时序图。
主系统由4个模块组成:TOP是顶层设计文件,其内部有三个功能模块:Tone.VHD、Speaker.VHD、enc16_4.VHD.、PS2VHDL.VHD、clkdiv10.VHD、clkdiv50.VHD以及PULSE12.VHD模块TONE是音阶发生器,当4位发声控制输入INDEX中某一位为高电平时,则对应某一音阶的数值将从端口TONE输出,作为获得该音阶的分频预置值;同时由CODE输出对应该音阶简谱的显示数码,如‘5’,并由HIGH输出指示音阶高8度显示。
由例6-28可见,其语句结构只是类似与真值表的纯组合电路描述,其中的音阶分频预置值,如Tone <= 1290是根据产生该音阶频率所对应的分频比获得的。
简易电子琴电路结构模块SPEAKER中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块SPEAKER由端口TONE获得一个2进制数后,将以此值为计数器的预置数,对端口CLK12MHZ输入的频率进行分频,之后由SPKOUT向扬声器输出发声。
EDA技术课程大作业
E D A技术课程大作业-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII安阳工学院电子信息与电气工程学院课程大作业:EDA技术题目:组数:第 11 组班级:(电子信息工程10-1)教师成绩由以下评分标准累计得出1、电路设计和仿真结果正确清晰合理‘ 25%2、设计和仿真结果分析正确合理。
25%3、大作业报告重点突出、阐述清晰。
25%4、小组能很好的组织、合作,过程顺利,按时完成大作业。
15%5、陈述清晰正确、有说服力,能够正确回答问题。
10%总分学生自评分值大作业总成绩总成绩=J*60%+(J+J*(X-25%))*40% J 为教师成绩,X 为学生自评分值数字时钟1. 设计任务和设计方案1.1设计任务1、依据预先设定的数字数字时钟的功能,完成对数字钟的设计。
2、通过数字时钟的设计,学习Quartus II 中基于VHDL 设计的流程。
3、通过这次的设计,掌握简单时序逻辑电路的设计方法与功能仿真技巧。
1.2 设计方案在方案中要实现的功能是:(1)设置复位、清零等功能(2)有时、分、秒计数显示功能,小时为24进制,分钟和秒为60进制以24小时循环计时(3)有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间 (4)时钟通过数码管显示且时钟计数显示时有LED 灯显示; 总体方框图2. 方案实施根据系统设计要求,系统由时钟分频部分、计时部分、按键部分调时部分和显示部分五个部分组成。
这些模块都放在一个顶层文件中。
1)时钟计数:思路:时计时器为一个24进制计数器,分、秒计时器均为60进制计数器。
当秒计时器接受到一个秒脉冲时,秒计数器开始从1计数到60,此时秒显示器将显示00、01、02、...、59、00;每当秒计数器数到00时,就会产生一个脉冲输出送至分计时器,此时分计数器数值在原有基础上加1,其显示器将显示00、01、02、 (59)00;每当分计数器数到00时,就会产生一个脉冲输出送至时计时器,此时时计数器数值在原有基础上加1,其显示器将显示00、01、02、...、23、00。
EDA 大作业一终结报告_2014011541_林子坤
EDA 大作业一二进制运算器及其数码管扫描显示电路林子坤(自45班2014011541)一、预习报告1.根据实验任务中的步骤提示,写出要用到的电路模块及其功能。
(1)四选一数据选择器功能:根据两位地址位的输入,从四个数据位的输入中选取一个作为输出。
(2)1位二进制加法器功能:根据两个1位二进制数和进位的输入进行加法运算,输出1位二进制数运算结果以及向上级的进位。
(3)4位二进制加法器(由1位二进制加法器级联而成)功能:根据两个4位二进制数的输入进行加法运算,输出4位二进制数运算结果以及向上级的进位。
(4)补码运算器(由门电路和4位2进制加法器组合而成)功能:根据4位二进制数的输入,输出其补码。
(5)二进制运算器(由4位二进制加法器和补码运算器组合而成)功能:实现S=M+N。
M和N为3位二进制数,其中1位是符号位,2位是有效数字。
输出计算结果与正负数标志。
(6)扫描显示电路(由四选一数据选择器、二进制运算器和7448芯片组合而成)功能:根据两个三位二进制数的输入,输出数码管和二极管的显示情况。
(7)分频器功能:输入端接收CLK时钟信号,时钟信号经过262144周期后对输出进行改变。
(8)两输出分频器(由分频器和74161芯片组合而成)功能:输入端接收CLK时钟信号,输出端每间隔262144时钟周期进行00、01、10、11之间的跳变。
2.阅读附录了解FPGA 实验板提供的外设资源,并掌握其工作原理。
二、阐述设计思路1、搭建一位全加器:与电子技术实验3思路相同。
2、搭建四位全加器:使用四个一位全加器级联而得。
3、搭建二进制运算器:为了实现实现运算功能,根据二进制运算规律,我们需要进行((M的补码+N的补码)的补码)的运算,因此在此之前我们需要搭建一个补码运算器,记为第2.5步。
2.5、搭建补码运算器:补码运算,所有位与最高位取异或,实现“负数取反,正数不变”,之后再接入四位全加器进行“负数加1,正数不变”,那么就实现了补码运算——“负数取反加1,正数不变”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA实验报告
班级:021211班
指导老师:杨明磊
实验一:QUARTUS II软件使用及组合电路设计
仿真
一、实验目的:
学习QUARTUS II软件的使用,掌握软件工程的建立、VHDL源文件的设计和波形仿真等基本内容;
二、实验内容:
1.四选一多路选择器的设计
首先利用QuartusⅡ完成4选1多路选择器的文本编辑输入(mux41a.vhd)和仿真测试等步骤,给出仿真波形。
(1)、功能及原理
原理:数据选择器又称为多路转换器或多路开关,它是数字系统中常用的一种典型电路。
其主要功能是从多路数据中选择其中一路信号发送出去。
所以它是一个多输入、单输出的组合逻辑电路。
功能:当选择控制端s10=00时,输出a
y=;s10=01时,输出b
y=;s10=10时,输出c
y=;s10=11时,输出d
y=。
(2)、逻辑器件符号
(3)、VHDL语言
(4)、波形仿真
(5)、仿真分析
由波形可知:当s10=00时,y的波形与a相同;
当s10=01时,y的波形与b相同;
当s10=10时,y的波形与c相同;
当s10=11时,y的波形与d相同;
与所要实现的功能相符,源程序正确。
2、七段译码器程序设计仿真
(1)、功能及原理
7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利
用VHDL译码程序在FPGA或CPLD中实现。
实验中的数码管为共阳极,接有低电平的段发亮。
例如当LED7S输出为 "0010010" 时,数码管的7个段:g、f、e、d、c、b、a分别接0、0、1、0、0、1、0,于是数码管显示“5”。
(2)、逻辑器件符号
(3)、VHDL语言
(4)、波形仿真
(5)、仿真分析
由仿真波形可以直观看到,当A=“0000”时,led7s=1000000,数码管显示为0;A=“0001”时,led7s=1111001,数码管显示为1;....依此可验证波形仿真结果完全符合预期,源程序正确。
三、实验心得
在第一次上机实验中,我们通过对EDA设计软件QuartusⅡ使用,初步学会了它的使用方法。
在实验中我们编写程序,编译,进行时序仿真以验证程序对错等。
在完成VHDL的编辑以后,进行编译,结果出现了很多错误,在细心的检查之下,最终将VHDL描述修改成功并且通过了编译,在编译过程中我了解到很多在书本上没有理解的知识。
总的来说,通过上机实验,我激发了对EDA学习的兴趣,也对这门课程有了更深的理解,对EDA设计软件Quarter Ⅱ的使用也更加熟练。
实验二计数器设计与显示
一、实验目的
(1)、熟悉利用QUARTUS II中的原理图输入法设计组合电路,掌握层次化设计的方法;
(2)、学习计数器设计、多层次设计方法和总线数据输入方式的仿真,并进行电路板下载演示验证。
二、实验内容
1、完成计数器设计(4位二进制加减可控计数器)
(1)、功能及原理
含有异步清零和计数使能的4位二进制加减可控计数器:
清零端reset:低电平有效,异步清零,即reset=0时,无论时钟处于什么状态,输出立即置零。
使能端enable:高电平有效,即enable=1时,计数器开始计数;enable=0时,计数器停止计数。
加减控制端updown:当updown=0时,为减法计数器;当updown=1时,为加法计数器。
(2)、逻辑器件符号
(3)、VHDL语言
(4)、波形仿真
updown=1时,为加法计数:
updown=0时,为减法计数:
(5)、仿真分析
由以上两个波形很容易看出,enable=1时,计数器开始计数;reset=0时,计数器置零;updown=0时,减法计数;updown=1时,加法计数;co为进位端。
符合设计初衷。
2、50M分频器的设计
(1)、功能及原理
50M分频器的作用主要是控制后面的数码管显示的快慢。
即一个模为50M的计数器,由时钟控制,分频器的基本原理与上述计数器基本相同。
分频器的进位端co用来控制加减计数器的时钟,将两个器件连接起来。
(2)、逻辑器件符号
(3)、VHDL语言
(4)、波形仿真
(5)、仿真分析
由波形仿真可以看出,enable=1时,由0开始计数,由于计数器模值较大,故只显示了一部分波形,计数范围由0到50M。
3、七段译码器程序设计
在实验一中已给出具体程序及仿真结果,不再赘述。
4、计数器显示译码设计与下载
以前面设计的七段译码器decl7s和计数器为底层元件,完成“计数器显示译码”的顶层文件设计。
计数器和译码器连接电路的顶层文件原理图如下:
原理图连接好之后就可以进行引脚的锁定,然后将整个程序下载到已经安装好的电路板上,即可进行仿真演示。
三、实验心得
实验三:大作业设计
(循环彩灯)
一、实验目的:
综合应用数字电路的各种设计方法,完成一个较为复杂的电路设计;二、设计目标
设计一个循环彩灯控制器,该控制器可控制10个发光二极管循环点亮、间隔点亮或者闪烁等花型。
要求至少设计三种以上花型,用按键控制花型之间的转换,并用数码管显示当前花型。
三、设计原理
四、设计流程
1、分频器的设计
所用50M分频器在实验二中已有具体说明,不再赘述。
2、彩灯控制器的设计
(1)、功能及原理
清零端reset:高电平有效,异步清零。
即当reset=1时,灯全灭。
使能端enable:enable=1时,彩灯工作。
花样控制端s10:s10取不同的值来控制花样的转换。
led10s:控制10个led灯的亮灭。
(2)、逻辑器件符号
(3)、VHDL语言
3、七段译码器设计
(1)、功能原理
原理在实验一中已详细说明,功能是显示花样序号。
(2)、VHDL语言
4、顶层文件原理图如下:
5、仿真波形
第一种波形:(从左到右依次点亮,再从右到左依次点亮)
第二种波形:(从左到右依次两两点亮,再从右到左依次两两点亮)
第三种波形:(从内到外顺次展开点亮)
第四种波形:(闪烁点亮)
6、仿真分析
由波形仿真结果可知,源程序正确。
五、实验心得
这次实验在参考资料的基础上,加以修改,使程序满足设计要求。
因为本次实验完全靠独立完成,在设计过程中出现了很多问题,编译和波形仿真的过程中都不顺利,在和同学交流探讨的过程中,一一将这些问题解决,最终成功设计出了四种花型。
通过这次实验,我真正体会到了EDA这门课的乐趣,提高了自身的能力。