例一,设计一个求两个 4位二进制数之积的数字乘法器。乘数存于寄存器 Q中,被乘数存于寄存器 M中,求两数之积的命令信号为 MF,Z为 8位乘积。
一、系统级设计
1.算法设计 ( 第一种 算法 )
(1)手算过程
(一次相加 )
解,
12.4 数字系统的实现运算过程 算式说明
1 0 1 0 被乘数
× 1 1 0 1 乘数
1 0 1 0 第一部分积
0 0 0 0 第二部分积
1 0 1 0 第三部分积
+ 1 0 1 0 第四部分积
1 0 0 0 0 0 1 0 乘积 =部分积之和表 12.4.1 乘法的手算过程算法规律:
Ⅰ 两个 r位的二进制数相乘,乘积为 2r位 。
Ⅱ 乘数的第 i位为 0时,第 i位的部分积为 0;
Ⅲ 第 i位的部分积相对于第 i-1位的部分积求和时左移一位 。
为了用数字电路完成求和运算,必须改变乘法过程,把一次多数相加改成累计求和,累计的和称为部分和,把它存如累加寄存器中。
乘数的第 i位为 1时,第 i位的部分积是被乘数 。
(2)电路实现过程 (多次相加 )
运算过程 算式说明
1 0 1 0 被乘数
× 1 1 0 1 乘数
0 0 0 0 0 0 0 0 累加器初始内容
+ 1 0 1 0 第一部分积
0 0 0 0 1 0 1 0 第一部分和
+ 0 0 0 0 第二部分积
0 0 0 0 1 0 1 0 第二部分和
+ 1 0 1 0 第三部分积
0 0 1 1 0 0 1 0 第三部分和
+ 1 0 1 0 第四部分积
1 0 0 0 0 0 1 0 乘积 =第四部分和表 12.4.2 累计部分积的乘法过程
(3)算法流程图
(a)算法流程图
A Q
M
图 12.4.1 乘法器的算法与结构
(b)结构
A1 … Ar Ar+1 … A2r
组合逻辑 控制器累加寄存器 乘数寄存器加法命令被乘数寄存器左移命令右移指令
M1 … Mr Mr+1 … M2r
Q1 … Qr
数据处理器缺点,寄存器的使用效率低。
优点:运算时间短。
例如,1010× 0001 运算一次,
就结束了。
1010× 0011运算二次,就结束了。
A Q
M
前 4位空前 4位空运算完后 4位空考虑 A和 Q联合右移,将 A中的低位填入 Q中,这样可以充分利用资源。
第二种算法 的 流程图和结构图
(b)算法流程图
Start
CNT←0,A←0
Qr=1
A←A+M
A←SR(A),Q←SR(Ar,Q),CNT←CNT+1
CNT= r
Y
Y
Y
N
N
N
CLR
ADD
SHIFT
S1
S2
S3
M
组 合 电 路
CNT 控制器
S C
Start
Z
Q1… QrA0 … Ar
Start
CNT←0,A←0
Qr=1
A←A+M
A←SR(A),Q←SR(Ar,Q),
CNT←CNT+1
CNT= r
Y
Y
Y
N
N
N
CLR
ADD
SHIFT
S1
S2
S3
S1
S2
SHIFT
1
0
0
0
T0
T1
T2
1
10
01
1
00
CLR
ADD
S3
T3
CNT= r
乘法器的 ASM图
S1
S2
SHIFT
1
0
0
0
T0
T1
T2
1
10
01
1
00
CLR
ADD
S3
T3
乘法器的ASM

