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

计数器的设计实验报告篇一:计数器实验报告实验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分频电路

●实验名称:利用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 计数器及其应用一、实验目的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设计步长可变的加减计数器电路,完成编译、综合、适配、仿真和实验箱上的硬件测试,通过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、结果分析通过对计数器输出波形的观察和分析,验证了计数器的工作原理和逻辑功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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个状态。