实验四、 计数器的设计 电子版实验报告

合集下载

计数器的设计实验报告

计数器的设计实验报告

计数器的设计实验报告篇一:计数器实验报告实验4 计数器及其应用一、实验目的1、学习用集成触发器构成计数器的方法2、掌握中规模集成计数器的使用及功能测试方法二、实验原理计数器是一个用以实现计数功能的时序部件,它不仅可用来计脉冲数,还常用作数字系统的定时、分频和执行数字运算以及其它特定的逻辑功能。

计数器种类很多。

按构成计数器中的各触发器是否使用一个时钟脉冲源来分,有同步计数器和异步计数器。

根据计数制的不同,分为二进制计数器,十进制计数器和任意进制计数器。

根据计数的增减趋势,又分为加法、减法和可逆计数器。

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

目前,无论是TTL还是CMOS集成电路,都有品种较齐全的中规模集成计数器。

使用者只要借助于器件手册提供的功能表和工作波形图以及引出端的排列,就能正确地运用这些器件。

1、中规模十进制计数器CC40192是同步十进制可逆计数器,具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如图5-9-1所示。

图5-9-1 CC40192引脚排列及逻辑符号图中LD—置数端CPU—加计数端CPD —减计数端CO—非同步进位输出端BO—非同步借位输出端D0、D1、D2、D3 —计数器输入端Q0、Q1、Q2、Q3 —数据输出端CR—清除端CC40192的功能如表5-9-1,说明如下:表5-9-1当清除端CR为高电平“1”时,计数器直接清零;CR置低电平则执行其它功能。

当CR为低电平,置数端LD也为低电平时,数据直接从置数端D0、D1、D2、D3 置入计数器。

当CR为低电平,LD为高电平时,执行计数功能。

执行加计数时,减计数端CPD 接高电平,计数脉冲由CPU 输入;在计数脉冲上升沿进行8421 码十进制加法计数。

执行减计数时,加计数端CPU接高电平,计数脉冲由减计数端CPD 输入,表5-9-2为8421码十进制加、减计数器的状态转换表。

加法计数表5-9-减计数2、计数器的级联使用一个十进制计数器只能表示0~9十个数,为了扩大计数器范围,常用多个十进制计数器级联使用。

实验四-模10计数器与10分频电路

实验四-模10计数器与10分频电路

●实验名称:利用VerilogHDL设计一个模10加法计数器和一个时钟10分频电路●实验目的:1.熟悉用可编程器件实现基本时序逻辑电路的方法。

2.了解计数器的Verilog描述方法,以及偶数分频的思路与原理。

●预习要求:1.回顾数字电路中加法计数器的相关知识。

●实验说明:1.用MAX+plus II软件开发PLD器件有两种设计输入方式:原理图输入和HDL语言输入方式,或者将两者结合起来,一部分电路采用原理图,另一部分采用HDL语言。

2.加法计数器表示随着时钟脉冲的输入,计数器从0开始正向计数,直到计满规定的模值后归零,然后依次循环计数。

模10计数器表示,计数器从0000~1001循环计数。

3.时钟分频电路的功能是,对输入的时钟频率进行偶数倍的降频(倍增其周期),10分频意味着分频后产生的新时钟周期是输入时钟的20倍。

●实验内容与步骤:1.新建一个属于自己的工程目录。

2.用VerilogHDL语言方式编写一个模10加法计数器cnt_10。

3.对此计数器模块进行编译和仿真。

4.用VerilogHDL语言方式编写一个20分频模块fenpin_20,对输入时钟进行20分频处理。

5.对此分频电路进行仿真。

●实验报告要求:1.将自己绘制的电路图或者编写的VerilogHDL代码,截图或者复制到实验报告中。

2.将代码关键位置写上相应注释(可用中文)。

3.对仿真波形截图,贴到实验报告中。

●实验图表与数据:1. 模10加法计数器cnt_10的V erilog代码2. 模10加法计数器cnt_10的仿真波形:3. 20分频模块fenpin_10的Verilog代码:4. 20分频模块fenpin_10的仿真波形:。

显示计数器的设计实验报告

显示计数器的设计实验报告

数字电路与逻辑设计实验报告
(一)实验名称:显示计数器的设计。

(二)实验目的:熟悉同步、异步计数器的工作原理及应用。

掌握任意进制计数器的设计方法。

