当前位置:文档之家› 西安电子科技大学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中实现。

本项实验很容易实现这一目的。

例1作为7段BCD码译码器的设计,输出信号LED7S的7位分别接如实验图1数码管的7个段,高位在左,低位在右。

例如当LED7S输出为"0010010" 时,数码管的7个段:g、f、e、d、c、b、a分别接0、0、1、0、0、1、0,实验中的数码管为共阳极的,接有低电平的段发亮,于是数码管显示“5”。

实验图1 数码管及其电路2.2 实验内容:参考后面的七段译码器程序,在QUARTUS II上对以下程序进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。

试验程序如下:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DecL7S ISPORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ;END ;ARCHITECTURE one OF DecL7S ISBEGINPROCESS( A )BEGINCASE A(3 DOWNTO 0) ISWHEN "0000" => LED7S <= "1000000" ; -- X“80”->0WHEN "0001" => LED7S <= "1111001" ; -- X“79”->1WHEN "0010" => LED7S <= "0100100" ; -- X“24”->2WHEN "0011" => LED7S <= "0110000" ; -- X“30”->3WHEN "0100" => LED7S <= "0011001" ; -- X“19”->4WHEN "0101" => LED7S <= "0010010" ; -- X“12”->5WHEN "0110" => LED7S <= "0000010" ; -- X“02”->6WHEN "0111" => LED7S <= "1111000" ; -- X“78”->7WHEN "1000" => LED7S <= "0000000" ; -- X“00”->8WHEN "1001" => LED7S <= "0010000" ; -- X“10”->9WHEN "1010" => LED7S <= "0001000" ; -- X“08”->AWHEN "1011" => LED7S <= "0000011" ; -- X“03”->BWHEN "1100" => LED7S <= "1000110" ; -- X“46”->CWHEN "1101" => LED7S <= "0100001" ; -- X“21”->DWHEN "1110" => LED7S <= "0000110" ; -- X“06”->EWHEN "1111" => LED7S <= "0001110" ; -- X“0E”->FWHEN OTHERS => NULL ;END CASE ;END PROCESS ;END ;波形仿真如图:如图,当输入端A依次输入0-15的四位二进制码时,输出端依次输出(0-9及A-F)的数码管所对应的七位二进制数,例如,当输入0000时,输出端输出1000000(即字符@的ASCII 码),显示在数码段上即‘0’。

实验二计数器设计与显示实验目的:(1)熟悉利用QUARTUS II中的原理图输入法设计组合电路,掌握层次化设计的方法;(2)学习计数器设计、多层次设计方法和总线数据输入方式的仿真,并进行电路板下载演示验证。

实验内容:1.完成计数器设计设计含有异步清零和计数使能的4位二进制加减可控计数器。

要求:(1)写出设计框图、流程和方法;(2)利用VHDL设计实现程序;(3)进行波形仿真验证;(4)完成设计实验报告:将实验原理、设计过程、编译仿真波形和分析结果写进实验报告。

其设计原理:由三个输入端CLC,CLK,EN控制计数器的输出和计数方式,其中当清零端CLC=’1’时,输出端输出为全零;当CLC=’0’时,正常计数。

其中如果出现时钟上升沿,加减控制端EN=’1’时,为加法计数,反之则为减法计数。

在程序设计时,在进程中引入信号Q1,在进程中完成标准逻辑位的加减,结束进程之后将其给输出。

设计框图如上所示。

实验程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4 ISPORT(CLK:IN STD_LOGIC;EN:IN STD_LOGIC;CLC:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY CNT4;ARCHITECTURE BHV OF CNT4 ISSIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF CLC='1' THENQ1<=(OTHERS=>'0');ELSIF (CLK'EVENT AND CLK='1') THENIF EN='1' THENQ1<=Q1+1;ELSEQ1<=Q1-1;END IF;END IF;END PROCESS;Q<=Q1;END ARCHITECTURE BHV;波形仿真结果如图:如上图所示,当CLC=’1’时,清零;否则,正常计数。

EN=’0’时,减法计数,EN=’1’时,加法计数。

仿真验证实验设计成功。

2.计数器显示译码设计与下载用原理图输入法的方式,以前面设计的七段译码器DecL7S和计数器为底层元件,完成“计数器显示译码”的顶层文件设计。

设计原理:为了使数码管的变化能够用肉眼观察,将输入时钟(50MHz)先进行进行50M分频,输出频率为1Hz的时钟。

其中分频器采用M=50M计数器的进位输出端来实现,将分频后的时钟信号送入四位二进制加减可控计数器的时钟输入端。

四位二进制加减可控计数器由实验1中提供,其输出作为七段译码器的输入端。

50M分频器程序设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT5M ISPORT(CLK:IN STD_LOGIC;CLK_OUT:OUT STD_LOGIC);END ENTITY CNT5M;ARCHITECTURE BHV OF CNT5M ISSIGNAL COUNT:STD_LOGIC_VECTOR(26 DOWNTO 0);BEGINPROCESSBEGINWAIT UNTIL CLK'EVENT AND CLK='1';IF(COUNT<49999999) THENCOUNT<=COUNT+1;CLK_OUT<='0';ELSECOUNT<=(OTHERS=>'0');CLK_OUT<='1';END IF;END PROCESS;END ARCHITECTURE BHV;修改后加减计数器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4 ISPORT(CLK:IN STD_LOGIC;UPDOWN:IN STD_LOGIC;RESET,ENABLE:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY CNT4;ARCHITECTURE BHV OF CNT4 ISSIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF ENABLE='1' THENIF RESET='1' THENQ1<=(OTHERS=>'0');ELSIF (CLK'EVENT AND CLK='1') THENIF UPDOWN='1' THENQ1<=Q1+1;ELSEQ1<=Q1-1;END IF;END IF;END IF;END PROCESS;Q<=Q1;END ARCHITECTURE BHV;其原理图如下:其中为了便于观察,我们只仿真未加分频器时的的波形图如下:其中,ENABLE为使能端,其为1时,电路正常工作。

相关主题