实验四4位计数器设计

合集下载

设计一个异步四位二进制计数器实验报告捞金版

设计一个异步四位二进制计数器实验报告捞金版

/广西大学实验报告纸姓名:曾宪金0802100513 电气工程学院电气自动化类专业085 班2009年12月18日实验内容________________________________ 指_ 导老师宋春宁【实验名称】设计一个异步四位二进制可逆计数器【实验目的】学习用集成触发器构成计数器的方法。

【设计任务】用D 触发器(74LS74 )设计一个异步四位二进制可逆计数器。

要求使用的集成电路芯片种类不超过3 种。

(提供器件:74LS74、CC4030)【实验用仪器、仪表】数字电路实验箱、万用表、74LS74、CC4030等。

【设计过程】用四个D 触发器串接起来可以构成四位二进制加法计数器(每个D 触发器连接为T'触发器)。

计数器的每级按逢二进一的计数规律,由低位向高位进位,可以对输入的一串脉冲进行计数,并以16 为一个计数值环。

其累计的脉冲数等于2n(n 为计数的位数)。

减法计数器的计数原理与加法计数器的计数原理相反。

1. 根据题意列出状态表,如表1。

令A=0 时,计数器为加法计数器;A=1 时,计数器为减法计数器12. 根据状态表画卡诺图确定各触发器的时钟信号方程:由卡诺图化简可得各触发器的时钟信号方程为:CP3 AQ2n AQ2n A Q2nCP2 AQ1n AQ1n A Q1nCP1 AQ0n AQ0n A Q0nCP0 为输入脉冲信号。

各触发器的输出信号为:各触发器的激励方程为:CP3 Q2n A0101110CP1 Q0n01A001110Q2n 1D2 Q2nQ3、Q2、Q1、Q0Q1n 1D1 Q1n各触发器的状态方程为:Q 3n 1D 3CP 3 Q 3nCP 3 Q 3nCP 3 Q 3nCP 3Q 2n 1D 2CP 2 Q 2nCP 2 Q 2nCP 2 Q 2nCP 2Q 1n 1D 1CP 1 Q 1nCP 1 Q 1nCP 1 Q 1nCP 1Q 0n 1D 0CP 0 Q 0nCP 0 Q 0nCP 0 Q 0nCP 0作状态转换图:Q 3Q 2Q 1Q0000 01 0001 01 0010 10 001111 1110作逻辑电路图:Q3Q Q10 111111 01 1 01010 10 1001 0 10000 0101010111101 1 0 011 011100 0 10110 1 0111运用EWB5.0仿真平台仿真电路:该电路已在EWB5.0平台仿真通过。

数电实验报告:实验4-计数器及应用161

数电实验报告:实验4-计数器及应用161

广东海洋大学学生实验报告书(学生用表)实验名称课程名称 课程号 学院(系)专业 班级 学生姓名 学号 实验地点 实验日期实验4 计数器及其应用一、实验目的1、熟悉中规模集成计数器的逻辑功能及使用方法2、掌握用74LS161构成计数器的方法3、熟悉中规模集成计数器应用二、实验原理计数器是典型的时序逻辑电路,它是用来累计和记忆输入脉冲的个数.计数是数字系统中很重要的基本操作,集成计数器是最广泛应用的逻辑部件之一。

计数器种类较多,按构成计数器中的多触发器是否使用一个时钟脉冲源来分,有同步计数器和异步计数器;根据计数制的不同,可分为二进制计数器、十进制计数器和任意进制计数器;根据计数的增减趋势,又分为加法、减法和可逆计数器。

还有可预置数和可编程序功能计数器等。

本实验主要研究中规模十进制计数器74LS161的功能及应用。

1、中规模集成计数器74LS161 是四位二进制可预置同步计数器,由于它采用4 个主从JK 触发器作为记忆单元,故又称为四位二进制同步计数器,其集成芯片管脚如图1所示:管脚符号说明:电源正端Vcc ,接+5V ;异步置零(复位)端Rd ;时钟脉冲CP ;预置数控制端 A 、B 、C 、D ;数据输出端 QA 、QB 、QC 、QD ;进位输出端 RCO :使能端EP ,ET ;预置端 LD ;图1 74LS161 管脚图GDOU-B-11-112该计数器由于内部采用了快速进位电路,所以具有较高的计数速度。

各触发器翻转是靠时钟脉冲信号的正跳变上升沿来完成的。

时钟脉冲每正跳变一次,计数器内各触发器就同时翻转一次,74LS161的功能表如表1所示:表1 74LS161 逻辑功能表2、实现任意进制计数器由于74LS161的计数容量为16,即计16个脉冲,发生一次进位,所以可以用它构成16进制以内的各进制计数器,实现的方法有两种:置零法(复位法)和置数法(置位法)。

(1) 用复位法获得任意进制计数器假定已有N进制计数器,而需要得到一个M进制计数器时,只要M<N,用复位法使计数器计数到M时置“0”,即获得M进制计数器。

实验四 多位十进制计数器的设计与实现

实验四 多位十进制计数器的设计与实现

实验四多位十进制计数器的设计与实现(4 课时)实验目的1.熟练掌握设计电路下载到芯片的关键设置与基本步骤和利用实验箱上的输入信号和输出显示器件在线测试设计电路的方法。

2.学习使用VHDL 语言设计多位计数器和7 段译码电路的方法。

3.学习多位数码管的动态显示原理,掌握数码管驱动电路灵活设计方法。

实验原理1.米字形数码管(共阴)笔画接口:A1、A2、B、C、D1、D2、E、F、G、H、J、K、M、N、O、P、DP位选接口:sel0,sel1,sel2,sel3.sel0 Sel1 Sel2 Sel3 选中的数码管0 1 1 1 第4 位1 0 1 1 第3 位1 1 0 1 第2 位1 1 1 0 第1 位(右)2. 8 位7 段数码管(共阴)笔画接口:a、b、c、d、e、f、g、dp位选接口:sel0,sel1,sel2,sel3(可不用).Sel2 Sel1 Sel0 选中点亮的数码管1 1 1 第1 位(最右)1 1 0 第2 位1 0 1 第3 位1 0 0 第4 位0 1 1 第5 位0 1 0 第6 位0 0 1 第7 位0 0 0 第8 位实验内容与要求1.设计一个十进制计数器,具有显示位置随计数时钟在八个数码管中左右滚动的功能。

(6 分)2.设计一个符号显示电路,使其通过米字型数码管显示至少四页的自定义英文和数字符号。

(每页4 个字符)(3 分)3.设计一个4 位十进制计数器,具有加减计数功能和置数功能,并能通过数码管显示计数结果。

减数为零时发声报警。

(3 分)1:library IEEE;use IEEE.std_logic_1164.all;use IEEE.Std_logic_unsigned.all;entity cnt10 isport (clk : in std_logic;data_out : out std_logic_vector (7 downto 0);selout: out std_logic_vector (2 downto 0));end entity;architecture art1 of cnt10 isbeginprocess(clk)variable cnt1:integer range 0 to 9; beginif clk'event and clk='1' thencnt1:=cnt1+1;if cnt1>9 thencnt1:=0;end if;end if;case cnt1 iswhen 0 => data_out <= "11111100"; -- 0 when 1 => data_out <= "01100000"; -- 1 when 2 => data_out <= "11011010"; -- 2 when 3 => data_out <= "11110010"; -- 3 when 4 => data_out <= "01100110"; -- 4 when 5 => data_out <= "10110110"; -- 5 when 6 => data_out <= "10111110"; -- 6 when 7 => data_out <= "11100000"; -- 7 when 8 => data_out <= "11111100"; -- 8 when 9 => data_out <= "11101110"; -- 9 when others => NULL;end case;end process;process(clk)variable cntsel:integer range 0 to 13; beginif clk'event and clk='1' then cntsel:=cntsel+1;if cntsel>13 thencntsel:=0;end if;end if;case cntsel iswhen 0 => selout <= "111";when 1 => selout <= "110";when 2 => selout <= "101";when 3 => selout <= "100";when 4 => selout <= "011";when 5 => selout <= "010";when 6 => selout <= "001";when 7 => selout <= "000";when 8 => selout <= "001";when 9 => selout <= "010";when others => NULL;end case;end process;end art1;2:Library IEEE;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity miguan isport( clk : in std_logic;WX : out std_logic_vector (3 downto 0);DX : out std_logic_vector (15 downto 0)); End entity miguan;Architecture bhv of miguan isType state is(st0,st1,st2,st3);Signal current_state:state :=st0;Signal next_state:state;Signal shu1 : integer range 0 to 3;Signal shu2 : std_logic_vector(13 downto 0); Signal A,B,C,D:std_logic_vector(15 DOWNTO 0); Beginprocess (clk) isBeginIf (clk'event and clk='1') thenshu2<=shu2+"00000000000001";If shu2="11111111111111"thencurrent_state<=NEXT_STATE;elsecurrent_state<=current_state;End if;End if;End process;Process (current_state)BeginCase current_state iswhenst0=>A<="0110101000000000";--xB<="0000000011110000";--lC<="1000010000011110";--dD<="0001000110111011";--sNEXT_STATE<=ST1;whenst1=>A<="0000000011111100";--UB<="1000010000000011";--TC<="0001000111110011";--ED<="0011000111000111";--RNEXT_STATE<=ST2;whenst2=>A<="0000000011111111";--0B<="0001000111111011";--6C<="0000000000001100";--1D<="0001000111111111";--8NEXT_STATE<=st3;whenst3=>A<="0001000111111011";--6B<="1001010110000000";--4C<="0001000110111011";--5D<="0000000000001100";--1NEXT_STATE<=ST0;End case;End process;Process (clk) isBeginif rising_edge(clk) thenif shu1>3 thenshu1<=0;elseshu1<=shu1+1;end if;case shu1 isWHEN 0 =>WX<="1110";DX<=A;WHEN 1 =>WX<="1101";DX<=B;WHEN 2 =>WX<="1011";DX<=C;WHEN 3 =>WX<="0111";DX<=D;End case;End if;End process;End architecture bhv;3:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity wybcount4 isport(count_clk,saopin_clk,en,load,reset,add_sub:in std_logic;data_in3:in std_logic_vector(3 downto 0);--Left1data_in2:in std_logic_vector(3 downto 0);data_in1:in std_logic_vector(3 downto 0);data_in0:in std_logic_vector(3 downto 0);--Right1duanxuan:out std_logic_vector(7 downto 0);--duan xuansel:out std_logic_vector(1 downto 0);--wei xuanbell:out std_logic);end entity wybcount4;architecture beh of wybcount4 isconstant num0:std_logic_vector:="01111110";constant num1:std_logic_vector:="00001100";constant num2:std_logic_vector:="10110110";constant num3:std_logic_vector:="10011110";constant num4:std_logic_vector:="11001100";constant num5:std_logic_vector:="11011010";constant num6:std_logic_vector:="11111010";constant num7:std_logic_vector:="00001110";constant num8:std_logic_vector:="11111110";constant num9:std_logic_vector:="11011110";function number(x:std_logic_vector) return std_logic_vector is begincase x iswhen "0000" => return num0;when "0001" => return num1;when "0010" => return num2;when "0011" => return num3;when "0100" => return num4;when "0101" => return num5;when "0110" => return num6;when "0111" => return num7;when "1000" => return num8;when "1001" => return num9;when others =>return "00000000";end case;end number;signal Q3:std_logic_vector(3 downto 0);--zhong jian zhisignal Q2:std_logic_vector(3 downto 0);signal Q1:std_logic_vector(3 downto 0);signal Q0:std_logic_vector(3 downto 0);beginprocess(count_clk,reset,en,load,add_sub) isbegin--counter10IF reset = '0' THENQ0<=(OTHERS => '0');Q1<=(OTHERS => '0');Q2<=(OTHERS => '0');Q3<=(OTHERS => '0');ELSIF rising_edge(count_clk) THENif en='0' thenif load='0' thenQ0<=data_in0;Q1<=data_in1;Q2<=data_in2;Q3<=data_in3;elsif add_sub='0' then--addQ0<=Q0+1;if Q0>=9 thenQ0<="0000";Q1<=Q1+1;if Q1>=9 thenQ1<="0000";Q2<=Q2+1;if Q2>=9 thenQ2<="0000";Q3<=Q3+1;if Q3>=9 thenQ3<="0000";end if;end if;end if;end if;else--subQ0<=Q0-1;if Q0<=0 thenQ0<="1001";Q1<=Q1-1;if Q1<=0 thenQ1<="1001";Q2<=Q2-1;if Q2<=0 thenQ2<="1001";Q3<=Q3-1;if Q3<=0 thenQ3<="1001";end if;end if;end if;end if;end if;end if;END IF;if (Q0="0000" and Q1="0000" and Q2="0000" and Q3="0000") then bell<='1';elsebell<='0';end if;end process;process(saopin_clk) is--sao pin xian shivariable qq:std_logic_vector(0 to 1);beginif (saopin_clk'event and saopin_clk='1') thenif qq<=3 then qq:=qq+1;else qq:="00";end if;end if;case qq iswhen "00" => sel<="00";duanxuan<=number(Q0);when "01" => sel<="01";duanxuan<=number(Q1);when "10" => sel<="10";duanxuan<=number(Q2);when "11" => sel<="11";duanxuan<=number(Q3);end case;end process;end architecture beh;。

四位全加器实验报告

四位全加器实验报告

武汉轻工大学数学与计算机学院《计算机组成原理》实验报告题目:4位二进制计数器实验专业:软件工程班级:130X班学号:XXX姓名:XX指导老师:郭峰林2015年11月3日【实验环境】1. Win 72. QuartusII9.1计算机组成原理教学实验系统一台。

【实验目的】1、熟悉VHDL 语言的编写。

2、验证计数器的计数功能。

【实验要求】本实验要求设计一个4位二进制计数器。

要求在时钟脉冲的作用下,完成计数功能,能在输出端看到0-9,A-F 的数据显示。

(其次要求下载到实验版实现显示)【实验原理】计数器是一种用来实现计数功能的时序部件,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能。

计数器由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS 触发器、T 触发器、D 触发器及JK 触发器等。

计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。

计数器按计数进制不同,可分为二进制计数器、十进制计数器、其他进制计数器和可变进制计数器,若按计数单元中各触发器所接收计数脉冲和翻转顺序或计数功能来划分,则有异步计数器和同步计数器两大类,以及加法计数器、减法计数器、加/减计数器等,如按预置和清除方式来分,则有并行预置、直接预置、异步清除和同步清除等差别,按权码来分,则有“8421”码,“5421”码、余“3”码等计数器,按集成度来分,有单、双位计数器等等,其最基本的分类如下:计数器的种类⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎨⎧⎪⎩⎪⎨⎧⎪⎩⎪⎨⎧⎩⎨⎧进制计数器十进制计数器二进制计数器进制可逆计数器减法计数器加法计数器功能异步计数器同步计数器结构N 、、、321 下面对同步二进制加法计数器做一些介绍。

同步计数器中,所有触发器的CP 端是相连的,CP 的每一个触发沿都会使所有的触发器状态更新。

含异步清0和同步时钟使能的4位加法计数器 EDA技术与Verilog HDL实验报告

含异步清0和同步时钟使能的4位加法计数器 EDA技术与Verilog HDL实验报告

含异步清0和同步时钟使能的4位加法计数器一.实验目的熟悉在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器。

二.实验内容在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器,并编译、仿真验证其功能。

三.程序清单计数器顶层文件设计:10进制计数器文本输入:module CNT10(clk,rst,en,load,cout,dout,data);input clk,en,rst,load;input [3:0] data;output[3:0] dout;output cout;reg [3:0] q1;reg cout;assign dout = q1;always @(posedge clk or negedge rst)beginif (!rst) q1<=0;else if(en)beginif (!load) q1<=data;else if(q1<9) q1<=q1+1;else q1<=4'b0000;endendalways @(q1)if (q1==4'h9) cout= 1'b1;else cout= 1'b0;endmodule60位计数器文本输入:module CNT60(CLK,EN,RST,LOAD,COUT1,COUT2,DOUT1,DOUT2,DATA);input CLK,EN,RST,LOAD;input [3:0] DATA;output[3:0] DOUT1;output[2:0] DOUT2;output COUT1;output COUT2;reg [3:0] Q1;reg [2:0] Q2;reg COUT1;reg COUT2;assign DOUT1 = Q1;assign DOUT2 = Q2;always @(negedge CLK or negedge RST) beginif(!RST) Q1<=0;else if (EN) beginif (!LOAD) Q1<=DATA;else if (Q1<9) Q1<=Q1+1;else Q1<=4'b0000;endendalways @(Q1)if (Q1==4'h9) COUT1=1'b1;elseCOUT1=1'b0;always @(negedge COUT1 or negedge RST)beginif(!RST) Q2<=0;else if (EN) beginif (!LOAD) Q2<=DATA;else if (Q2<5) Q2<=Q2+1;else Q2<=4'b0000;endendalways @(Q2)if ((Q1==4'h9)&&(Q2==3'h5)) COUT2=1'b1;elseCOUT2=1'b0;endmodule60位计数器图形输入:四.实验步骤1、新建一个名称为CNT10的工程,并在该文件夹中新建一个CNT10.v的文件。

实验四 7段数码显示译码器设计

实验四 7段数码显示译码器设计

实验四 7段数码显示译码器设计一、实验目的(1)学习7段数码显示译码器设计;(2)学习VHDL的CASE语句应用及多层次设计方法。

二、实验内容用一个4位二进制加法计数器和一段7段译码器组成电路,并用数码8显示译码输出。

三、实验条件QUARTUSII软件,GW48试验箱,计算机。

四、实验设计(1)系统的原理框图(2)VHDL源程序--四位计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4 ISPORT (CLK, CLR, ENA:IN STD_LOGIC;CQ:OUT INTEGER RANGE 0 TO 15;CO:OUT STD_LOGIC);END ENTITY CNT4;ARCHITECTURE ART OF CNT4 ISSIGNAL CQI:INTEGER RANGE 0 TO 15;BEGINPROCESS (CLK,CLR,ENA) ISBEGINIF CLR='1' THEN CQI<=0;ELSIF CLK'EVENT AND CLK='1' THENIF ENA='1' THENCQI<=CQI+1;END IF;END IF;END PROCESS;PROCESS (CLK,CQI)ISBEGINIF CLK'EVENT AND CLK='1' THENIF CQI=15 THEN CO<='1';ELSE CO<='0';END IF;END IF;END PROCESS;CQ<=CQI;END ARCHITECTURE ART;--7位译码器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 <= "0111111" ;WHEN "0001" => LED7S <= "0000110" ;WHEN "0010" => LED7S <= "1011011" ;WHEN "0011" => LED7S <= "1001111" ;WHEN "0100" => LED7S <= "1100110" ;WHEN "0101" => LED7S <= "1101101" ;WHEN "0110" => LED7S <= "1111101" ;WHEN "0111" => LED7S <= "0000111" ;WHEN "1000" => LED7S <= "1111111" ;WHEN "1001" => LED7S <= "1101111" ;WHEN "1010" => LED7S <= "1110111" ;WHEN "1011" => LED7S <= "1111100" ;WHEN "1100" => LED7S <= "0111001" ;WHEN "1101" => LED7S <= "1011110" ;WHEN "1110" => LED7S <= "1111001" ;WHEN "1111" => LED7S <= "1110001" ;WHEN OTHERS => NULL ;END CASE ;END PROCESS ;END ;--顶层文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY LED16 ISPORT(CLOCK0, RST0,ENA0: IN STD_LOGIC;LED: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);OUT0: OUT STD_LOGIC);END ENTITY LED16;ARCHITECTURE ART1 OF LED16 ISCOMPONENT CNT4 ISPORT (CLK, CLR, ENA:IN STD_LOGIC;CQ:OUT INTEGER RANGE 0 TO 15;CO:OUT STD_LOGIC);END COMPONENT;COMPONENT DECL7S ISPORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ;END COMPONENT;SIGNAL TMP : INTEGER RANGE 0 TO 15;BEGINU1:CNT4 PORT MAP(CLOCK0,RST0,ENA0,TMP,OUT0);U2:DECL7S PORT MAP(CONV_STD_LOGIC_VECTOR(TMP,4),LED);END ARCHITECTURE ART1;(3)管脚锁定五、实验结果及总结(1)系统仿真情况(2)硬件验证情况每按动两下键8,数码管显示的数字就会增加1,当显示F时,再按两下数码管变为0,LED8变亮,再按两下后变灭。