CNT= r
S1
S2
SHIFT
1
0
0
0
T0
T1
T2
1
10
01
1
00
CLR
ADD
S3 CNT= r-1
图 12.4.4 乘法器的 ASM图控制器
CLR
ADD
SHIFT
S1( START)
S2(Qr)
S3(CNT=3)
(a)控制器并加器
M
A Q
CNT
A0
Qr
0
(b)数据处理器图 12.4.3 乘法器细化结构图
2.确定系统的初始结构图和 ASM图乘法器的初始结构图
M
并加器
AA0 Q
CNT 控制器
CNT=3( S3)
Qr( S2)
START( S1)
数据处理器
CLR,ADD,SHIFT
3
二、逻辑设计
1,数据处理器的设计
(1) 列出数据处理器的明细表操作明细表状态变量表建立明细表表 12.4.3 乘法器明细表
(2)说明
1)把可能实现的操作归并在一起,作为一个操作步骤,再用适当的助记符表示控制信号,获得处理器操作表。
2) NOP表示控制器处于等待状态,处理器无操作。
3) CLR表示 A←“0”,CNT ←“0” 。
4) ADD表示 A← A+M 。
5) SHIFT表示 AQ联合右移一次,使 CNT+1
(3)分析
1)观察乘法器操作表,
处理器应包含:
A
Q
M
CNT
2)以累加器 A为目标的寄存器的操作有:
清,0”( CLR)
并入 ( A←A+M)
右移 ( SR( A))
3)如将清,0”操作用并入,0”来实现,A可选用 4位多功能移位寄存器 74194实现。
4)根据乘法器操作表和 74194的功能表,可填写出 74194功能控制端 M1M0的真值表。
并入
M1 =CLR+ADD
M0= CLR+ADD+SHIFT
Di=CLR·Fi 或 Di=ADD? Fi
M1M0
SHIFT
≥1 ≥1
CLR
ADD
DSR A(74194)
Q3~ Q0 D3~ D0
QD
CP
LED
M1=ADD+CLR
M0=CLR+ADD+SHIFT

