同步计数器设计实验报告:同步计数器的设计步骤

同步计数器的设计实验报告

  篇一:实验六 同步计数器的设计实验报告

  实验六 同步计数器的设计

  学号:

  姓名:

  一、实验目的和要求

  1.熟悉JK触发器的逻辑功能。

  2.掌握用JK触发器设计同步计数器。

  二、实验仪器及器件

  三、实验预习

  1、复习时序逻辑电路设计方法。

  ⑴ 逻辑抽象,得出电路的状态转换图或状态转换表

  ① 分析给定的逻辑问题,确定输入变量、输出变量以及电路的状态数。通常都是取原因(或条件)作为输入逻辑变量,取结果作输出逻辑变量。

  ② 定义输入、输出逻辑状态和每个电路状态的含意,并将电路状态顺序编号。

  ③ 按照题意列出电路的状态转换表或画出电路的状态转换图。

通过以上步骤将给定的逻辑问题抽象成时序逻辑函数。

  ⑵ 状态化简

  ① 等价状态:在相同的输入下有相同的输出,并且转换到同一次态的两个状态。

  ② 合并等价状态,使电路的状态数最少。

  ⑶ 状态分配

  ① 确定触发器的数目n。因为n个触发器共有2n种状态组合,所以为获得时序电路所需的M个状态,必须取2n1<M2n

  ② 给每个电路状态规定对应的触发器状态组合。

  ⑷ 选定触发器类型,求出电路的状态方程、驱动方程和输出方程

  ① 根据器件的供应情况与系统中触发器种类尽量少的原则谨慎选择使用的触发器类型。

  ② 根据状态转换图(或状态转换表)和选定的状态编码、触发器的类型,即可写出电路的状态方程、驱动方程和输出方程。

  ⑸ 根据得到的方程式画出逻辑图

  ⑹ 检查设计的电路能否自启动

  ① 电路开始工作时通过预置数将电路设置成有效状态的一种。

  ② 通过修改逻辑设计加以解决。

  ⑺ 设计步骤简图

  图3 设计步骤简图

  2、按实验内容设计逻辑电路画出逻辑图。

设计思路详情见第六部分。电路图如下:

  四、实验原理

  1.计数器的工作原理

  递增计数器----每来一个CP,触发器的组成状态按二进制代码规律增加。

递减计数器-----按二进制代码规律减少。

双向计数器-----可增可减,由控制端来决定。

  2.集成J-K触发器74LS73

  ⑴ 符号:

  图1 J-K触发器符号

  ⑵ 功能:

  表1 J-K触发器功能表

  ⑶ 状态转换图:

  图2 J-K触发器状态转换图

  ⑷ 特性方程:

  Qn1JQnKQn

  ⑸ 注意事项:

  ① 在J-K触发器中,凡是要求接“1”的,一定要接高电平(例如5V),否则会出现错误的翻转。

  ③ 触发器的两个输出负载不能过分悬殊,否则会出现误翻。

  ④ J-K触发器的清零输入端在工作时一定要接高电平或连接到实验箱的清零端子。

  3.时序电路的设计步骤 内容见实验预习。

  五、实验内容

  1.用J-K触发器和门电路设计一个特殊的12进制计数器,其十进制的状态转换图为:

  图4

  12进制计数器状态转换图

  六、实验设计及数据与处理

  ⑴ 设计

  在12进制同步计数器中,输出的状态只由前一周期的状态决定,而与外来输入无关,因此目标电路为Moore型。而数字电路只有0和1两种状态,因此目标电路要表达12种状态需要用4个变量Q1、Q2、Q3、Q4的16种组合中的12种。现定义十进制数01~12的对应二进制数为输出状态,可得目标电路的状态转换表如下:

  表2 12进制同步计数器状态状态转换表

  本实验选择J-K触发器,根据状态转换表以及J-K触发器特性方程:

  Qn1JQnKQn

  得到目标电路方程如下:

  nnn

  输出方程:Y0nQ0n、Y1nQ1n、Y2nQ2、Y3Q3

  驱动方程:Q0一个CP发生一次变化,因此J0K01。

  Q1每当Q0为1时,发生变化,因此n

  J1K1Q0。

  Q2在Q1Q0都为1以及12(即1100的时候)发生变化,因此 J2 = K2 =Q1nQ0n+Q3nQ2n

  Q3在Q2 Q1Q0都为1的时候,以及12的时候发生变化,因此 J3=K3=Q0nQ1nQ2n+Q3nQ2n。

  状态方程:Q0n1J0Q0nK0Q0n

  Q1n1J1Q1nK1Q1n

  篇二:计数器实验报告

  实验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十个数,为了扩大计数器范围,常用多个十进制计数器级联使用。

  同步计数器往往设有进位(或借位)输出端,故可选用其进位(或借位)输出信号驱动下一级计数器。

  图5-9-2是由CC40192利用进位输出CO控制高一位的CPU端构成的加数级联图。

  图5-9-2 CC40192级联电路

  3、实现任意进制计数

  (1) 用复位法获得任意进制计数器

  假定已有N进制计数器,而需要得到一个M进制计数器时,只要M<N,用复位法使计数器计数到M时置“0”,即获得M进制计数器。如图5-9-4所示为一个由CC40192十进制计数器接成的6进制计数器。

  (2) 利用预置功能获M进制计数器

  图5-9-5为用三个CC40192组成的421进制计数器。

  外加的由与非门构成的锁存器可以克服器件计数速度的离散性,保证在反馈置“0”信号作用下计数器可靠置“0”。

  图5-9-3 六进制计数器

  图5-9-4是一个特殊12进制的计数器电路方案。在数字钟里,对时位的计数序列是1、2、11,12、1、是12进制的,且无0数。如图所示,当计数到13时,通过与非门产生一个复位信号,使CC40192(2)〔时十位〕直接置成0000,而CC40192(1),即时的个位直接置成0001,从而实现了5-5-1-12计数。

  图5-9-4 特殊12进制计数器

  三、实验设备与器件

  1、 +5V直流电源

  2、 双踪示波器

  3、 连续脉冲源

  4、 单次脉冲源

  5、 逻辑电平开关

  6、 逻辑电平显示器

  7、 译码显示器

  8、 CC40192×3 CC4011(74LS00)

  CC4012(74LS20)

  四、实验内容

  1、测试CC40192同步十进制可逆计数器的逻辑功能

  计数脉冲由单次脉冲源提供,清除端CR、置数端LD、数据输入端D3 、D2、D1、D0 分别接逻辑开关,输出端 Q3、Q2、Q1、Q0接实验设备的一个译码显示输入相应插口A、B、C、D;

  CO和BO接逻辑电平显示插口。按表5-9-1逐项测试并判断该集成块的功能是否正常。

  (1) 清除

  令CR=1,其它输入为任意态,这时Q3Q2Q1Q0=0000,译码数字显示为0。清除功能完成后,置CR=0

  (2) 置数

  CR=0,CPU,CPD 任意,数据输入端输入任意一组二进制数,令LD= 0,观察计数译码显示输出,予置功能是否完成,此后置LD=1。

  (3) 加计数

  CR=0,LD=CPD =1,CPU 接单次脉冲源。清零后送入10个单次脉冲,观察译码数字显示是否按8421码十进制状态转换表进行;