数电实验报告计数器

数电实验报告计数器

数电实验报告计数器计数器是数字电路中常见的一种电路元件,用于计数和显示数字。

在数电实验中,我们通常会设计和实现各种类型的计数器电路,以探究其工作原理和性能特点。

本文将介绍数电实验中的计数器的设计和实验结果,并探讨其应用和改进。

一、设计和实现在数电实验中,我们通常使用逻辑门和触发器来实现计数器电路。

逻辑门用于控制计数器的输入和输出,而触发器则用于存储和更新计数器的状态。

以4位二进制计数器为例,我们可以使用四个触发器和适当的逻辑门来实现。

触发器的输入端连接到逻辑门的输出端,而逻辑门的输入端连接到触发器的输出端。

通过适当的控制信号,我们可以实现计数器的正向计数、逆向计数、清零和加载等功能。

在实验中,我们需要根据设计要求选择适当的逻辑门和触发器,并将其连接起来。

然后,通过给逻辑门和触发器提供适当的输入信号,我们可以观察计数器的输出结果,并验证其正确性和稳定性。

二、实验结果在实验中,我们设计了一个4位二进制计数器,并通过适当的输入信号进行了测试。

实验结果表明,计数器能够正确地进行正向计数和逆向计数,并能够在达到最大计数值或最小计数值时自动清零。

