【计算机组成与体系结构Ⅰ】实验2 数据通路组成实验

一、实验目的

  1. 熟悉模型计算机的数据通路;
  2. 锻炼分析问题与解决问题的能力,在出现故障的情况下,独立分析故障现象,并排除故障。

二、实验设备

  1. TEC-4计算机组成原理实验仪一台;
  2. 导线若干。

三、实验电路

    附图中示出了数据通路实验电路图。该数据通路的一部分是通用寄存器堆RF(寄存器组)与ALU、暂存寄存器连接在一起形成的。通用寄存器堆连接算术逻辑运算模块,本实验涉及其中的操作数寄存器DR2。

    DR2在运算器的实验中使用过。通用寄存器堆RF(U32)由一个ISP1016实现,功能上与两个4位的MC14580并联构成的寄存器堆类似。RF内含四个8位的通用寄存器R0、R1、R2、R3,带有一个写入端口和两个输出端口,从而可能同时写入一路数据,读出两路数据。写入端口取名为WR端口,连接一个8位的暂存寄存器(U14)ER,这是一个74HC374。输出端口取名为RS端口(B端口)、RD端口(A端口),连接运算器模块的两个操作数寄存器DR1、DR2。RS端口(B端口)的数据输出还可通过一个8位的三态RS0(U15)直接向DBUS输出。

双端口的通用寄存器堆模块的控制信号中,RS1、RS0用于选择从RS端口(B端口)读出的通用寄存器,RD1、RD0用于选择从RD端口(A端口)读出的通用寄存器。

而WR1、WR0则用于选择从WR端口写入的通用寄存器。WRD是写入控制信号,当WRD=1时,在T2上升沿时刻,将暂存寄存器ER中的数据写入通用寄存器堆中, WR1、WR0选中的寄存器;当WRD=0时,ER中的数据不写入通用寄存器中。LDER信号控制ER从DBUS写入数据,当LDER=1时,在T4的上升沿,DBUS上的数据写入ER。RS BUS#信号则控制RS端口到DBUS的输出三态门,是一个低有效信号。以上控制信号各自连接一个二进制开关K0-K15。

 

四、实验内容

(1)

将实验电路与控制台的有关信号进行线路连接,方法同前面的实验1。

(2)

用8位数据开关向RF中的四个通用寄存器分别置入以下数据:R0=0FH,R1=F0H,R2=55H,R3=AAH。

给R0置入0FH的步骤是:先用8位数码开关SW0-SW7将0FH置入ER;并且选择WR1=0、WR0=0、WRD=1,产生脉冲T2, 可将ER的数据置入RF。给其他通用寄存器置入数据的步聚与此类比。

(3)

分别将R0至R3中的数据读入到DR2寄存器中和DBUS上,观察其数据是否是存入R0至R3中的数据,并记录数据。其中DBUS上的数据可直接用指示灯显示,DR2中的数据可通过运算器ALU,用直通方式将其送往DBUS,在数据指示灯上显示。

(4)

根据图中数据通路的连接关系,从R0 读出数据送ALU的B端,从R1读出数据送ALU的A端,控制S2S1S0完成加法和直通运算。

 

五、实验步骤

(1)接线

IAR BUS#接VCC,禁止中断地址寄存器IAR向数据总线DBUS送数据。CER接GND,CEL#=VCC,禁止存储器工作。

M1(M2):当M1 (M2)= 0时,操作数寄存器DR1从寄存器堆RF接收数据。 M2接GND,使DR2选择寄存器堆RF作为数据来源。M1接GND, 使DR1选择寄存器堆RF作为数据来源

置DP=1,DZ=0,DB=0,使实验系统开机后处于单拍状态。

将开关IR/DBUS至于DBUS位置。

    K0-K15对应与图中数据通路中的控制信号相连接。记下对应关系。

合上电源。按CLR#按钮,使实验系统处于初始状态。

脉冲产生,按QD。

(2)向RF中的四个通用寄存器分别写入数据

根据数据在数据通路中的流向,正确控制数据通路中各部件。写出每一步中各个部件控制信号(Ki)取值。形成操作序列。

(3)从RF中的四个通用寄存器分别读取数据

分别将R0至R3中的数据读出到DR2寄存器中和DBUS上,观察其数据是否是存入R0至R3中的数据。形成操作序列。

根据数据在数据通路中的流向,正确控制数据通路中各部件。写出每一步中各个部件控制信号(Ki)取值。形成操作序列。

(4)从RF中的R0、R1寄存器中读取数据并做加法和直通运算

从R0读出数据送ALU的B端,从R1读出数据送ALU的A端,控制S2S1S0完成加法和直通运算。形成操作序列。

六、操作序列


(1)向RF中的四个通用寄存器分别写入数据

各开关所处状态的理由(以将OFH写入R0为例):