(三)实验内容:掌握双二-五-十进制计数器74LS390的功能。

利用74LS390设计一个模18的计数器,使用555定时器产生计数脉冲信号,计数结果用数码管显示。

利用示波器观察CP、1QA、1QB、1QC、1QD、2QA的波形,并在报告中绘制。

(四)模拟电路上的运行结果:
(五)心得体会:
此次计数器的有关实验,不仅帮我巩固了计数器相关方面的知识,而且让我懂得和体会到了计数器功能测试的方法,并且也掌握了一些计数器的设计方法。

与此同时,还让我熟悉了同步、异步计数器的工作原理和应用。

虽然刚开始的时候还是遇到了一些难于解决的问题,但最后经过老师的讲解和自己大胆的尝试操作后,最终问题都迎刃而解了。

(六)思考题解答:。

数电实验报告:实验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;。

计数器的实验观察与分析

计数器的实验观察与分析

计数器的实验观察与分析计数器是一种常见的电子设备,用于计算和显示一个或多个事件的数量。

本次实验的目的是观察和分析一个四位数的数字计数器的工作原理和性能。

实验步骤如下:1. 实验装置:一台四位数的数字计数器、一个交流电源和连接电线。

2. 连接电路:将交流电源的正极和数字计数器的Vcc引脚连接,将交流电源的负极和数字计数器的地引脚连接。

3. 调整电源电压:将交流电源的电压调整到合适的范围,例如5V。

4. 计数电路:将计数器的输入引脚与电源连接。

5. 数字显示:将计数器的输出引脚与七段数码管连接。

6. 实验观察:打开交流电源,观察数字计数器的工作情况。

记录显示在四位数码管上的数字变化。

根据观察数据,进行以下分析和讨论:1. 计数范围:观察实验当中计数器最高能计数到的数。

根据实验结果,推断该计数器的计数范围。

2. 计数方式:观察数字的计数变化模式,判断计数器采用的计数方式是递增还是递减。

通过改变输入引脚的电压,可以验证计数器的计数方式。

3. 计数精度:观察实验过程中数字计数器是否存在计数误差。

将计数器与其他测量设备(如计时器)进行对比,以确定计数器的计数精度。

4. 显示方式:观察数字计数器的显示方式。

是否采用了七段数码管进行数字显示,或者是采用其他显示器件。

5. 重置功能:观察数字计数器是否具备重置功能。

通过改变输入引脚的电压,验证计数器的重置功能。

通过上述的实验观察和分析,我们可以了解到数字计数器的基本工作原理、计数范围、计数方式、计数精度、显示方式以及是否具备重置功能等。

这些了解对于进一步应用数字计数器有很大帮助,例如在电子测量、物理实验、工业自动化等领域都有广泛应用。

6. 计数范围:根据实验结果观察到的最高数字,可以推断出该计数器的计数范围。

比如,如果实验结果显示的最高数字是9,则可以推断该计数器的范围为0-9。

如果最高数字是F(十六进制),则范围为0-F。

7. 计数方式:观察数字的计数变化模式可以推断出计数器采用的计数方式是递增还是递减。

vhdl 计数器的使用

vhdl 计数器的使用

实验四计数器的使用一、实验目的熟悉步长可变的加减计数器的工作原理、设计过程和实现方法。

二、实验内容与要求学习用VHDL设计步长可变的加减计数器电路,完成编译、综合、适配、仿真和实验箱上的硬件测试,通过LED数码管显示输入输出各部分数据。

三、实验原理通过输入一组4BIT二进制数据,控制计数方式,即步长,决定每个脉冲到来时计数器增加的数值,同时还有一个单BIT的控制位,选择加计数或者减计数,并通过电路显示各部分数据(输入及输出)。

拨码开关置为MODEL_SEL5-8,全部置为ON,通过USB下载;全部置为OFF,则通过LAB_JTAG_PS_AS接口下载。

DISP_SEL8,处于“ON”状态,这样可以使用静态共阳数码管DISP_SEL1,DISP_SEL2处于“OFF”状态,通过F1,F2的十六进制的输入,在静态共阳数码管DP1B,DP2B上显示输出。

F1,F2预置数据,通过计数器,总的计数值控制电平宽度,其中一组控制高电平,一组控制低电平。

在DP1B上显示的是0-F的步长可变的加减计数器。

