P2 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序电路基础
时序逻辑电路也可以分类为电位型时序电路和钟控型时序电路。
钟控型时序电路的工作方式又可以分为两类:同步时序电路和异步时序电路。
同步时序电路的所有触发器的翻转都受同一个时钟的控制。或者说所有的触发器都是同步工作的。
异步时序电路中的触发器也有时钟的控制,但是每个触发器的时钟不是来自同一个时钟源。
P3 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序电路基础
同步时序电路的一般框图
同步时序电路用三组方程式来描述。
激励方程,Y=f (输入信号,现在状态 )
状态方程,S=h (输入信号,现在状态 )
输出方程,Z=g (输入信号,现在状态 )
P4 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序电路基础
以上方程式所描述的同步时序电路的输出是输入和现在状态的函数,这类电路又称为 米里型 ( Mealy mode)时序电路。
另一类同步时序电路,它的输出只和状态有关,和电路的输入无关。这类同步时序电路称为 摩尔型 ( Moore
mode)时序电路。它的输出方程可表示为:
输出方程,Z = g (现在状态 )
P5 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序电路基础
状态表和状态转移表
将状态方程和输出方程结合在一起用矩阵的形式加以表示,就构成同步时序电路的 状态表 。
状态表中的状态一般都用字母表示,
用来描述时序电路的性能。
如果状态用二进制代码表示,这种用二进制代码表示状态的状态表就称为状态转移表 。状态转移表用来分析和设计时序电路。
P6 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序电路基础
自动投币饮料机的状态表和状态转移表(摩尔电路)
其中,用 S表示状态,Y表示输出状态表 状态转移表
P7 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序电路基础
而如果饮料机可以投入两种硬币,5
角和 1元。
则在 1.5元状态下,投入 5角硬币,则得到饮料,不用找钱。如果投入 1元硬币,则不仅得到饮料,还要找钱。
也就是输出不仅和状态有关,还和当前的输入有关。
这样的时序机就是米里型电路。
P8 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路
寄存器
寄存器由多位触发器构成,用来寄存多位二进制信息。各个触发器由统一的时钟控制。
P9 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路
表 7.2是 8位 D型寄存器 74LS374的功能表 。
P10 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路
移位寄存器
移位寄存器具有寄存和移位两重功能:
除了寄存数据外,还可以在时钟的控制下,将数据向左或者向右进行移位。
Q
D
Q
Q3 D
Q
D
Q
D
移位脉冲
CP
串行输出Q1Q2 Q0
串行输入
R
P11 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路
移位寄存器就可以有 4种工作方式:
串入串出
串入并出
并入并出
并入串出
P12 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路
计数器
计数器是通过电路的状态来反映输入脉冲数目的电路。只要电路的状态和输入脉冲的数目有固定的对应关系,
这样的电路就可以作为计数器来使用。
一个计数器可以计数的值,称为计数器的模值。
计数器的分类
同步计数器和异步计数器
加法计数器、减法计数器和可逆计数器
二进制计数器、十进制计数器、任意进制计数器等。
P13 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析
同步时序电路的分析可按以下步骤进行:
根据给定的时序电路,写出每个触发器的输入激励方程;
根据电路,写出时序电路的输出方程;
由激励方程和触发器的特征方程,写出触发器的下一状态方程。
由触发器的状态方程和时序电路的输出方程,作出电路的状态转移表和状态转移图,并进一步分析电路的逻辑功能。
P14 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析
同步计数器的分析
例 7.1 分析图 7.2所示的同步计数器。
写出电路的输出方程和触发器的激励方程:
Z= n3n2n1 QQQ
3J =
n
2
n
1 QQ 3
K = n
2
n
1 QQ
2J =
n
1Q 2
K = n
1Q
1J =1 1K =1
P15 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析
写出触发器的状态方程
1n
3Q
=
n
2
n
1 QQ
n
3Q +
n
2
n
1 QQ
n
3Q
=
n
2
n
1 QQ
n
3Q +
n
1Q
n
3Q +
n
2Q
n
3Q
1n
2Q
=
n
1Q
n
2Q +
n
1Q
n
2Q
1n
1Q
=1 ·
n
1Q +1 ·
n
1Q =
n
1Q
由状态方程和输出方程,作状态转移表和状态转移图。
n
3
Q
n
2
Q
n
1
Q
1n
3
Q
1n
2
Q
1n
1
Q
Z
0 0 0 0 0 1 0
0 0 1 0 1 0 0
0 1 0 0 1 1 0
0 1 1 1 0 0 0
1 0 0 1 0 1 0
1 0 1 1 1 0 0
1 1 0 1 1 1 0
1 1 1 0 0 0 1
P16 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析
状态转移图
分析逻辑功能。根据状态转移图,
这个计数器是模值等于 8的二进制加法计数器,计数状态是从 000~111;
计数满 8个数时,输出 Z等于 1,相当于逢 8进 1的进位输出。
P17 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析
例 7.2 分析图 7.4所示的同步计数器。
P18 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析
(3)作状态转移表和状态转移图。
n
3
Q
n
2
Q
n
1
Q
1n
3
Q
1n
2
Q
1n
1
Q
0 0 0 1 1 1
0 0 1 0 1 0
0 1 0 1 0 1
0 1 1 0 0 1
1 0 0 1 1 1
1 0 1 1 1 0
1 1 0 0 1 1
1 1 1 0 1 1
(4)功能分析,是模值等于 5的五进制计数器。 可以自启动。
P19 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析
移位寄存器及其应用电路的分析
环形计数器
P20 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析状态图:
P21 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析
环形计数器的一般特点是:
K位移位寄存器构成的环形计数器可以计 K个数,即计数模值是 K。
反馈连接的方式是 将第 K个触发器的输出连接到第一个触发器的 D输入。
每个有效的计数状态中只有一位触发器是 1 。
可以不用译码电路,直接从各个触发器的输出得到计数译码的结果。
按以上方式连接后,不能自启动。
P22 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析
将反馈函数修改为:
1D =
n
2Q
n
1Q
就可以解决自启动问题
可以自启动的三位环形计数器状态图:
P23 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析
扭环计数器扭环计数器是将移位寄存器最后一级的 Q 端接到第一级 D 触发器输入所构成的电路。
P24 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析状态图:
P25 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析
扭环计数器有以下的特点:
K个触发器构成的扭环计数器有 2K个状态构成循环,所以可以计 2K个数。
反馈是从第 K个触发器的反相输出端连接到第一个 D输入端。
2K个状态中一定包含全 0的状态和全 1
的状态。
译码电路比较简单:每个状态的译码输出函数都是两变量函数。
按以上连接的计数器,不能自启动。
P26 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析
序列信号发生器
例 7.3 分析图 7.12所示的序列信号发生器
反馈信号的逻辑表达式:
1D =
n
1Q?
n
3Q
P27 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用同步时序电路分析
分析和说明。状态转移表显示了电路有 7个状态构成循环。这个序列信号发生器的特性是:
序列的长度等于 7。序列码是
1110100 。不能自启动。
P28 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
计数器、序列信号发生器等常用时序电路有两个共同的特征:
电路的状态数是可以从设计要求直接确定的:由计数器的模值、序列信号的长度就可以确定状态数。
电路状态的二进制代码也是可以从设计要求直接确定的。
由于这些特征,使得常用时序电路的设计步骤就比较简单。
P29 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
基本的设计步骤
根据设计要求,作出状态转移表。
根据状态转移表,以现在状态为,输入,,下一状态为,输出,的卡诺图,
从卡诺图求出电路的状态方程。
由状态方程直接求出触发器的输入激励方程,也就是完成了触发器输入逻辑的设计。
作出设计结果的状态转移图。检查是否能自启动,若不能自启动,还要重新修改某个触发器的激励方程。
P30 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
同步计数器的设计为了使得写出的状态方程和 JK 触发器的特征方程在形式上一致。要在每个
1n
i
Q
卡诺图都用粗黑线分为“
n
i
Q =0,和“
n
i
Q =1,两个子图。在卡诺图中合并相邻项时,必须只在子图中进行,不许超越黑线。这样合并和写出的状态方程,将和 JK 触发器的特征方程的形式相一致,进而就可以直接写出触发器输入的激励方程。
P31 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
例 7.4 用 JK触发器,设计一个 8421码十进制计数器。
确定触发器的数目。因为计数模值等于 10,
所以需要 4个触发器。
作出状态转移表。
表 7,1 1 8 4 2 1 码十进制计数器状态转移表
n
3
Q
n
2
Q
n
1
Q
n
0
Q
1n
3
Q
1n
2
Q
1n
1
Q
1n
0
Q
0 0 0 0 0 0 0 1
0 0 0 1 0 0 1 0
0 0 1 0 0 0 1 1
0 0 1 1 0 1 0 0
0 1 0 0 0 1 0 1
0 1 0 1 0 1 1 0
0 1 1 0 0 1 1 1
0 1 1 1 1 0 0 0
1 0 0 0 1 0 0 1
1 0 0 1 0 0 0 0
P32 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
作出下一状态的卡诺图,写出每个触发器的状态方程。
P33 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
检查不在计数循环中的状态的转移关系。 6个不使用状态的下一状态是:
1010→ 1011 1011→ 0100 1100→ 1101
1101→ 0100 1110→ 1111 1111→ 0000
作出状态转移图:
可以自启动。
P34 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
作逻辑图
P35 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
例 7.5 用 JK触发器设计一个 5进制计数器,要求状态转移关系为:
001→ 010→ 101→ 110→ 011
表 7,1 2 例 7,5 的状态转移表
n
2
Q
n
1
Q
n
0
Q
1n
2
Q
1n
1
Q
1n
0
Q
0 0 1 0 1 0
0 1 0 1 0 1
1 0 1 1 1 0
1 1 0 0 1 1
0 1 1 0 0 1
P36 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
作出各触发器下一状态的卡诺图
P37 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
检查多余状态的转移关系,还有 3个不在计数循环的状态:
000→ 111 100→ 011 111→ 111
得到状态转移图如图:
不能自启动。
P38 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
为了解决不能自启动的问题
1n
2Q
的状态方程修改为,
1n
2Q
=
n
0Q
n
2Q +
n
1Q
n
2Q
2J =
n
0Q 2
K = n
1Q
修改后的状态转移图:
P39 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
最后的逻辑图
P40 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
序列信号发生器
序列信号发生器的设计步骤,
首先根据给定序列信号的长度 M,决定所需要的最小触发器的数目 k:
2k-1<M≤2 k
验证并确定实际需要的触发器数目 k。方法是对给定的序列信号每 k位分为一组,选定一组后,向前移一位,按 k位再取一组,总共取 M组。如果这 M组数字,都不重复,就可以使用已经选择的 k;否则,就使 k=k+1。
再重复以上的过程。
作状态转移表,求反馈函数,检查自启动。
P41 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
例 7.6 设计一个序列信号发生器,
产生序列 1010010100… 。
序列长度是 5( 10100),最小触发器数目是 3。
对序列信号每 3位一组取信号,每取一组移一位,共取 5组,101,010、
100,001,010。出现了两次 010。说明 k=3不能满足设计要求。再取 k=4。
重新按 4位一组取信号,也取 5组:
1010,0100,1001,0010,0101。没有重复,确定 k=4。
P42 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
作 D0的卡诺图:
0D =
n
3Q
n
0Q
P43 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
检查自启动。
电路可以自启动。
逻辑图为:
P44 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
M序列发生器
在测试通信设备或通信系统时,经常需要一种称为,伪随机信号,的序列信号。,伪随机信号,就是用来模拟实际的数字信号。因此,它应该有各种不同的 0,1组合,而且 0 和 1的总数,应该接近相等。
M序列发生器就是用来产生这种伪随机信号的发生器,有时也称为最长线性序列发生器。因为这种发生器所产生的序列的长度都是 2k-1,其中的 k
是移位寄存器的位数。
P45 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
M序列发生器也是由移位寄存器和反馈电路来构成,但是反馈电路都是产生异或函数的异或电路,具体的连接方式可以查表。
P46 北京邮电大学 huimin@bupt.edu.cn2009-8-21
常用时序电路的设计
如果用 JK触发器构成移位寄存器来产生 M序列,有可能不使用异或电路,
直接通过适当的连接来产生 M序列。
如果反馈电路的逻辑表达式刚好是 Q1
的输出和另一个触发器的输出的异或,
就可以直接连接。
JK触发器实现长度 M=15的序列发生器
P47 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
中规模时序集成电路主要包括中规模计数器和中规模移位寄存器。
对于中规模时序集成电路,首先要熟悉它们的功能,掌握器件的应用,
这种应用往往需要结合适当的逻辑设计才能完成。
P48 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
中规模异步计数器
为了达到多功能的目的,中规模异步计数器往往采用组合式的结构,即由两个独立的计数器来构成整个的计数器芯片。
例如
74LS90 由模 2和模 5计数器组成;
74LS92 由模 2和模 6计数器组成;
74LS93 由模 2和模 8计数器组成。
P49 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
74LS90计数器的逻辑图
由一个模 2计数器( QA)和一个模 5计数器 (QB、
QC,QD)构成,两个计数器分别有自己的时钟输入端,CKA和 CKB。
从 CKA输入外部时钟,QA接到 CKB,实现 8421码十进制计数;从 CKB输入外部时钟,QD接到 CKA,
实现 5421码十进制计数。
有两个置 0输入端,R01和 R02,两个置 9输入端:
R91和 R92,高电平输入有效。
P50 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
74LS90的逻辑符号
P51 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
只要充分利用置 0、置 9输入端,
74LS90可以构成从 2到 10所有模值的计数器,而不需要添加任何外部的逻辑电路。
P52 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
中规模同步计数器
中规模同步计数器的多功能特性主要表现在以下几个方面:
计数方式可以是加计数,也可以是减计数;
实现可逆计数的方法有两种:加减控制方式和双时钟方式。
预置功能,预置方式可以是异步预置,也可以是同步预置。
复位功能,复位也有异步复位和同步复位之分。
进位功能,进位 /借位输出一般都是宽度等于一个周期的脉冲。
计数控制,控制输入有效时才计数。
P53 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
74LS192可预置十进制可逆计数器
是双时钟方式的可逆计数器。
异步预置和异步清零。
进位 /借位输出是分开的,是进位 /借位输出一个周期宽度的负脉冲输出。
表 7,1 7 7 4 L S 1 9 2 功能表
C K U P C K D W
L O A D
C L R D C B A Q D Q C Q B Q A
φ φ φ 1 φ φ φ φ 0 0 0 0
φ φ 0 0 d c b a d c b a
↑ 1 1 0 φ φ φ φ 加计数
1 ↑ 1 0 φ φ φ φ 减计数
1 1 1 0 φ φ φ φ 保持原状 态
P54 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
74LS192的逻辑符号和简化逻辑符号
P55 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
74LS169可预置 4位二进制可逆计数器
采用加 /减控制方式的可逆计数器。
同步预置,但是没有清零输入。
进位 /借位是同一个输出,负脉冲。
表 7,1 9 7 4 L S1 6 9 功能表
E N P + E N T D/U L O A D C L K Q D Q C Q B Q A
1 φ 1 φ 保持原状态
0 φ 0 ↑ 预置
0 1 1 ↑ 加计数
0 0 1 ↑ 减计数
P56 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
74LS169的逻辑符号和简化逻辑符号
7 4 L S 1 6 9 有两个计数控制输入,E N P 和
E N T 。必须这两个输入都是低电平,计数器才可以进行计数。 E N T 还会影响进位的产生,例如当计数进入了 1 1 1 1 状态,但是 E N T
不等于 0,进位脉冲还是不能产生。
P57 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
中规模计数器的应用
1.构成任意进制计数器
复位法
计数器从初始状态开始计数,到达满足模值等于 M的终止状态时,产生复位信号,加到计数器的复位输入,使计数器回到初始状态,然后重复进行 。
如果计数器是异步复位,则计数到第 M+1个状态产生复位信号。如果计数器是同步复位,则计数到第 M个状态产生复位信号。
一般来说,复位信号需要通过逻辑门来产生。
P58 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
复位法使 74LS192构成模 6计数器在状态 0110产生复位控制信号,恢复从 0开始计数。状态 0110出现的时间很短。不能算是一次计数。
P59 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
例 7.8 用 74LS90异步计数器构成模 6
计数器。
首先要将它连接为十进制计数器 。在
0110状态产生清零信号。可以直接将触发器 QB和 QC的输出连接到清零输入端 R01
和 R02
P60 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
预置法构成任意进制计数器
首先是要根据计数模值确定预置的状态,
然后,计数到终止状态时,产生预置控制信号,加到预置输入端,使得计数又从预制状态继续进行。
应该充分利用计数器的进位 /借位信号,将计数的终止状态定为加计数时的最大状态,
或者减计数时的最小状态。此时:
异步预置,加计数 预置值 =N-M-1
减计数 预置值 =M
同步预置,加计数 预置值 = N-M
减计数 预置值 =M-1
P61 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
74LS192通过预置法构成模 6计数器
预置值为:
10-6-1=3
计数的过程是:
3→ 4→ 5→ 6→ 7→ 8→ 9(3)
P62 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
考虑到余三码的对称性,我们将十进制计数的代码改为余三码,预置的状态是 0011,终止状态是 1100.
要用逻辑电路来检出终止状态 1100.
例 7.9 用 74LS169计数器实现 10分频,
并且要求分频后的输出波形是方波。
P63 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
中规模计数器的级联
单片中规模计数器的计数范围是很有限的。
当要求计数模值超过最大计数范围时,
可通过计数器的级联来解决问题。
实现计数器级联的基本方法有两种:
异步级联和同步级联。
P64 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
异步级联
异步级联是用前级计数器的输出作为后一级计数器的时钟信号。前级计数器的输出可以是触发器的输出,也可以是前级的进位输出。
两片 74LS90构成模 100计数器。
上升沿触发,还要加一个反相器。
P65 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
两片同步计数器 74LS192级联,构成最大计数范围是 100的计数器。
P66 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
同步级联
同步级联,是将外部时钟同时连接到各片计数器的时钟输入端,使得各级计数器可以同步地工作。
必须使用计数控制 E N P 和 E N T,以 保证 在前级计数器达到最大计数状态后,后一级计数器才可以在外部时钟作用下,改变状态。
P67 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
同步级联存在一个进位延迟的问题。
由于是用前级的进位来控制后级触发器的计数。只有前级产生进位后,后级才可以计数。并产生新的进位,使得再后级的触发器开始计数。
这样级联的计数器越多,进位延迟就越大,就会限制计数器的最高工作频率。
P68 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路上 图的级联方式可以解决进位延迟的积累。图中每级计数器的 E N T 都是固定接地,只要本级计数器进入 1 1 1 1 状态,就可以产生进位输出。另外,图中增加了一个或门,从逻辑的角度来看,这个逻辑门是“负与门”。只有输入的前级进位输出都是有效(低电平)时,“负与门”才输出低电平。
P69 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
级联后的中规模计数器同样可以通过复位或者预置来改变整个计数器的模值。
有两种基本的做法:一种是将级联后的计数器看成是一个整体,直接通过预置或者复位来改变计数模值。
另一种是将单片的计数器先通过预置或复位到达一定的模值,然后将它们级连起来,级联后的计数器的模值等于被级联计数器模值的乘积。
P70 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
例 7.10 用两片 74LS169计数器,构成模值为 101的计数器。
先将两片 74LS169直接级联,构成模值等于
256的计数器。
计算预置值。因为是同步预置,所以预置值 =256- 101=155=(10011011)2 。
P71 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
计数器用于逻辑设计
例 7.11 用 74LS169计数器和译码器构成 6路输出的脉冲分配器。
74LS169连接为模 6计数器。选择 74138的适当的输出端作为分配器的输出。
P72 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
脉冲分配器的输出波形。图中还显示了译码器产生的毛刺,实际上就是译码器由于功能冒险所产生的毛刺输出。
P73 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
计数器用于产生序列信号
计数器的模值应该和序列信号的长度相一致。
计数器相当于组合电路的信号源,组合电路就是用来产生序列信号。
计数器的编码并不是很重要,特别是在使用中规模组合电路的情况下,对结果影响不是很大。
P74 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
例 7.11 用中规模计数器 74LS169和双 4
选 1数据选择器 74LS153产生序列信号:
1) 1010010100…
2) 1101111011…
序列的长度都是 5,应该将 74LS169连接为模 5的计数器。从 011到 111。
组合电路的卡诺图如下:
P75 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路选择 Q C 和 Q B 作为数据选择器的地址输入,两个数据选择器的数据端的连接应该是,
1C0=0,1C1=1,1C2= Q A,1C3=0 ;
2C0=0,2C1=1,2C2= AQ 2 C 3 = 1 。
P76 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
中规模移位寄存器
中规模移位寄存器的功能选择
移位寄存器的移位方式有两种:左移方式和右移方式。
并行预置,也要确认是同步预置还是异步预置。
串行输入方式的选择,D触发器的方式输入,按 JK触发器的方式输入 。
清零功能 。 一般都是异步清零 。
P77 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
通用移位寄存器 74LS194
用 S0,S1作为移位寄存器的功能控制。
提供 4种功能:
表 7,2 1 7 4 L S1 9 4 功能表。
C L R
S 0 S 1 CL K S L S R Q A Q B Q C Q D
0 φ φ φ φ φ 0 0 0 0
1 1 1 ↑ φ φ A B C D
1 0 1 ↑ φ φ S R Q A Q B Q C
1 1 0 ↑ φ φ Q B Q C Q D S L
1 0 0 φ φ φ Q A Q B Q C Q D
P78 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
JK输入的移位寄存器 74LS195
移位不是双向的,只能右移。它也有并行预值和外部清零的功能,并且也是同步预置、异步清零。
表 7,2 2 7 4 L S 1 9 5 功能表。
C L R LD/SH CL K J K Q A Q B Q C Q D
0 φ φ φ φ 0 0 0 0
1 0 ↑ φ φ A B C D
1 1 ↑ 0 1 Q A Q A Q B Q C
1 1 ↑ 0 0 0 Q A Q B Q C
1 1 ↑ 1 1 1 Q A Q B Q C
1 1 ↑ 1 0 QA Q A Q B Q C
P79 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
具有与门输入的 8位移位寄存器
74LS164
表 7,2 3 7 4 L S 1 6 4 功能表。
C L R C L K A B Q A Q B Q C Q D Q E Q F Q G Q H
0 φ φ φ 0 0 0 0 0 0 0 0
1 ↑ 1 1 1 Q A Q B Q C Q D Q E Q F Q G
1 ↑ φ 0 0 Q A Q B Q C Q D Q E Q F Q G
1 ↑ 0 φ 0 Q A Q B Q C Q D Q E Q F Q G
P80 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
移位寄存器 74LS194,74LS195、
74LS164的逻辑符号。
P81 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
中规模移位寄存器的应用
串 -并变换
P82 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
并行 -串行数据变换
P83 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
序列信号发生器
例 7.12 用中规模移位寄存器和数据选择器设计一个序列信号发生器,输出序列:
0110011110001001……
1)确定移位寄存器的位数。序列的长度是
16,最小位数是 4。
0110,1100,1001,0011,0111,1111、
1110,1100,1000,0001,0010,0100、
1001,0010,0101,1011
出现重复代码,位数增加到 5,可用。
选用 5位移位寄存器 74LS96。
P84 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
状态转移表:
表 7,2 4 例 7,1 2 的状态转移表
Q 4 Q 3 Q 2 Q 2 Q 1 DA T A
0 1 1 0 0 1
1 1 0 0 1 1
1 0 0 1 1 1
0 0 1 1 1 1
0 1 1 1 1 0
1 1 1 1 0 0
1 1 1 0 0 0
1 1 0 0 0 1
1 0 0 0 1 0
0 0 0 1 0 0
0 0 1 0 0 1
0 1 0 0 1 0
1 0 0 1 0 1
0 0 1 0 1 1
0 1 0 1 1 0
1 0 1 1 0 0
P85 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
DATA的卡诺图:
选择 Q4Q3Q2作为地址输入。数据选择器的
8个数据输入为:
I 0 = 0 I 1 = 1 I 2 = 0 I 3 = 1Q
I 4 = 1Q I 5 = 0 I 6 = 1 I 7 = 0
P86 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
当进入状态 00000时,下一状态将仍然是 00000,不能自启动。 I0的数据输入修改为:
I0 = 1Q
P87 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
移存型计数器
设计步骤:
1)先将移位寄存器连接为 M序列发生器。 k位移位寄存器构成的 M序列的长度是 2k-1。
2)作出 M序列发生器的状态转移图。
计数器的状态转移关系只能在这个 M
序列状态转移图中选择。
3)按照需要的模值决定计数器计数的初始状态和终止状态。并用逻辑门捡出终止状态。
P88 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
例 7.13 用移位寄存器设计一个模值等于 10的计数器。
模值等于 10,选择 4位移位寄存器、
JK输入的 74LS195。
4位移位寄存器构成 M序列的反馈函数是:
n
AQ ⊙
n
DQ =
n
DQ
n
AQ +
n
DQ
n
AQ
状态转移图是:
P89 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
选用 0111状态为终止状态。
从 0111状态倒数 10个状态就是 0010,
0010就是计数器的初始状态。
计数器的状态转移关系如图:
P90 北京邮电大学 huimin@bupt.edu.cn2009-8-21
中规模时序集成电路
逻辑图:
P91 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序部件的VH
DL
描述
用 VHDL描述时序部件,特别是描述计数器时,
还要用到两个标准的程序包:
IEEE.STD_LOGIC_ARITH
IEEE.STD_LOGIC_UNSIGNED
在 IEEE.STD_LOGIC_ARITH程序包中定义了两种新的数据类型:
TYPE SIGENED IS ARRAY (NATURAL RANGE<>)
OF STD_LOGIC;
TYPE UNSIGENED IS ARRAY (NATURAL
RANGE<>) OF STD_LOGIC;
并 定义了许多新的函数,可以允许 SIGENED或者 UNSIGENED类型的数据进行算术运算。
P92 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序部件的VH
DL
描述
计数器的 VHDL描述
例 7.14 分析一个简单计数器的描述,说明这个计数器的功能。
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY counter IS
PORT( clock,IN STD_LOGIC;
clear,IN STD_LOGIC;
count,IN STD_LOGIC;
q,OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END counter;
P93 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序部件的VH
DL
描述
ARCHITECTURE behav OF counter IS
SIGNAL pre_q,STD_LOGIC_VECTOR(3
DOWNTO 0);
BEGIN
PROCESS(clock,count,clear)
BEGIN
IF clear = '1' THEN
pre_q <= pre_q - pre_q;
ELSIF (clock ='1' AND clock 'EVENT) THEN
IF count = '1' THEN
pre_q <= pre_q + 1;
END IF;
END IF;
END PROCESS;
q <= pre_q;
END behav;
P94 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序部件的VH
DL
描述
分析以上 VHDL描述,可知 这个计数 器具有以下特性:
4位二进制计数器,时钟的上升沿触发;
有一个异步清零输入 clear,高电平有效;
有一个计数控制输入 count,也是高电平有效。
这个描述引用了 IEEE.STD_LOGIC_UNSIGNED程序包,描述中信号 pre_q的加法操作,实际上是 STD_LOGIC类型的数据和整型数的相加,就是在这个程序包中定义的运算。
P95 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序部件的VH
DL
描述
例 7.15 用 VHDL对中规模计数器 74LS169进行描述。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY v74x169 IS
PORT (
clk,up_dn,ld_l,enp_l,ent_l,IN
STD_LOGIC;
d,IN UNSIGNED (3 DOWNTO 0);
q,OUT UNSIGNED (3 DOWNTO 0);
rco,OUT STD_LOGIC
);
END V74X169;
P96 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序部件的VH
DL
描述
ARCHITECTURE v74x169_behav OF v74x169 IS
SIGNAL iq,UNSIGNED (3 DOWNTO 0);
BEGIN
PROCESS (clk,ent_l,iq)
BEGIN
IF (clk 'EVENT AND clk ='1') THEN
IF ld_l='0' THEN iq <= D;
ELSIF (ent_l OR enp_l)='0' THEN
IF up_dn ='1' THEN iq <= iq + 1;
ELSIF up_dn ='0' THEN iq <= iq -1;
END IF;
END IF;
END IF;
IF (iq =15) AND (ent_l='0') AND (up_dn='1') THEN
rco <= '0';
ELSE rco <= '1';
END IF;
IF (iq =0) AND (ent_l='0') AND (up_dn='0') THEN
rco <= '0';
ELSE rco <= '1';
END IF;
END PROCESS;
q <= iq;
END v74x169_behav;
P97 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序部件的VH
DL
描述
例 7.16 8421码十进制计数器的描述。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY count_10 IS
PORT (
clk,clr_l,ld_l,enp,ent,IN
STD_LOGIC;
d,IN UNSIGNED (3 DOWNTO 0);
q,OUT UNSIGNED (3 DOWNTO 0);
rco,OUT STD_LOGIC
);
END count_10;
P98 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序部件的VH
DL
描述
ARCHITECTURE behav OF count_10 IS
SIGNAL iq,UNSIGNED (3 DOWNTO 0);
BEGIN
PROCESS (clk,ent_l,iq)
BEGIN
IF clk 'EVENT AND clk ='1' THEN
IF clr_l='0' THEN iq <= (OTHERS => '0');
ELSIF LD_L='0' THEN iq <= D;
ELSIF (ent AND enp)='1' AND (iq =9) THEN
iq <= ('0','0','0','0');
ELSIF (ent AND enp)='1' THEN iq <= iq + 1;
END IF;
END IF;
IF (iq =9) AND (ent ='1') THEN rco <= '1';
ELSE rco <= '0';
END IF;
q <= iq;
END PROCESS;
END behav;
P99 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序部件的VH
DL
描述
移位寄存器的 VHDL描述
例 7.17 简单移位寄存器的描述。
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY shift_reg IS
PORT( ser_data,IN STD_LOGIC;
clock,IN STD_LOGIC;
shift,IN STD_LOGIC;
q,OUT STD_LOGIC);
END SHIFT_REG;
P100 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序部件的VH
DL
描述
ARCHITECTURE behav OF shift_reg IS
SIGNAL s,STD_LOGIC_VECTOR(3
DOWNTO 0):="1111";
BEGIN
PROCESS(ser_data,clock,shift,s)
BEGIN
IF clock 'EVENT AND clock ='1' THEN
IF shift = '1' THEN
s <= ser_data & s (3 DOWNTO 1);
END IF;
END IF;
END PROCESS;
q <= s (0);
END behav;
P101 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序部件的VH
DL
描述
例 7.18 用 VHDL描述一个通用移位寄存器。实现的功能包括:
串行移位,包括左移和右移;
循环移位,也包括左移和右移;
算术移位,算术移位时数据本身的移位,没有串行输入,右移时,最高位不变,左移时,最低位加 0。
P102 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序部件的VH
DL
描述
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY u_shftreg IS
PORT (
clk,clr,rin,lin,IN STD_LOGIC;
s,IN STD_LOGIC_VECTOR (2 DOWNTO 0);
-- FUNCTION SELECT
d,IN STD_LOGIC_VECTOR (7 DOWNTO 0);
-- DATA IN
q,OUT STD_LOGIC_VECTOR (7 DOWNTO
0) ); -- DATA OUT
END u_shftreg;
P103 北京邮电大学 huimin@bupt.edu.cn2009-8-21
时序部件的VH
DL
描述
ARCHITECTURE behav OF u_shftreg IS
SIGNAL iq,STD_LOGIC_VECTOR (7 DOWNTO 0);
BEGIN
PROCESS (clk,clr,iq)
BEGIN
IF (clr='1') THEN IQ <= (OTHERS=>'0');
ELSIF (clk 'EVENT AND clk ='1') THEN
CASE CONV_INTEGER(s) IS
WHEN 0 => NULL; -- 保持
WHEN 1 => iq <= d; -- 预置
WHEN 2 => iq <= rin & iq (7 DOWNTO 1); -- 右移
WHEN 3 => iq <= iq (6 DOWNTO 0) & lin; -- 左移
WHEN 4 => iq <= iq (0) & iq (7 DOWNTO 1); -- 循环右移
WHEN 5 => iq <= iq (6 DOWNTO 0) & iq (7); --循环左移
WHEN 6 => iq <= iq (7) & iq (7 DOWNTO 1); -- 算术右移
WHEN 7 => iq <= iq (6 DOWNTO 0) & ‘0’; -- 算术左移
WHEN OTHERS => NULL;
END CASE;
END IF;
q <= iq;
END PROCESS;
END bahav;
P104 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
一般时序电路和常用时序电路有许多相似的地方,但是两者也有不少差别,主要表现为:
一般时序电路除了时钟外,都会有若干输入变量。
一般时序电路的状态数事先是不知道的,状态编码是需要专门安排的。
一般时序电路分析和设计中,要使用状态表,而常用时序电路设计中,只使用状态转移表。
P105 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
一般时序电路的分析
例 7.19 分析如图 7.50的同步时序电路。
1)由逻辑图列出输出方程和激励方程:
Z = A? B? nQ
J = A B K= A B 2)将激励方程代入特征方程,得状态方程:
1n
Q
=
nn
QKQJ?
= A B
n
Q + BA
n
Q
= A B
n
Q +A
n
Q +B
n
Q
P106 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
3)由状态方程和输出方程作状态转移表:
表 7,2 5 例 7,1 9 的状态转移表
AB
n
Q
0 0 0 1 1 1 1 0
0 0 /0 0 /1 1 /0 0 /1
1 0 /1 1 /0 1 /1 1 /0
Z/Q
1n?
由状态转移表可作出状态表和状态图表 7,2 6 例 7,2 0 的状态表
AB
S
0 0 0 1 1 1 1 0
S0 S0 /0 S0 /1 S1 /0 S0 /1
S1 S0 /1 S1 /0 S1 /1 S1 /0
S / Z
P107 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
状态图:
4) 分析和说明。例 7.19实现的是串行加法器的功能。状态 S0可以理解为两个 1位二进制数相加后没有产生进位,而 S1则是相加后产生进位的状态。
P108 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
例 7.20 分析图 7.52所示的时序电路。
状态方程,1n
1Q
=
1D = 21 XX +
n
11 QX +
n
12 QX
1n
2Q
=
2D = 21 XX +
n
21 QX +
n
22 QX
输出方程:
1Z =
n
1Q
2Z =
n
2Q
P109 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
状态转移表表 7,2 7 例 7,2 0 的状态转移表
21
XX
n
1
Q
n
2
Q
0 0 0 1 1 1 1 0 1
Z
2
Z
0 0 0 0 0 1 0 0 1 0 0 0
0 1 0 1 0 1 0 1 1 0 0 1
1 1 1 1 0 1 1 1 1 0 1 1
1 0 1 0 0 1 1 0 1 0 1 0
1n
1
Q
1n
2
Q
将状态转移表改写为状态表表 7,2 8 例 7,2 0 的状态表
21
XX
S
0 0 0 1 1 1 1 0 1
Z
2
Z
A A B A C 0 0
B B B B C 0 1
C C B C C 1 0
P110 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
分析和说明。电路的 3个状态的含义应该是:
状态 A,表示两个二进制数比较后,结果是到目前为止“相等”;
状态 B,表示两个二进制数比较后,结果是到目前为止,21
XX?
”;
状态 C,表示两个二进制数比较后,结果是到目前为止,21
XX?
”。
两个输出是:
1
Z
=1,表示
21
XX?;
2
Z
=1,
表示
21
XX?
。
这个电路实现了串行比较器的功能。
P111 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
一般时序电路的设计
设计步骤
1)根据设计要求,做出状态表
2)对状态表进行简化,删除多余的状态;
3)状态编码,也称为状态分配,对状态表中的每个状态分配一个二进制代码,得到状态转移表;
4)由状态转移表写出状态方程,再求出触发器的激励方程、电路的输出方程,完成组合电路部分的设计;
5)画出逻辑图,完成最后的设计。
P112 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
状态表的建立
根据设计要求建立状态表是设计同步时序电路的最重要的一环。
必须把设计要求完全地反映到状态表中,最后的结果才可能正确。
但是,在建立状态表时,没有严格的步骤可以遵循,主要靠设计者对要求的理解和本身的设计经验。
P113 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
例 7.21 设计一个同步时序电路,凡是输入出现,101”时,就输出 1。作出这个时序电路的状态表。
这个时序电路可以安排以下这些状态:
状态 A:初始状态,或者是没有收到正确序列的状态;
状态 B:收到一位正确序列,也就是收到了一位,1”;
状态 C:收到两位正确序列,也就是收到了,10”;
状态 D:收到三位正确序列,也就是收到了,101”;
P114 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
按以上安排,先作出表示收到正确序列的状态图。然后再对每个状态画出其他输入情况下的状态转移关系。
表 7,2 9 例 7,2 1 的状态表
X
S
0 1
A A / 0 B / 0
B C / 0 B / 0
C A / 0 D / 1
D C / 0 B / 0
P115 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
例 7.22 同步时序电路有两个输入 A和 B,一个输出 Z。在以下条件满足时,输出 Z等于 1:
A输入端连续两个周期出现相同的输入值;
在满足第一个条件的情况下,B输入端出现 1。
需要的状态有:
INIT,初始状态
A0,A端输入 1个 0,Z输出 0;
A00,A端输入 2个 0,Z输出 1;
A1,A端输入 1个 1,Z输出 0;
A11,A端输入 2个 1,Z输出 1;
B1A1,满足第一个条件后,B输入 1,A也输入 1,Z输出 1;
B1A0,满足第一个条件后,B输入 1,A输入 0,
Z输出 1;
P116 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计表 7,3 0 例 7,2 2 的状态表
AB
S
0 0 0 1 1 1 1 0 Z
I N I T A 0 A 0 A 1 A 1 0
A0 A 0 0 A 0 0 A 1 A 1 0
A 0 0 A 0 0 A 0 0 B 1 A 1 A 1 1
A1 A 0 A 0 A 1 1 A 1 1 0
A 1 1 A 0 B 1 A 0 A 1 1 A 1 1 1
B 1 A 1 A 0 B 1 A 0 A 1 1 A 1 1 1
B 1 A 0 A 0 0 A 0 0 B 1 A 1 A 1 1
P117 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
状态表的简化
根据设计要求作出的状态表,可能包含多余的状态,应该加以简化。
减少多余的状态数,有可能减少电路中触发器的数目。
状态简化就是要找出状态表中的等价状态。凡是等价状态都可以合并为一个状态。
P118 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
两个状态若满足以下条件就称为等价状态:
在同样的输入信号作用下它们有相同的输出;
在同样的输入条件下,它们的下一状态是彼此等价的。
A和 B等价 A和 B等价取决于 E和 F是否等价。
P119 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计表 7,3 1 例 7,2 1 的简化状态表
AB
S
0 0 0 1 1 1 1 0 Z
I N I T A 0 A 0 A 1 A 1 0
A0 A 0 0 A 0 0 A 1 A 1 0
A 0 0 A 0 0 A 0 0 A 1 1 A 1 1
A1 A 0 A 0 A 1 1 A 1 1 0
A 1 1 A 0 A 0 0 A 1 1 A 1 1 1
P120 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
状态分配
状态分配的任务是对简化后的状态表中的每个状态分配一个二进制代码。
然后,状态表就改为状态转移表,以继续进行设计。
假定状态表中的状态数是 r,需要的触发器的数目是 k,可能的分配方案数为:
!k)!r2(
)!12(
k
k
当 k=4,r=9时,分配方案数为 10810800。
P121 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
通常使用的状态分配的规则有:
相邻规则,对于有直接转移关系的状态,分配相邻的代码。
分解规则,将状态代码分解为若干组
(可以是一位就是一组),使得每一组代码都有一种明确的含义。
,单位代码,分配法,即每一个状态使用一位状态代码。
对称规则,对于有相似含义的状态或状态组,用相似的方法分配状态的代码。
P122 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计表 7,3 2 表 7,3 1 的几种状态分配方案分配法
S
相邻法 分解法 单位代码 准单位代码
I N I T 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
A0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1
A 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 1 0
A1 1 1 0 1 0 1 0 1 0 0 0 0 1 0 0
A 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0
1
Q
2
Q
3
Q
P123 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
按第一种代码的状态转移表:
AB
S
0 0 0 1 1 1 1 0 Z
000 0 1 0 0 1 0 1 1 0 1 1 0 0
010 0 1 1 0 1 1 1 1 0 1 1 0 0
0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1
1 1 0 0 1 0 0 1 0 1 1 1 1 1 1 0
111 0 1 0 0 1 1 1 1 1 1 1 1 1
1D = A
2D = 1
3D = B
n
3Q + A
n
1Q
n
2Q + A
n
1Q
n
2Q
Z = n3Q
设计结果:
P124 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
时序机的 VHDL描述
时序机的描述可以是数据流描述,
或者是采用顺序语句的性能描述。
块语句
块语句( BLOCK语句)是一种并行处理语句,通常用来表示系统的结构。
块语句内部所包含的语句都是并行处理语句。
P125 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
块语句的一般结构是:
块标号,BLOCK (GUARD表达式 )
BEGIN
GUARDED 表达式 ;
其他并行语句 ;
END BLOCK 块标号;
GUARDED表达式的格式是:
信号名 <=GUARDED 信号赋值表达式或 条件信号赋值语句 ;
P126 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
用 BLOCK语句描述的 D触发器:
ENTITY d_flipflop IS
PORT(d,clk,IN BIT;
q,qb,OUT BIT);
END d_flipflop;
ARCHITECTURE dataflow OF d_flipflop IS
BEGIN
ff,BLOCK (clk=’1’AND NOT clk’STABLE)
BEGIN
q <= GUARDED d AFTER 5NS;
qb <= GUARDED NOT d AFTER 5NS;
END BLOCK ff;
END dataflow;
P127 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
例 7.23 用 VHDL语言对 101序列检测器进行数据流描述。
ENTITY detector_101 IS
PORT (x,clk,IN BIT;
z,OUT BIT);
END detector_101;
ARCHITECTURE dataflow OF detector_101 IS
TYPE state IS (A,B,C);
TYPE state_vector IS ARRAY (NATURAL RANGE
<>) OF state;
FUNCTION one_of (sources,state_vector)
RETURN state IS
BEGIN
RETURN sources(sources’LEFT);
END one_of;
SIGNAL current,one_of state REGISTER,=
A;
P128 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
BEGIN
cc,BLOCK (clk ='1' AND NOT clk'STABLE)
BEGIN
s1,BLOCK (current = A AND GUARD)
BEGIN
current <= GUARDED B WHEN x='1' ELSE A;
END BLOCK s1;
s2,BLOCK (current = B AND GUARD)
BEGIN
current <= GUARDED C WHEN x='0' ELSE B;
END BLOCK s2;
s3,BLOCK (current = C AND GUARD)
BEGIN
current <= GUARDED B WHEN x='1' ELSE A;
z <= '1' WHEN (current = C AND x = '1') ELSE '0';
END BLOCK s3;
END BLOCK cc;
END dataflow;
P129 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
例 7.24 对例 7.22的时序机用 VHDL
语言进行顺序描述。
ENTITY detector_2 IS
PORT ( clk,A,B,IN STD_LOGIC;
Z,OUT STD_LOGIC );
END;
P130 北京邮电大学 huimin@bupt.edu.cn2009-8-21
一般时序电路分析设计
ARCHITECTURE behav OF detector_2 IS
TYPE SREG_TYPE IS (INIT,A0,A1,A00,A11);
SIGNAL sreg,SREG_TYPE;
BEGIN
PROCESS (clk)
BEGIN
IF clk 'EVENT AND clk = '1' THEN
CASE sreg IS
WHEN INIT => IF A='0' THEN sreg <= A0;
ELSIF A='1' THEN sreg <= A1;
END IF;
WHEN A0 => IF A='0' THEN sreg <= A00;
ELSIF A='1' THEN sreg <= A1;
END IF;
WHEN A00 => IF A='0' THEN sreg <= A00;
ELSIF A='1' AND B='0' THEN sreg <= A1;
ELSIF A='1' AND B='1' THEN sreg <= A11;
END IF;
P131 北京邮电大学 huimin@bupt.edu.cn2009-8-21
电位型触发器
WHEN A1 => IF A='0' THEN sreg <= A0;
ELSIF A='1' THEN sreg <= A11;
END IF;
WHEN A11 => IF A='0' AND B='0' THEN sreg <= A0;
ELSIF A='0' AND B='1' THEN sreg <= A00;
ELSIF A='1' THEN sreg <= A11;
END IF;
WHEN OTHERS => sreg <= INIT;
END CASE;
END IF;
END PROCESS;
WITH sreg SELECT -- 根据状态决定输出
Z <= '0' WHEN INIT | A0 | A1,
'1' WHEN A00 | A11,
'0' WHEN OTHERS;
END behav;