此外,我们还观察到计数器的输出信号在计数过程中保持稳定,并且能够及时响应输入信号的变化。

这说明计数器具有较高的稳定性和响应速度,适用于各种计数应用场景。

三、应用和改进计数器在数字电路中有广泛的应用,例如频率分频、时序控制、计时器等。

通过适当的设计和连接,我们可以实现各种复杂的计数功能,满足不同的应用需求。

在实验中,我们还可以对计数器进行改进和优化,以提高其性能和功能。

例如,我们可以增加计数器的位数,以扩大计数范围;我们还可以添加输入输出接口,以实现与其他电路元件的连接和通信。

此外,我们还可以使用更高级的计数器电路,如同步计数器、环形计数器等,以实现更复杂的计数功能。

这些改进和扩展将进一步提高计数器的灵活性和实用性。

总结:通过数电实验,我们了解了计数器的设计和实现原理,并验证了其在实际应用中的性能和功能。

4位10进制计数器

4位10进制计数器

4位10进制计数显示模块设计
一、实验目的:设计4位10进制计数显示模块。

二、实验要求:
(1)、叙述设计思想;
(2)、4位10进制计数显示模块的VHDL描述;
(3)、画出顶层VHDL文件的图形描述;
(4)、调试程序、下载到实验板验证设计的正确性。