四、实验平台(1)硬件:计算机、GX-SOC/SOPC-DEV-LABCycloneII EP2C35F672C8核心板(2)软件:Quartus II软件五、六、仿真截图七、硬件实现八、程序代码1--10 位计数SCAN TOP_LEVEL程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;ENTITY ACOUNT100 ISPORT(clk,clr,en,en6:IN STD_LOGIC ;count1 : out std_logic ;ledseg : out std_logic_vector(6 downto 0);ledcom :out std_logic_vector(5 downto 0)); END;ARCHITECTURE ONE OF ACOUNT100 IS COMPONENT clkgen ISPORT(clkin:IN STD_LOGIC ;clkout: OUT STD_LOGIC);END COMPONENT;COMPONENT COUNT10a ISPORT(clk,clr,en:IN STD_LOGIC ;q:OUT STD_LOGIC_vector(3 downto 0);count1:OUT STD_LOGIC);end COMPONENT;COMPONENT bcd_7seg isport(bcd_led :in std_logic_vector(3 downto 0);--input bcdledseg : out std_logic_vector(6 downto 0));--output to 7 segmentend COMPONENT;COMPONENT mx isport(s:in std_logic;a,b:in std_logic_vector(3 downto 0);q:out std_logic_vector(3 downto 0));end COMPONENT;COMPONENT comcoun isport(clk : in std_logic;--synchronouse clockenable : in std_logic;--scan clockcomclk : out std_logic_vector(2 downto 0));--output countend COMPONENT;COMPONENT com_encode isport(s :in std_logic;--input countledcom :out std_logic_vector(5 downto 0));--output encodeend COMPONENT ;signal clk1,c10: std_logic;signal q1,q2,bcd: std_logic_vector(3 downto 0);BEGINU1:clkgen PORT MAP(CLKIN=>CLK,CLKOUT=>CLK1);U2:COUNT10a PORT MAP(clk=>CLK1,clr=>clr,en=>en,q=>q1,count1=>c10);U3:COUNT10a PORT MAP(clk=>CLK1,clr=>clr,en=>c10,q=>q2,count1=>count1); U4:MX PORT MAP(S=>CLK1,A=>q1,b=>q2,q=>bcd);U5:bcd_7seg PORT MAP(bcd_led=>bcd,ledseg=>ledseg);U6:com_encode PORT MAP(s=>clk1,ledcom=>ledcom );end;2---clkgen.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;ENTITY clkgen ISPORT(clkin:IN STD_LOGIC ;clkout: OUT STD_LOGIC);END;ARCHITECTURE even OF clkgen ISconstant N:Integer:=50000000;--constant N:Integer:=10;SIGNAL coun:integer range 0 to N;SIGNAL clk1:STD_LOGIC;BEGINPROCESS(clkin)BEGINIF(clkin'EVENT AND clkin='1')THENIF(coun=N)THENcoun<=0;clk1<=Not clk1;elsecoun<=coun+1;END IF;END IF;END PROCESS;clkout<=clk1;END even;3--10 位计数器程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNT10a ISPORT(clk,clr,en:IN STD_LOGIC;count1:OUT STD_LOGIC;q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COUNT10a ;ARCHITECTURE rtl OF COUNT10a ISSIGNAL qs:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL ca:STD_LOGIC;BEGINPROCESS(clk)BEGINIF(clk'EVENT AND clk='1')THENIF(clr='1')THENqs<="0000";ELSIF(en='1')THENIF(qs="1001")THENqs<="0000";ca<='0';ELSIF(qs="1000")THEN --在计数到8时,即让进位赋值1,--由于信号会产生一个滞后,使得实际ca在9时出现qs<=qs+1;ca<='1';ELSEqs<=qs+1;ca<='0';END IF;END IF;END IF;END PROCESS;PROCESS(ca,en)BEGINq<=qs;count1<=ca AND en;END PROCESS;END rtl;4library ieee;use ieee.std_logic_1164.all;entity mx isport(s:in std_logic;a,b:in std_logic_vector(3 downto 0);q:out std_logic_vector(3 downto 0));end mx;architecture rtl of mx isbeginq<= a WHEN s = '0' ELSE b ;end rtl;5--七段显示扫描电路--comcoun.vhd 7 segment com scan counterlibrary ieee ;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity comcoun isport(clk : in std_logic;--synchronouse clockenable : in std_logic;--scan clockcomclk : out std_logic_vector(2 downto 0));--output countend comcoun;architecture behavior of comcoun issignal q : std_logic_vector(2 downto 0);--internal counted signal beginfscan:process(clk)beginif (clk'event and clk='1') thenif (enable='1') thenif q>=1 thenq<="000";--initial counterelseq<=q+1;--countingend if;end if;end if;end process fscan;comclk<=q; --output internal countend behavior;6library ieee ;use ieee.std_logic_1164.all;entity bcd_7seg isport(bcd_led :in std_logic_vector(3 downto 0);--input bcdledseg : out std_logic_vector(6 downto 0));--output to 7 segment end bcd_7seg;architecture behavior of bcd_7seg isbeginwith bcd_led selectledseg<="0111111" when "0000",--0,3f"0000110" when "0001",--1,06"1011011" when "0010",--2,5b"1001111" when "0011",--3,4f"1100110" when "0100",--4,66"1101101" when "0101",--5,6d"1111101" when "0110",--6,7d"0100111" when "0111",--7,27"1111111" when "1000",--8,7f"1101111" when "1001",--9,6f"1110111" when "1010",--A"1111100"when "1011", --b"0111001"when "1100",--c"1011110" when "1101",--d"1111001"when "1110",--E"1110001" when "1111",--F"0000000" when others;end behavior;7--计数译码电路-- 6 共阴--com_encode.vhd 7 segment com encoderlibrary ieee ;use ieee.std_logic_1164.all;entity com_encode isport(s :in std_logic;--input countledcom :out std_logic_vector(5 downto 0));--output encode end com_encode;architecture behavior of com_encode isbeginledcom<="000001" when s='0' else"000010" ;end behavior;九、实验总结。

计数器的设计实验报告

计数器的设计实验报告

计数器的设计实验报告一、实验目的本次实验的目的是设计并实现一个简单的计数器,通过对计数器的设计和调试,深入理解数字电路的基本原理和逻辑设计方法,掌握计数器的工作原理、功能和应用,提高自己的电路设计和调试能力。

二、实验原理计数器是一种能够对输入脉冲进行计数,并在达到设定计数值时产生输出信号的数字电路。

计数器按照计数方式可以分为加法计数器、减法计数器和可逆计数器;按照计数进制可以分为二进制计数器、十进制计数器和任意进制计数器。

本次实验设计的是一个简单的十进制加法计数器,采用同步时序逻辑电路设计方法。

计数器由触发器、门电路等组成,通过对触发器的时钟信号和输入信号的控制,实现计数功能。

三、实验设备与器材1、数字电路实验箱2、集成电路芯片:74LS160(十进制同步加法计数器)、74LS00(二输入与非门)、74LS04(六反相器)3、示波器4、直流电源5、导线若干四、实验内容与步骤1、设计电路根据实验要求,选择合适的计数器芯片 74LS160,并确定其引脚功能。

设计计数器的清零、置数和计数控制电路,使用与非门和反相器实现。

画出完整的电路原理图。

2、连接电路在数字电路实验箱上,按照电路原理图连接芯片和导线。

仔细检查电路连接是否正确,确保无短路和断路现象。

3、调试电路接通直流电源,观察计数器的初始状态。

输入计数脉冲,用示波器观察计数器的输出波形,检查计数是否正确。

若计数不正确,逐步排查故障,如检查芯片引脚连接、电源电压等,直至计数器正常工作。

4、功能测试测试计数器的清零功能,观察计数器是否能在清零信号作用下回到初始状态。

测试计数器的置数功能,设置不同的预置数,观察计数器是否能按照预置数开始计数。

五、实验结果与分析1、实验结果成功实现了十进制加法计数器的设计,计数器能够在输入脉冲的作用下进行正确计数。

清零和置数功能正常,能够满足实验要求。

2、结果分析通过对计数器输出波形的观察和分析,验证了计数器的工作原理和逻辑功能。

加法计数器实验EDA

加法计数器实验EDA

实验四加法计数器的设计一、实验目的熟悉利用QuartusII的VHDL文本输入方法设计简单时序电路,掌握异步、同步电路的设计的方法,并通过一个十进制加法计数器的设计,掌握边沿触发(或电平触发)的描述方法等。

二、实验要求和内容1、根据【例5-15】(课本132页),将其修改成一个异步清0,同步时钟使能,同步数据加载的十进制加法计数器:包括VHDL程序输入、编译、综合、适配、仿真。

(1)为此工程新建一个文件夹。

启动QuartusII软件工作平台,新建工程设计文件名为CNT10.vhd。

在新建的VHDL模型窗口下编写源程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT (CLK,EN,RST,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 behav 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;ELSE IF Q<9 THEN Q:=Q+1;ELSE Q:=(others=>'0');END IF;END IF;END IF;END IF;IF Q="1001" THEN COUT<='1';ELSE COUT<='0'; END IF; DOUT<=Q;END PROCESS;END behav;(2)创建工程及全程编译。

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

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

数字电子技术实验报告实验四:计数器及其应用一、实验目的:1、熟悉常用中规模计数器的逻辑功能。

2、掌握二进制计数器和十进制计数器的工作原理和使用方法。

二、实验设备:1、数字电路实验箱;2、74LS90。

三、实验原理:1、计数是一种最简单基本运算,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时具有分频功能。

计数器按计数进制分有:二进制计数器,十进制计数器和任意进制计数器;按计数单元中触发器所接收计数脉冲和翻转顺序分有:异步计数器,同步计数器;按计数功能分有:加法计数器,减法计数器,可逆(双向)计数器等。

2、74LS90是一块二-五-十进制异步计数器,外形为双列直插,NC表示空脚,不接线,它由四个主从JK触发器和一些附加门电路组成,其中一个触发器构成一位二进制计数器;另三个触发器构成异步五进制计数器。

在74LS90计数器电路中,设有专用置“0”端R0(1),R0(2)和置“9”端S9(1)S9(2)。

其中前两个为异步清0端,后两个为异步置9端。

CP1, CP2为两个时钟输入端;Q0~Q3为计数输出端。

当R1=R2=S1=S2=0时,时钟从CP1引入,Q0输出为二进制;从CP2引入,Q3输出为五进制。

时钟从CP1引入,二Q0接CP1,则Q3Q2Q1Q0输出为十进制(8421码);时钟从CP2引入,而Q3接CP1,则Q0Q3Q2Q1输出为十进制(5421码)。

四、实验原理图及实验结果:1、实现0~9十进制计数。

1)实验原理图如下:(函数信号发生器:5V 3Hz 偏移2.5V方波)2)实验结果:解码器上依次显示0~9十个数字。