Fi
1
Di=CLR·Fi
累加寄存器 A的电路实现乘数寄存器 Q的实现操 作 表 状态变量表控制信号 操作 状态变量 定义
NOP 无操作
S1 STARTCLR A←0,CNT←0
ADD A←A+M
SHIFT
A←SR(A)
Q←SR(Ar,Q)
CNT←CNT+1
S2 Qr
S3 CNT=3
乘法器处理器明细表
2)为减少集成电路的种类,乘数寄存器 Q也选用 74194实现。
1)以乘数寄存器 Q为目标的操作有:移位和保持。
表 12.4.4 74194功能表置数11
左移01
右移10
保持00
功能M0M1
操 作 表 状态变量表控制信号 操作 状态变量 定义
NOP 无操作
S1 STARTCLR A←0,CNT←0
ADD A←A+M
SHIFT
A←SR(A)
Q←SR(Ar,Q)
CNT←CNT+1
S2 Qr
S3 CNT=3
M1=0
M0=SHIFT
M1=C改为
4
开关 D
开关 C
M1M0
DSLDSR
Q3Q3~ Q0
Q(74194)
LED S2
SHIFT
M0=SHIFT
M1=C
乘数寄存器 Q的电路实现
CP
被乘数寄存器 M 的实现
1)没有任何操作,只是寄存功能,正常工作时,M1M0=00。
2)考虑开始工作时的送数,将 M1=0,M0=A,A=1时,将被乘数串行移入 M寄存器。 DSR接开关 B,用来得到相应的被乘数。
操 作 表 状态变量表控制信号 操作 状态变量 定义
NOP 无操作
S1 STARTCLR A←0,CNT←0
ADD A←A+M
SHIFT
A←SR(A)
Q←SR(Ar,Q)
CNT←CNT+1
S2 Qr
S3 CNT=3
乘法器处理器明细表
M1
M0
4
开关 B
开关 A
M(74194)
LED
DSR
CR 5VQ3~ Q0
被乘数 寄存器 M的电路实现
cp
操 作 表 状态变量表控制信号 操作 状态变量 定义
NOP 无操作
S1 STARTCLR A←0,CNT←0
ADD A←A+M
SHIFT
A←SR(A)
Q←SR(Ar,Q)
CNT←CNT+1
S2 Qr
S3 CNT=3
乘法器处理器明细表加法器的实现
B3~ B0 F3~ F0
A3~ A0
4
4 LED
CICO 74283
LED
4
M的输出端
A的输出端
&
4
CLR
A的数据输入端
&
ADD
DFF的输入端加法器的实现电路
1) 用 74283来实现。
2) 被加数 A4A3A2A1接被乘数寄存器 M输出,加数
B4B3B2B1接累加器 A输出。输出 F4F3F2F1送累加器
A的数据端。
3) 由于 A在 CLR信号到时,需要置 0,所以将 F4F3F2F1
先与 CLR相与,再送至 A的数据端。
4) 74283的 CO输出应送 DFF的 D端,但送时受 ADD信号控制,所以应先与 ADD信号相与再送给 D。
加法器的实现说明
CNT的操作,增 1和同步清零。所以采用四位二进制同步计数器 74163来实现操 作 表 状态变量表控制信号 操作 状态变量 定义
NOP 无操作
S1 STARTCLR A←0,CNT←0
ADD A←A+M
SHIFT
A←SR(A)
Q←SR(Ar,Q)
CNT←CNT+1
S2 Qr
S3 CNT=3
乘法器处理器明细表计数器 CNT 的实现表 12.4.6 74163功能表
CR LD P T CP 功能
0 ↑ 清 0
1 0 ↑ 并入
1 1 0 保持
1 1? 0? 保持
1 1 1 1 ↑ 计数操 作 表 状态变量表控制信号 操作 状态变量 定义
NOP 无操作
S1 STARTCLR A←0,CNT←0
ADD A←A+M
SHIFT
A←SR(A)
Q←SR(Ar,Q)
CNT←CNT+1
S2 Qr
S3 CNT=3
P=T=SHIFT
P
T
CR
LD
Q1Q0
SHIFT
74163
CNT
&
S3
5V
计数器 CNT 的实现电路
cp
CLR
2,控制器的实现
( 1)传统设计方法该控制器有 3个状态 T0,T1,T2,所以必须选用 2个 DFF触发器 Q2Q1,设编码分别为 00,
01,10(标注在 ASM图上)。另外有 3个输入条件 S1S2S3。所以可得乘法器控制器状态转移图为:
S1
S2
SHIFT
1
0
0
0
T0
T1
T2
1
10
01
1
00
CLR
ADD
S3
图 12.4.4 乘法器的 ASM图现 态 输 入 次 态 输 出
Q2 Q1 S1 S2 S3 Q2 Q1
T0 0 0 0 0 00 0 1 0 1 CLR
T1 0 1? 0? 1 00 1? 1? 1 0 ADD
T2 1 0 0 0 1 SHIFT1 0 1 0 0
现 态 输 入 次 态 输 出
S1S2S3/CLR ADD SHIFT
T0
T2
0 φ φ/000
T11φφ/100
φ0 φ/000
φ1φ/010
φφ0/001
φφ1/001
表 12.4.7 乘法器状态转移表现 态 输 入 次 态 输 出
Q2 Q1 S1 S2 S3 Q2 Q1
T0 0 0 0 0 00 0 1 0 1 CLR
T1 0 1? 0? 1 00 1? 1? 1 0 ADD
T2 1 0 0 0 1 SHIFT1 0 1 0 0
现 态 输 入 次 态 D
2 D1 输 出Q
2 Q1 S1 S2 S3 Q2 Q1
T0 0 0 0 0 0 0 00 0 1 0 1 0 1 CLR
T1 0 1? 0? 1 0 1 00 1? 1? 1 0 1 0 ADD
T2 1 0 0 0 1 0 1 SHIFT1 0 1 0 0 0 0
(a) D2 (b) D1
01
100
10Q2 Q1
S31
0S10
10Q
2
Q1
列激励表
D2=Q1
D1=?Q2?Q1S1+Q2?S3
同理可得输出函数表达式:
CLR=?Q2?Q1S1,ADD=?Q2Q1S2,SHIFT=Q2?Q1
现 态 输 入 次 态 D
2 D1 输 出Q
2 Q1 S1 S2 S3 Q2 Q1
T0 0 0 0 0 0 0 00 0 1 0 1 0 1 CLR
T1 0 1? 0? 1 0 1 00 1? 1? 1 0 1 0 ADD
T2 1 0 0 0 1 0 1 SHIFT1 0 1 0 0 0 0
(2)用数据选择器、寄存器、译码器的方法(用 MSI)
图 12.4.7 利用数据选择器和译码器的控制逻辑框图数据选择器寄存器译码器
1
X D Q T 门电路
C
S1
S2
SHIFT
T2
&
&
1 1D Q1
1D Q2A0 A1
A0 A1
CP
T0
T1 ADD
CLR
S2
0
1
2
3
“0”
0
1
2
3
“0”
“1”
74153
74153
译码器
R
R
C1
C1
01
100
10Q2Q1
S21
0S10
10Q
2
Q1 CLR=?Q
2?Q1S1,
ADD=?Q2 Q1S2,
SHIFT=Q2?Q1
图 12.4.8 用数据选择器和译码器实现的乘法控制器逻辑图
(3)用每态一个触发器的方法不需要进行状态分配,不用列状态转移表。
选元器件求表达式电路设计用这种方法设计控制器:
缺点,采用了最大数目的 FF。
优点,1)设计简单、调试、维修方便,而且系统的组合电路简单。
2)不用列状态转移表,直接根据 ASM图求得触发器的激励函数。
图 12.4.4 乘法器的 ASM图
S1
S2
SHIFT
1
0
0
0
T0
T1
T2
1
10
01
1
00
CLR
ADD
S3
D0=T0?S1+T2S3
D1=T0S1+T2?S3;
D2=T1?S2+T1S2=T1
CLR=T0S1
ADD=T1S2
SHIFT=T2
S2
START
图 12.4.8 用每态一个触发器的乘法控制器逻辑图
1 & ≥1
1
&
&
&
≥1
&
&
S
1D
CP
C1
F0
Q0
T0
T1
T2
S2
CLR
ADD
SHIFT
R
1D
C1 F1
Q1
R
1D
C1 F2
Q2
(4)用 PLA的方法(用 LSI)
传统方法当状态比较多时,用组合电路和中规模电路实现就不合适了,可以采用 PLD器件来实现图 12.4.10 PLA控制器一般结构框图
PLA寄存器