三、实验步骤
1、设计思路
4位10进制计数显示要实现四位数有0000开始,没过1s自动加1,并且可以循环计数。

同时,有使能端(ENA)可以控制暂停计数和继续计数,有复位端(RST)可以是四位数复位(0000)。

要实现这个功能需要用到6个主要元件:分频器、计数器、数码管显示译码器、段控制元件、位选择元件和动态扫描元件。

过程如下图图1所示。

图1
2、实验各个模块的VHDL描述:(1)、分频器元件的VHDL语言
(2)、十进制计数器元件的VHDL语言
(3)、动态扫描元件的VHDL语言(4)、位控制元件的VHDL语言
(5)七段数码显示译码器VHDL语言(6)、段控制元件的VHDL语言
3、顶层VHDL文件的图形描述
4、调试程序、下载到实验板验证设计的正确性。

通过对程序进行调试和引脚合理的分配之后,将程序下载到实验板上,实验结果与预期的一样。

四、实验体会
通过该次实验,对VHDL语言的基本用法和作用有了更深入的理解,运用起来更加熟练;同时,通过元件生成和顶层文件的图形描述,使我对quartus II软件的使用有了更深入了解,这使得我CPLD设计过程更加熟练。

数字电路实验报告4

数字电路实验报告4

一、实验内容利用EDA工具Quartus-ll的原理图输入法,验证D触发器的功能,用触发器设计并实现4位二进制计数器电路,设计并实现4位二进制自循环寄存器电路,仿真验证电路功能。

二、实验目的熟悉用QuartusII原理图输入法进行电路设计和仿真,掌握QuartusII图形模块单元的生成与调用。

学会根据时序电路图分析电路的功能,并会自主实现时序逻辑电路的功能设计与仿真。

三、实验设备EDA工具 Quartus-ll四、实验方法与手段(一)D触发器触发器是一种具有两种稳态的用于储存的组件,可记录二进制数字信号“1”和“0”。

D触发器有一个输入、一个输出和一个时脉输入,当时脉由0转为1时,输出的值会和输入的值相等。

此类触发器可用于防止因为噪声所带来的错误,以及通过管线增加处理资料的数量。

其真值表如下:在Quartus-ll原理图输入法导入D触发器,设置输入输出,编译后进行波形仿真,仿真后导出波形。

(二)同步4位二进制加计数器电路4位二进制同步计数器是由四个触发器组成的M=2的4位二进制同步计数器。

计数脉冲N同时接于各位触发器的时钟脉冲输入CP端,当计数脉冲到来时,各触发器同时被触发,触发器状态由前级的现态决定后级的次态,各触发器的翻转与时钟脉冲同步。

同步计数器的工作速度较快,工作频率也较高。

从而得到其状态转移表为:根据功能表画出卡诺图,从而得到时序逻辑门电路设计图,设置输入输出,编译后进行波形仿真,将清零端先置0后置1,仿真后导出波形。

(三)4位循环移位寄存器电路移位寄存器是一种在若干相同时间脉冲下工作的以触发器级联为基础的器件,每个触发器的输出接在触发器链的下一级触发器的“数据”输入端,使得电路在每个时间脉冲内依次向左或右移动一个比特,在输出端进行输出。

