EDA计数器及数码显示实验报告
《EDA技术》实验报告
《EDA技术》课程实验报告姓名:学号:班级:同组者:指导教师:信息科学与工程学院2013-2014学年第二学期《EDA技术》课程实验报告学生姓名:所在班级:电信1101班指导教师:老师记分及评价:一、实验名称实验1-3:简单数字电子钟的设计(原理图输入设计方法)二、任务及要求【基本部分】1、在QuartusII平台上,采用原理图输入设计方法,调用两片74160十进制计数器,采用反馈置数法,完成一个24进制同步计数器的设计,并进行时序仿真。
要求具备使能功能和异步清零功能,设计完成后封装成一个元件。
2、同1,采用原理图输入设计方法,调用两片74160十进制计数器,采用反馈置数法,完成一个60进制同步计数器的设计,并进行时序仿真。
要求具备使能功能和异步清零功能,设计完成后封装成一个元件。
3、利用1和2所设计的60进制计数器和24进制计数器元件,采用同步的方式设计一个简单的数字电子钟并进行时序仿真,要求具有时分秒功能显示功能、使能功能和异步清零功能。
【发挥部分】1、思考:采用反馈清零法设计的计数器与反馈置数法有何不同?请用实例进行仿真。
2、如何实现电子钟时分秒连续可调的功能?三、原理图1、如图3.1为24进制计数器原理图,2、如图3.2为60进制计数器的原理图,该图在24进制的基础上进行改进3、如图3.3为电子时钟原理图,4、图3.4a、3.4b分别为24、60进制原理图的封装元件1、g[3..0]OUTPUT s[3..0]OUTPUT图3.1 24进制计数器原理图2、g[3..0]OUTPUT s[3..0]OUTPUT图3.2 60进制原理图3、图3.3 数字电子时钟4、24jinzhi insten clr clk 24co co g[3..0]s[3..0]24jinzhi2insten clr clk 60co co g[3..0]s[3..0]3.4a 24进制原理图封装图 3.4b 60进制原理图封装四、仿真及结果分析1、图4.1 24进制时序仿真图2、图4.2 60进制时序仿真图3、图4.3 电子时钟时序仿真图五、小结在实验中需要注意的是创建的文件名需要和工程名字保持一致,若不一致,在进行功能仿真和时序仿真时会出现错误。
EDA实验报告
EDA实验报告班级:姓名:目录实验一:七段数码显示译码器设计 (1)摘要 (1)实验原理 (1)实验方案及仿真 (1)引脚下载 (2)实验结果与分析 (3)附录 (3)实验二:序列检测器设计 (6)摘要 (6)实验原理 (6)实现方案及仿真 (6)引脚下载 (7)实验结果与分析 (8)实验三:数控分频器的设计 (11)摘要 (11)实验原理 (11)方案的实现与仿真 (11)引脚下载 (12)实验结果及总结 (12)附录 (12)实验四:正弦信号发生器 (14)摘要 (14)实验原理 (14)实现方案与仿真 (14)嵌入式逻辑分析及管脚下载 (16)实验结果与分析 (17)附录 (18)实验一:七段数码显示译码器设计摘要:七段译码器是一种简单的组合电路,利用QuartusII的VHDL语言十分方便的设计出七段数码显示译码器。
将其生成原理图,再与四位二进制计数器组合而成的一个用数码管显示的十六位计数器。
整个设计过程完整的学习了QuartusII的整个设计流程。
实验原理:七段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA\CPLD中来实现。
本实验作为7段译码器,输出信号LED7S的7位分别是g、f、e、d、c、b、a,高位在左,低位在右。
例如当LED7S 输出为“1101101”时,数码管的7个段g、f、e、d、c、b、a分别为1、1、0、1、1、1、0、1。
接有高电平段发亮,于是数码管显示“5”。
实验方案及仿真:I、七段数码显示管的设计实现利用VHDL描述语言进行FPGA上的编译实现七段数码显示译码器的设计。
运行QuartusII在G:\QuartusII\LED7S\下新建一个工程文件。
新建一个vhdl语言编译文件,编写七段数码显示管的程序见附录1-1。
EDA-实验报告
实验一五人表决器设计一、实验目的1 加深对电路理论概念的理解3 加深计算机辅助分析及设计的概念4 了解及初步掌握对电路进行计算机辅助分析的过程二、实验要求制作一个五人表决器,共五个输入信号,一个输出信号。
若输入信号高电平数目多于低电平数目,则输出为高,否则为低。
三、实验原理根据设计要求可知,输入信号共有2^5=32种可能,然而输出为高则有15种可能。
对于本设计,只需一个模块就能完成任务,并采用列写真值表是最简单易懂的方法。
四、计算机辅助设计设A,B,C,D,E引脚为输入引脚,F为输出引脚。
则原理图如1所示图1.1 五人表决器原理图实验程序清单如下:MODULE VOTEA,B,C,D,E PIN;F PIN ISTYPE 'COM';TRUTH_TABLE([A,B,C,D,E]->[F])[0,0,1,1,1]->[1];[0,1,1,1,0]->[1];[0,1,0,1,1]->[1];[0,1,1,0,1]->[1];[1,0,1,1,1]->[1];[1,1,0,1,1]->[1];[1,1,1,0,1]->[1];[1,1,1,1,0]->[1];[1,1,1,0,0]->[1];[1,1,0,1,0]->[1];[1,1,1,1,1]->[1];[1,1,0,0,1]->[1];[1,0,0,1,1]->[1];[1,0,1,0,1]->[1];[1,0,1,1,0]->[1];END五、实验测试与仿真根据题目要求,可设输入分别为:0,0,0,0,0;1,1,1,1,1;1,0,1,0,0;0,1,0,1,1。
其测试程序如下所示:MODULE fivevoteA,B,C,D,E,F PIN;X=.X.;TEST_VECTORS([A,B,C,D,E]->[F])[0,0,0,0,0]->[X];[1,1,1,1,1]->[X];[1,0,1,0,0]->[X];[0,1,0,1,1]->[X];END测试仿真结果如图1.2所示:图1.2 五人表决器设计仿真图可知,设计基本符合题目要求。
计数器eda实验报告
计数器eda实验报告计数器EDA实验报告引言:计数器是数字电路中常见的基本模块之一,用于计算和记录输入脉冲信号的数量。
在本次实验中,我们将使用EDA工具对计数器进行设计和分析。
通过对计数器的EDA实验,我们旨在深入了解计数器的工作原理和性能特点。
一、实验目的本次实验的目的是通过EDA工具对计数器进行设计和分析,具体包括以下几个方面:1. 了解计数器的基本原理和工作方式;2. 学习使用EDA工具进行电路设计和仿真;3. 分析计数器的性能指标,如最大计数值、计数速度等。
二、实验步骤1. 设计计数器的电路原理图;2. 使用EDA工具进行电路仿真;3. 分析仿真结果,包括计数器的计数规律、计数速度等;4. 调整计数器的参数,观察对计数结果的影响;5. 总结实验结果并提出改进意见。
三、计数器的设计原理计数器是由触发器和逻辑门组成的电路,可以实现对输入脉冲信号的计数功能。
常见的计数器包括二进制计数器、十进制计数器等。
在本次实验中,我们将设计一个4位二进制计数器。
四、EDA工具的使用我们选择使用Xilinx ISE Design Suite进行电路设计和仿真。
该工具具有强大的功能和易于使用的界面,方便我们进行计数器的设计和分析。
五、仿真结果分析通过对计数器的仿真结果进行分析,我们可以得到以下结论:1. 计数器的计数规律:根据计数器的设计原理,我们可以观察到计数器的计数规律为二进制递增。
2. 计数器的计数速度:计数器的计数速度取决于输入脉冲信号的频率和计数器的时钟频率。
通过适当调整时钟频率,我们可以实现不同速度的计数。
六、参数调整与性能改进在实验过程中,我们可以通过调整计数器的参数来改进其性能。
例如,我们可以增加计数器的位数,以提高其计数范围;或者调整计数器的时钟频率,以改变其计数速度。
通过不断优化和改进,我们可以得到更加高效和灵活的计数器设计。
七、实验总结通过本次计数器EDA实验,我们深入了解了计数器的工作原理和性能特点,并学会了使用EDA工具进行电路设计和仿真。
EDA实验报告——计数器
EDA实验报告——计数器一、实验目的本实验主要是通过搭建计数器,了解计数器的基本原理和使用方法,掌握数字电路的设计方法及仿真分析方法。
二、实验原理计数器是数字电路的重要组成部分,在数字电路的多个应用中都有着广泛的应用。
计数器可以实现多种数字处理功能,如二进制计数、定量计数、计时、频率分频等。
三、实验材料1. Protues软件2. 74LS90集成电路3. 7段数码管4. 4位拨动开关5. 4个LED灯6. 电路板、杜邦线等。
四、实验内容1. 给定 74LS90 计数器数据手册,分析本实验使用到的 74LS90 芯片的接口及特性。
2. 根据实验需求,用 Protues 软件搭建计数器电路图。
3. 在计数器电路图中连通 74LS90 芯片的译码器输出端口,设置与四个拨动开关相连的输入端口以及 LED 显示器输出端口,实现计数器的计数。
4. 在计数器的输出端口增加 7 段数码管,通过数码管显示计数值。
5. 根据实验需求搭建模电流源电路,对实验电路进行仿真分析,并对仿真结果进行评估。
五、实验步骤2. 从库中拖动 74LS90 芯片、7 段数码管、拨动开关、LED 灯等元件到设计图中。
4. 在 74LS90 芯片工作模式的选择端口接上拨动开关,选择计数器的计数方式。
5. 配置模电流源电路,并设置仿真参数。
6. 进行仿真并记录仿真结果。
七、实验结果本实验搭建的计数器能够正确地进行计数,并且将计数结果通过数码管和 LED 灯显示出来。
在进行仿真分析时,根据仿真数据评估实验电路的合理性。
本实验通过搭建计数器,了解计数器的基本原理和使用方法,掌握数字电路的设计方法及仿真分析方法。
实验中主要学习了数字计数器的结构、性能和工作原理,在搭建计数器电路时主要包括了 74LS90 芯片的接口和设置以及输入输出端口的设置。
通过本实验,我进一步了解了计数器的基本知识和原理,也学习了如何使用 Protues 软件进行电路的搭建和仿真。
EDA实验报告
湖北民族学院信息工程学院实验报告(电气、电子类专业用)班级: 09 姓名:周鹏学号:030940908 实验成绩:实验地点: EDA实验室课程名称:数字系统分析与设计实验类型:设计型实验题目:实验一简单的QUARTUSII实例设计,基于VHDL格雷码编码器的设计实验仪器:HH-SOC-EP3C40EDA/SOPC实验开发平台,PC机。
一、实验目的1、通过一个简单的3—8译码器的设计,掌握组合逻辑电路的设计方法。
2、初步了解QUARTUSII原理图输入设计的全过程。
3、掌握组合逻辑电路的静态测试方法。
4、了解格雷码变换的原理。
5、进一步熟悉QUARTUSII软件的使用方法和VHDL输入的全过程。
6、进一步掌握实验系统的使用。
二、实验原理、原理图及电路图3-8译码器三输入,八输出。
当输入信号按二进制方式的表示值为N时,输出端标号为N的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。
因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平的情况下,能表示所有的输入组合。
其真值表如表1-1所示输入输出A B C D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 0 0 0 0 0 0 10 0 1 0 0 0 0 0 0 1 00 1 0 0 0 0 0 0 1 0 00 1 1 0 0 0 0 1 0 0 01 0 0 0 0 0 1 0 0 0 01 0 1 0 0 1 0 0 0 0 01 1 0 1 0 0 0 0 0 01 1 1 1 0 0 0 0 0 0 0表1-1 三-八译码器真值表译码器不需要像编码器那样用一个输出端指示输出是否有效。
但可以在输入中加入一个输出使能端,用来指示是否将当前的输入进行有效的译码,当使能端指示输入信号无效或不用对当前信号进行译码时,输出端全为高电平,表示无任何信号。
本例设计中没有考虑使能输入端,自己设计时可以考虑加入使能输入端时,程序如何设计。
EDA实验报告-实验3计数器电路设计
暨南大学本科实验报告专用纸课程名称 EDA实验成绩评定实验项目名称计数器电路设计指导教师郭江陵实验项目编号 03 实验项目类型验证实验地点 B305 学院电气信息学院系专业物联网工程组号: A6一、实验前准备本实验例子使用独立扩展下载板EP1K10_30_50_100QC208(芯片为EP1K100QC208)。
EDAPRO/240H实验仪主板的VCCINT跳线器右跳设定为; EDAPRO/240H实验仪主板的VCCIO 跳线器组中“”应短接,其余VCCIO均断开;独立扩展下载板“EP1K10_30_50_100QC208”的VCCINT跳线器组设定为;独立扩展下载板“EP1K10_30_50_100QC208”的VCCIO跳线器组设定为。
请参考前面第二章中关于“电源模块”的说明。
二、实验目的1、了解各种进制计数器设计方法2、了解同步计数器、异步计数器的设计方法3、通过任意编码计数器体会语言编程设计电路的便利三、实验原理时序电路应用中计数器的使用十分普遍,如分频电路、状态机都能看到它的踪迹。
计数器有加法计数器、可逆计数器、减法计数器、同步计数器等。
利用MAXPLUSII已建的库74161、74390分别实现8位二进制同步计数器和8位二——十进制异步计数器。
输出显示模块用VHDL实现。
四、实验内容1、用74161构成8位二进制同步计数器(程序为T3-1);2、用74390构成8位二——十进制异步计数器(程序为T3-2);3、用VHDL语言及原理图输入方式实现如下编码7进制计数器(程序为T3-3):0,2,5,3,4,6,1五、实验要求学习使用Altera内建库所封装的器件与自设计功能相结合的方式设计电路,学习计数器电路的设计。
六、设计框图首先要熟悉传统数字电路中同步、异步计数器的工作与设计。
在MAX+PLUS II中使用内建的74XX库选择逻辑器件构成计数器电路,并且结合使用VHDL语言设计转换模块与接口模块,最后将74XX模块与自设计模块结合起来形成完整的计数器电路。
EDA计数器实验
计数器一、实验目的1、设计一个带使能输入、进位输出及同步清0的增1十进制计数器2、设计一个带计数使能、同步清0、同步加载的4位计数器3、设计一个带使能、同步清0控制和进位输出的增14位二进制计数器,计数结果由一位7段码管显示。
4、设计一个带使能和同步清0控制的增1减18位二进制计数器,计数结果由7段数码管显示。
二、实验内容1、带使能、同步清0控制和进位输出的增14位二进制计数器VHDL源代码library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity counter2 isPort ( clk : in STD_LOGIC;clr : in STD_LOGIC;en : in STD_LOGIC;co : out STD_LOGIC;y : out STD_LOGIC_VECTOR (6 downto 0));end counter2;architecture Behavioral of counter2 issignal cnt:STD_LOGIC_VECTOR(3 downto 0);signal led:STD_LOGIC_VECTOR(6 downto 0);beginprocess(clk)beginif(clk'event and clk='1')thenif clr='1' thencnt<=(others=>'0');elsif en='1' thenif cnt="1111" thencnt<="0000";elsecnt<=cnt+'1';end if;end if;end if;end process;co<='1' when cnt="1111" else '0';y<=not led;with cnt selectled<="1111001"when"0001","0100100"when"0010","0110000"when"0011","0011001"when"0100","0010010"when"0101","0000010"when"0110","1111000"when"0111","0000000"when"1000","0010000"when"1001","0001000"when"1010","0000011"when"1011","1000110"when"1100","0100001"when"1101","0000110"when"1110","0001110"when"1111","1000000"when others;end Behavioral;激励文件源代码LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.all;USE ieee.numeric_std.ALL;ENTITY counter_2_tbw_vhd ISEND counter_2_tbw_vhd;ARCHITECTURE behavior OF counter_2_tbw_vhd IS-- Component Declaration for the Unit Under Test (UUT) COMPONENT counter2PORT(clk : IN std_logic;clr : IN std_logic;en : IN std_logic;co : OUT std_logic;y : OUT std_logic_vector(6 downto 0));END COMPONENT;--InputsSIGNAL clk : std_logic := '0';SIGNAL clr : std_logic := '0';SIGNAL en : std_logic := '0';--OutputsSIGNAL co : std_logic;SIGNAL y : std_logic_vector(6 downto 0);BEGIN-- Instantiate the Unit Under Test (UUT)uut: counter2 PORT MAP(clk => clk,clr => clr,en => en,co => co,y => y);clk<=not clk after 20 ns;tb : PROCESSBEGINclr<='1','0' after 30 ns;en<='0','1' after 20 ns;-- Wait 100 ns for global reset to finish--wait for 100 ns;-- Place stimulus herewait; -- will wait foreverEND PROCESS;END;功能仿真时序仿真管脚设置NET "clk" LOC = "E10" ;NET "clr" LOC = "L13" ;NET "co" LOC = "F12" ;NET "en" LOC = "L14" ;NET "y<0>" LOC = "B4" ;NET "y<1>" LOC = "A4" ;NET "y<2>" LOC = "D5" ;NET "y<3>" LOC = "C5" ;NET "y<4>" LOC = "A6" ;NET "y<5>" LOC = "B6" ;NET "y<6>" LOC = "E7" ;实验现象七段数码管显示0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F,每次循环完成co所接led灯亮一下,表示进位。
EDA计数器实验报告
EDA计数器实验报告一、实验目的:1、深刻理解VHDL语言元件例化的方法。
2、掌握计数器的设计原理以及设计方法。
3、结合以前学过的数码管扫描知识完成计数器显示学号后三位。
二、实验原理:计数器是可以统计时钟脉冲次数的时序器件,为了使计数器可以显示学号后三位,采用级联的形式来设计计数器,如十进制的计数器与六进制的计数器级联即构成了六十进制计数器。
使用3个带Carry-in和Carry-out模10的计数器的计数输出分别作为计数器个位、十位、百位的输出,设计模108计数器。
实验内容:本次实验要求设计一个模为自己学号后 3 位的计数器(模108)。
各个零部件可以用LPM来定制,而顶层则要使用VHDL语言以元件例化的方法来实现。
1、VHDL语言的部分代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity exp_cnt108 isport(clk0,clk,clrn,En:in std_logic;b,s,g:out std_logic_vector(3 downto 0);c:out std_logic;cc:out std_logic;sb,ss,sg:out std_logic;ga,gb,gc,gd,ge,gf,gg:out std_logic);end exp_cnt108;architecture rtl of exp_cnt108 iscomponent count4port(clk:in std_logic;q:out std_logic_vector(1 downto 0));end component;component decoder2_3port(data:in std_logic_vector(1 downto 0);eq0,eq1,eq2:out std_logic);end component;component mux4_3_1port( data0x : IN STD_LOGIC_VECTOR (3 DOWNTO 0);data1x : IN STD_LOGIC_VECTOR (3 DOWNTO 0);data2x : IN STD_LOGIC_VECTOR (3 DOWNTO 0);sel : IN STD_LOGIC_VECTOR (1 DOWNTO 0);result : OUT STD_LOGIC_VECTOR (3 DOWNTO 0));end component;component my7449port(cout:in std_logic_vector(3 downto 0);a,b,c,d,e,f,g:out std_logic);end component;component exp_cnt10port(Clk,clrn,En,cin:in std_logic;cq:out std_logic_vector(3 downto 0);cout:out std_logic);end component;signal clr,cin:std_logic;signal q:std_logic_vector(1 downto 0);signal coutb,couts,coutg,cout:std_logic_vector(3 downto 0);signal c1,c2,c3: std_logic;signal eq0,eq1,eq2: std_logic;signal qa,qb,qc,qd,qe,qf,qg: std_logic;beginu0:count4 port map(clk0,q);u1:decoder2_3 port map(q,eq0,eq1,eq2);sb<=eq2;ss<=eq1;sg<=eq0;cin<='1';u2:exp_cnt10 port map(clk,clrn or clr,En,cin,coutg,c1);u3:exp_cnt10 port map(clk,clrn or clr,En,c1,couts,c2);u4:exp_cnt10 port map(clk,clrn or clr,En,c2 and c1,coutb,c3);b<=coutb;s<=couts;g<=coutg;cc<=c1;c<=c2;clr<=coutb(0) and coutg(3);u5:mux4_3_1 port map(coutg,couts,coutb,q,cout);u6:my7449 port map(cout,qa,qb,qc,qd,qe,qf,qg);ga<=qa;gb<=qb;gc<=qc;gd<=qd;ge<=qe;gf<=qf;gg<=qg;end rtl;三、波形仿真及下载验证:如图所示:波形仿真:仿真参数设置:Entime:45us Grid size:100ns clk:clock→period:10ns波形说明:clrn为0,En为0时,保持;clrn为0,En为1时,计数;clrn为1时,清零;由仿真图知,计数到107后从0开始计数。
EDA实验报告-cnt9999
EDA实验报告CNT9999计数器的设计指导老师:***班级:电技1503学号:***********姓名:***交通工程学院2017.10.15实验一0~9999的计数器电路的设计1.实验目的(1)进一步熟悉和掌握Quartus II软件的使用。
(2)进一步熟悉和掌握GW48-CK或其他EDA实验开发系统的使用。
(3)学习和掌握VHDL进程语句和元件例化语句的使用。
2.实验内容设计并调试好一个计数范围为0~9999的4位十进制计数器电路CNT9999,并用GW48-CK或其他EDA实验开发系统进行硬件验证。
3实验条件(1)开发软件:Quartus II 13.0。
(2)实验设备:GW48-CK EDA 实验开发系统。
(3)拟用芯片:EP3C55F484C7。
4.实验设计1)系统原理框图为了简化设计并便于显示,本计数器电路CNT9999的设计分为两个层次,其中底层电路包括四个十进制计数器模块CNT10,再由这四个模块按照图1.1所示的原理图构成顶层电路CNT9999.图1.1 CNT9999电路原理图2)VHDL程序计数器CNT9999的底层和顶层电路均采用VHDL文本输入,有关VHDL程序如下。
CNT10的VHDL源程序:--CNT10.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK:IN STD_LOGIC;CLR:IN STD_LOGIC;ENA: IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CO: OUT STD_LOGIC );END ENTITY CNT10;ARCHITECTURE ART OF CNT10 ISSIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,CLR,ENA) ISBEGINIF CLR='1' THEN CQI<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF ENA='1' THENIF CQI="1001" THEN CQI<="0000";ELSE CQI<=CQI+'1';END IF;END IF;END IF;END PROCESS;PROCESS(CQI) ISBEGINIF CLK'EVENT AND CLK='1' THENIF CQI<"1001" THEN CO<='0';ELSE CO<='1';END IF;END IF;END PROCESS;CQ<=CQI;END ARCHITECTURE ART;CNT9999的VHDL源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;--使用IEEE.STD_LOGIC_1164程序包PORT(CLR: IN STD_LOGIC;CLK: IN STD_LOGIC;CLK2:IN STD_LOGIC;ENA: IN STD_LOGIC;COM: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ENTITY DCNT9999;ARCHITECTURE ART OF DCNT9999 ISCOMPONENT CNT10 IS --CNT10元件定义语句PORT(CLK, CLR, ENA: IN STD_LOGIC;CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CO: OUT STD_LOGIC);END COMPONENT CNT10;COMPONENT CTRLS IS --元件定义语句PORT(CLK: IN STD_LOGIC;--端口说明语句(端口名:端口模式数据类型)SEL: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT CTRLS;COMPONENT DISPLAY IS --元件定义语句PORT(SEL: IN STD_LOGIC_VECTOR(2 DOWNTO 0);DATAIN: IN STD_LOGIC_VECTOR(15 DOWNTO 0);COM: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT DISPLAY;SIGNAL S0,S1,S2: STD_LOGIC; --信号的定义,定义了3个标准位的单值信号SIGNAL SEL: STD_LOGIC_VECTOR(2 DOWNTO 0);--定义1个标准位矢量的位矢量信号SEL,含有3个元素SIGNAL DOUT:STD_LOGIC_VECTOR(15 DOWNTO 0);--定义1个标准位矢量的位矢量信号DOUT,有16个数组元素BEGINU0: CNT10 PORT MAP(CLK,CLR, ENA, DOUT(3 DOWNTO 0), S0); --元件例化语句,位置关联的方式U1: CNT10 PORT MAP(S0, CLR, ENA, DOUT(7 DOWNTO 4), S1);U2: CNT10 PORT MAP(S1, CLR, ENA, DOUT(11 DOWNTO 8), S2);U3: CNT10 PORT MAP(S2, CLR, ENA, DOUT(15 DOWNTO 12));U4: CTRLS PORT MAP(CLK2,SEL);U5: DISPLAY PORT MAP(SEL(2 DOWNTO 0),DOUT(15 DOWNTO 0),COM(7 DOWNTO 0),SEG(7 DOWNTO 0));--位置关联方式END ARCHITECTURE ART;3)仿真波形设置本设计包括两个层次,因此先进行底层的十进制计数器CNT10的仿真,再进行顶层CNT9999的仿真。
EDA实验报告
实验一:QUARTUS II 软件使用及组合电路设计仿真实验目的:学习QUARTUS II 软件的使用,掌握软件工程的建立,VHDL 源文件的设计和波形仿真等基本内容。
实验内容:1.四选一多路选择器的设计基本功能及原理:选择器常用于信号的切换,四选一选择器常用于信号的切换,四选一选择器可以用于4路信号的切换。
四选一选择器有四个输入端a,b,c,d,两个信号选择端s(0)和s(1)及一个信号输出端y。
当s输入不同的选择信号时,就可以使a,b,c,d中某一个相应的输入信号与输出y端接通。
逻辑符号如下:程序设计:软件编译:在编辑器中输入并保存了以上四选一选择器的VHDL源程序后就可以对它进行编译了,编译的最终目的是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。
仿真分析:仿真结果如下图所示分析:由仿真图可以得到以下结论:当s=0(00)时y=a;当s=1(01)时y=b;当 s=2(10)时y=c;当s=3(11)时y=d。
符合我们最开始设想的功能设计,这说明源程序正确。
2.七段译码器程序设计基本功能及原理:七段译码器是用来显示数字的,7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA或CPLD中实现。
本项实验很容易实现这一目的。
输出信号的7位分别接到数码管的7个段,本实验中用的数码管为共阳极的,接有低电平的段发亮。
数码管的图形如下七段译码器的逻辑符号:程序设计:软件编译:在编辑器中输入并保存了以上七段译码器的VHDL源程序后就可以对它进行编译了,编译的最终目的是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件。
仿真分析:仿真结果如下图所示:分析:由仿真的结果可以得到以下结论:当a=0(0000)时led7=1000000 此时数码管显示0;当a=1(0001)时led7=1111001 此时数码管显示1;当a=2(0010)时led7=0100100 此时数码管显示2;当a=3(0011)时led7=0110000 此时数码管显示3;当a=4(0100)时led7=0011001 此时数码管显示4;当a=5(0101)时led7=0010010 此时数码管显示5;当a=6(0110)时led7=0000010 此时数码管显示6;当a=7(0111)时led7=1111000 此时数码管显示7;当a=8(1000)时led7=0000000 此时数码管显示8;当a=9(1001)时led7=0010000 此时数码管显示9;当a=10(1010)时led7=0001000 此时数码管显示A;当a=11(1011)时led7=0000011 此时数码管显示B;当a=12(1100)时led7=1000110 此时数码管显示C;当a=13(1101)时led7=0100001 此时数码管显示D;当a=14(1110)时led7=0000110 此时数码管显示E;当a=15(1111)时led7=0001110 此时数码管显示F;这完全符合我们最开始的功能设计,所以可以说明源VHDL程序是正确的。
EDA实验报告实验四:带7段显示器的模100计数器
实验四:带7段显示器的模100计数器一、预习内容1.结合教材中的介绍熟悉Quartus Ⅱ软件的使用及设计流程;2.四位多路复用器设计原理;3.对应的VHDL 代码源程序。
二、实验目的1.掌握文本输入设计方法;2.熟悉QuartusⅡ软件的使用及设计流程;3.掌握带7段显示器的模100计数器的设计。
三、实验器材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干四、实验要求1、用文本输入法设计一个带7段显示器的模100计数器;2、用波形编辑工具生成一个带7段显示器的模100计数器的测试向量(即测试数据);3、完成四位多路复用器的时序仿真。
4、下载到实验箱,看是否正确。
五、实验原理与内容1、原理:带7段显示器的模100计数器能够实现计数功能,并能计数到99后自动清零。
重新开始计数。
六、实验步骤1、用文本输入法设计一个带7段显示器的模100计数器;2、利用步骤一得到的带7段显示器的模100计数器使用图形输入法实现一个带7段显示器的模100计数器;3、后的顶层文件进行编译、仿真和下载;4、看结果是否正确;改变频率可快速计数至99,看能否清零,能否在清零后继续计数。
七、实验报告1、写出实验源程序,并附上综合结果和仿真波形;library ieee;use ieee.std_logic_1164.all;entity counter isport (clk,reset:in std_logic;digit1,digit2:out std_logic_vector(6 downto 0)); end counter;architecture counter1 of counter isbeginprocess (clk,reset)variable temp1: integer range 0 to 10;variable temp2: integer range 0 to 10;beginif (reset='1') thentemp1 := 0;temp2 := 0;elsif (clk'event and clk = '1') thentemp1 := temp1+1;if (temp1=10) thentemp1 := 0;temp2 := temp2+1;if (temp2=10) thentemp2 := 0;end if;end if;end if;case temp1 iswhen 0=>digit1<="1111110";--7Ewhen 1=>digit1<="0110000";--30when 2=>digit1<="1101101";--6Dwhen 3=>digit1<="1111001";--79when 4=>digit1<="0110011";--33when 5=>digit1<="1011011";--5Bwhen 6=>digit1<="1011111";--5Fwhen 7=>digit1<="1110000";--70when 8=>digit1<="1111111";--7Ewhen 9=>digit1<="1111011";--7Bwhen others => null;end case;case temp2 iswhen 0=>digit1<="1111110";--7Ewhen 1=>digit1<="0110000";--30when 2=>digit1<="1101101";--6Dwhen 3=>digit1<="1111001";--79when 4=>digit1<="0110011";--33when 5=>digit1<="1011011";--5Bwhen 6=>digit1<="1011111";--5Fwhen 7=>digit1<="1110000";--70when 8=>digit1<="1111111";--7Ewhen 9=>digit1<="1111011";--7Bwhen others => null;end case;end process;end counter1;2、分析实验结果;实验结果正确,能达到理想效果。
EDA实验报告实验五计数器
1 / 3 实验报告 实验五:计数器一.实验目的:一.实验目的:进一步学习层次设计法设计电路进一步学习层次设计法设计电路进一步学习混合原理图及程序法设计法进一步学习混合原理图及程序法设计法二.实验内容二.实验内容设计位十进制计数器设计位十进制计数器要求用时钟源做计计数时钟输入,计数结果用实验板上个数码管显示要求用时钟源做计计数时钟输入,计数结果用实验板上个数码管显示计数器要求有清零端(,用控制)和使能端(,用控制),都是高电平有效,用实验板,设置板,设置 三.实验现象三.实验现象数码依次按十进制增计数。
上拨则清零,下拨停止计数。
改变的频率可以观看计数快慢。
慢。
四.连线与跳线四.连线与跳线数码显示数据、控制及频率源的脚对应关系见实验一数码显示数据、控制及频率源的脚对应关系见实验一,与芯片脚对应关系:,与芯片脚对应关系:, 最高位计数器进位输出可自行设计,可以引出,也可以不引出最高位计数器进位输出可自行设计,可以引出,也可以不引出五.实验内容和步骤(整个设计采用层次法,包括以下文件)五.实验内容和步骤(整个设计采用层次法,包括以下文件)1. (产生三个译码器的输入信号,以控制哪个数码管工作);2.(选多路复用电路,用于顺序输入位数码管的显示数据); 3. (数据与段数码管显示转换电路);4.(十进制计数器程序); 5. 形成顶层图形文件:六.思考题(扩展以上方法实现时钟)六.思考题(扩展以上方法实现时钟)6.6.首先修改,使得只有六个灯循环(最左两盏表示、正中间两盏表示、最右两盏表示):7.7. (六进制计数器程序六进制计数器程序六进制计数器程序)): 8.8. (二十四进制计数器程序,是用十六进制显示部分的二十四进制计数器程序,是用十六进制显示部分的二十四进制计数器程序,是用十六进制显示部分的)):9. 形成顶层图形文件:七.实验心得:七.实验心得:好好作图,用手可以勾画出神奇的硬件世界;好好作图,用手可以勾画出神奇的硬件世界;进一步熟悉了混合原理图以及程序法设计,又学到了好东西。
eda第三次实验(10进制计数器数码管显示)
--------顶层文件counter十进制计数并显示在LED上LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count ISPORT(CLK, RST, EN, LOAD :IN STD_LOGIC;DATA : IN STD_LOGIC_VECTOR (3 DOWNTO 0);COUT : OUT STD_LOGIC;LED7S:OUT STD_LOGIC_VECTOR (6 DOWNTO 0));END count;ARCHITECTURE BEHAVE OF count ISCOMPONENT CNT10 ISPORT(CLK, RST, EN, LOAD :IN STD_LOGIC;DATA : IN STD_LOGIC_VECTOR (3 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);COUT : OUT STD_LOGIC);END COMPONENT CNT10;COMPONENT DECL7S ISPORT (A:IN STD_LOGIC_VECTOR (3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR (6 DOWNTO 0));END COMPONENT DECL7S;SIGNAL S:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1:CNT10PORT MAP (CLK=>CLK,RST=>RST,EN=>EN,LOAD=>LOAD,DATA=>DATA,DOUT=>S,COUT=>COUT);U2:DECL7S PORT MAP (A=>S,LED7S=>LED7S);END ARCHITECTURE BEHAVE;---------------------cnt10 10进制计数LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK, RST, EN, LOAD :IN STD_LOGIC;DATA : IN STD_LOGIC_VECTOR (3 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);COUT : OUT STD_LOGIC);END CNT10;ARCHITECTURE BEHAVE OF CNT10 ISBEGINPROCESS(CLK, RST, EN,LOAD)VARIABLE Q : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST = '0' THEN Q := (OTHERS=>'0');ELSIF CLK'EVENT AND CLK= '1' THENIF EN= '1' THENIF (LOAD= '0') THEN Q :=DATA;ELSEIF Q<15 THEN Q := Q+1;ELSE Q := (OTHERS=>'0');END IF;END IF;END IF;END IF;IF Q="1010" THEN COUT<='1';ELSE COUT<='0'; END IF;DOUT<=Q;END PROCESS;END BEHAVE;---------------------驱动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 ISWHEN "0000" => LED7S <= "1000000";WHEN "0001" => LED7S <= "1111001";WHEN "0010" => LED7S <= "0100100";WHEN "0011" => LED7S <= "0110000";WHEN "0100" => LED7S <= "0011001";WHEN "0101" => LED7S <= "0010010";WHEN "0110" => LED7S <= "0000010";WHEN "0111" => LED7S <= "1111000";WHEN "1000" => LED7S <= "0000000"; WHEN "1001" => LED7S <= "0010000"; WHEN "1010" => LED7S <= "0001000"; WHEN "1011" => LED7S <= "0000011"; WHEN "1100" => LED7S <= "1000110"; WHEN "1101" => LED7S <= "0100001"; WHEN "1110" => LED7S <= "0000110"; WHEN "1111" => LED7S <= "0001110"; WHEN OTHERS => NULL;END CASE;END PROCESS;END;生成门电路图波形仿真图引脚锁定。
eda10进制计数器实验报告
eda10进制计数器实验报告1B计算机组成原理教学实验箱一台,排线若干。
2) PC机一台。
3、实验步骤与源程序l) 根据该模型机的指令系统,编写一段程序。
这里给出两个参考程序。
参考程序一:本程序从输入设备(数码开关)取入数据,保存在内存单元08,然后从08单元送到输出设备(LED数码管)进行显示。
然后程序停止(请实验者考虑:如何修改程序,使程序不断从输入设备取出数据,送到输出设备显示。
每次循环过程中,可以使输入设备数据改变,考察输出显示的结果。
)。
设计机器指令程序如下(机器码为十六进制数据)。
地址内容助记符说明00 00 IN;输入开关数据→R00120 STA [08H] ;R0→[08]02 08 ;地址03 30 OUT [08H] ;[08H] →BUS04 08 ;地址05 40 JMP [00H] ;00H→PC06 00 ;跳转地址参考程序二:本程序从输入设备(数码开关)读入数据,与0A单元的数据相加,然后送到输出设备(LED数码管)进行显示。
本程序不断地循环运行,在运行中可改变输入开关(INPUT)的值,观察输出显示的变化。
设计机器指令程序如下(机器码为十六进制数据)。
地址内容助记符说明00 00 IN;输入开关数据→R0,采集数据0110 ADD [0AH] ;R0+[0AH]→R0,输入数据与指定数据相加02 0A ;地址0320 STA [0BH] ;R0→[0B]04 0B ;地址05 30 OUT [0BH] ;[0BH] →BUS,输出显示06 0B ;地址07 40 JMP [00H] ;00H→PC08 00 ;跳转地址0A 01 ;加数,可自定0B ;求和结果保存在0B单元2) 按图1连接实验线路。
3) 写程序:对于本实验箱可以用两种方法来写入程序。
方法一:手动写入(1)先将机器指令对应的微代码正确地写入2816中,由于在实验1.6微程序控制器的组成与微程序设计实验中已将微代码写入E2PR0M芯片中,对照表2—2校验正确后就可使用。
eda实验报告计数器
eda实验报告计数器EDA实验报告-计数器引言:计数器是数字电路中常用的基本模块之一,它在各个领域都有着广泛的应用。
本实验旨在通过EDA(电子设计自动化)软件进行计数器的设计与仿真,探索计数器的原理和功能。
一、计数器的基本原理计数器是一种能够按照规定的顺序改变其输出状态的电子电路。
它通过内部的触发器和逻辑门实现数字信号的计数功能。
常见的计数器有二进制计数器、十进制计数器等。
二、实验设计与仿真1. 实验目标本次实验的目标是设计一个4位二进制计数器,并通过EDA软件进行仿真验证。
计数器的功能是在每个时钟脉冲到来时,输出的二进制数加1。
2. 设计思路计数器的设计需要考虑以下几个方面:- 选择适当的触发器:本实验选择了D触发器作为计数器的基本单元,因为D触发器具有简单、易于控制的特点。
- 确定计数器的位数:本实验设计了一个4位计数器,即可以表示0~15的二进制数。
- 连接逻辑门:通过逻辑门将各个触发器连接起来,实现计数器的功能。
3. 电路设计根据设计思路,我们使用EDA软件进行电路设计。
首先,将4个D触发器连接起来,形成4位计数器。
然后,根据计数器的功能要求,将时钟信号连接到每个触发器的时钟输入端。
最后,将各个触发器的输出通过逻辑门进行连接,得到计数器的输出。
4. 仿真验证完成电路设计后,我们使用EDA软件进行仿真验证。
通过输入不同的时钟信号,观察计数器的输出是否符合预期。
在仿真过程中,我们可以调整时钟信号的频率,观察计数器的计数速度。
三、实验结果与分析通过EDA软件的仿真,我们得到了计数器的输出结果。
在时钟信号的作用下,计数器按照预期进行了计数,并输出了相应的二进制数。
通过观察输出结果,我们可以得出以下几点结论:- 计数器的输出与时钟信号的频率有关,频率越高,计数速度越快。
- 计数器的输出按照二进制的顺序进行计数,当达到最大值时,会从0重新开始计数。
四、实验总结本次实验通过EDA软件进行了计数器的设计与仿真。
EDA技术实验报告
EDA技术实验报告实验⼀利⽤原理图输⼊法设计4位全加器⼀、实验⽬的:掌握利⽤原理图输⼊法设计简单组合电路的⽅法,掌握MAX+plusII 的层次化设计⽅法。
通过⼀个4位全加器的设计,熟悉⽤EDA 软件进⾏电路设计的详细流程。
⼆、实验原理:⼀个4位全加器可以由4个⼀位全加器构成,全加器的进位以串⾏⽅式实现,即将低位加法器的进位输出cout 与相邻的⾼位加法器的低位进位输⼊信号cin 相接。
1位全加器f-adder 由2个半加器h-adder 和⼀个或门按照下列电路来实现。
半加器h-adder 由与门、同或门和⾮门构成。
四位加法器由4个全加器构成三、实验内容:1. 熟悉QuartusII 软件界⾯,掌握利⽤原理图进⾏电路模块设计的⽅法。
QuartusII 设计流程见教材第五章:QuartusII 应⽤向导。
2.设计1位全加器原理图(1)⽣成⼀个新的图形⽂件(file->new->graphic editor )(2)按照给定的原理图输⼊逻辑门(symbol ->enter symbol)COCO 1S 2S 3S 4(4)为管脚和节点命名:在管脚上的PIN_NAME处双击⿏标左键,然后输⼊名字;选中需命名的线,然后输⼊名字。
(5)创建缺省(Default)符号:在File菜单中选择Create Symbol Files for Current File项,即可创建⼀个设计的符号,该符号可被⾼层设计调⽤。
3.利⽤层次化原理图⽅法设计4位全加器(1)⽣成新的空⽩原理图,作为4位全加器设计输⼊(2)利⽤已经⽣成的1位全加器的缺省符号作为电路单元,设计4位全加器的原理图.4.新建波形⽂件(file->new->Other Files->Vector Waveform File),保存后进⾏仿真(Processing ->Start Simulation),对4位全加器进⾏时序仿真。
(完整word版)EDA实验报告-实验2-数码管扫描显示电路
暨南大学本科实验报告专用纸课程名称 EDA 实验 成绩评定 实验项目名称 数码管扫描显示电路 指导教师 郭江陵 实验项目编号 02 实验项目类型 验证 实验地点 B305 学院 电气信息学院 系 专业 物联网工程 组号: A6一、实验前准备本实验例子使用独立扩展下载板EP1K10_30_50_100QC208(芯片为EP1K100QC208)。
EDAPRO/240H 实验仪主板的VCCINT 跳线器右跳设定为3。
3V ; EDAPRO/240H 实验仪主板的VCCIO 跳线器组中“VCCIO3.3V"应短接,其余VCCIO 均断开;独立扩展下载板“EP1K10_30_50_100QC208”的VCCINT 跳线器组设定为2。
5V ;独立扩展下载板“EP1K10_30_50_100QC208”的VCCIO 跳线器组设定为3。
3V 。
请参考前面第二章中关于“电源模块"的说明。
二、实验目的1、了解时序电路设计。
2、制作一个数码管显示的7段译码电路,以备以后调用.三、实验原理在电子电路显示部分里,发光二极管(LED)、七段显示数码管、液晶显示(LCD)均是十分常见的人机接口电路.通常点亮一个LED 所需的电流在5~20mA 之间,电流愈大,LED 的亮度也高,相对的使用寿命也愈短。
若以10mA 导通电流来估算一个接5V 的串接电阻值计算应为:(5-1.6)/10mA ≈0.34K Ω。
七段显示数码管分为共阳、共阴二种极性。
它们等效成八个LED 相连电路。
共阴极七段显示器的LED位置定义和等效电路共阴极七段显示码十六进制转换表四、实验内容用拨码开关产生8421BCD码,CPLD器件产生译码及扫描电路,把BCD码显示在LED数码管上,通过改变扫描频率观察数码管刷新效果。
五、实验要求学习在MAX+PLUS II中使用VHDL设计功能模块,并将所生成的功能模块转换成MAX+PLUS II原理图的符号库,以便在使用原理图时调用该库。
南昌大学EDA实验报告完整版
EDA实验报告姓名:曾维鋆学号:6102213863老师:杨鼎成班级:通信工程132班目录实验一半加器及全加器的设计 (3)实验二模可变计数器的设计 (6)实验三序列信号检测器的设计 (11)实验四交通灯控制器设计 (15)实验五多功能数字钟设计 (22)实验六出租车计费器的设计 (34)实验七16*16 点阵显示实验 (40)南昌大学实验报告学生姓名:曾维鋆学号:61002213863 专业班级:通信132班实验类型:□验证□综合█设计□创新实验日期:2015.10.19 实验成绩:实验一半加器及全加器的设计(一)实验目的1、熟悉实验装置和QuartusⅡ软件的使用;2、熟悉和掌握EDA设计流程;3、学习简单组合、时序电路的EDA设计;4、熟悉例化语句的应用。
(二)实验内容设计一个一位全加器。
先设计一个半加器h_adder.v作为预存文件。
然后设计顶层文件对h_adder.v文件进行调用,实现全加器的功能。
(三)实验原理由3个逻辑模块组成,其中两个为半加器,一个是或门。
真值表(四)实验步骤1.建立工作库文件夹,输入半加器和全加器的Verilog HDL代码并分别存盘。
a.半加器module h_adder(A,B,SO,CO);input A,B;3output SO,CO;assign SO=A^B;assign CO=A&B;endmoduleb.全加器module f_adder(ain,bin,cin,cout,sum);output cout,sum;input ain,bin,cin;wire net1,net2,net3;h_adder U1(ain,bin,net1,net2);h_adder U2(.A(net1),.SO(sum),.B(cin),.CO(net3));or U3(cout,net2,net3);endmodule2.选目标器件CycloneII中的EP2C35F672C8并编译。
EDA技术(机械)实验报告--十三进制计数器(状态机方法)
实验报告(计算机类)1 .了解VHDL 语言编程方法,学会熟练运用quartus 软件2 .了解如何使用状态机方法设计十三进制计数器二、内容与设计思想1.用状态机给出的状态转换图2.十三进制计数器引脚图三、使用环境WinXP 或Win7、quartusii 编程环境四、核心代码及调试过程——状态机方法设计十三进制计数器 ----------------------------------------------------开课学院及实验室:实验时间:一、实验目的年月日Iibraryieee;useieee.std_Iogic_1164.all;useieee.std_Iogic_arith.all;useieee.std_Iogic_unsigned.all ;entityh31isport(cp:instd_logic; -------------- clocksignaIq:outstd_Iogic_vector(3downtoO); ------------------------ stateoutput op:outstd_logic -------------- carryoutput);endh31;architecturert1ofh31istypestateis(sθ,s1,s2,s3,s4,s5,s6,s7,s8,s9t s10,s111s12); ----------------------------------------------------------------------- s tateasenumeration signaIpresentstate:state;signaInextstate:state;signaIqn:std_Iogic_vector(3downtoO);beginswiChtonextstate:Process(cp)beginifcp,eventandcp='1,thenpresentstate<=nextstate;endif;endp rocessswiChtonextstate;changestatemode:process(presentstate)begincasepresentstateiswhens θ=>nextstate<=s1;qn<="OOOΓ,;op<=,0';whens1=>nextstate<=s2;qn<="0010";op<=,0';whens2=>next state<=s3;qn<=,,001Γ,;op<=<0';whens3=>nextstate<=s4;qn<="0100”;op<=,0';whens4=>nextstate<=s5;qn<=,,010Γ';op<=,0';whens5=>nextstate<=s6;qn<="0110";op<=,0';whens6=>nextstate<=s7;qn<="011Γ,;op<=,0';whens7=>nextstate<=s8;qn<二"1000”;op<=,0,;whens8=>nextstate<=s9;qn<=,,100Γ,;op<=,0';whens9=>nextstate<=s10;qn<二“1010”;op<=,0';whens10=>nextstate<=s11;qn<="101Γ,;op<=,0';whens11=>nextstate<=s12;qn<=F100";op<=,0,;whens12=>nextstate<=s0;qn<="0000”;op<='Γ;endcase;endprocesschangestatemode;q<=qn;endrt1;五、总结六、附录(仿真结果)SimulationWaveforms Sinulfttionmod。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北华航天工业学院课程设计报告(论文)课设名称: EDA技术与应用设计课题:计数器及数码显示综合设计专业班级: B12241学生姓名:白冬雪田尉均指导教师:齐建玲设计时间: 2014年 12月 15日北华航天工业学院电子工程系EDA 课程设计任务书姓名:白冬雪田尉均专业:测控技术与仪器班级:B12241指导教师:齐建玲职称:教授课程设计题目:计数器及数码显示综合设计已知技术参数和设计要求:①总体设计要求:设计一个能在7段数码管上动态刷新显示十进制、十二进制、六十进制、四位二进制计数器计数结果的VHDL语言程序并在EDA实验开发系统上实现该功能。
②技术要点:VHDL语言编辑程序、共阴7段数码管及FPGA可编程芯片的工作原理与连线。
所需仪器设备:实验箱,电脑成果验收形式:实验报告,硬件实验结果参考文献:李国洪、胡辉、沈明山等编著《EDA技术与实验》—机械工业出版社出版。
时间安排2014年12月14日-15日编辑VHDL语言程序2014年12月16日硬件调试程序2014年12月17日实验箱答辩验收指导教师:齐建玲教研室主任:王晓2014年 12月 17日内容摘要用VHDL语言在MAX+PLUS2环境下设计一个带使能输入、进位输出及同步清零的十进制计数器。
设计一个带使能输入及同步清零的十二进制计数器。
设计一个带使能输入及同步清零的六十进制加法计数器。
设计一个四位二进制可逆计数器。
设计一个共阴7段数码管控制接口,在时钟信号的控制下,使六位数码管动态刷新显示上述计数器的计数结果。
最后在EDA实验开发系统实验操作。
目录一、概述 (1)二、方案设计与论证 (1)三、单元电路设计与参数计算 (1)1、十进制计数器 (1)2、十二进制计数器 (2)3、六十进制计数器 (3)4、十六进制可逆计数器 (4)5、六进制计数器 (5)6、数据选择器 (6)7、 4-7译码器 (7)四、顶层文件 (8)1、截图 (8)2、程序 (8)五、安装与调试 (10)六、心得体会 (10)1.实验注意事项 (10)2.收获与体会 (10)一、概述用VHDL语言在MAX+PLUS2环境下设计一个带使能输入、进位输出及同步清零的十进制计数器。
设计一个带使能输入及同步清零的十二进制计数器。
设计一个带使能输入及同步清零的六十进制加法计数器。
设计一个四位二进制可逆计数器。
设计一个共阴7段数码管控制接口,在时钟信号的控制下,使六位数码管动态刷新显示上述计数器的计数结果。
二、方案设计与论证四个计数器同时开始计数,通过计数器的使能端可以随时控制计数器是否继续工作,通过同步清零端可以随时把任何一个计数器清零重新开始计数。
四位二进制可逆计数器可以随时进行加计数或减计数。
通过六进制计数器扫描数码管和作为对其他4个计数器的选择信号,再通过一个数据选择器选择出计数器的输出信号,通过4-7译码器的输出信号在数码当时钟信号频率足够大时可以实现六个数码管“同时”显示各计数器的计数结果。
因为人的眼睛分辨不出各数码管的快速跳变。
所以能实现所要求的同步计数的目的。
三、单元电路设计与参数计算1、十进制计数器①代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JINZHI10 ISPORT( CLK,en,rst:IN STD_LOGIC;ci :OUT STD_LOGIC;dout :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) );END JINZHI10;ARCHITECTURE ABC OF JINZHI10 ISBEGINci<='1' WHEN dout="1001" AND en='1' ELSE '0';PROCESS(CLK,en,rst)BEGINIF RISING_EDGE(CLK) THENIF rst='1' THEN dout<=(OTHERS=>'0');ELSIF en='1' THENIF dout="1001" THEN dout<="0000";ELSE dout<=dout+1;END IF;END IF;END IF;END PROCESS;END ABC;②仿真结果:2、十二进制计数器①代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JINZHI12 ISPORT( CLK,en,rst:IN STD_LOGIC;dout :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); END JINZHI12;ARCHITECTURE ABC OF JINZHI12 ISBEGINPROCESS(CLK,en,rst)BEGINif RISING_EDGE(CLK) THENif rst='1'then dout<=(others=>'0');ELSIF en='1' THENIF dout="1011" THEN dout<="0000";ELSE dout<=dout+1;END IF;END IF;END IF;END PROCESS;END ABC;②仿真结果3、六十进制计数器①代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JINZHI60 ISPORT( CLK,en,rst:IN STD_LOGIC;OL,OH :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); END JINZHI60;ARCHITECTURE ABC OF JINZHI60 ISBEGINPROCESS(CLK,en,rst)BEGINIF RISING_EDGE(CLK) THENIF rst='1' THEN OL<="0000";OH<="0000";ELSIF en='1' THENIF OL="1001" THEN OL<="0000";IF OH="0101" THEN OH<="0000";ELSE OH<=OH+1;END IF;ELSE OL<=OL+1;END IF;END IF;END IF;END PROCESS;END ABC;②仿真结果4、十六进制可逆计数器①代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY KENI16 ISPORT( CLK,JJ,E:IN STD_LOGIC;OL,OH :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END KENI16;ARCHITECTURE ABC OF KENI16 ISBEGINPROCESS(CLK,JJ,E)BEGINIF RISING_EDGE(CLK) THENIF E='1' THENIF JJ='1' THENIF OL="0101" AND OH="0001" THEN OL<="0000"; OH<="0000"; ELSIF OL="1001" THEN OL<="0000"; OH<=OH+1; ELSE OL<=OL+1;END IF;ELSIF JJ='0' THENIF OL="0000" AND OH="0000" THEN OL<="0101"; OH<="0001"; ELSIF OL="0000" THEN OL<="1001"; OH<=OH-1; ELSE OL<=OL-1;END IF;END IF;END IF;END IF;END PROCESS;END ABC;②仿真结果5、六进制计数器①代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JINZHI6 ISPORT( CLK,E :IN STD_LOGIC;O :BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0)); END JINZHI6;ARCHITECTURE ABC OF JINZHI6 ISBEGINPROCESS(CLK,E)BEGINIF RISING_EDGE(CLK) THENIF E='1' THENIF O="101" THEN O<="000";ELSE O<=O+1;END IF;END IF;END IF;END PROCESS;END ABC;②仿真结果6、数据选择器①代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY XUANZE ISPORT( A,B,C,D,E,F :IN STD_LOGIC_VECTOR(3 DOWNTO 0);I :IN STD_LOGIC_VECTOR(2 DOWNTO 0); O :OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END XUANZE;ARCHITECTURE ABC OF XUANZE ISBEGINPROCESS(I)BEGINCASE I ISWHEN "000" => O<=A;WHEN "001" => O<=B;WHEN "010" => O<=C;WHEN "011" => O<=D;WHEN "100" => O<=E;WHEN "101" => O<=F;WHEN OTHERS => NULL;END CASE;END PROCESS;END ABC;②仿真结果7、4-7译码器①代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY YM_47 ISPORT( I:IN STD_LOGIC_VECTOR(3 DOWNTO 0); O:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END YM_47;ARCHITECTURE ABC OF YM_47 ISBEGINWITH I SELECTO<="1111110" WHEN "0000","0110000" WHEN "0001","1101101" WHEN "0010","1111001" WHEN "0011","0110011" WHEN "0100","1011011" WHEN "0101","1011111" WHEN "0110","1110000" WHEN "0111","1111111" WHEN "1000","1111011" WHEN "1001","1110111" WHEN "1010","0011111" WHEN "1011","0000000" WHEN OTHERS;END ABC;②仿真结果四、顶层文件1、截图2、程序library ieee;use ieee.std_logic_1164.all;entity JISHUQI isport(clk,clk6:in std_logic;en:in std_logic;rst10,rst12,rst60:in std_logic;jj:in std_logic;ci10:out std_logic;dout:out std_logic_vector(6 downto 0);sel:out std_logic_vector(2 downto 0));end JISHUQI;architecture behave of JISHUQI iscomponent JINZHI10PORT( CLK,En,rst:IN STD_LOGIC;Ci :OUT STD_LOGIC;dout :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) );end component;component JINZHI12PORT( CLK,en,rst:IN STD_LOGIC;dout:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));end component;component JINZHI60PORT( CLK,En,rst:IN STD_LOGIC;OL,OH :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));end component;component KENI16PORT( CLK,JJ,E:IN STD_LOGIC;OL,OH :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));end component;component YM_47PORT( I:IN STD_LOGIC_VECTOR(3 DOWNTO 0);O:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));end component;component JINZHI6PORT( CLK,E :IN STD_LOGIC;O :BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0));end component;component XUANZEPORT( A,B,C,D,E,F :IN STD_LOGIC_VECTOR(3 DOWNTO 0);I :IN STD_LOGIC_VECTOR(2 DOWNTO 0);O :OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );end component;signal douta,doutb,doutc,doutd,doute,doutf:std_logic_vector(3 downto 0);signal douti:std_logic_vector(2 downto 0);signal outin:std_logic_vector(3 downto 0);beginu1:JINZHI10 port map(clk=>clk,en=>en,rst=>rst10,ci=>ci10,dout=>douta); u2:JINZHI12 port map(clk=>clk,en=>en,rst=>rst12,dout=>doutb);u3:JINZHI60 port map(clk=>clk,en=>en,rst=>rst60,OL=>doutc,OH=>doutd);u4:KENI16 port map(clk=>clk,JJ=>JJ,e=>en,ol=>doute,oh=>doutf);u5:JINZHI6 port map(clk=>clk6,e=>en,o=>douti);u6:XUANZE port map(a=>douta,b=>doutb,c=>doutc,d=>doutd,e=>doute, f=>doutf,i=>douti,o=>outin);u7:YM_47 port map(i=>outin,o=>dout);sel<=douti;end behave;五、安装与调试在计算机和试验箱均断电的情况下连接好下载电缆和芯片的各端口之间的连线,接下来先给试验箱供电然后打开计算机找到MAX+plus2软件将先前已编辑好的的程序下载到芯片上。