Step1,将SW的数据通到暂存器中

  1. 由于需要从SW处传入数据,因此系统总线中需要将SW_BUS置为有效(即令SW_BUS# =0),其余总线置为无效。
  2. 因为本实验不需要使用RAM,所以将CEL始终置为无效(即令CEL# =1)。
  3. 当LDER=l时,遇到上升沿后,系统会将数据总线DBUS上的数据打入暂存寄存器 ER。

Step2,将暂存器中的数据通到R0寄存器中

  1. 由于需要将数据存入R0寄存器中,因此令WR1=0,WR2=0,表示数据存入00寄存器(即R0)。
  2. 当WRD=1时,遇到上升沿后,系统会将ER暂存器中的数据写入由WR1、WR0选中的寄存器中(即R0)。

操作汇总:

操作内容

操作步骤

将OFH写入R0

置SW_BUS# =0,LDER=1,WRD=0

置WR1=0,WR0=0

将SW的数值设为0000 1111

按下QD

置WRD=1

再次按下QD

将FOH写入R1

置SW_BUS# =0,LDER=1,WRD=0

置WR1=0,WR0=1

将SW的数值设为1111 0000

按下QD

置WRD=1

再次按下QD

将55H写入R2

置SW_BUS# =0,LDER=1,WRD=0

置WR1=1,WR0=0

将SW的数值设为0101 0101

按下QD

置WRD=1

再次按下QD

将AAH写入R3

置SW_BUS# =0,LDER=1,WRD=0

置WR1=1,WR0=1

将SW的数值设为1010 1010

按下QD

置WRD=1

再次按下QD

(2)从RF中的四个通用寄存器分别读取数据
1:读出R0-R3的内容从DR2端经ALU输出

各开关所处状态的理由(以将R0的内容从DR2端经ALU输出为例):

  1. 当M2=0且LDDR2=1时,遇到下降沿后,DR2接收来自寄存器堆A端口的数据。
  2. 由于需要从ALU输出数据,因此系统总线中需要将ALU_BUS置为有效(即令ALU_BUS=1),其余总线置为无效(即令RS_BUS# =1,SW_BUS# =1)。
  3. 因为本实验不需要使用RAM,所以将CEL始终置为无效(即令CEL# =1)。
  4. 由于需要将R0寄存器的数据输出,因此令RD1=0,RD0=0,其中RD1和RD0表示从寄存器A端选择数据。

操作汇总:

操作内容

操作步骤

从A端读出寄存器R0的值

置RS_BUS# =1,SW_BUS# =1,
LDDR2=1,ALU_BUS=1

置RD1=0,RD0=0

按下QD

从A端读出寄存器R1的值

置RS_BUS# =1,SW_BUS# =1,
LDDR2=1,ALU_BUS=1

置RD1=0,RD0=1

按下QD

从A端读出寄存器R2的值

置RS_BUS# =1,SW_BUS# =1,
LDDR2=1,ALU_BUS=1

置RD1=1,RD0=0

按下QD

从A端读出寄存器R3的值

置RS_BUS# =1,SW_BUS# =1,
LDDR2=1,ALU_BUS=1

置RD1=1,RD0=1

按下QD


2:读出R0-R3的内容从寄存器B端口输出

各开关所处状态的理由(以将R0的内容从B端经RS0输出为例):

  1. 由于需要从RS输出数据,因此系统总线中需要将RS_BUS置为有效(即令RS_BUS# =0),其余总线置为无效(即令ALU_BUS# =0,SW_BUS# =1)。
  2. 因为本实验不需要使用RAM,所以将CEL始终置为无效(即令CEL# =1)。
  3. 由于需要将R0寄存器的数据输出,因此令RS1=0,RS0=0,其中RS1和RS0表示从寄存器B端选择数据。

操作汇总:

操作内容

操作步骤

从B端读出寄存器R0的值

置RS_BUS# =0,SW_BUS# =1,ALU_BUS=0

置RS1=0,RS0=0

无需按下QD,后者同理

从B端读出寄存器R1的值

置RS_BUS# =0,SW_BUS# =1,ALU_BUS=0

置RS1=0,RS0=1

从B端读出寄存器R2的值

置RS_BUS# =0,SW_BUS# =1,ALU_BUS=0

置RS1=1,RS0=0

从B端读出寄存器R3的值

置RS_BUS# =0,SW_BUS# =1,ALU_BUS=0

置RS1=1,RS0=1


(3)从RF中的R0、R1寄存器中读取数据,(R0为B端,R1为A端)并做加法和直通运算

各开关所处状态的理由如(2)中所示。

操作汇总:

操作内容

操作步骤

从B端读出寄存器R0的值并输向ALU

置RS_BUS# =0,SW_BUS# =1,ALU_BUS=0

置RS1=0,RS0=0

按下QD

从A端读出寄存器R1的值并输向ALU

置RS_BUS# =1,SW_BUS# =1,
LDDR2=1,ALU_BUS=1

置RD1=0,RD0=1

按下QD

R0值+R1值

置RS_BUS# =1,SW_BUS# =1,ALU_BUS=1

置S2=0,S1=1,S0=0(做加法)

直通R1值

置RS_BUS# =1,SW_BUS# =1,ALU_BUS=1

置RD1=0,RD0=1

置S2=0,S1=0,S0=1(做直通)

直通R0值

置RS_BUS# =0,SW_BUS# =1,ALU_BUS=0

置RS1=0,RS0=0

ALU中
S2、S1、S0的选择与对应的操作:

 

七、实验总结

调试中出现的问题:

1:当通过A端输出寄存器值的时候,最开始的S0、S1、S2的连线有错误,没有选择直通的操作序列,导致输出结果与写入数据的结果有差异。

2:当通过ALU计算R0值和R1值的求和结果的时候,S2、S1、S0忘记重新选择求和的操作序列,导致输出结果为直通的结果。

解决方法(针对问题序号):

1:将S2、S1、S0重新设置为0、0、1,然后重新观察输出的结果。

2:将S2、S1、S0重新设置为0、1、0,然后重新观察输出的结果。

实验心得:

  1. 将R0数据经过A口读出来并通过“数据指示灯”显示,设置控制信号的步骤:
    首先置LDDR2=1,M2接GRD接地,RD0=0,RD1=0。之后按QD,R0就被置入到了DR2中。之后置ALU_BUS=1,S2=0,S1=0,S0=1,此时ALU功能为“直通”,ALU将R0的数据输送到DBUS,此时数据指示灯显示R0的数据。
  2. 将R0数据经过B口读出来并通过“数据指示灯”显示,设置控制信号的步骤:
    置RS0=0,RS1=0,RS_BUS#=0,此时R0的通过B口传输至DBUS,此时数据指示灯显示R0的数据。
  3. 数据总线是CPU与内存或其他器件之间的数据传送的通道,其宽度决定了CPU和外界的数据传送速度。
  4. RF寄存器为双端口寄存器,在操作不同的存储单元的时候,可以同时进行写入和读取的操作。例如,经ER暂存器向R1写入数据,经RS0寄存器读出R0的数据。由于此时数据总线上只是涉及R0的值,而不涉及R1的值(R1的值通过ER和RF之间的数据线写入),因此数据总线上不存在多值的冲突,可以进行此类操作。
  5. 在本实验中,系统通过RS1、RS0控制B端的寄存器数值读取,通过RD1、RD0控制A端的寄存器数值读取。
  6. 在本实验中,寄存器中的数据可以通过A端被读取到DR2寄存器中,但是如果ALU的S2~S0的操作序列未选择为直通操作时,会导致DR2中的数据无法通过ALU直通到DBUS上,从而数据指示灯处显示有误。

八、课后思考题

根据数据通路图,说明ADD R2,R3(R2+R3-> R2)的执行过程(假设取指过程已完成)、数据通路的各部件的作用与操作序列。

执行过程:

  1. 从寄存器R2中读取数据,存放到ALU的DR2寄存器中。
  2. 从寄存器R3中读取数据,存放到ALU的DR1寄存器中。
  3. ALU对DR2和DR1中的数据进行加法运算,计算结果自动存入寄存器DR2中。
  4. 从寄存器DR2中读取数据,直通到DBUS中,并将数据存入暂存器ER中。

数据通路的各部件作用:

  1. DR2:存放R2的数据。
  2. DR1:存放R3的数据。
  3. ALU:对DR2和DR3中的数据做加法运算。
  4. RF:提供R2和R3的初始数据,把R2作为最终寄存器存放求和结果。
  5. ER:暂存DR2的数据,便于存放到R2中。

操作序列:

操作内容

操作步骤

从B端读出寄存器R3的值并输向ALU的寄存器DR1

置RS_BUS# =0,SW_BUS# =1,ALU_BUS=0

置RS1=1,RS0=1

按下QD

从A端读出寄存器R2的值并输向ALU的寄存器DR2

置RS_BUS# =1,SW_BUS# =1,
LDDR2=1,ALU_BUS=1

置RD1=1,RD0=0

按下QD

R0值+R1值,ALU自动存入寄存器DR2

置RS_BUS# =1,SW_BUS# =1,ALU_BUS=1

置S2=0,S1=1,S0=0(做加法)

直通DR2的数据,存入暂存器ER中

置RS_BUS# =1,SW_BUS# =1,
LDDR2=1,ALU_BUS=1

置S2=0,S1=0,S0=1(做直通)

置LDER=1

按下QD

将暂存器ER的值存入RF中的寄存器R2中

置RS_BUS#=1,SW_BUS# =1,ALU_BUS=0

置LDER=1

置WRD=1,WR1=1,WR0=0

按下QD

  • 6
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MorleyOlsen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值