从而得到4位循环移位寄存器的状态转移表为:从而得到逻辑门电路设计图,设置输入输出,设置输入输出,编译后进行波形仿真,将清零端先置0后置1,仿真后导出波形。

利用D触发器构成计数器

利用D触发器构成计数器

数字电路实验设计:D触发器组成的4位异步二进制加法计数器一、选用芯片74LS74,管脚图如下:说明:74LS74是上升沿触发的双D触发器, D触发器的特性方程为二、设计方案:用触发器组成计数器。

触发器具有0 和1两种状态,因此用一个触发器就可以表示一位二进制数。

如果把n个触发器串起来,就可以表示n位二进制数。

对于十进制计数器,它的10 个数码要求有10 个状态,要用4位二进制数来构成。

下图是由D触发器组成的4位异步二进制加法计数器。

三、实验台:四、布线:1、将芯片(1)的引脚4、10连到一起,2、将芯片(2)的引脚4、10连到一起,3、将芯片(1)的引脚10和芯片(2)的引脚10连到一起,4、将芯片(1)的引脚10连到+5V;5、将芯片(1)的引脚1、13连到一起,6、将芯片(2)的引脚1、13连到一起,7、将芯片(1)的引脚13和芯片(2)的引脚13连到一起,8、将芯片(1)的引脚13连到+5V;9、将芯片(1)的引脚3接到时钟信号CP10、将芯片(1)的引脚2、6接到一起,再将引脚2接到引脚1111、将芯片(1)的引脚8、12接到一起,再将芯片(1)的引脚8接到芯片(2)的引脚312、将芯片(2)的引脚2、6接到一起,再将引脚6接到引脚1113、将芯片(1)的引脚5、9分别接到Q0、Q1,再将芯片(2)的引脚5、9分别接到Q2、Q314、分别将两芯片的14脚接电源+5V,分别将两芯片的7脚接地0V。

五、验证:接通电源on,默认输出原始状态0000每输入一个CP信号(单击CP),的状态就会相应的变化,变化规律为0000(原始状态)、1000、0100、1100、0010、1010、0110、1110、0001、1001、0101、1101、0011、1011、0111、1111。

4位全加器实验报告

4位全加器实验报告

4位全加器实验报告篇一:四位全加器实验报告实验一:四位全加器实验报告实验日期:学生姓名:陆小辉(学号:25)指导老师:黄秋萍加法器是数字系统中的基本逻辑器件,是构成算数运算电路的基本单元。

1位加法器有全加器和半加器两种。

多位加法器构成方式有并行进位方式和串行进位方式。

并行进位加法器设有并行进位产生逻辑,运算速度较快;串行进位加法器是将全加器级联构成多位加法器。

并行进位加法器通常比串行进位加法器占用更多的资源,随着位数的增多,相同位数的并行进位加法器比串行进位加法器的资源占用差距快速增大。

因此,在工程中使用加法器时,要在速度与容量之间寻求平衡。

一、设计要求:设计四位全加器,完成相应的功能。

可采用并行进位方式和串行进位方式,可采用三种常用建模方式中的任意一种。

三、测试代码如(转载自:小草范文网:4位全加器实验报告)下: module text_fulladd4; 二、设计代码如下:(此处采用数据流建模)wire [3:0]sum; module fulladd4(sum,cout,a,b,cin); wire cout; output [3:0]sum; reg [3:0]a,b; output cout; reg cin; input [3:0]a,b; fulladd4 f1(sum,cout,a,b,cin);input cin; initial assign {cout,sum}=a+b+cin; begin endmodule a=4'b0; b=4'b0; cin=1'b0; #210 $stop; end always #10 a=a+1; always #5 b=b+1; always #100 cin=cin+1;endmodule 四、仿真波形如下:续图篇二:4位全加器实验报告数电第一次实验通信1402 程杰 UXX13468【实验目的】采用ISE集成开发环境,利用verilog硬件描述语言中行为描述模式、结构描述模式或数据流描述模式设计四进制全加器。

计数器设计

计数器设计

VHDL语言实验报告实验四计数器设计苏州大学应用技术学院 12通信工程学号______________姓名________________一.实验名称:十进制加法计数器的VHDL设计二.实验目的与要求:⑴实验目的:设计一个十进制加法计数器,进一步掌握QuartusII软件的使用,熟悉十进制加法计数器的工作原理和逻辑功能,掌握计数器的设计方法。

⑵实验要求:通过VHDL编程,实现一个十进制加法计数器,要求具有进位输出信号,有异步清零和同步使能控制端。

首先在QuartusII上进行功能和时序仿真,之后通过器件及其端口配置下载到相应的开发平台中。

