实验四 计数器电路设计
北京科技大学数电实验四 Quartus II集成计数器及移位寄存器应用
![北京科技大学数电实验四 Quartus II集成计数器及移位寄存器应用](https://img.taocdn.com/s3/m/988db825c77da26925c5b0e0.png)
北京科技大学实验报告学院:高等工程师学院专业:自动化(卓越计划)班级:自E181姓名:杨威学号:41818074 实验日期:2020 年5月26日一、实验名称:集成计数器及其应用1、实验内容与要求(1)用74161和必要逻辑门设计一个带进位输出的10进制计数器,采用同步置数方法设计;(2)用两个74161和必要的逻辑门设计一个带进位输出的60进制秒计数器;2、实验相关知识与原理(1)74161是常用的同步集成计数器,4位2进制,同步预置,异步清零。
引脚图功能表其中X。
3、10进制计数器(1)实验设计1)确定输入/输出变量输入变量:时钟信号CLK、复位信号CLRN;输出变量:计数输出QD、QC、QB、QA,进位输出RCO,显示译码输出OA、OB、OC、OD、OE、OF、OG2)计数范围:0000-10013)预置数值:00004)置数控制端LDN:计数到1001时输出低电平5)进位输出RCO:计数到1001时输出高电平画出如下状态转换表:CP QDQCQBQA0 00001 00012 00103 00114 01005 01016 01107 01117 10009 100110 0000(2)原理图截图仿真波形如下功能验证表格CLRN QD QC QB QA RCO0 0 0 0 0 01 0 0 0 1 01 0 0 1 0 01 0 0 1 1 01 0 1 0 0 01 0 1 0 1 01 0 1 1 0 01 0 1 1 1 01 1 0 0 0 01 1 0 0 1 11 0 0 0 0 04、60进制秒计数器(1)实验设计1)确定输入/输出变量输入变量:时钟信号CLK、复位信号CLRN;输出变量:计数十位输出QD2、QC2、QB2、QA2和计数个位输出QD1、QC1、QB1、QA1,进位输出RCO2)计数范围:0000 0000-0101 10013)预置数值:0000 00004)置数控制端LDN1(个位):计数到0101 1001时输出低电平5)清零端CLRN2(十位):计数到0110时输出低电平6)ENT:个位计数到1001时输出高电平7)进位输出RCO:计数到1001时输出高电平画出如下状态转换表CP QD2QC2QB2QA2QD1QC1QB1QA1CPQD2QC2QB2QA2QD1QC1QB1QA1CPQD2QC2QB2QA2QD1QC1QB1QA10 0000 0000 20 0010 0000 40 0100 00001 0000 0001 21 0010 0001 41 0100 00012 0000 0010 22 0010 0010 42 0100 00103 0000 0011 23 0010 0011 43 0100 00114 0000 0100 24 0010 0100 44 0100 01005 0000 0101 25 0010 0101 45 0100 01016 0000 0110 26 0010 0110 46 0100 01107 0000 0111 27 0010 0111 47 0100 01118 0000 1000 28 0010 1000 48 0100 10009 0000 1001 29 0010 1001 49 0100 100110 0001 0000 30 0011 0000 50 0101 000011 0001 0001 31 0011 0001 51 0101 000112 0001 0010 32 0011 0010 52 0101 001013 0001 0011 33 0011 0011 53 0101 001114 0001 0100 34 0011 0100 54 0101 010015 0001 0101 35 0011 0101 55 0101 010116 0001 0110 36 0011 0110 56 0101 011017 0001 0111 37 0011 0111 57 0101 011118 0001 1000 38 0011 1000 58 0101 100019 0001 1001 39 0011 1001 59 0101 100160 0000 0000 (2)设计原理图截图(3)实验仿真仿真波形:仿真结果表:5、实验思考题:(1)总结任意模计数器的设计方法。
数电实验报告:实验4-计数器及应用161
![数电实验报告:实验4-计数器及应用161](https://img.taocdn.com/s3/m/0c76f9b04693daef5ff73d1a.png)
广东海洋大学学生实验报告书(学生用表)实验名称课程名称 课程号 学院(系)专业 班级 学生姓名 学号 实验地点 实验日期实验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进制计数器。
实验四 多位十进制计数器的设计与实现
![实验四 多位十进制计数器的设计与实现](https://img.taocdn.com/s3/m/e08969ddbb4cf7ec4afed0d1.png)
实验四多位十进制计数器的设计与实现(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;。
计数器实验报告
![计数器实验报告](https://img.taocdn.com/s3/m/1762ad516f1aff00bed51eff.png)
实验4计数器及其应用一、实验目的1、学习用集成触发器构成计数器的方法2、掌握中规模集成计数器的使用及功能测试方法二、实验原理计数器是一个用以实现计数功能的时序部件,它不仅可用来计脉冲数,还常用作数字系统的定时、分频和执行数字运算以及其它特定的逻辑功能。
计数器种类很多。
按构成计数器中的各触发器是否使用一个时钟脉冲源来分,有同步计数器和异步计数器。
根据计数制的不同,分为二进制计数器,十进制计数器和任意进制计数器。
根据计数的增减趋势,又分为加法、减法和可逆计数器。
还有可预置数和可编程序功能计数器等等。
目前,无论是TTL还是CMOS集成电路,都有品种较齐全的中规模集成计数器。
使用者只要借助于器件手册提供的功能表和工作波形图以及引出端的排列,就能正确地运用这些器件。
1、中规模十进制计数器CC40192是同步十进制可逆计数器,具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如图5-9-1所示。
图5-9-1 CC40192引脚排列及逻辑符号图中LD—置数端 CP U—加计数端 CP D—减计数端CO—非同步进位输出端BO—非同步借位输出端D0、D1、D2、D3—计数器输入端Q0、Q1、Q2、Q3—数据输出端 CR—清除端CC40192的功能如表5-9-1,说明如下:表5-9-1当清除端CR为高电平“1”时,计数器直接清零;CR置低电平则执行其它功能。
当CR 为低电平,置数端LD 也为低电平时,数据直接从置数端D 0、D 1、D 2、D 3 置入计数器。
当CR 为低电平,LD 为高电平时,执行计数功能。
执行加计数时,减计数端CP D 接高电平,计数脉冲由CP U 输入;在计数脉冲上升沿进行 8421 码十进制加法计数。
执行减计数时,加计数端CP U 接高电平,计数脉冲由减计数端CP D 输入,表5-9-2为8421码十进制加、减计数器的状态转换表。
表5-9-2加法计数减计数2、计数器的级联使用一个十进制计数器只能表示0~9十个数,为了扩大计数器范围,常用多个十进制计数器级联使用。
数字逻辑实验报告
![数字逻辑实验报告](https://img.taocdn.com/s3/m/47784524f4335a8102d276a20029bd64783e62c8.png)
数字逻辑实验报告数字逻辑实验报告引言:数字逻辑是计算机科学中的基础知识,它研究的是数字信号的处理与传输。
在现代科技发展的背景下,数字逻辑的应用越来越广泛,涉及到计算机硬件、通信、电子设备等众多领域。
本实验旨在通过设计和实现数字逻辑电路,加深对数字逻辑的理解,并掌握数字逻辑实验的基本方法和技巧。
实验一:逻辑门电路设计与实现逻辑门是数字电路的基本组成单元,由与门、或门、非门等构成。
在本实验中,我们设计了一个4位全加器电路。
通过逻辑门的组合,实现了对两个4位二进制数的加法运算。
实验过程中,我们了解到逻辑门的工作原理,掌握了逻辑门的真值表和逻辑方程的编写方法。
实验二:多路选择器的设计与实现多路选择器是一种常用的数字逻辑电路,它可以根据控制信号的不同,从多个输入信号中选择一个输出信号。
在本实验中,我们设计了一个4位2选1多路选择器电路。
通过对多路选择器的输入信号和控制信号的设置,实现了对不同输入信号的选择。
实验过程中,我们了解到多路选择器的工作原理,学会了多路选择器的真值表和逻辑方程的编写方法。
实验三:时序逻辑电路的设计与实现时序逻辑电路是一种能够存储和处理时序信息的数字逻辑电路。
在本实验中,我们设计了一个简单的时序逻辑电路——D触发器。
通过对D触发器的输入信号和时钟信号的设置,实现了对输入信号的存储和传输。
实验过程中,我们了解到D触发器的工作原理,掌握了D触发器的真值表和逻辑方程的编写方法。
实验四:计数器电路的设计与实现计数器是一种能够实现计数功能的数字逻辑电路。
在本实验中,我们设计了一个4位二进制计数器电路。
通过对计数器的时钟信号和复位信号的设置,实现了对计数器的控制。
实验过程中,我们了解到计数器的工作原理,学会了计数器的真值表和逻辑方程的编写方法。
结论:通过本次实验,我们深入了解了数字逻辑的基本原理和应用方法。
通过设计和实现逻辑门电路、多路选择器、时序逻辑电路和计数器电路,我们掌握了数字逻辑实验的基本技巧,并加深了对数字逻辑的理解。
计数器的实验观察与分析
![计数器的实验观察与分析](https://img.taocdn.com/s3/m/cfc90d4c854769eae009581b6bd97f192279bf0a.png)
计数器的实验观察与分析计数器是一种常见的电子设备,用于计算和显示一个或多个事件的数量。
本次实验的目的是观察和分析一个四位数的数字计数器的工作原理和性能。
实验步骤如下:1. 实验装置:一台四位数的数字计数器、一个交流电源和连接电线。
2. 连接电路:将交流电源的正极和数字计数器的Vcc引脚连接,将交流电源的负极和数字计数器的地引脚连接。
3. 调整电源电压:将交流电源的电压调整到合适的范围,例如5V。
4. 计数电路:将计数器的输入引脚与电源连接。
5. 数字显示:将计数器的输出引脚与七段数码管连接。
6. 实验观察:打开交流电源,观察数字计数器的工作情况。
记录显示在四位数码管上的数字变化。
根据观察数据,进行以下分析和讨论:1. 计数范围:观察实验当中计数器最高能计数到的数。
根据实验结果,推断该计数器的计数范围。
2. 计数方式:观察数字的计数变化模式,判断计数器采用的计数方式是递增还是递减。
通过改变输入引脚的电压,可以验证计数器的计数方式。
3. 计数精度:观察实验过程中数字计数器是否存在计数误差。
将计数器与其他测量设备(如计时器)进行对比,以确定计数器的计数精度。
4. 显示方式:观察数字计数器的显示方式。
是否采用了七段数码管进行数字显示,或者是采用其他显示器件。
5. 重置功能:观察数字计数器是否具备重置功能。
通过改变输入引脚的电压,验证计数器的重置功能。
通过上述的实验观察和分析,我们可以了解到数字计数器的基本工作原理、计数范围、计数方式、计数精度、显示方式以及是否具备重置功能等。
这些了解对于进一步应用数字计数器有很大帮助,例如在电子测量、物理实验、工业自动化等领域都有广泛应用。
6. 计数范围:根据实验结果观察到的最高数字,可以推断出该计数器的计数范围。
比如,如果实验结果显示的最高数字是9,则可以推断该计数器的范围为0-9。
如果最高数字是F(十六进制),则范围为0-F。
7. 计数方式:观察数字的计数变化模式可以推断出计数器采用的计数方式是递增还是递减。
数电实验报告:实验4-计数器及应用161
![数电实验报告:实验4-计数器及应用161](https://img.taocdn.com/s3/m/0086db7f24c52cc58bd63186bceb19e8b9f6ec43.png)
广东海洋大学学生实验报告书(学生用表)实验名称实验名称课程名称课程名称课程号课程号学院学院((系) 专业专业班级班级学生姓名学生姓名学号学号实验地点实验地点实验日期实验日期实验4 计数器及其应用一、实验目的1、熟悉中规模集成计数器的逻辑功能及使用方法、熟悉中规模集成计数器的逻辑功能及使用方法2、掌握用74LS161构成计数器的方法构成计数器的方法3、熟悉中规模集成计数器应用、熟悉中规模集成计数器应用二、实验原理计数器是典型的时序逻辑电路,它是用来累计和记忆输入脉冲的个数.计数是数字系统中很重要的基本操作,集成计数器是最广泛应用的逻辑部件之一。
计数器种类较多,按构成计数器中的多触发器是否使用一个时钟脉冲源来分,有同步计数器和异步计数器;步计数器和异步计数器;根据计数制的不同,根据计数制的不同,根据计数制的不同,可分为二进制计数器、可分为二进制计数器、可分为二进制计数器、十进制计数十进制计数器和任意进制计数器;根据计数的增减趋势,又分为加法、减法和可逆计数器。
还有可预置数和可编程序功能计数器等。
本实验主要研究中规模十进制计数器74LS161的功能及应用。
的功能及应用。
1、中规模集成计数器74LS161 是四位二进制可预置同步计数器,由于它采用4 个主从JK 触发器作为记忆单元,故又称为四位二进制同步计数器,其集成芯片管脚如图元,故又称为四位二进制同步计数器,其集成芯片管脚如图11所示:所示:管脚符号说明:电源正端Vcc ,接+5V ;异步置零(复位)端Rd ;时钟脉冲CP ;预置数控制端数控制端 A 、B 、C 、D ;数据输出端;数据输出端 QA 、QB 、QC 、QD ;进位输出端;进位输出端 RCO :使能端:使能端EP EP EP,,ET ET;预置端;预置端;预置端LD ;图1 74LS161 管脚图管脚图GDOU-B-11-112该计数器由于内部采用了快速进位电路,所以具有较高的计数速度。
数电 实验四 数据选择器及其应用 实验报告
![数电 实验四 数据选择器及其应用 实验报告](https://img.taocdn.com/s3/m/746a40dd112de2bd960590c69ec3d5bbfd0adac1.png)
数电实验四数据选择器及其应用实验报告一、实验目的1. 了解数据选择器的原理和设计方法;2. 学会使用74LS138和74LS151等多位数据选择器;3. 掌握数据选择器在逻辑电路中的应用。
二、实验器材和器件1. 万用表2. 示波器3. 计算机、PSpice、Multisim4. 实验电路板、电路图5. TTL集成电路:74LS138、74LS151三、实验原理数据选择器(Data Selector)是用于在多个数据中选择一个或者少数几个数据的组合逻辑电路,也叫做多路选择器(Multiplexer)。
数据选择器可用于控制信号的选择,实现对信号进行分时复用、多路数据选通等功能。
常见的数据选择器有8选1、16选1等。
常用的数据选择器有两种类型:1.位选型数据选择器2.数据选型数据选择器1. 位选型数据选择器位选型数据选择器是指选中或分配单元的控制时使用二进制码,用来控制选通信号的输入。
2. 数据选型数据选择器数据选型数据选择器是由一个或多个数据信号为输入,它们与二进制控制信号一起给出n个数据信号的任意线性组合输出,通过对选择信号的控制,能够把其中的一路信号送到输出端。
例如,74LS151是一种8选1数据选择器(DMUX),它有8个输入端和1个输出端,还有3个控制端。
其中,控制端包括1个使能端(ENABLE)和2个选择端(A、B)。
输入端用来输入8个数据信号,而输出端则输出选择信号。
控制端用来输入控制信号,用来选择哪个输入端的数据信号送到输出端。
对于74LS151,控制信号的值决定了从哪个输入信号读取数据。
A B EN Y0 0 1 I00 1 1 I11 0 1 I21 1 1 I30 0 0 Z对于74LS138,3个控制信号的值决定了哪个输入信号将被传输到输出端口。
当输出选通(ENABLE=1)时,选通输出的某一输入的高电平(或低电平)基本上与输入选通指定的控制端台,关心。
实验4.2:8位数字式LED显示器应用通过构建逻辑电路,使用74LS151实现8位数码管的控制。
vhdl 计数器的使用
![vhdl 计数器的使用](https://img.taocdn.com/s3/m/752e2e03bed5b9f3f90f1c32.png)
实验四计数器的使用一、实验目的熟悉步长可变的加减计数器的工作原理、设计过程和实现方法。
二、实验内容与要求学习用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;九、实验总结。
计数器的设计实验报告
![计数器的设计实验报告](https://img.taocdn.com/s3/m/86f65383a48da0116c175f0e7cd184254a351b62.png)
计数器的设计实验报告一、实验目的本次实验的目的是设计并实现一个简单的计数器,通过对计数器的设计和调试,深入理解数字电路的基本原理和逻辑设计方法,掌握计数器的工作原理、功能和应用,提高自己的电路设计和调试能力。
二、实验原理计数器是一种能够对输入脉冲进行计数,并在达到设定计数值时产生输出信号的数字电路。
计数器按照计数方式可以分为加法计数器、减法计数器和可逆计数器;按照计数进制可以分为二进制计数器、十进制计数器和任意进制计数器。
本次实验设计的是一个简单的十进制加法计数器,采用同步时序逻辑电路设计方法。
计数器由触发器、门电路等组成,通过对触发器的时钟信号和输入信号的控制,实现计数功能。
三、实验设备与器材1、数字电路实验箱2、集成电路芯片:74LS160(十进制同步加法计数器)、74LS00(二输入与非门)、74LS04(六反相器)3、示波器4、直流电源5、导线若干四、实验内容与步骤1、设计电路根据实验要求,选择合适的计数器芯片 74LS160,并确定其引脚功能。
设计计数器的清零、置数和计数控制电路,使用与非门和反相器实现。
画出完整的电路原理图。
2、连接电路在数字电路实验箱上,按照电路原理图连接芯片和导线。
仔细检查电路连接是否正确,确保无短路和断路现象。
3、调试电路接通直流电源,观察计数器的初始状态。
输入计数脉冲,用示波器观察计数器的输出波形,检查计数是否正确。
若计数不正确,逐步排查故障,如检查芯片引脚连接、电源电压等,直至计数器正常工作。
4、功能测试测试计数器的清零功能,观察计数器是否能在清零信号作用下回到初始状态。
测试计数器的置数功能,设置不同的预置数,观察计数器是否能按照预置数开始计数。
五、实验结果与分析1、实验结果成功实现了十进制加法计数器的设计,计数器能够在输入脉冲的作用下进行正确计数。
清零和置数功能正常,能够满足实验要求。
2、结果分析通过对计数器输出波形的观察和分析,验证了计数器的工作原理和逻辑功能。
数电实验报告:计数器及其应用-计数器应用实验报告
![数电实验报告:计数器及其应用-计数器应用实验报告](https://img.taocdn.com/s3/m/b536db6eaf1ffc4ffe47ac11.png)
数字电子技术实验报告实验四:计数器及其应用一、实验目的: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十个数字。
实验四_计数译码显示
![实验四_计数译码显示](https://img.taocdn.com/s3/m/29a7a1de6294dd88d0d26bac.png)
实验四 计数、译码、显示综合实验一、实验目的1、熟悉计数、译码、显示电路的工作原理及电路结构;2、了解计数器、译码器和显示器的逻辑功能;3、运用计数器、译码器和显示集成组件进行计数显示。
二、实验原理该实验电路由计数、译码、显示三部分构成。
计数单元是集成电路74LS192,它的引脚排列如图1。
74LS192是由四组触发器按8421BCD 码形式构成的十进制计数器,它具有双时钟输入,可进行加法和减法计数。
此外,还具有异步清零、异步置数和状态保持的功能。
它的功能真值表如表1所示。
译码电路采用集成电路74LS248,它是七段LED 字符显示译码器,其引脚排列如图2所示,输入的BCD 码由A 0、A 1、A 2、A 3输入,然后按字形规则译码后从Y 输出,输出端Y a 、Y b …..Y g 对CR VCC D 0D 1D 2D 3Q 0Q 2Q 1Q 3GNDCP D CP U BO CO LD图1. 74LS192引脚图表1. 74LS192功能表应于图3所示数码字形的a 、b 、……g 段。
本实验选用的显示器为共阴极型七段LED 显示器,七段中的每一段(取名为a 、b 、c 、d 、e 、f 、g )均是一个发光二极管,当显示某一数字,例如显示“4”时,输入端f 、g 、b 、c 必须是高电平使相应字段发光。
74LS248的输入BCD 码与输出译码之间的对应关系如表2所示。
74LS192、74LS248及数码管相应端口的连接关系如图4所示。
在计数状态下,74LS192的输出端Q 3、Q 2、Q 1、Q 0有相应的计数输出传送到译码器74LS248的输入端,经74LS248译码后的输出传送到数码管的对应输入,即可显示输入的计数脉冲数。
图2. 74LS248引脚图图3. 数码管表2. 74LS248的输入BCD 码与输出译码之间的对应关系图4. 74LS192、74LS248及数码管相应端口的连接关系三、实验内容及实验报告要求1、首先根据图4在实验板上将74LS192、74LS248及数码管的相应端口连接好。
计数器显示电路实训报告
![计数器显示电路实训报告](https://img.taocdn.com/s3/m/f4deac57bb1aa8114431b90d6c85ec3a87c28b36.png)
一、实验目的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)观察显示器显示的数字是否与计数器的计数值一致。
实验4 双向计数器设计
![实验4 双向计数器设计](https://img.taocdn.com/s3/m/a315ac2fe2bd960590c677f9.png)
实验四 双向计数器设计一、实验目的学习时序电路的设计、仿真和硬件测试,进一步熟悉VHDL 设计技术; 掌握双向异步清零计数器(加/减1器)的设计方法。
二、设计描述及方法1. 设计电路的接口描述。
图5-1双向含异步清0和同步时钟使能的4位加法器管脚图如图5-1,引脚说明如下: • clk 是计数端口;• reset 是异步清零信号,高电平有效;• enable 是使能端,当它为高电平时,才能将加1器的输出值加载到锁存器的数据端 • dir 是加减操作的控制选择,高电平加1器;低电平减1器 • yout[3..0]是四位数据输出端,通过锁定数码管用以显示输出数据; •cout 是计数溢出端。
2. 真值表。
如表5-1所示:表5-1 双向含异步清0和同步时钟使能的4位加法器真值表3. 电路设计基本方法To 7-segment decoder To a LED这是一个单时钟十六进制计数器;“双向”指的是加1还是减1操作,可以用语句if dir=’1’then …else实现;“异步清零”指的是只要reset为高电平,立即清零,而不需要等待时钟脉冲(计数脉冲)到来;“同步时钟使能”是指当enable有效时还不能立即把内部输出值加载到锁存器的数据端,而是需要等到下一个时钟,在时钟信号的控制下再相应。
三、设计步骤完成计数器的VHDL描述,并对其进行波形仿真,确定结果正确。
四、硬件验证(选做)1.选择实验电路结构5对该设计进行硬件验证。
在该实验电路结构中,将键8(PIO7)对应为reset控制信号,键7(PIO6)对应为enable控制信号,键6(PIO5)对应为dir控制信号,yout是计数输出接数码1(PIO19-PIO16,低位靠右),计数溢出cout接发光管D8(PIO15);时钟clk接clock0,通过短路帽选择4Hz信号。
2.查阅系统引脚对照表,完成引脚锁定。
3.重新编译成功后,完成器件的下载配置。
数电实验四——精选推荐
![数电实验四——精选推荐](https://img.taocdn.com/s3/m/e49d4f3a182e453610661ed9ad51f01dc2815783.png)
实验四:时序逻辑电路(集成寄存器和计数器)一、实验目的:1.熟悉中规模集成计数器的逻辑功能和使用方法;掌握用集成计数器组成任意模数为M的计数器。
2.加深理解移位寄存器的工作原理及逻辑功能描述;熟悉中规模集成移位寄存器的逻辑功能和使用方法;掌握用移位寄存器组成环形计数器的基本原理和设计方法。
二、知识点提示和实验原理:㈠计数器:计数器的应用十分广泛,不仅可用来计数,也可用于分频、定时和数字运算。
计数器种类繁多,根据计数体制不同,计数器可分为二进制计数器和非二进制计数器两大类。
在非二进制计数器中,最常用的是十进制计数器,其他的称为任意进制计数器。
根据计数器的增减趋势的不同,计数器可分为加法计数器和减法计数器。
根据计数脉冲引入方式不同,计数又可分为同步计数器和异步计数器。
在实际工程应用中,一般很少使用小规模的触发器组成计数器,而是直接选用中规模集成计数器。
用集成计数器实现任意M进制计数器:一般情况任意M进制计数器的结构分为3类,第一种是由集成二进制计数器构成,第二种为移位寄存器构成的移位寄存型计数器,第三种为集成触发器构成的简单专用计数器。
当M较小时通过对集成计数器的改造即可以实现,当M较大时,可通过多片计数器级联实现。
实现方法:(1)当所需计数器M值小于集成计数器本身二进制计数最大值时,用置数(清零)法构成任意进制计数器;⑵当所需计数器M值大于集成计数器本身二进制计数最大值时,可采用级联法构成任意进制计数器。
常用的中规模集成器件:4位二进制计数器74HC161,十进制计数器74HC160,加减计数器74HC191、74HC193,异步计数器74LS290。
所有芯片的电路、功能表见教材。
㈡寄存器:寄存器用来寄存二进制信息,将一些待运算的数据、代码或运算的中间结果暂时寄存起来。
按功能划分,寄存器可分为数码寄存器和移位寄存器两大类。
数码寄存器用来存放数码,一般具有接收数码、保持并清除原有数码等功能,电路结构和工作原理郡比较简单。
金工实习电子实验报告
![金工实习电子实验报告](https://img.taocdn.com/s3/m/c87cfa620a4c2e3f5727a5e9856a561252d321e6.png)
金工实习电子实验报告一、实验目的1. 加深对金工实习过程中所涉及到的电子元件和电路的理解。
2. 培养动手能力,提高实际操作技能。
3. 学习使用常用的电子测量仪器,如万用表、示波器等。
4. 加强理论与实践相结合,提高工程实践能力。
二、实验内容1. 实验一:晶体管放大器实验(1)搭建NPN型晶体管放大器电路,观察放大器的工作状态。
(2)改变输入信号的幅度,观察输出信号的变化,分析晶体管的放大特性。
(3)测量晶体管的静态工作点,确保其稳定工作。
2. 实验二:整流电路实验(1)搭建全波整流电路,观察整流后的输出波形。
(2)改变输入信号的频率,观察输出波形的变化。
(3)测量整流电路的输出电压和电流,分析电路的性能。
3. 实验三:振荡电路实验(1)搭建RC振荡电路,观察振荡波形。
(2)改变电路元件的参数,观察振荡频率的变化。
(3)分析振荡电路的稳定性和频率特性。
4. 实验四:计数器电路实验(1)搭建二进制计数器电路,观察计数功能。
(2)改变输入信号的频率,观察计数速度的变化。
(3)测量计数器的输出波形,分析电路的性能。
三、实验步骤1. 实验一:晶体管放大器实验(1)根据电路图,将晶体管、电阻等元件连接在实验板上。
(2)使用万用表测量晶体管的静态工作点,确保其处于放大状态。
(3)输入不同幅度的信号,观察输出信号的变化,记录数据。
(4)分析晶体管的放大特性,绘制放大曲线。
2. 实验二:整流电路实验(1)根据电路图,将二极管、电阻等元件连接在实验板上。
(2)输入不同频率的信号,观察输出波形的变化,记录数据。
(3)测量整流电路的输出电压和电流,分析电路的性能。
4. 实验四:计数器电路实验(1)根据电路图,将触发器、电阻等元件连接在实验板上。
(2)输入不同频率的信号,观察计数速度的变化,记录数据。
(3)测量计数器的输出波形,分析电路的性能。
四、实验结果与分析1. 实验一:晶体管放大器实验(1)晶体管的静态工作点测量准确,放大特性良好。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四、计数器电路的设计
一、实验目的
1、掌握计数器电路的设计方法;
2、进一步掌握电路的设计、编译、仿真和下载测试的方法。
二、实验要求
1、基本要求
1)设计一个具有异步复位和同步使能的4位二进制加法计数器
2)设计一个具有异步复位和同步使能、并行置数的加减可控的8位二进制计数器
3)设计一个具有异步复位和同步使能的BCD码加法计数电路,
2、扩展要求
1)设计一个具有异步复位和同步使能的六十进制加法计数电路
2)设计一个具有异步复位和同步使能的二十四进制加法计数电路
三、实验原理
四、实验内容及步骤
1、建立一个工程项目,路径如:D:\A0512301\forth,项目名和顶层实体名为count。
2、设计一个具有异步复位和同步使能的4位二进制计数器,并进行编译仿真与下载测试;
3、设计一个具有异步复位和同步使能、并行置数的加减可控的8位二进制计数器,并进行编译仿真与下载测试;
4、设计一个具有异步复位和同步使能的十进制加法计数电路,并进行编译仿真与下载测
试;
五、参考程序
1、四位加法计数器
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
USE IEEE.STD_LOGIC_UNSIGNED.ALL ;
ENTITY CNT4 IS
PORT ( CLK : IN STD_LOGIC ;
Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;
END ;
ARCHITECTURE bhv OF CNT4 IS
SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS (CLK)
BEGIN
IF CLK'EVENT AND CLK = '1' THEN Q1 <= Q1 + 1 ;
END IF;
END PROCESS ;
Q <= Q1 ;
END bhv;
2、异步复位,同步使能十进制加法计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT16 IS
PORT (CLK,RST,EN : IN STD_LOGIC;
CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT : OUT STD_LOGIC );
END CNT16;
ARCHITECTURE behav OF CNT16 IS
BEGIN
PROCESS(CLK, RST, EN)
VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF RST = '1' THEN CQI := (OTHERS =>'0') ; --计数器异步复位 ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿 IF EN = '1' THEN --检测是否允许计数(同步使能) CQI := CQI + 1;
END IF;
END IF;
IF CQI = 15 THEN COUT <= '1'; --计数大于9,输出进位信号 ELSE COUT <= '0';
END IF;
CQ <= CQI; --将计数值向端口输出
END PROCESS;
END behav;
3、8位二进制加减计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY updowncnt8 IS
PORT(clr,clk,ena,load,updown:IN STD_LOGIC;
d:IN INTEGER RANGE 0 TO 255;
cout:OUT STD_LOGIC;
q:BUFFER INTEGER RANGE 0 TO 255);
END updowncnt8;
ARCHITECTURE one OF updowncnt8 IS
BEGIN
PROCESS(clk,ena,clr,d,load,updown)
BEGIN
IF CLR='0' THEN q <= 0;
ELSIF clk'EVENT AND clk='1' THEN
IF load = '1' THEN q <= d;
ELSIF ena='1' THEN
IF updown = '0' THEN q <= q+1;
IF q = 255 THEN COUT <= '1';
END IF;
ELSE q <= q-1;
IF q = 0 THEN COUT <= '1';
END IF;
END IF;
END IF;
END IF;
END PROCESS;
END one;
六、实验报告
根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。
七、选做实验。