……

输入输出图 12.4.11 乘法器的 PLA控制器 PLA
Q1
S3
S2
S1
D2Q
2
D1
T2(SHIFT)
T1
T0
ADD
CLR
数据选择器寄存器译码器
1
X D Q T 门电路
C
1
1
1
1
1
& & & & & &
≥1
≥1
≥1
≥1
≥1
≥1
≥1
Q2
Q1
S1
S2
S3
D2
D1
T0
T1
T2
CLR
ADD
PLA实现电路第五节 PLD在数字系统设计中的应用
(1)减小系统的硬件规模;
(2)提高系统的可靠性;
(3)提高系统的工作速度;
一、使用 PLD器件的优点
(6)降低设计成本;
(7)增加系统的保密性能。
(4)提高系统的灵活性;
(5)缩短设计周期;
作业,
12.4 ;
12.6(只要求列出算法流程图和 ASM图) ;
12.7 ;
例二,一个数字系统的数据处理器有 2个触发器 E和 F
及 1个二进制计数器 A,计数器的各个位分别用 A4,A3、
A2,A1标记,A4为最高位,A1为最低位。启动信号 S
使计数器 A和触发器 F清,0”,从下一个时钟脉冲开始,
计数器增 1,一直到系统停止工作为止。
系统的操作序列由 A3和 A4之值决定,即:
① A3=0,触发器 E清,0”,并继续计数。
② A3=1,触发器 E置,1”,并检验 A4,若 A4=0,
继续计数;若 A4=1,触发器 F置,1”,E置
,1”,系统停止计数。
A←A+1
0
T0
S
A3 1
T1
A4
0
0
1
1
图 11.3.17 算法流程图
A←0,F←0
T2 E←1
E←1,F←1
E←0
讨论:从 ASM图上可见。
1,控制器的功能有三个状态,
T0:初始状态 ;
T1,控制寄存器 A加 1;
T2,控制寄存器 E?F置 1?
清 0。
2.处理器的功能三个寄存器,
A,A加 1计数器 ; E?F,置 1?清 0 。
3,根据 ASM图可画出它的状态图
T0 T1
SS
T2 A3+A4
A3A4
A3+ A3 A4= A3+ A4
4.画出初始结构图控制器 处理器
A3 A4
S
CLR
ADD
SET E
SET F
ASM图
5、列出处理器的明细表分析:
A完成的功能,A清,0”和增,1”;
E完成的功能,E清,0”和置,1”;
F完成的功能,F清,0”和置,1”。
6、处理器设计根据处理器的明细表,它有三个存储器 A,E,F。
A:计数器( M = 13),采用 74161芯片实现。
E,F,一位存储器。分别采用 DFF实现。
CLR= T0·S;
ADD=T1 ;
SET E = T2A3 ;
SET F =T2A3A4。
7、根据 ASM图写出命令的表达式
8、控制器设计本例采用每态一位触发器的设计方法设计控制器。
ASM图
1) 根据 ASM图写出各级触发器的激励函数
2)画出控制器的电路图
(3)公路上无车,或有车,且公路通车时间超过最长时间,则主干道交通灯由 红 → 绿,公路交通灯由 绿 → 黄 → 红 ;
二、用 GAL实现数字系统例,用 GAL16V8实现交通灯管理系统。功能如下:
(1)公路上无车时,主干道 绿灯亮,公路 红灯亮 ;
(2)公路上有车时,传感器输出 C=1,且主干道通车时间超过最短时间,主干道交通灯由 绿
→ 黄 → 红,公路交通灯由 红 → 绿 ;
在主干道和公路的十字交叉路口,设置交通灯控制系统,
管理车辆运行。其示意图如下,在公路口设置传感器,当公路有车时,传感器输出 C=1。主干道车辆通车具有优先权。公路无车时始终保持主干道车辆畅通,
主干道 绿 灯亮,公路 红 灯亮。当公路上有车时,并且主干道通车时间超过最短时间,主干道交通灯由 绿 经 黄 变 红,公路交通灯由红 变 绿 。若公路继续有车要求通行时,其 绿 灯可以继续亮,但最长时间被限定,这里假设公路 绿灯亮的最长时间等于主干道 绿 灯亮的最短时间,均设定为 16S,若计时到 E=1。 黄 灯亮的时间设定为 4S,若计时到 F=1,定时器由启动信号 S=1开始计时。
交通灯控制系统的功能归纳如下:
(1)公路上无车时,主干道 绿灯亮,公路 红灯亮 ;
(2)公路上有车时,传感器输出 C=1,且主干道通车时间超过最短时间,主干道交通灯由 绿 → 黄 → 红,
公路交通灯由 红 → 绿 ;
(3)公路上无车,或有车,且公路通车时间超过最长时间,则主干道交通灯由 红 → 绿,公路交通灯由 绿 → 黄 → 红 ;
C:传感器; E:通车时间为 16S; F:通车时间为 4S。
S:定时电路的启动信号。
1、导出 ASM图
2、系统初始结构图及细化结构图
3、列出处理器的明细表
4、设计处理器
1)根据 ASM图写出 S
(启动信号)的表达式。
启动信号的电路图
2)交通灯译码电路的逻辑方程译码输出电路
3)、定时器的设计由于 E和 F的定时长度分别为:
16S和 4S。因此,设计定时器时可采用 74161芯片实现。其电路图如下:
处理器的电路图
5、控制器的设计
1)选择设计方法采用每态一位触发器来设计。
2)选择的器件采用 DFF实现。
3)设计的思路根据 ASM图导出 DFF的激励函数。
ASM图
4)画出控制器的电路图
6、总体电路图交通灯控制系统电路图
7、采用一片 GAL16V8芯片实现交通灯的控制器、启动信号等部件。下面给出 GAL16V8的管脚定义图如下:
8、书写程序
NAME TRAFFICCONTROL;
PARTNO;
REV V1.0;
DATE X/X/X;
DESIGNER XXX;
COMPANY NUPT ;
ASSEMBLY;
LOCATION;
/*INPUT PIN*/
PIN[1,2,3,4,5,9]=[CLK,C,QA,QB,QCC,CLR];
/*OUTPUT PIN*/
PIN[19,18,17,16,15,14,13,11]=[Q0,Q1,Q2,Q3,E,F,S,OE];
/*REGISTER INPUT SIGNAL*/
Q0.D=!CLR#(CLR&(Q0&!C#Q0&!E#Q3&F));
Q1.D=CLR&(Q0&C&E#Q1&!F);
Q2.D=CLR&(Q1&F#Q2&C&!E);
Q3.D=CLR&(Q2&E#Q2&!C#Q3&!F);
/*START SIGNAL*/
S= Q0&C&E#Q1&F#Q2&!C#Q3&F;
/*TIMING*/
F.D= Q1&QA&QB&!F#Q3&QA&QB&!F#!S&F;
E.D=Q0&QCC&!E#Q3&QCC&!E#!S&E;
/*END*/
9,总的电路图总的电路图