2.程序设计○1正确的程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK,RST,EN:IN STD_LOGIC;DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT10;ARCHITECTURE behav OF CNT10 ISBEGINPROCESS(CLK,RST,EN)V ARIABLE Q:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST='0'THEN Q:=(OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF Q<9 THEN Q:=Q+1;ELSE Q:=(OTHERS=>'0');END IF;END IF;END IF;IF Q=9 THEN COUT<='1';ELSE COUT<='0';END IF;DOUT<=Q;END PROCESS;END behav;○2编译结果:三.实验结果与分析:1.仿真波形图:2.仿真波形分析:CLK是时钟信号,RST是异步复位信号,EN是计数使能信号,这三个信号是输入端,DOUT(3~0)是输出端,COUT是输出端进位信号。

实验四 数码管的动态显示实验

实验四 数码管的动态显示实验

实验四数码管的动态显示实验班级通信1102 姓名谢剑辉学号20110803223 指导老师袁文澹一、实验目的熟悉掌握数码管动态显示的基本方法;根据已知电路和设计要求在实验板上实现数码管动态显示。

根据已知电路和设计要求在PROTEUS平台仿真实现控制系统。

二、实验内容1、在STC89C52实验平台的4位数码管上实现动态显示0123→1234→2345→3456→4567→5678→6789→7890→8901→9012→0123→不断反复,每隔2s切换显示内容。

2、思考:如何实现当4位数码管显示的内容中有“1”时,蜂鸣器蜂鸣。

三、实验原理实验要求“4位数码管上实现动态显示0123→1234→2345→3456→4567→5678→6789→7890→8901→9012→0123→不断反复,每隔2s切换显示内容”。

动态扫描可以实现要求。

简单地说,动态扫描就是选通一位,送一位数据。

原理图中的P10~P13是位选信号,即选择哪个数码管显示数字;P00~P07是段码,即要显示的数字。

可以通过依次选通一位7段数码管并通过P0端口送出显示数据。

由于人眼的视觉残留原理,如果这种依次唯一选通每一位7段数码管的动作在0.1s内完成,就会造成多位数码管同时点亮显示各自数字的假象。

本实验使用中断,实现每2s更新一次数字。

四、实验方法与步骤设计思路和方法:1、根据电路图,分析数码管动态显示的设计思路,使用中断实现每2秒更新一次数字的设计思路,以及实现当4位数码管显示的内容中有“1”时,蜂鸣器蜂鸣的设计思路。

(1)数码管动态显示的原理如“实验原理”里所述,不赘述;(2)使用中断实现每2s更新一次数字的设计思路:本次实验使用Timer0中断,由于其定时时间最大为65536us,不能实现2s的长延时,那么可以使用多次中断来实现,并且在中断到来时,不断地死循环显示数字,即根据动态显示原理“选通一位,来一位数据”。

由于最大的数字为9,则(x%10),(x+1)%10,(x+2)%10,(x+3)%10分别是千位,百位,十位,个位上的数字。

四位二进制加法计数器课程设计

四位二进制加法计数器课程设计
图3-5提示是否添加文件
图3-6芯片型号选择
(5)点击Next,系统显示如图3-7,提示是否需要其他EDA工具,这里不选任何其他工具;
(6)点击Next后,系统提示创建工程的各属性总结,若没有错误,点击Finish,工程创建向导将生成一个工程,这时软件界面如图3-8,在窗口左侧显示出设备型号和该工程的基本信息等。
2.求时钟方程、状态方程
(1)求时钟方程
采用同步方案,故取CP0=CP1=CP2=CP3=CP
CP是整个要设计的时序电路的输入时钟脉冲
(2)求状态方程
由图2所示状态转换图可直接画出如图3-20所示的电路次Q3n+1Q2n+1Q1n+1Q0n+1的卡诺图,再分解开便可以得到如图3-21所示的各触发器的卡诺图。
end zs_2;
ARCHITECTURE Behavioral OF zs_2 IS
SIGNAL
count:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(cp,r)
BEGIN
if r='0'then count<="0000";
elsiF cp'EVENT AND cp='1'THEN
(3)在Multisim环境中仿真实现四位二进制加计数器(缺0010 0011 1101
1110)的建立,并通过虚拟仪器验证其正确性。
二课设题目实现框图
在本课程设计中,四位二进制加计数用四个CP下降沿触发的JK触发器实现,其中有相应的跳变,即跳过了0010 0011 1101 1110四个状态,这在状态转换图中可以清晰地显示出来。
图3-11存盘

数字逻辑实验报告四位左移计数器

数字逻辑实验报告四位左移计数器

实验二十三四位左移计数器
[实验要求] 设计并实现一个左移寄存器和四位二进制异步计数器[实验原理]
CLR “1”
Qi Qi-1 Qi-1 CP
说明:1、i=3、2、1、0
2、S为功能选择信号,S=0时,选左移功能,S=1时,选计数功能。

3、i=0时,CP0直接连时钟CP,左移入数Qi-1连DL。

[与LEXP的连接]
【LEXP调试】
1.置KC2于“停止”,置KC0于“序号”,选实验序号23。

2.置KC2于“运行”,置KC1于“单拍”,单拍运行四位左移计数器,
观察指示灯LS1,LS0,LR3~LR0,LE3~LE0的变化,并填入下表。

3.若某一拍时,LE3~LE0与LR3~LR0状态不同,则应停下来及时查
究试验线路。

4.单拍运行全部正确后,将KC2置于“运行”,KC1置于“连续”,
连续运行四位左移计数器,此时应自动重复显示节拍1至节拍23各派的实验现象。

5.若连续运行速度较快或较慢而不便观察,则可按需调节运行“周
期”。

FPGA四位加法器实验报告

FPGA四位加法器实验报告

题目:含异步清0和同步使能的4位加法计数器一. 实验目的.学习时序电路的设计、仿真和硬件测试,进一步熟悉VHDL技术。

二.实验原理.如图是一含计数使能、异步复位和计数值并行预置功能4位加法计数器,4位锁存器;rst是异步清0信号,高电平有效;clk是锁存信号;D[3..0]是4位数据输入端。

ENA是使能信号,当ENA为'1'时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA为'0'时将"0000"加载于锁存器。

三.实验内容.设计一个含异步清0和同步使能的4位加法计数器;实现对输入时钟(clk)的计数。

任务分析:在RST=1,ENA=1时,系统对输入时钟进行计数,所计数值输出至OUTY(3 DOWNTO 0),当计数满15时,产生一个进位,输出至COUT,同时OUTY溢出归零;如果RST=1,ENA=0时,保持原来的计数值不变。

如果RST=0,置输出信号为0;1)异步复位,则输入信号有复位信号RST2)同步使能, 则输入信号有使能信号ENA3)要求同步的时序,则输入信号有时钟CLK在QuartusII上对下列程序进行编辑、编译、综合、适配、仿真。

module CNT4B(CLK,RST,ENA,CLK_1,RST_1,ENA_1,OUTY,COUT);input CLK,RST,ENA;output CLK_1,RST_1,ENA_1;output[3:0] OUTY;output COUT;reg[3:0] OUTY;reg COUT;wire CLK_1; wire RST_1; wire ENA_1;assign CLK_1 = CLK; assign RST_1 = RST; assign ENA_1 = ENA;always@(posedge CLK or negedge RST)begin if(!RST)begin OUTY<=4'b0000;COUT<=1'b0; endelse if(ENA)Begin OUTY<=OUTY+1;COUT<=OUTY[0] & OUTY[1] & OUTY[2] & OUTY[3]; end end endmodule四.实验步骤.1.在QUARTUSII软件下创建一工程,工程名为CNT4B,芯片名为EP2C35F672C6;2.新建Verilog语言文件,输入以上Verilog语言源程序,并将程序命名为CNT4B.vhd,保存在与工程相同的文件夹中;3.进行功能仿真、全编译、时序仿真,如出现错误请按照错误提示进行修改,保证设计的正确性。

利用D触发器构成计数器

利用D触发器构成计数器