输出状态变化是否发生在CPU 的上升沿。

  (4) 减计数

  CR=0,LD=CPU =1,CPD 接单次脉冲 源。参照3)进行实验。

  由内容可做实验得, 计数端接单次脉冲源,清除端CR、置数端LD、数据输入端

  D3D2D1D0分别接逻辑开关,Q3Q2Q1Q0接实验设备的一个译码显示输入相应端口ABCD,CO、BO接逻辑电平显示插口,按表5-9-1测试,其结果与表5-9-1相一致。

  2、图5-9-2所示,用两片CC40192组成两位十进制减法计数器,输入1Hz连续计数脉冲,进行由00—99递减计数,记录之。

  由内容可做实验得,按图5-9-2连接电缆,其中(1)片CPCR1=0 LD1=1 D接连续脉冲源,两片Q3CPU1=1,BO1接2片CPD2 CR2=0 LD2=1 CPU2=1 BO2为借位端。译码显示器,显示器数值由00开始递减。

  3、将两位十进制减法计数器改为两位十进制加法计数器,实现由99—00累加计数,记录之。

  由内容可做实验得,接图5-9-2电路,显示器由00开始递增

  4、设计一个数字钟移位60进 制计数器并进行实验。

  由内容可做实验得,将实验3中(2)片接法改为图5-9-3,即得到特殊12进制计数器 5、按图5-9-4进行实验,记录之。

  由内容可做实验得,按图5-9-4连接电路,得到特殊12进制计数器。

  六、实验心得

  在整个设计的过程中,关键在于时序电路的连接及电路的细节设计上,连接时要特别注意分清各个管脚,要分析原理以及可行的原因,是整个电路可稳定工作。从中我感觉到每个实验都是要反复实践,其过程可能相当繁琐,但总会有所收获的。

  Q0分别接

  篇三:计数器设计实验报告

  实 验 报 告

  实验:

  班级:

  姓名:

  学号:

  一、实验目的

  1.熟悉硬件描述语言软件的使用。

2.数序计数器的工作原理和逻辑功能。

3.掌握计数器的设计方法。

  二、实验原理

  计数器是数字系统中使用最多的时序逻辑电路,其应用范围非常广泛。计数器不仅能用于时钟脉冲技术,而且还用于定时、分频、产生节拍脉冲和脉冲序列以及进行数字运算等。

  三、实验内容

  1.设计一个具有仅为输出信号的十进制加法计数器,要求有异步清零功能及同步使能控制端。

  (1)代码library ieee;

  use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 is

  port (clk,rst,en,load:in std_logic;data:in std_logic_vector(3 downto 0);dout:out std_logic_vector(3 downto 0);cout:out std_logic);end cnt10;

  architecture behav of cnt10 isbegin

  process(clk,rst,en,load)

  variable q:std_logic_vector(3 downto 0);begin

  if rst='0' then q:=(others=>'0');elsif clk'event and clk='1' thenif en='1' then

  if (load='0') then q:=data; elseif q<9 then="" 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)编译完成

  (3)波形

  (4)网表

  RTL传输层

  映射

  2.设计一个具有进位输出信号的六进制加法计数器,要求具有异步清零功能及同步使能控制端。

  (1)代码

  library ieee;

  use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity CNT6 is

  port (clk,rst,en,load:in std_logic; data:in std_logic_vector(3 downto 0); dout:out std_logic_vector(3 downto 0); cout:out std_logic); end CNT6;

  architecture behav of CNT6 is begin

  process(clk,rst,en,load)

  variable q:std_logic_vector(3 downto 0); begin

  if rst='0' then q:=(others=>'0'); elsif clk'event and clk='1' then if en='1' then

  if (load='0') then q:=data; else if q<5 then="" q:="(others=" else="">'0'); end if; end if; end if; end if;

  if q="0101" then cout<='1'; else cout<='0'; end if; dout<=q; end process; end behav;

  (2)编译完成

  (3)波形

  (4)网表

  RTL传输层

  映射

  四、分析

  十进制加法计数器和六进制加法计数器的仿真波形与真值表一致。