2、实现六进制计数。

1)实验原理图如下:(函数信号发生器:5V 3Hz 偏移2.5V方波)2)实验结果:解码器上依次显示0~5六个数字。

3、实现0、2、4、6、8、1、3、5、7、9计数。

1)实验原理图如下:(函数信号发生器:5V 3Hz 偏移2.5V方波)2)实验结果:解码器上依次显示0、2、4、6、8、1、3、5、7、9十个数字。

实验四定时器计数器8253应用实验报告

实验四定时器计数器8253应用实验报告

南昌理工学院实验报告二O一二年月日课程名称:微机原理与接口技术实验名称:定时、计数器8253A应用班级:姓名:同组人:指导教师评定:签名:【一、实验名称】定时、计数器8253A应用【二、实验目的】学习8253A可编程定时、计数器与8088CPU的接口方法;了解8253A的工作方式;掌握8253A在各种方式下的编程方法。

【三、实验内容和原理】1、实验原理8253A的A0、A1接系统地址总线A0、A1,故8253A有四个端口地址。

8253A的片选地址为40H~4FH。

因此,本实验仪中的8253A四个端口地址为40H、41H、42H、43H,分别对应通道0、通道1、通道2和控制字。

采用8253A通道0,工作在方式3,输入时钟CLK0为1MHZ的方波,并要求用接在GATE0引脚上的导线是接地或甩空来观察GATE对计数器的控制作用,用示波器观察输出波形。