数字电路实验设计:D触发器组成的4位异步二进制加法计数器一、选用芯片74LS74;管脚图如下:说明:74LS74是上升沿触发的双D触发器; D触发器的特性方程为二、设计方案:用触发器组成计数器..触发器具有0 和1两种状态;因此用一个触发器就可以表示一位二进制数..如果把n个触发器串起来;就可以表示n位二进制数..对于十进制计数器;它的10 个数码要求有 10 个状态;要用4位二进制数来构成..下图是由D触发器组成的4位异步二进制加法计数器..三、实验台:四、布线:1、将芯片1的引脚4、10连到一起;2、将芯片2的引脚4、10连到一起;3、将芯片1的引脚10和芯片2的引脚10连到一起;4、将芯片1的引脚10连到+5V;5、将芯片1的引脚1、13连到一起;6、将芯片2的引脚1、13连到一起;7、将芯片1的引脚13和芯片2的引脚13连到一起;8、将芯片1的引脚13连到+5V ;9、将芯片1的引脚3接到时钟信号CP10、将芯片1的引脚2、6接到一起;再将引脚2接到引脚1111、将芯片1的引脚8、12接到一起;再将芯片1的引脚8接到芯片2的引脚312、将芯片2的引脚2、6接到一起;再将引脚6接到引脚1113、将芯片1的引脚5、9分别接到Q 0、Q 1;再将芯片2的引脚5、9分别接到Q 2、Q 314、分别将两芯片的14脚接电源+5V;分别将两芯片的7脚接地0V..五、验证:接通电源on;默认输出 原始状态0000每输入一个CP 信号单击CP; 的状态就会相应的变化;变化规律为0000原始状态、1000、0100、1100、0010、1010、0110、1110、0001、1001、0101、1101、0011、1011、0111、1111。

实验报告模板:实验四 数字频率计设计

实验报告模板:实验四 数字频率计设计

实验四数字频率计设计(1)【实验目的】1.掌握数字频率计的Verilog描述方法;2.学习设计仿真工具的使用方法;3.学习层次化设计方法;【实验内容】1.用4位十进制计数器对用户输入时钟进行计数, 计数间隔为1秒, 计数满1秒后将计数值(即频率值)锁存到4位寄存器中显示, 并将计数器清0, 再进行下一次计数。

2.为上述设计建立元件符号【实验原理】设计clk为1秒的计数器, 对用户输入的时钟进行计数, 所以记数间隔为1秒。

而在计数器后是寄存器, 所以可以将产生的数据放在寄存器里进行寄存, 然后再进行4位到7位转换, 在led上显示。

【程序源代码】(加注释)module CNT(CLKK,CNT_EN,RST_CNT,LOAD);input CLKK;output CNT_EN,RST_CNT,LOAD;wire CNT_EN,LOAD;reg RST_CNT,div2clk;always @(posedge CLKK) //定义CLKK为上升沿敏感信号div2clk<=~div2clk;always@(CLKK or div2clk)beginif(CLKK==1'b0&div2clk==1'b0)RST_CNT<=1'b1; //使用非阻塞赋值语句else RST_CNT<=1'b0;endassign LOAD=~div2clk;assign CNT_EN=div2clk;endmodule //模块结束module C10(CLK,EN,RST,COUT,DOUT);input CLK,EN,RST;output COUT;output [3:0]DOUT; //定义DOUT为4位带宽reg[3:0]Q; //定义Q为4位位宽reg COUT;assign DOUT=Q;always@(posedge CLK or posedge RST)beginif(RST)Q=0;else if(EN)beginif(Q<9)Q=Q+1; //当Q小于9时Q=Q+1else Q=0;endendalways@(Q)if(Q==4'b1001) //当Q为4位的1001时执行语句COUT=1;elseCOUT=0;endmodulemodule RGB4(DIN,LOAD,Dout);input LOAD;input [3:0] DIN; //定义DIN为4位位宽output [3:0] Dout;reg [3:0] Dout; //定义Dout为4位位宽的寄存器变量always@(posedge LOAD)Dout=DIN;endmodulemodule LED(in,led7);input [3:0] in;output [6:0] led7;reg [6:0] led7; //定义了led7为4位位宽的寄存器变量always@(in)begincase(in) //使用case语句0:led7<=7'b0111111; //in=0时输出7位的二进制01111111:led7<=7'b0000110; // in=1时输出7位的二进制00001102:led7<=7'b1011011; // in=2时输出7位的二进制10110113:led7<=7'b1001111; // in=3时输出7位的二进制10011114:led7<=7'b1100110; // in=4时输出7位的二进制11001105:led7<=7'b1101101; //in=5时输出7位的二进制11011016:led7<=7'b1111101; // in=6时输出7位的二进制11111017:led7<=7'b0000111; // in=7时输出7位的二进制00001118:led7<=7'b1111111; // in=8时输出7位的二进制11111119:led7<=7'b1101111; // in=9时输出7位的二进制1101111default led7<=7'b1110111; //当出现错误时输出7位二进制1110111endcaseendendmodulemodule freg(CLK1,UCLK,led0,led1,led2,led3,rst,en,load);input CLK1,UCLK;output[6:0] led0,led1,led2,led3;output rst,en,load;wire [3:0] dout0,dout1,dout2,dout3, //定义dout0, dout1, dout2, dout3为网线型变量trs0,trs1,trs2,trs3;wire inload,inrst,inen,co,c1,c2; //定义inload, inrst, inen, c1, c2为网线型变量assign rst=inrst,load=inload,en=inen;CNT u1(.CLKK(CLK1),.CNT_EN(inen),.RST_CNT(inrst),.LOAD(inload)); //例化CNT模块C10 u2(.CLK(UCLK),.EN(inen),.RST(inrst),.COUT(c0),.DOUT(dout0));C10 u3(.CLK(c0),.EN(inen),.RST(inrst),.COUT(c1),.DOUT(dout1));C10 u4(.CLK(c1),.EN(inen),.RST(inrst),.COUT(c2),.DOUT(dout2));C10 u5(.CLK(c2),.EN(inen),.RST(inrst),.DOUT(dout3));RGB4 u6(.DIN(dout0),.LOAD(inload),.Dout(trs0));RGB4 u7(.DIN(dout1),.LOAD(inload),.Dout(trs1));RGB4 u8(.DIN(dout2),.LOAD(inload),.Dout(trs2));RGB4 u9(.DIN(dout3),.LOAD(inload),.Dout(trs3));LED u10(.in(trs0),.led7(led0));LED u11(.in(trs1),.led7(led1));LED u12(.in(trs2),.led7(led2));LED u13(.in(trs3),.led7(led3));endmodule【仿真和测试结果】【元件符号与总框图】【硬件仿真结果】:【实验心得和体会】随着做实验的次数越来越多, 我对QuartusII越来越熟悉, 对EDA也越来越熟悉, 对于这门课程也越来越有兴趣了, 我将会在接下来的学习中继续努力学习。

含异步清0和同步时钟使能的4位加法计数器

含异步清0和同步时钟使能的4位加法计数器

含异步清0和同步时钟使能的4位加法计数器含异步清0和同步时钟使能的4位加法计数器⼀、实验⽬的学习计数器的设计、仿真和硬件测试,进⼀步熟悉VHDL的编程⽅法⼆、实验内容本实验的内容是QuartusII建⽴⼀个含计数使能、异步复位的4位加法计数器,并执⾏仿真测试。

