你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

单片机的三总线结构详述

[复制链接]
gaosmile 发布时间:2020-7-23 22:04
1
总线概述

! @7 e: X! s6 b6 y% y1 O. H( o计算机系统是以微处理器为核心的,各器件要与微处理器相连,且必须协调工作,所以在微处理机中引入了总线的概念,各器件共同享用总线,任何时候只能有一个器件发送数据 (可以有多个器件同时接收数据) 。

: J# _" ~4 e9 e7 p( F
计算机的总线分为控制总线、地址总线和数据总线等三种。而数据总线用于传送数据,控制总线用于传送控制信号, 地址总线则用于选择存储单元或外设。
: Q- X6 K  S2 A  ]! U5 ~

7 J1 x/ L% \2 F  [- K
2
1 k" T( f* Z: L
单片机的三总线结构

) Y' S. T; K( ?51系列单片机具有完善的总线接口时序,可以扩展控制对象,其直接寻址能力达到64k (2的16次方) 。在总线模式下,不同的对象共享总线,独立编址、分时复用总线,CPU通过地址选择访问的对象,完成与各对象之间的信息传递。
& F5 y$ L1 C$ g; o6 j3 C5 T5 q9 [
3 l0 d- A, s: d9 o+ A- ?4 w

, q* i1 G! t3 b 微信图片_20200723215915.jpg
( w0 R5 r) X  V4 O
  • 数据总线:51单片机的数据总线为P0口,P0口为双向数据通道,CPU从P0口送出和读回数据。
    7 r# {6 L0 `2 l5 ^5 R9 j0 }6 b
  • 地址总线:51系列单片机的地址总线为16位。为了节约芯片引脚,采用P0口复用方式,除了作为数据总线外,在ALE信号时序匹配下,通过外置的数据锁存器,在总线访问前半周期从P0口送出低8位地址,后半周期从P0口送出8位数据。高8位地址则通过P2口送出。
    7 U! f  O( R; H) d4 ^. K: C
  • 控制总线:51系列单片机的控制总线包括读控制信号P3.7和写控制信号P3.6等,二者分别作为总线模式下数据读和数据写的使能信号。

    , {- U* b, |+ K5 l" q/ m0 O' Z3 k

* w1 l" m& L! o3 X

4 V3 K, E4 i/ j( q0 z
3
单片机总线时序分析

2 e% |8 j- ]4 j
51单片机总线时序如图2所示。从图2中可以看出,完成一次总线 (读写) 操作周期为T,P0口分时复用,在T0期间,P0口送出低8位地址,在ALE的下降沿完成数据锁存,送出低8位地址信号。在T1期间,P0口作为数据总线使用,送出或读入数据,数据的读写操作在读、写控制信号的低电平期间完成。
: O  S5 J; [+ z7 S3 J
5 H- N0 c7 K; l) \# f
( F, _$ |8 h3 r/ c: m
微信图片_20200723215919.jpg
! |; Y" o2 z% \需要注意的是,在控制信号 (读、写信号) 有效期间,P2口送出高8位地址,配合数据锁存器输出的低8位地址,实现16位地址总线,即64kB范围的内的寻址。
6 B. {: w! q% C" R' [. x- d2 m8 b由于CPU不可能同时执行读和写操作,所以读、写信号不可能同时有效。

% A1 i1 @0 ?2 m$ T3 K
! p$ {3 S" u5 i4 n! O% M
4
常见单片机编址电路
2 d4 B% a  _* S0 X
简单地址扩展

; v& c. @% K- O% |( b
51单片机的P2口可以直接作为高8位地址总线使用,在一些简单系统电路中,常使用P2口直接编址驱动。下面以使用数据缓冲器74LS273驱动数码显示为例,分析P2口编址驱动的静态数码显示电路的设计。一位LED数码显示单元电路如图3所示。
7 i! h% F0 Z1 P" `

: C, `2 ?) J7 V% n/ I& [
3 h3 g5 b0 q/ Y, x4 M9 o: i8 n$ j 微信图片_20200723215922.jpg
: m4 ]( f: G6 D0 P+ q: }. |7 X
& `' \! l8 B) g, Y! }WR与A8 (P2.0) 相或提供74LS273的时钟信号,当执行“MOVX @DPTR,A”指令时,地址信息由DPTR寄存器确定,会出现有效的写信号WR,只有当地址A8为满足“0”时,写信号才可以作为74LS273的时钟信号输入,完成数据锁存。

: L: P& b+ Z# X9 B* j4 mP2口为A8~A15的8位地址线,很容易扩展到8只LED数码管,WR信号分别与A8~A15按或关系连接,每位地址线均为低电平有效,即可实现8个有效地址。: a, V. G' [, V
该方案电路简单,但有效地址数太少,不适用于复杂系统设计。  j- Z1 o) U* o

+ e2 `/ r6 j. ]3 |# G$ G0 O
低8位地址锁存
; d" m/ Z8 ~9 e& n
通常的设计电路是使用8D锁存器74LS373实现地址锁存,74HC573与之逻辑功能相同,只是引脚布局不一样,使用74HC573布线更容易。74LS373真值表如图4所示。
8 I: g2 h& j5 z/ m7 z

/ u3 b0 J2 N* n) m$ c1 J: `/ h

; K2 P8 Q& }! ?  V, l( M
微信图片_20200723215925.jpg
+ @; t% j% _7 b% K  U: W7 n) y: C# B- _4 w
在输出允许OE为L、控制使能LE为H时,输出为跟随状态;OE为L、LE为L时,输出为保持状态。地址锁存电路如图5所示。OE接地,LE接单片机的ALE脚将产生满足时序的低8位地址信号。

- q* x9 i# H/ K: _1 D. N* w执行以下三条指令会得到如图6所示的时序图:

2 [( }: v1 n; `$ M6 [
  • MOV DPTR,# 0FF55H;低8位地址为55H。
  • MOV A,# 0AAH;待发送数据0AAH→A (55H取反)。
  • MOVX,@DPTR,A;A中的0AAH送地址为0FF55H的对象中会。
    7 \2 U" p& @, H2 l# [$ ^7 U

    ' W* U4 t+ S" p9 ~4 |: V7 U
    $ E) a) ?' ~% E! Q1 x" i1 _5 T8 l/ r( g
微信图片_20200723215928.jpg , H, g) P) T  W& T) \7 \+ u
从图6中可以看出,P0口先送55H,在ALE下降沿实现地址锁存,随后送出数据0AAH,在WR有效 (低电平) 期间锁存器输出低8位地址55H,P0口送出数据0AAH。
" M! M& g, l: s
带译码器的复杂地址接口电路

0 K8 l  C$ X% Y% R6 d% k- i; j9 C
理论上高8位地址线可以产生256个有效地址,如何实现地址“扩展”呢? 地址扩展准确描述是地址译码,例如3根地址线可以译码成8个地址,4根译码成16个有效地址。这里选择3-8译码器实现地址译码,电路图以及对应的编址如表1所示。
+ b2 F. M! o8 {7 F$ w2 M. K7 d
. z+ Q* |0 \) E0 U
微信图片_20200723215931.jpg
; I: A8 T9 [% @& |
) N9 U3 l# G1 k# j3 ?
# C0 S. R) U  b) i
5
单片机总线编址电路实例

5 a1 u! o! Y3 {带总线扩展接口的单片机系统,包括外部32k RAM扩展、LCD1602接口、输入输出口。带编址扩展的单片机最小系统电路如图7所示。+ s" v, U+ c  f/ n$ S
, l; C7 a1 Q- ~8 }+ {
/ _$ k6 e: d+ d: X; O
微信图片_20200723215934.jpg & g% `) w: i1 P* ?' T" {

8 |4 E  p$ T+ m: q6 ]& T使用74HC573锁存低8位地址;74138实现8个地址扩展,74138的A、B、C接A8~A10,E1接A15, E2、E3接地常有效,得到0F8FFH到0FFFFH8个地址 (无关位用1表示) 或者8000H到8700H (无关位用0表示) 。32k RAM接口如图8所示。
) O# T6 c2 P* ~7 P/ q: O

! E2 r3 _5 d0 N0 j

7 Q. R2 V- Y6 \/ d1 O4 C0 ~5 I
微信图片_20200723215936.jpg
  s$ h( W$ u  {8 r2 x& M& a
& y% l+ l9 ?2 Z# t7 Y' _7 OD0~D7接数据总线P0口,地址线A0~A14接单片机地址总线低15位,单片机地址线A15接RAM片选信号,低电平有效,这样RAM地址分配从0000H到7FFFH,与74138译码地址不冲突。LCD1602接口电路如图9所示。
( m' V1 K& N0 ~4 k

. }" @8 q3 |" w% d+ ?
! U; X! s4 A- P
微信图片_20200723215939.jpg
$ a% M$ m# g. p; R6 ]& B9 d9 D* [! S& p5 ]* _
RS、RW分别接A12、A13,使能信号编址为Y7,这样LCD的四个驱动地址 (数据读写和命令读写) 为0CFFFH到0FFFFH (无关位为1) 或者8700H到0B700H (无关位为0)。有些时候单片机引脚不够用,还要进行扩展,输入口扩展电路如图10所示。

! v# F; O) U7 Q! a

" i4 h. M7 ]: t7 j% |
微信图片_20200723215942.jpg " T2 C! n; ]5 \9 \

- i& b' Z" `5 i# K% c9 J利用74HC573 (74LS373) 的高阻态功能,将其输出Q0~Q7接P0口,在满足总线地址读操作中,可以把输入InPORT的数据读入单片机的累加器,地址为0F8FFH或8000H。输出口扩展电路如图11所示。
! N% f4 }2 @, F  i6 V/ m2 j4 `8 _

. e0 z- y$ M" k" E7 H
7 j2 V- u4 n: p* e& Y! u! B' \1 c
微信图片_20200723215945.jpg 6 R9 m& q& ^& l0 p1 ?$ r7 `
2 S4 q0 i2 I7 e1 l9 ?+ s
利用74LS273数据锁存功能,在满足总线地址写操作中,可以把单片机累加器里的数据写入273锁存输出,地址为0F8FFH或8000H。由于所用控制总线不同,可以和输入共用地址。

& e2 f. X( B$ Y7 {# h, O( S& l
4 `% X" \# U+ G3 C% q  d
6
结束语
; Q; l- e3 @  u% b. o: j1 }
总线扩展是设计单片机控制电路必须掌握的技术,大量的特殊功能IC都支持总线接口, 如ADC0809,TLC7528,DDS器件AD9851等。# Y5 x. k9 v" t, z- |  T
  @( @  N7 G& t  m  N$ P5 F
总线接口的要点就是在严格的控制时序下,总线被分时复用,以实现复杂系统设计。

- M% W5 G; {( n6 O. o
赞 收藏 评论0 发布时间:2020-7-23 22:04

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版