2、实验线路连接(1)8253A的GATE0接+5V。

(2)8253A的CLK0插孔接分频器74LS393的T4插孔,分频器的频率源为4MHZ。

【四、实验条件】微型计算机一台,工具箱,示波器【五、实验过程】运行实验程序:单机时,实验程序起始地址为F000:9180。

在系统显示监控提示符“P."时:输入F000按F1键输入9180按EXEC键。

将CLK0接T6,OUTO插孔连接一个发光的二极管。

附:实验参考程序:ORG 08C0H ;?L8253: MOV DPTR,#0C003HMOV A,#36HMOVX @DPTR,AMOV DPTR,#0C000HMOV A,#00HMOVX @DPTR,AMOV A,#10HMOVX @DPTR,ASJMP $END【六、实验结果】当CLK0接T6时,发现发光的二极管的亮度是在改变的。

当CLK0接T7时,发现发光的二极管的亮度的变化没有CLK0接T6时快。

当CLK0接T4时,肉眼无法发现发光的二极管灯的亮度有改变。

计数器显示电路实训报告

计数器显示电路实训报告

一、实验目的1. 理解和掌握计数器的基本原理和工作方式。

2. 学习计数器显示电路的设计与搭建方法。

3. 熟悉计数器在数字电路中的应用。