最后在SmartSOPC实验箱上进⾏硬件测试,有KEY1控制计数使能端ENA并有LED1指⽰,KEY2控制复位端并由LED2指⽰。

进位输出有LED8指⽰,计数值由数码管指⽰。

时钟CLK有分频模块int-div分频得到4HZ的信号。

三、实验原理实验图是⼀含计数使能、异步复位和计数值并⾏预置功能4位加法计数器,例1是其VHDL描述。

由实验图所⽰,图中间是4位锁存器;rst 是异步清信号,⾼电平有效;clk是锁存信号;D[3..0]是4位数据输⼊端。

当ENA为'1'时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA为'0'时将"0000"加载于锁存器。

四、实验步骤(1)启动QuartusII建⽴⼀个空⽩⼯程,然后命名为cnt-4b.qbf。

(2)新建VHDL源程序⽂件cnt4b.vhd,输⼊程序代码并保存,进⾏综合编译,若在编译过程中发现错误,则找出并更正错误,直到编译成功为⽌。

(3)建⽴波形仿真软件并进⾏仿真验证。

(4)将光盘中EDA⽬录下的int-div.bsf、int-div.vhd和decl7s.bsf、decl7s.vhd(5)新建图形设计⽂件(顶层模块)命名为cnt-4b.bdf并保存。

(6)选择⽬标器件并对相应的引脚进⾏锁定,在这⾥所选择的器件为Altera公司的Cyclone系列的EP1C12Q240C8芯⽚,引脚锁定⽅法如图,将未使⽤管脚设置为三态输⼊(⼀定要设置,否则可能会损坏芯⽚)。

(7)将cnt-4b.qbf.设置为顶层实体。

对该⼯程⽂件进⾏全程编译处理,若在编译过程中发现错误,则找出并更正错误,直到编译成功为⽌。

太原理工大学EDA实验 4位加法计数器

太原理工大学EDA实验 4位加法计数器

实验四4位加法计数器一、实验目的和要求1、学习时序电路的VHDL描述方法。

2、掌握时序进程中同步、异步控制信号的设计。

3、熟悉EDA的仿真分析和硬件测试技术。

二、实验内容和原理设计一个含技术使能、异步复位和并行预置功能的4位加法计数器,RST 是异步复位信号,高电平有效;CLK是时钟信号;当使能信号ENA为1时,加法计数,COUT为计数进位输出,OUTY为技术输出。

实验任务:1、编写4位二进制加法计数器的VHDL程序。

2、在QuartusⅡ上对加法计数器进行仿真。

3、将输入引脚连接到拨码开关,时钟输入锁定到相应频率的时钟信号,输出连接到发光二极管,下载后在实验板上验证其功能,记录实验结果。

三、主要仪器设备装有QuartusⅡ软件的电脑Altera实验箱四、实验步骤1、打开软件,新建一个VHDL File文件,输入需要设计的程序。

2、对改VHDL语言进行编辑,无误后进行编译。

3、编译完成后分配管脚,之后进行编译。

4、把实验箱连接好电源和计算及接口,把程序下载下来,即可在实验箱上通过按键和信号灯来检验实验的正确性。

5、实验成功,信号灯成功通过闪烁来显示加法计数和进位。

五、实验数据记录和处理VHDL程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity MENG isport ( clk : in std_logic;rst: in std_logic;ena:in std_logic;outy:out std_logic_vector(3 downto 0);cout:out std_logic);end MENG;architecture behave of MENG issignal cqi: std_logic_vector(3 downto 0);beginp_reg:process(clk,rst,ena)beginif rst='1' then cqi<="0000";elsif clk'event and clk = '1' thenif ena = '1' then cqi <= cqi + 1;end if;end if;outy <=cqi;end process p_reg;cout <=cqi (0) and cqi (1) and cqi (2) and cqi (3);end behave;程序截图:引脚分布图:仿真结果图:六、实验感想通过本次四位加法计数器的实验,让我对加法器的工作原理有了更深刻的认识,同时之前所学的知识也在实验中不断得到加强,对我们的学习有很大的帮助。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四 4 位计数器设计
1.实验目的
学习quartusii 和modelsim的使用方法;
学习原理图和veriloghdl混合输入设计方法;
掌握4 位计数器设计的设计及仿真方法。

2.实验原理
根据下面FPGA内部电路,设计4 位计数器,并在在kx3c10F+开发板上实现该电路,并作仿真。

设计其中的计数器模块CNT4B和数码管译码驱动模块DECL7S的verilogHDL代码,并作出整个系统仿真。

4位计数器模块代码
module CNT4B(out, CLK, RST); Please refer to the
LK(CLK),
.RST(RST),
.out(SYNTHESIZED_WIRE_0));
segled b2v_inst1(
.a(SYNTHESIZED_WIRE_0),
.out1(Q));
endmodule
效果图:
3.实验设备
kx3c10F+开发板,电脑。

4.实验步骤
编译
编译结果如下图所示:
编译解释:
在这个报告中,我们可以看到如下信息:
Total logic elements 11/5136(<1%): 该芯片中共有5136个LE资源,其中的11个在这个工程的这次编译中得到了使用。

Total combinational functions 11/5136(<1%): 该芯片的5136个LE资源中,其中11个用于实现组合逻辑。

Dedicated logic registers 4/5136(0%): 该芯片的5136个LE资源中,其中4个用于实现寄存器,即时序逻辑。

从上述信息中,可以得到组合逻辑与时序逻辑的使用比例——11/4= :1。

综合出来的电路图
电路图解释:
从以上电路图可以看出本电路图主要由计数器(CNT4B)和七段数码管显示程序(segled)组成。

从CNT4B的CLK端输入CLK信号,RST为低电平复位信号,本实验是四位二进制计数器可以计数16个,每个CLK上升沿计数一次,其中七段数码管是通过输入的四位二进制数来选择相应的断码进行输出显示。

管脚分配
管脚连接:通过双击Location选择与芯片上相应的引脚进行连接。

仿真
1.测试模块的代码
module test;
reg CLK, RST; LK(CLK),.RST(RST),.Q(Q)); 验体会
通过本次实验我学到了计数器的工作原理,计数器虽然也曾经在数电上学过,但是用Verilog代码编写出来感觉还是很神奇的,而且用代码写出来的计数器简单易理解。

由此认识到这门课程进行数字设计非常有效率,所以在今后的学习中一定努力学习,勤学多问。

对于这次实验,由于比较简单,所以做的挺顺利的,基本没什么问题。

相关文档
最新文档