第 11章 数字系统设计
§ 11-1 数字系统设计概述
§ 11-2 ASM图,MDS图以及 ASM图
至 MDS图的转换
§ 11-3数字密码引爆器系统设计
§ 11-4数字系统设计实例
小结
一, 数字系统基本组成
第一节 数字系统设计概述
控制器
电路
电脑
受控
电路
计数运算
逻辑运算
应答信号
控制信号
系统核心(最小)
输入
输出
接口
数据输出



数据输入
注,规模庞大并不意味是一个系统,如存储器,只是一个功能部件。也许
由几片 MSI构成的电路,包括控制器和受控器就是数字系统。
二, 传统数字系统设计方法
试凑法:由真值表、卡诺图、布尔方程,
状态表和状态图描述电路的功能
小规模 规模较大
试凑法:
凭借设计者的经验
试凑法:不合适
寻找更合适
的设计方法可以
三, 现代数字系统设计方法
从上至下( from top to down):
设计者从整个系统逻辑出发,进行最上层的系统设计,
而后按一定的原则将全局系统分成若干子系统,逐级向下
,再将每个子系统分为若干个功能模块、子模块、基本模块。
优点:
适合大规模数字系统系统
设计,使得设计步骤之间
相互联系越来越紧密、协
调,以求数字系统获得良
好的性能和正确的结果。
四、现代数字系统设计流程
计算机辅助分析与设计( CAD) 早期电子设计自动化( EDA)
近期 EDA工具
从上层系统级开始,对
电路功能描述,从上至
下地跨越各个层次完成
整个设计。
近几年来,划分、综合、验
证等都由 EDA完成。 EDA软
件还在优化、发展,使从上至
下的设计方法得到广泛的应用。
第二节 ASM图,MDS图以及 ASM图至
MDS图的转换
一,ASM图
ASM(Algorithmic State Machine)算法流程图
建立 ASM图是数字系统的关键步骤
1,ASM图符号
ASM图表面上和软件流程图相似,但 ASM图有时间序列,
即每隔规定的数量脉冲转到下一状态。
( 1)状态框
名称
101
IN ← X
AC ← 0
Sr = 1
000
( P)
001
( Q)
010
( R)
每隔规定的数量脉冲转
到下一状态
( 2)条件分枝框(判断框)
当控制算法存在分枝时,次态不仅决定于现态,还
与现态的外输入有关。表示条件分枝的符号用菱型表示。
X 1
0
(A)
(B)
(C)
X 1
0
(3)条件输出框
(P)
(Q)
(R)
X 1
0
Z1
Z2
上述三种符号构成了 ASM
图所需要的基本符号
2,ASM图的硬件实现
例 1:已知 ASM图如图所示,用 PLA阵列和一定数量的
D触发器实现
(P)
(Q)
(R)
X 1
0
Z1
Z2
00
10
11
( 1) ASM图有三个状态,
故有两个状态变量 Q2Q1
( 2)一个外输入 X、两个输出
Z1和 Z2,两个 D触发器。
( 3)下面分析状态转换表
现态 次态 输出
Q2 Q1 X Q2 n+1 Q1 n+1 Z1 Z2
0 1 x
0 0 10 0 0
1 0 x
1 1 x
1
0
1
0
0
0
10
0
0
输出方程:
XQQXPZ
QQPZ
122
121
)(
)(
??
??
1
0
1
0
0
0
10
0
0
驱动方程:
XQQDQ
QQDQ
n
n
121
1
2
122
1
2
??
??
?
?
由此可得 PLA硬件逻辑图
二,MDS图
MDS图与状态图十分相似,且扩展了状态图的功能,又简练了
状态图。 MDS图表现设计过程时,既方便清晰又具有较大的灵活性。
1,MDS图符号
Si 表示状态图
Si Sj
只要时钟 CP的有效沿到来,表示状态 Si无条件转换到状态 Sj
只要时钟 CP的有效沿到来,表示状态 Si在条件 E下转换到状态 Sj
E可以是积项,布尔表达式等。
Si Sj
E
Si Z↑ 表示进入状态 Si时,输出 Z变成有效
Si Z↓ 表示进入状态 Si时,输出 Z变成无效
Si Z↑↓ 表示进入状态 Si时,输出 Z有效;退出时,输出 Z无效
Si Z↑↓=Si?E 如果条件 E满足,进入状态 Si时,输出 Z有效;退出时,输出 Z无效
2,状态图到 MDS图 这是一个莫尔型电路,三个状态 A,B,C和
输出 Z1Z2依次为 01,11,00。这说明:
A态到 B态时,Z1由 0变 1,Z1有效;
B态到 C态时,Z1由 1变 0,Z1无效。
Z1↑↓
同理:
C态到 A态时,Z2由 0变 1,Z2有效;
B态到 C态时,Z2由 1变 0,Z2无效
Z2↑
Z2↓
加了三个输入 X1,X2,X3的
情况。
现在再考虑有条件输出的情况:
有三个状态 A,B,C,当
输入为 1时,输出为 1,A→B;
当输入为 0时,输出为 0,A→C
(输入 /输出)
到 MDS图
三,ASM图至 MDS图的转换
转换原则:
1.ASM图的状态框对应
MDS图中的 Si。 (A)
A
(B) B
ASM图 MDS

2.ASM图的判别框构成
MDS图的分支。
START?
YES
NO START
START
计数器复位
执行
CR↑↓
OPR↑↓
3.控制器的输出是为实现状态框的操作而发出的信息,对应
MDS图中状态圈外侧的输出。
再举一例:
4.ASM图的条件输出与 MDS图条件输出相对应。
注,A态返回到 A态时,
有一条件输出:当 X=0,
CP=0时,RUN有效。
到 MDS图
第三节 数字密码引爆器系统设计
下面讨论一个数字密码引爆系统,用它将从
上至下的设计概念融会贯通。
设计步骤:
1.系统级分析,确定初步方案 ;
2.将设计细分,进行模块划分 ;
3.VHDL综合,
一、数字密码引爆器顶层设计
1.顶层方案设计
系统密码采用三个十进制数字,当三个输入正确,就可引爆;
当输入不正确或密码位数不对时引爆,产生错误,系统报警。
输入电路:
( 1)开始输入数字密码前,
需设置一个 READY键,表示电路
系统准备就绪,可以输入密码。
( 2)当引爆事件发生后,应
重新恢复到等待状态,需设置一
个 WAIT_T键。
( 3)若没有正确使用密码,
产生报警信号,这时再按 READY
和 WAIT_T键不起作用,必须内部
保安人员重新设置到等待状态,
需重新设置一个 SETUP键。
( 4)密码正确输入以后,设置一个引爆按键 FIRE
( 5) 十个数字按键 A0-A9作为密码输入,密码采用三位且设
置在内部,OSCC为 1MHz输入。
输出电路:
( 1)当密码正确输入并点
火后,输出一绿灯信号 LT。
( 2)当密码操作有误,输
出一红灯信号,并伴随报警装
置 LB鸣叫。
注,在按 WAIT_T后进入等待
状态,LT,HT和 LB皆不工作。
( 3)设置一七段显示数码管显示输入的密码数据。
引爆过程如下:
( 1)按 READY键,启动
引爆程序 — 系统处于准备状态 。
( 2)依次键入 三个十进制数字 。
( 3)若按上述操作正确后,启
动 FIRE,LT绿灯亮。
按错密码按上述操作时,
报警喇叭 LB响,RT红灯亮。
( 4)引爆正确后,需按 WAIT_T键,使系统进入等待状态。
报警状态下,按 READY和 WAIT_T均不起作用,按另
外的内部键 SETUP,使系统进入等待状态。
( 5)按错密码可在按 FIRE前,按 READY键重新启动引爆程序。
二、顶层实体的 VHDL程序
第一步:为系统建立系统名。
第二步:描述顶层的接口,包
括输入信号、输出信号、信号
方向、数据类型等。
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY fire_d IS
END fire_d;
系统建立系统名
fire_d
PORT(A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,WAIT_T:IN std_logic;
FIRE,READY,SETUP,OSCC:IN std_logic;
LT,RT,LB,A,B,C,D,E,F,G:OUT std_logic);
三、顶层结构体的设计及 VHDL实现
从上至下的精神是将系统划分为几个部分,如控制部分
和受控部分,受控部分又靠各种模块来实现。
( 1) A0-A9十个
数字进入系统编码器
变成 BCD码,并显示
( 2)密码是内部
设置为 Z1,Z2,Z3,
它是串行输出,所
以用一 4乘 3选 1电路
构成。
( 3)密码需和键入的 BCD码比较,需设一个 4比特比较电路。
比较结果送入控制器。
至于 READY、
FIRE等输入信号,
可直接送入控制
器,由于按键产
生引起电平抖动,
最好加入同步消
抖电路。
由于同步消抖输
入是低电平,又
由于按键产生是
高电平,所以要
加入一个反相器。
4乘 3选 1的地址由计数器控制,计数器由控制器控制。
当 WAIT_T有
效时,提供
WAIT_L信号
封锁 RS触发器,
使 LT,RT和
LB无效。
系统使用 1MHz信号,经过分频得 OSC2为 1000Hz,
再分频为 4Hz( OSC1)提供给系统。
至此顶层模块划分完成,如上图所示。
VHDL结构描述程序如下:
ARCHITECTURE fire_d_arc OF fire_d IS
COMPONENT se7 IS
PORT(A,B,C,D:IN std_logic;
E,F,G,H,I,J,K:OUT std_logic);
END COMPONENT;
COMPONENT kcom IS
PORT(A,B,C,D:IN std_logic;
E,F,G,H:IN std_logic;
T:OUT std_logic);
END COMPONENT;
COMPONENT kbian IS
PORT(A,B,C,D,E,F,G,H,I,J,IN std_logic;
T,X,Y,Z,W:OUT std_logic);
END COMPONENT;
COMPONENT k4mux IS
PORT(A,B:IN std_logic;
C,D,E,F:OUT std_logic);
END COMPONENT;
SIGNAL A11,A21,A31,A41,A51,A61,A71,A81,A91,B1,B2,B3,B4:std_logic;
SIGNAL Dep,E1,E2,E3,E4:std_logic;
BEGIN
U29:kbian PORT MAP(A01,A11,A21,A31,A41,A51,A61,A71,A81,A91,
DATA_IN1,B1,B2,B3,B4);
U30:kcom PORT MAP(B1,B2,B3,B4,E1,E2,E3,E4,Dep);
U32:k4mux PORT MAP(CT0,CT1,E1,E2,E3,E4);
U41:se7 PORT MAP(B1,B2,B3,B4,A,B,C,D,E,F,G);
END fire_d_arc;
二、次级电路分析与 VHDL实现
1.受控部分电路设计
主要包括编码电路、消抖同步电路、比较电路、
预置码电路、计数器选择电路和输出电路等。
( 1)编码电路
编码电路是 10线至
4线的 BCD编码器,又
因前级消抖电路输出为
高电平,所以 A01—
A91进入编码器为高电
平。
输出 B4为 MSB,B1为 LSB。 DATA_IN1为当按下按键时,为
高电平。
PORT(A,B,C,D,E,F,G,H,I,J:IN std_logic;
T,X,Y,Z,W:OUT std_logic);
ENTITY kbian IS
END kbian;
(2)消抖同步电路
SETUP,WAIT_T、
READY,FIRE和 A0-A9
都需要一同步消抖电路,
如右图所示:
VHDL程序如下:
ENTITY ksy IS
END ksy;
PORT(A,B:IN std_logic;
C:OUT std_logic);
A
B
C
ARCHITECTURE ksy_arc OF ksy IS
COMPONENT knand2 IS
PORT(A,B:IN std_logic;
C:OUT std_logic);END COMPONENT;
SIGNAL T1,T2,T3,T4,T5,T6:std_logic;
BEGIN
T1
T2
T3
T4
T5
T6
U0:knand2 PORT MAP(A,T1,T2);
(3)比较器电路
( A)比较器的输入来自编码器
的输出 B1至 B4的四位数据。
( B)比较器的另外输入来自预
置密码电路的输出 E1至 E4的四位
数据。
( C)结果相等时,输出 Dep为 1;不等时,输出 Dep为 0。
PORT(A,B,C,D,E,F,G,H:IN std_logic;
T:OUT std_logic);
ENTIY kcom IS
END kcom;ARCHITECTURE kcom_arc OF kcom IS
BEGINPROCESS(A,B,C,D,E,F,G,H)
BEGINIF A=E AND B=F AND C=G AND D=H THEN
T<=1;ELSE
T<=0;
END IF;
2.控制器电路设计
控制器在系统中只占硬件的很小一部分,因此对
控制器的设计不是从如何最简化入手,而是着重
考虑逻辑清楚,便于修改。
( 1)建立等待状态:
系统处于引爆后、上电状
态时,系统还未进入正常的等
待状态。此时系统不接受除
WAIT_T外的任何信号,当键入
WAIT_T后,系统进入等待状态,
输出 WAIT_L信号,将引爆指示
灯 LT和报警指示灯 RT以及报警
器切断,该状态可用右图
( ASM)表示。
( 2)准备操作状态:
当 WAIT_T按下以后,进入准备操作
状态。此时 READY信号来到后,为计数
器清零 RESET_CNT,转入第三状态。
输入密码状态
3.输入密码状态
进入此状态后,EN有效,允许密码和 FIRE输入。
收前三个信号时先判断是否为数据信号,
若是数据信号,使计数器加 1,选出对应的
预置码进行比较,若三个数全正确,转到
下一状态。
若三个数有一个不正
确,转入报警状态。
4.引爆操作状态
若有信号键入,判断是数据信号还是 FIRE:
( 1)若是 FIRE信号,则发出 SLT
信号,LT亮,密码引爆器被引爆。
( 2)若是数据信号,则进入报警
状态,此时如果启动 READY键,
系统发出 RESET_P信号返回到输入
密码状态。
输入密码
( 3)报警状态有两种情况,
(A)没按 FIRE键时,可按 READY键
返回到输入密码操作状态 ;
(B)按 FIRE键后,必须按 SETUP键
返回到等待操作状态状态。
输入密码
等待状态
将 ASM图改成 MDS图
得到 6个激励方程和有关输出方程如下:
控制器的部分 VHDL程序如下:
WHEN QA=>
H<=‘0’; --时钟信号 CNP置 0
IF A=‘0’THEN --WAIT_T没按下
current_state<=QA;
ELSE --WAIT_T按下
current_state<=QB;M<=‘0’;L<=‘1’;K<=‘1’;
END IF;
PACKAGE state_pack IS
TYPE state IS(QA,QB,QC,QD,QE,QF);
END state_pack;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE work.state_pack.all;
ENTITY controll IS
PORT(A,B,C,D,E,,F,G,OSC2:IN std_logic;
H,I,J,K,L,M:OUT std_logic);
END controll;
A
B
C
D
E
F
G
H
I
J
K
L
M
ARCHITECTURE controll_arc OF controll IS
SIGNAL current_state:state_pack:=QA;
BEGIN
PROCESS
BEGIN
WAIT UNTILL OSC2=‘1’ AND
OSC2’EVENT;
M<= ‘1’;
CASE current_state IS
若 WAIT_T(A)有效,进入 B状态,公式
( 2)相对应; L( SLT)和 K( SLA)置
1,公式( 11)和( 12) ;M( WAIT_L)
置 0,公式 (8)的第一个乘积项与之相对应。
第四节 数字系统设计实例
这一节,介绍三个系统设计实例,以便更好掌握现
代数字系统设计方法。
1.汽车尾灯控制系统 ;
2.四路口交通灯控制系统 ;
3.自动售货机控制系统。
小 结
1.数字系统由控制电路和受控电路组成,控制电路受同一时钟
的控制。
2.ASM表面上与通常的软件流程图非常相似,但 ASM图表示事
件的精确时间间隔序列,而一般的软件流程图没有时间的概念。
MDS图与状态图十分相似,但 MDS图比状态图简练,并且扩
展了状态图的功能,用 MDS图表示控制器的控制过程时,既
方便清晰有具有较大的灵活性。
ASM图或 MDS图的建立是整个过程中的关键步骤,这一步
解决的好,以后各个步骤就比较容易解决。用 ASM图或
MDS图描述一个数字系统不是唯一的,应选择最佳的 ASM
图或 MDS图方案。
3.从上至下的设计方法是从宏观的总体要求入手,尽可能将
数字系统划分为较简单的较小的子系统,再通过逻辑接口设
计用各种划分的逻辑电路实现所要求的数字系统
4,数字系统的设计分为系统级设计和逻辑级设计两个阶段。
系统级设计即原理性设计,是数字系统设计的关键步骤,
也是最困难的、最具有创造性的一步。画出 ASM图或 MDS
图是完成系统级设计的标志。
5.系统级设计的具体步骤是:
(1)在详细了解设计任务的基础上,确定顶层系统的方案;
(2)列出各个输入变量;
(3)列出各个输出变量;
(4)给定时钟周期 T;
(5)画出 ASM图或 MDS图。
作 业
9-1,9-3,9-5,9-6,9-7,9-9,9-11
?? ?÷?? à? ê| oí í? ?§?? μ?
D? D? £?