4. 培养实际操作能力和问题解决能力。

二、实验原理计数器是一种用于实现计数功能的数字电路,其基本原理是利用触发器进行计数。

常见的计数器有异步计数器和同步计数器两种。

异步计数器采用触发器级联的方式,计数过程中各个触发器的翻转时间不同,因此存在一定的延迟;同步计数器则采用统一的时钟信号,使得各个触发器同时翻转,计数速度快。

计数器显示电路主要由计数器、译码器和显示器三部分组成。

计数器负责计数,译码器将计数器的输出转换为对应的显示信号,显示器则将译码器的信号转换为数字显示。

三、实验仪器与材料1. 数字逻辑实验箱2. 计数器芯片(如74LS90、74LS161等)3. 译码器芯片(如74LS48、CD4511等)4. 显示器(如七段数码管)5. 电源、导线、连接器等四、实验步骤1. 搭建计数器电路(1)根据实验要求选择合适的计数器芯片,如74LS90。

(2)按照计数器芯片的引脚功能,将计数器的输入端、输出端和时钟信号分别连接到实验箱的相应接口。

(3)检查电路连接是否正确,确保无短路或接触不良现象。

2. 搭建译码器电路(1)根据实验要求选择合适的译码器芯片,如74LS48。

(2)将译码器的输入端连接到计数器的输出端。

(3)将译码器的输出端连接到显示器的输入端。

(4)检查电路连接是否正确,确保无短路或接触不良现象。

3. 搭建显示器电路(1)将显示器的各个段分别连接到译码器的输出端。

(2)检查电路连接是否正确,确保无短路或接触不良现象。

4. 电源连接(1)将实验箱的电源连接到计数器、译码器和显示器的电源接口。

(2)确保电源电压符合实验要求。

5. 电路调试(1)打开实验箱电源,观察显示器是否正常显示数字。

(2)通过实验箱的按键或开关控制计数器的计数方向和速度。

(3)观察显示器显示的数字是否与计数器的计数值一致。

EDA实验报告实验四:带7段显示器的模100计数器

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、分析实验结果;实验结果正确,能达到理想效果。

程序计数器实验报告

程序计数器实验报告

程序计数器实验报告一、实验目的本次实验的目的是通过编写程序计数器(Program Counter,PC)来深入理解计算机系统中指令执行的过程,掌握PC在指令执行中的作用和原理。

二、实验环境本次实验使用Verilog HDL语言进行编写,并使用ModelSim进行仿真。

三、实验原理1. 程序计数器概述程序计数器(Program Counter,PC)是CPU中的一个寄存器,用于存储当前正在执行的指令地址。

在指令执行过程中,PC会自动加上当前指令占用的字节数,以便跳转到下一条指令地址。

2. PC在指令执行中的作用当CPU开始执行程序时,PC会被初始化为程序入口地址。

在每个时钟周期内,CPU会从PC所指向的内存地址中读取下一条指令并执行。

当该条指令完成后,PC会自动加上该条指令占用的字节数,以便跳转到下一条指令地址。

3. PC设计原理为了实现PC功能,在Verilog HDL语言中需要定义一个包含以下内容的模块:- 一个输入端口:时钟信号clk;- 一个输入端口:复位信号rst;- 一个输入端口:跳转信号jump;- 一个输入端口:跳转地址jump_addr;- 一个输出端口:下一条指令地址next_addr。

当rst信号为高电平时,PC会被初始化为程序入口地址。

