TEC4计算机组成原理实验系统教师指导书.docx
《TEC4计算机组成原理实验系统教师指导书.docx》由会员分享,可在线阅读,更多相关《TEC4计算机组成原理实验系统教师指导书.docx(47页珍藏版)》请在冰点文库上搜索。
TEC4计算机组成原理实验系统教师指导书
TEC—4计算机组成原理实验系统
教师实验指导书
清华大学科教仪器厂
2004年11月
目录
基本实验
运算器组成实验13
双端口存储器原理实验18
数据通路组成实验22
微程序控制器组成实验28
CPU组成和机器指令执行实验40
中断原理实验45
第三节双端口存储器原理实验
一、实验目的
(1)了解双端口静态随机存储器IDT7132的工作特性及使用方法。
(2)了解半导体存储器怎样存储和读出数据。
(3)了解双端口存储器怎样并行读写,产生冲突的情况如何。
二、实验电路
图7示出了双端口存储器的实验电路图。
这里使用了一片IDT7132(U36)(2048X8位),两个端口的地址输入A8—A10引脚接地,因此实际使用存储容量为256字节。
左端口的数据部分连接数据总线DBUS7—DBUS0,右端口的数据部分连接指令总线INS7—INS0。
一片GAL22V10(U37)作为左端口的地址寄存器(AR1),内部具有地址递增的功能。
两片4位的74HC298(U28、U27)作为右端口的地址寄存器(AR2H、AR2L),带有选择输入地址源的功能。
使用两组发光二极管指示灯显示地址和数据:
通过开关IR/DBUS切换显示数据总线DBUS和指令寄存器IR的数据,通过开关AR1/AR2切换显示左右两个端口的存储地址。
写入数据由实验台操作板上的二进制开关SW0—SW7设置,并经过SW_BUS三态门74HC244(U38)发送到数据总线DBUS上。
指令总线INS上的指令代码输出到指令寄存器IR(U20),这是一片74HC374。
存储器IDT7132有6个控制引脚:
CEL#、LRW、OEL#、CER#、RRW、OER#。
CEL#、LRW、OEL#控制左端口读、写操作,CER#、RRW、OER#控制右端口读、写操作。
CEL#为左端口选择引脚,低有效。
当CEL#=1时,禁止左端口读、写操作;当CEL#=0时,允许左端口读、写操作。
当LRW为高时,左端口进行读操作;当LRW为低时,左端口进行写操作。
当OEL#为低时,将左端口读出的数据放到数据总线DBUS上;当OEL#为高时,禁止左端口读出的数据放到数据总线DBUS上。
CER#、RRW、OER#控制右端口读、写操作的方式与CEL#、LRW、OER#控制左端口读、写操作的方式类似,不过右端口读出的数据放到指令总线上而不是数据总线上。
实验台上的OEL#由LRW经反相产生。
当CEL#=0且LRW=1时,左端口进行读操作,同时将读出的数据放到数据总线DBUS上。
当CER#=0且LRW=0时,在T3的上升沿开始进行写操作,将数据总线上的数据写入存储器。
实验台上已连接T3到时序发生器的T3输出。
实验台上OER#已固定接地,RRW固定接高电平,CER#由CER反相产生,因此当CER=1且LDIR=1时,右端口读出的指令在T4的上升沿打入IR寄存器。
存储器的地址由地址寄存器AR1、AR2提供,而AR1和AR2的内容根据数码开关SW0—SW7设置产生,并经三态门SW_BUS发送到数据总线时被AR1或AR2接收,三态门的控制信号SW_BUS#是低电平有效。
数据总线DBUS有5个数据来源:
运算器ALU,寄存器堆RF,控制台开关SW0—SW7,双端口存储器IDT7132和中断地址寄存器IAR。
在任何时刻,都不允许2个或者2个以上的数据源同时向数据总线DBUS输送数据,只允许1个(或者没有)数据源向数据总线DBUS输送数据。
在本实验中,为了保证数据的正确设置和观察,请令RS_BUS#=1,ALU_BUS=0,IAR_BUS#=1。
AR1的控制信号是LDAR1和AR1_INC。
当LDAR1=1时,AR1从DBUS接收地址;当AR1_INC=1时,使AR1中的存储器地址增加1;在T4的上升沿,产生新的地址;LDAR1和AR1_INC两者不可同时为1。
AR2的控制信号是LDAR2和M3。
当M3=1时,AR2从数据总线DBUS接收数据;当M3=0时,AR2以PC总线PC0—PC7作为数据来源。
当LDAR2=1时,在T2的下降沿,将新的PC值打入AR2。
三、实验设备
(1)TEC—4计算机组成原理实验系统一台
(2)双踪示波器一台
(3)直流万用表一只
(4)逻辑测试笔一支
四、实验任务
(1)按图7所示,将有关控制信号和和二进制开关对应接好,仔细复查一遍,然后接通电源。
(2)将数码开关SW0—SW7(SW0是最低位)设置为00H,将此数据作为地址置入AR1;然后重新设置二进制开关控制,将数码开关SW0—SW7上的数00H写入RAM第0号单元。
依此方法,在存储器10H单元写入数据10H,20H单元写入20H,30H单元写入30H,40H单元写入40H,共存入5个数据。
使用双端口存储器的左端口,依次读出存储器第00H、10H、20H、30H、40H单元中的内容,观察上述各单元中的内容是否与该单元的地址号相同。
请记录数据。
注意:
总线上禁止两个以上部件同时向总线输出数据。
当存储器进行读出操作时,必须关闭SW_BUS三态门!
而当向AR1送入地址时,双端口存储器不能被选中。
(3)通过双端口存储器右端口(指令端口),依次把存储器第00H、10H、20H、30H、40H单元中的内容置入指令寄存器IR,观察结果是否与
(2)相同,并记录数据。
(4)双端口存储器的并行读写和访问冲突测试。
置CEL#=0且CER=1,使存储器左、右端口同时被选中。
当AR1和AR2的地址不相同时,没有访问冲突;地址相同时,由于都是读出操作,也不冲突。
如果左、右端口地址相同且一个进行读操作、另一个进行写操作,则发生冲突。
要检测冲突,可以用示波器测试BUSYL和BUSYR插孔(分别是两个端口的“忙”信号输出)。
BUSY为0时不一定发生冲突,但发生冲突时,BUSY一定为0。
当某一个端口(无论是左端口还是右端口)的BUSY=0时,对该端口的写操作被IDT7132忽略掉。
五、实验步骤及实验结果
(1)接线
IAR_BUS#接VCC,ALU_BUS接GND,RS_BUS#接VCC,禁止中断地址寄存器、运算器、多端口寄存器堆RF向数据总线DBUS送数据。
AR1_INC接GND,M3接VCC,使地址寄存器AR1和AR2从数据总线DBUS取得地址数据。
CEL#接K0,LRW接K1,CER接K2,LDAR1接K3,LDAR2接K4,SW_BUS#接K5,LDIR接K6。
置DP=1,DB=0,DZ=0,使实验台处于单拍状态。
合上电源。
按复位按钮CLR#,使实验系统处于初始状态。
(2)向存储器写数,并读出进行检查。
1.令K0(CEL#)=1,K1(LRW)=1,K2(CER)=0,K3(LDAR1)=1,K4(LDAR2)=0,K5(SW_BUS#)=0,K6(LDIR)=0。
将IR/DBUS开关拨到DBUS位置,将AR1/AR2开关拨到AR1位置。
置SW7—SW0=00H,按一次QD按钮,将00H写入AR1,绿色的地址指示灯应显示00H。
令K0(CEL#)=0,K1(LRW)=0,K3(LDAR1)=0,按一次QD按钮,则将00H数据写入存储器的00H单元。
依次重复进行,在存储器10H单元写入数据10H,20H单元写入20H,30H单元写入30H,40H单元写入40H,共存入5个数据。
2.令K0(CEL#)=1,K1(LRW)=1,K2(CER)=0,K3(LDAR1)=1,K4(LDAR2)=0,K5(SW_BUS#)=0,K6(LDIR)=0。
将IR/DBUS开关拨到DBUS位置,将AR1/AR2开关拨到AR1位置。
置SW7—SW0=00H,按一次QD按钮,将00H写入AR1,绿色的地址指示灯应显示00H。
令K5(SW_BUS#)=1,然后令K3(LDAR1)=0,K0(CEL#)=0,K1(LRW)=1,则读出存储器的00H单元的数据,读出的数据显示在DBUS数据指示灯上,应为00H。
照此方法,可依次读出存储器单元10H、20H、30H、40H的数据。
(3)读出存储器的数据,写入IR。
令K0(CEL#)=1,K1(LRW)=1,K2(CER)=0,K3(LDAR1)=0,K4(LDAR2)=1,K5(SW_BUS#)=0,K6(LDIR)=0。
将IR/DBUS开关拨到IR位置,将AR1/AR2开关拨到AR2位置。
置SW7—SW0=00H,按一次QD按钮,将00H写入AR2,绿色的地址指示灯应显示00H。
令K4(LDAR2)=0,K2(CER)=1,K6(LDIR)=1,按一次QD按钮,则从右端口读出存储器的00H单元的数据,读出的数据写入指令寄存器IR,显示在IR数据指示灯上,应为00H。
照此方法,可从右端口依次读出存储器单元10H、20H、30H、40H的数据,写入指令寄存器IR。
(4)双端口存储器的并行读写和访问冲突测试
1.令K0(CEL#)=1,K1(LRW)=1,K2(CER)=0,K3(LDAR1)=1,K4(LDAR2)=0,K5(SW_BUS#)=0,K6(LDIR)=0。
将AR1/AR2开关拨到AR1位置。
置SW7—SW0=38H,按一次QD按钮,将38H写入AR1,绿色的地址指示灯应显示38H。
令K3(LDAR1)=0,K4(LDAR2)=1,K5(SW_BUS#)=0,将AR1/AR2开关拨到AR2位置。
置SW7—SW0=38H,按一次QD按钮,将38H写入AR2,绿色的地址指示灯应显示38H。
2.先令K2(CER)=1,K0(CEL#)=1,用示波器探头测试BUSYL插孔,BUSYL应为高电平。
保持K2(CER)不变,将K2(CEL#)拨动到0位置,示波器上的BUSYL信号从高电平变为低电平;再将K0(CEL#)拨到1位置,BUSYL信号从低电平变为高电平。
3.先令K0(CEL#)=0,K2(CER)=0,用示波器探头测试BUSYR插孔,BUSYR应为高电平。
保持K0(CEL#)不变,将K2(CER)拨动到1位置,示波器上的BUSYR信号也从高电平变为低电平;再将K2(CER)拨到0位置,BUSYL信号也从低电平变为高电平。
第四节数据通路组成实验
一、实验目的
(1)将双端口通用寄存器堆和双端口存储器模块联机;
(2)进一步熟悉计算机的数据通路;
(3)掌握数字逻辑电路中故障的一般规律,以及排除故障的一般原则和方法;
(4)锻炼分析问题与解决问题的能力,在出现故障的情况下,独立分析故障现象,并排除故障。
二、实验电路
图8示出了数据通路实验电路图,它是将双端口存储器实验模块和一个双端口通用寄存器堆模块(RF)连接在一起形成的。
双端口存储器的指令端口不参与本次实验。
通用寄存器堆连接运算器模块,本实验涉及其中的操作数寄存器DR2。
由于双端口存储器RAM是三态输出,因而可以将它直接连接到数据总线DBUS上。
此外,DBUS上还连接着双端口通用寄存器堆。
这样,写入存储器的数据可由通用寄存器堆提供,而从存储器RAM读出的数据也可送到通用寄存器堆保存。
双端口存储器RAM已在第三节做过介绍,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位的三态门RSO(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)TEC-4计算机组成原理实验仪一台
(2)双踪示波器一台
(3)直流万用表一只
(4)逻辑测试笔一支
四、实验任务
(1)将实验电路与控制台的有关信号进行线路连接,方法同前面的实验。
(2)用8位数据开关向RF中的四个通用寄存器分别置入以下数据:
R0=0FH,R1=0F0H,R2=55H,R3=0AAH。
给R0置入0FH的步骤是:
先用8位数码开关SW0—SW7将0FH置入ER,并且选择WR1=0、WR0=0、WRD=1,再将ER的数据置入RF。
给其他通用寄存器置入数据的步骤与此类似。
(3)分别将R0至R3中的数据同时读入到DR2寄存器中和DBUS上,观察其数据是否是存入R0至R3中的数据,并记录数据。
其中DBUS上的数据可直接用指示灯显示,DR2中的数据可通过运算器ALU,用直通方式将其送往DBUS。
(4)用8位数码开关SW0—SW7向AR1送入一个地址0FH,然后将R0中的0FH写入双端口RAM。
用同样的方法,依次将R1至R3中的数据写入RAM中的0F0H、55H、0AAH单元。
(5)分别将RAM中0AAH单元的数据写入R0,55H单元的数据写入R1,0F0H单元写入R2,0FH单元写入R3。
然后将R3、R2、R1、R0中的数据读出到DBUS上,通过指示灯验证读出的数据是否正确,并记录数据。
(6)进行RF并行输入输出试验。
1.选择RS端口(B端口)对应R0,RD端口(A端口)对应R1,WR端口对应R2,并使WRD=1,观察并行输入输出的结果。
选择RS端口对应R2,验证刚才的写入是否生效。
记录数据。
2.保持RS端口(B端口)和WR端口同时对应R2,WRD=1,而ER中置入新的数据,观察并行输入输出的结果,RS端口输出的是旧的还是新的数据?
(7)在数据传送过程中,发现了什么故障?
如何克服的?
五、实验步骤与实验结果
(1)接线
IAR_BUS#接VCC,禁止中断地址寄存器IAR向数据总线DBUS送数据。
CER接GND,禁止存储器右端口工作。
AR1_INC接GND,禁止AR1加1。
S2接GND,S1接GND,S0接VCC,使运算器ALU处于直通方式。
M2接GND,使DR2选择寄存器堆RF作为数据来源。
置DP=1,DZ=0,DB=0,使实验系统开机后处于单拍状态。
K0接SW_BUS#,K1接RS_BUS#,K2接ALU_BUS,K3接CEL#,K4接LRW,K5接LDAR1,K6接LDDR2,K7接LDER,K8接RS0,K9接RS1,K10接RD0,K11接RD1,K12接WR0,K13接WR1,K14接WRD。
合上电源。
按CLR#按钮,使实验系统处于初始状态。
(2)向RF中的四个通用寄存器分别置入数据
令K1(RS_BUS#)=1,K2(ALU_BUS)=0,K3(CEL#)=1,K4(LRW)=1,K5(LDAR1)=0,K6(LDDR2)=0,K8(RS0)=0,K9(RS1)=0,K10(RD0)=0,K11(RD1)=0,K12(WR0)=0,K13(WR1)=0,K14(WRD)=0。
a.令K0(SW_BUS#)=0,K7(LDER)=1。
置SW7—SW0为0FH,按一次QD按钮,将0FH写入暂存寄存器ER。
令K7(LDER)=0,K14(WRD)=1,K12(WR0)=0,K13(WR1)=0,按一次QD按钮,将0FH(在ER中)写入R0寄存器。
b.令K0(SW_BUS#)=0,K7(LDER)=1。
置SW7—SW0为F0H,按一次QD按钮,将0F0H写入暂存寄存器ER。
令K7(LDER)=0,K14(WRD)=1,K12(WR0)=1,K13(WR1)=0,按一次QD按钮,将F0H(在ER中)写入R1寄存器。
c.令K0(SW_BUS#)=0,K7(LDER)=1。
置SW7—SW0为55H,按一次QD按钮,将55H写入暂存寄存器ER。
令K7(LDER)=0,K14(WRD)=1,K12(WR0)=0,K13(WR1)=1,按一次QD按钮,将55H(在ER中)写入R2寄存器。
d.令K0(SW_BUS#)=0,K7(LDER)=1。
置SW7—SW0为0AAH,按一次QD按钮,将0AAH写入暂存寄存器ER。
令K7(LDER)=0,K14(WRD)=1,K12(WR0)=1,K13(WR1)=1,按一次QD按钮,将0AAH(在ER中)写入R0寄存器。
(3)分别将R0至R3中的数据同时读入到DR2寄存器中和DBUS上,观察其数据是否是存入R0至R3中的数据。
1.令K0(SW_BUS#)=1,K2(ALU_BUS)=0,K3(CEL#)=1,K4(LRW)=1,K5(LDAR1)=0,K6(LDDR2)=0,K7(LDER)=0,K10(RD0)=0,K11(RD1)=0,K12(WR0)=0,K13(WR1)=0,K14(WRD)=0。
将开关IR/DBUS至于DBUS位置。
令K1(RS_BUS#)=0,使寄存器堆中的数据送DBUS总线。
令K8(RS0)=0,K9(RS1)=0,R0中的数据通过B端口送DBUS,数据指示灯应显示0FH。
令K8(RS0)=1,K9(RS1)=0,R1中的数据通过B端口送DBUS,数据指示灯应显示0F0H。
令K8(RS0)=0,K9(RS1)=1,R2中的数据通过B端口送DBUS,数据指示灯应显示55H。
令K8(RS0)=1,K9(RS1)=1,R3中的数据通过B端口送DBUS,数据指示灯应显示0AAH。
2.令K0(SW_BUS#)=1,K1(RS_BUS#)=1,K3(CEL#)=1,K4(LRW)=1,K5(LDAR1)=0,K7(LDER)=0,K8(RS0)=0,K9(RS1)=0,K12(WR0)=0,K13(WR1)=0,K14(WRD)=0。
将开关IR/DBUS至于DBUS位置。
令K2(ALU_BUS)=1,使运算器ALU的运算结果送DBUS总线。
由于S2接GND,S1接GND,S0接VCC,ALU做直通运算,因此DBUS数据指示灯显示的是DR2寄存器的值。
令K10(RD0)=0,K11(RD1)=0,K6(LDDR2)=1,按一次QD按钮,R0中的数据通过A端口送入DR2,DBUS数据指示灯应显示0FH。
令K10(RD0)=1,K11(RD1)=0,K6(LDDR2)=1,按一次QD按钮,R1中的数据通过A端口送入DR2,DBUS数据指示灯应显示0F0H。
令K6(LDDR2)=1,K10(RD0)=0,K11(RD1)=1,按一次QD按钮,R2中的数据通过A端口送入DR2,DBUS数据指示灯应显示55H。
令K10(RD0)=1,K11(RD1)=1,K6(LDDR2)=1,按一次QD按钮,R3中的数据通过A端口送入DR2,DBUS数据指示灯应显示0AAH。
(4)将R0、R1、R2、R3中的数据依次送入存储器0FH、0F0H、55H、0AAH单元。
令K2(ALU_BUS)=0,K5(LDAR1)=0,K6(LDDR2)=0,K7(LDER)=0,K10(RD0)=0,K11(RD1)=0,K12(WR0)=0,K13(WR1)=0,K14(WRD)=0。
a.置AR1/AR2开关到AR1位置。
令K0(SW_BUS#)=0,K1(RS_BUS#)=1,K3(CEL#)=1,K5(LDAR1)=1,置SW7—SW0为0FH,按一次QD按钮,将AR1置为0FH,地址指示灯应显示0FH。
令K0(SW_BUS#)=1,K1(RS_BUS#)=0,禁止数据开关SW7—SW0送DBUS,允许寄存器堆送数据总线DBUS。
令K3(CEL#)=0,K4(LRW)=0,K5(LDAR1)=0,K8(RS0)=0,K9(RS1)=0,按一次QD按钮,将R0中的数据写入存储器0FH单元。
b.置AR1/AR2开关到AR1位置。
令K0(SW_BUS#)=0,K1(RS_BUS#)=1,K3(CEL#)=1,K5(LDAR1)=1,置SW7—SW0为0F0H,按一次QD按钮,将AR1置为0F0H,地址指示灯应显示F0H。
令K0(SW_BUS#)=1,K1(RS_BUS#)=0,禁止数据开关SW7—SW0送DBUS,允许寄存器堆送数据总线DBUS。
令K3(CEL#)=0,K4(LRW)=0,K5(LDAR1)=0,K8(RS0)=1,K9(RS1)=0,按一次QD按钮,将R1中的数据写入存储器F0H单元。
c.置AR1/AR2开关到AR1位置。
令K0(SW_BUS#)=0,K1(RS_BUS#)=1,K3(CEL#)=1,K5(LDAR1)=1,置SW7—SW0为55H,按一次QD按钮,将AR1置为55H,地址指示灯应显示55H。
令K0(SW_BUS#)=1,K1(RS_BUS#)=0,禁止数据开关SW7—SW0送DBUS,允许寄存器堆送数据总线DBUS。
令K3(CEL#)=0,K4(LRW)=0,K5(LDAR1)=0,K8(RS0)=0,K9(RS1)=1,按一次QD按钮,将R2中的数据写入存储器55H单元。
d.置AR1/AR2开关到AR1位置。
令K0(SW_BUS#)=0,K1(RS_BUS#)=1,K3(CEL#)=1,K5(LDAR1)=1,置SW7—SW0为0AAH,按一次QD按钮,将AR1置为0AAH,地址指示灯应显示0AAH。
令K0(SW_BUS#)=1,K1(RS_BUS#)=0,禁止数据开关SW7—SW0送DBUS,允许寄存器堆送数据总线DBUS。
令K3(CEL#)=0,K4(LRW)=0,K5(LDAR1)=0,K8(RS0)=1,K9(RS1)=1,按一次QD按钮,将R3中的数据写入存储器0AAH单元。
(5)将RAM中0AAH、55H、0F0H、0FH单元的数据依次写入R0、R1、R2、R3。
然后将R3、R2、R1、R0中的数据读出到DBUS上,通过指示灯验证读出的数据是否正确。
1.令K1(RS_BUS#)=1,K2(ALU_BUS)=0,K6(LDDR2)=0,K8(RS0)=0,K9(RS1)=0,K10(RD0)=0,K11(RD1)=0。
a.令K0(SW_BUS#)=0,K5(LDAR1)=1,K3(CEL#)=1,K14(WRD)=0,置SW7—SW0为0AAH,按一次QD按钮,将AR1置为0AAH。
令K14(WRD)=0,K0(SW_BUS#)=1,K3(CEL#)=0,K4(LRW)=1,K5(LDAR1)=0,K7(LDER)=1,按一次