实验二 双端口存储器原理实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二双端口存储器原理实验一、实验目的

(1)了解双端口静态随机存储器IDT7132的工作特性及使用方法。

(2)了解半导体存储器怎样存储和读出数据。

(3)了解双端口存储器怎样并行读写,产生冲突的情况如何。

二、实验电路

图7 双端口存储器实验电路图

图7示出了双端口存储器的实验电路图。这里使用了一片IDT7132(U36)(2048×8位),两个端口的地址输入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计算机组成原理实验系统1台

(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。再令K3(LDAR1)=0,K0(CEL#)=0,K1(LRW)=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位置,将ARl/AR2开关拨到AR1位置。置SW7-SW0=00H,按一次QD按钮,将00H写入AR1,绿色的地址指示灯应显示00H。令K5(SW_BUS#)=1,然后令K3(LDAR1)=0,K0(CEL#)=0,K1(LRW) =l,则读出存储器的00H单元的数据,读出的数据显示在DBUS数据指示灯上,应为00H。照此方法,可依次读出存储器单元l0H、20H、30H、40H的数据。

(3)读出存储器的数据,写入IR。

令K0(CEL#)=l,K1(LRW)=l,K2(CER)=0,K3(LDAR1)=0,K4(LDAR2)=1,K5 (SW_BUS#)=0,K6(LDIR)=0。将IR/DBUS开关拨到IR位置,将ARl/AR2开关拨到AR2位置。置SW7-SW0=00H,按一次QD按钮,将00H 写入AR2,绿色的地址指示灯应显示00H。令K4(LDAR2)=0,K2(CER)=l,K6(LDIR)=1,按一次QD按钮,则从右端口读出存储器的00H单元的数据,读出的数据写入指令寄存器IR,显示在IR数据指示灯上,应为00H。照此方法,可从右端口依次读出存储器单元l0H、20H、30H、40H的数据,写入指令寄存器IR。

(4)双端口存储器的并行读写和访问冲突测试

1.令K0(CEL#)=l,K1(LRW)=l,K2(CER)=0,K3(LDAR1)=l,K4(LDAR2)=0,K5 (SW_BUS#)=0,K6(LDIR)=0。将ARl/AR2开关拨到AR1位置。置SW7-SW0=38H,按一次QD按钮,将38H写入AR1,绿色的地址指示灯应显示38H。令K3(LDAR1)=0,K4(LDAR2)= l,K5(SW_BUS#)=0将ARl/AR2开关拨到AR2位置。置

SW7-SW0=38H,按一次QD按钮,将38H写入AR2,绿色的地址指示灯应显示38H。

2. 先令K2(CER)=1,K0(CEL#)=1,用示波器探头(或逻辑笔)测试BUSYL插孔,BUSYL应为高电平。保持K2(CER)不变,将K0(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信号也从低电平变为高电平。

相关文档
最新文档