当clk信号上升沿到来时,PC会自动加上当前指令占用的字节数。

当jump信号为高电平时,PC会跳转到jump_addr所指向的地址。

四、实验步骤1. 编写Verilog HDL代码:首先,我们需要定义一个包含输入输出端口的模块,并在其中实现PC的功能。

2. 进行仿真:使用ModelSim对编写好的代码进行仿真,并观察仿真结果是否符合预期。

3. 下载到FPGA板上进行测试:将编写好的Verilog HDL代码下载到FPGA板上进行测试,并观察测试结果是否符合预期。

五、实验结果通过本次实验,我们成功地编写了程序计数器,并通过ModelSim进行了仿真。

数电实验四——精选推荐

数电实验四——精选推荐

实验四:时序逻辑电路(集成寄存器和计数器)一、实验目的:1.熟悉中规模集成计数器的逻辑功能和使用方法;掌握用集成计数器组成任意模数为M的计数器。

2.加深理解移位寄存器的工作原理及逻辑功能描述;熟悉中规模集成移位寄存器的逻辑功能和使用方法;掌握用移位寄存器组成环形计数器的基本原理和设计方法。

二、知识点提示和实验原理:㈠计数器:计数器的应用十分广泛,不仅可用来计数,也可用于分频、定时和数字运算。

计数器种类繁多,根据计数体制不同,计数器可分为二进制计数器和非二进制计数器两大类。

在非二进制计数器中,最常用的是十进制计数器,其他的称为任意进制计数器。

根据计数器的增减趋势的不同,计数器可分为加法计数器和减法计数器。

根据计数脉冲引入方式不同,计数又可分为同步计数器和异步计数器。

在实际工程应用中,一般很少使用小规模的触发器组成计数器,而是直接选用中规模集成计数器。

用集成计数器实现任意M进制计数器:一般情况任意M进制计数器的结构分为3类,第一种是由集成二进制计数器构成,第二种为移位寄存器构成的移位寄存型计数器,第三种为集成触发器构成的简单专用计数器。

当M较小时通过对集成计数器的改造即可以实现,当M较大时,可通过多片计数器级联实现。

实现方法:(1)当所需计数器M值小于集成计数器本身二进制计数最大值时,用置数(清零)法构成任意进制计数器;⑵当所需计数器M值大于集成计数器本身二进制计数最大值时,可采用级联法构成任意进制计数器。

常用的中规模集成器件:4位二进制计数器74HC161,十进制计数器74HC160,加减计数器74HC191、74HC193,异步计数器74LS290。

所有芯片的电路、功能表见教材。

㈡寄存器:寄存器用来寄存二进制信息,将一些待运算的数据、代码或运算的中间结果暂时寄存起来。

按功能划分,寄存器可分为数码寄存器和移位寄存器两大类。

数码寄存器用来存放数码,一般具有接收数码、保持并清除原有数码等功能,电路结构和工作原理郡比较简单。

eda实验报告计数器

eda实验报告计数器

eda实验报告计数器EDA实验报告-计数器引言:计数器是数字电路中常用的基本模块之一,它在各个领域都有着广泛的应用。

本实验旨在通过EDA(电子设计自动化)软件进行计数器的设计与仿真,探索计数器的原理和功能。

一、计数器的基本原理计数器是一种能够按照规定的顺序改变其输出状态的电子电路。

它通过内部的触发器和逻辑门实现数字信号的计数功能。

常见的计数器有二进制计数器、十进制计数器等。

二、实验设计与仿真1. 实验目标本次实验的目标是设计一个4位二进制计数器,并通过EDA软件进行仿真验证。

计数器的功能是在每个时钟脉冲到来时,输出的二进制数加1。

2. 设计思路计数器的设计需要考虑以下几个方面:- 选择适当的触发器:本实验选择了D触发器作为计数器的基本单元,因为D触发器具有简单、易于控制的特点。

- 确定计数器的位数:本实验设计了一个4位计数器,即可以表示0~15的二进制数。

- 连接逻辑门:通过逻辑门将各个触发器连接起来,实现计数器的功能。

3. 电路设计根据设计思路,我们使用EDA软件进行电路设计。

首先,将4个D触发器连接起来,形成4位计数器。

然后,根据计数器的功能要求,将时钟信号连接到每个触发器的时钟输入端。

最后,将各个触发器的输出通过逻辑门进行连接,得到计数器的输出。

