数据总线的宽度是16位,由带有3态逻辑输出的门线路或触发器线路提供数据来源,如图5.14所示。数据总线通过双向3态逻辑门线路74LS245被划分成两段,分别被称为内部数据总线IB和外部数据总线OB


图5.14 数据总线的构成和数据来源

  外部数据总线OB与静态主存储器16位的数据入/出管脚连接,和2路串行接口Intel 8251的8位的数据入/出管脚连接,串行接口使用外部数据总线的低8位。主存储器和2路串行接口向数据总线送数据,都是由他们的片选信号/CS为低来控制的。

  请大家注意,可以向外部数据总线送数据的还有DIO部件(2片 74LS245),当控制信号/MIO和/WE都为低电平时,内部数据总线上的内容将传送到外部数据总线,提供出用于写主存储器或串行口的数据,此时主存储器或串行口必有一个处于写操作状态。

  内部数据总线IB,可以接收5路数据来源,包括:

  指令寄存器的低8位的内容,可以是I/O端口地址或相对变址的变址偏移量,送到运算器的输入端,经ALU送地址寄存器或完成寻址计算;

  8位的程序状态字(P2,P1,P0,INTE,S,V,S,C),用于在响应中断时保存现场操作,即将其写入堆栈;

  运算器ALU的输出,用于指示灯显示,或将其写入主存储器、串行接口;

  手拨开关的状态内容,用于给ALU提供手拨数据内容或地址内容;地址可以经ALU送地址寄存器,或把手拨微指令地址直接送到Am2910的输入端;

  中断向量,用于把一个十六进制的常数0F8作为高12位拼接上低4位上的中断优先级(0 P2 P1 P0)以形成16位的中断向量;

  请大家注意,可以向内部数据总线送数据的还有DIO部件(2片 74LS245),当控制信号/MIO为低电平和/WE为高电平时,外部数据总线上的内容将传送到内部数据总线,这是从主存储器或串行口读来的数据,此时主存储器或串行口二者必有一个处于读操作状态。

  DIO部件的作用,主要是保护CPU部分的线路安全。它隔断内、外部数据总线的直接连接,当进行扩展内存容量或增加新的接口芯片的教学实验时,扩展用到的芯片都接在外部数据总线上,很可能出现接线等错误,DIO部件可以有效地防止这些错误烧坏CPU部分的芯片。DIO部件的用到的两个控制信号是/MIO和/WE,/MIO为高电平,它的两个方向上的数据线都处于高阻态,相当于DIO部件处于断开状态,使内、外部数据总线处于断开状态。/MIO为低电平,DIO部件处于工作状态,它把一个方向来的数据传送到另一个方向的数据线上,传输方向由/WE信号决定,/WE为低,把内部数据总线的内容送到外部总线,/WE为高,把外部数据总线的内容送到内部总线。

  向内部数据总线提供数据来源的5个部件的控制信号已在图5.14中表示出来,这些控制信号由3-8译码器(DC1)芯片提供,该译码器译码的控制信号G1是(/MIO或WE),即仅在/MIO为高(DIO不工作)或者/WE为低(DIO不是从外部总线向内部总线传送数据)时,译码器正常译码,会从5路数据来源中选择一路送内部总线,否则内部总线只能接受外部总线送来的数据。

  图纸中看得到的、可以从内部数据总线接收数据的部件共8个,包括:运算器(通过D输入端),指令寄存器(IR),控制存储器写入用到的4个16位的寄存器(LDR0,LDR1,LDR2,LDR3),8位的程序状态字(P2,P1,P0,INTE,S,V,S,C,中断返回时恢复现场),A m2910芯片(10位的微指令地址)。其中有5路的控制信号由一片3-8译码器(DC2)芯片提供,其中另外3路(运算器,程序状态字,A m2910芯片)的接收单独解决。