4. 仿真验证完成电路设计后,我们使用EDA软件进行仿真验证。

通过输入不同的时钟信号,观察计数器的输出是否符合预期。

在仿真过程中,我们可以调整时钟信号的频率,观察计数器的计数速度。

三、实验结果与分析通过EDA软件的仿真,我们得到了计数器的输出结果。

在时钟信号的作用下,计数器按照预期进行了计数,并输出了相应的二进制数。

通过观察输出结果,我们可以得出以下几点结论:- 计数器的输出与时钟信号的频率有关,频率越高,计数速度越快。

- 计数器的输出按照二进制的顺序进行计数,当达到最大值时,会从0重新开始计数。

四、实验总结本次实验通过EDA软件进行了计数器的设计与仿真。

计数器实验原理

计数器实验原理

计数器实验原理
计数器实验的原理是基于电子数字技术实现的。

它通过将输入的电信号进行计数,并根据给定的规则输出相应的计数结果。

计数器的工作原理通常利用触发器和逻辑门电路来实现。

触发器是一种能够存储和传递信息的电子器件。

计数器中使用的触发器被称为“触发型计数器”,它能够周期性地切换输出状态,从而实现计数功能。

计数器通常有一个输入端,称为时钟输入。

时钟输入接收外部的时钟信号,根据时钟信号的变化来切换触发器的状态。

当时钟信号的边沿(上升沿或下降沿)到来时,触发器的状态会发生变化。

计数器一般有几个输出端,每个输出端对应一个计数值。

当时钟信号到来时,计数器根据规定的计数规则改变输出的计数值。

不同类型的计数器有不同的计数规则,常见的有二进制计数器、十进制计数器和BCD码计数器等。

计数器可以实现多种功能,如正向计数、负向计数、加法计数、减法计数、循环计数等。

通过不同的触发器和逻辑门的组合,可以实现各种复杂的计数功能。

计数器广泛应用于各个领域,如计算机、通信、测量等。

它们能够对事件、信号、数据等进行计数和统计,提供了有效的计数和计量手段。

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

实验四:计数器的设计
实验室:信息楼247 实验台号: 4 日期:
专业班级:机械1205 姓名:陈朝浪学号: 20122947
一、实验目的
1. 通过实验了解二进制加法计数器的工作原理。

2. 掌握任意进制计数器的设计方法。

二、实验内容
(一)用D触发器设计4位异步二进制加法计数器
由D触发器组成计数器。

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

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

(用两个74LS74设计实现)
(二)利用74LS161设计实现任意进制的计数器
设计要求:学生以实验台号的个位数作为所设计的任意进制计数器。

先熟悉用1位74LS161设计十进制计数器的方法。

①利用置位端实现十进制计数器。

②利用复位端实现十进制计数器。

提示:设计任意计数器可利用芯片74LS161和与非门设计,74LS00为2输
入与非门,74LS30为8输入与非门。

74LS161为4位二进制加法计数器,其引脚图及功能表如下。

三、实验原理图
1.由4个D触发器改成的4位异步二进制加法计数器
2.由74LS161构成的十进制计数器
四、实验结果及数据处理
1.4位异步二进制加法计数器实验数据记录表
2. 画出你所设计的任意进制计数器的线路图,并说明设计思路。

设计思路:四进制为四个输出Q3Q2Q1Q0=0000,0001,0010,0011循环,第一个无效状态为0100 1,置位法设计四进制计数器:当检测到输入为0011时,先输出显示3,然后再将D
置于低电位,计数器输出Q3Q2Q1Q0复位。

2,复位法设计四进制计数器:当检测到第一个无效状态0100时,通过与非门的反馈计数器的Cr首先置于低电平使计数器复位为0000。

五、思考题
1. 由D触发器和JK触发器组成的计数器的区别?
答:D触发器是cp上升沿触发,JK触发器是下降沿触发。

2. 74LS161是同步还是异步,加法还是减法计数器?
答:同步。

加法计数器。

3. 设计十进制计数器时将如何去掉后6个计数状态的?
答:加一个与非门形成负反馈。

当计数到第一个无效状态Q3Q2Q1Q0==1010时,Q3和Q1全为1,Q1,Q3接与非门,输出作为复位信号,使所有触发器复位,从而去掉了后6个状态。

相关文档
最新文档