华中科技大学实验报告
实验名称 双端口存储器原理实验 成绩
实验日期 第 2 次试验 指导老师 陈国平
专业 计科 班号 组别
学生姓名 同组学生
一、实验目的
1. 了解双端口静态存储器IDT7132的工作特性及其使用方法 2. 了解半导体存储器怎样存储和读取数据。
3. 了解双端口存储器怎样并行读写,并分析冲突产生的情况。
二、实验电路
数据显示灯指令显示灯RAM-BUS#LR/W#T2D7D6D5D4D3D2D1D0I7I6I5I4I3I2I1I0OER#(GND)双端口存储器(IDT 7132)RRW(Vcc)CER#地址显示A7A6A5A4A3A2A1A0PC7... ...PC0CEL#地址显示LDAR#AR+1T2AR(74LS163)PC(74LS163)LDPC#PC+1T2三态门(244)SW7... ...SW0数据开关图3.2 双端口存储器实验电路图
图3.2示出了双端口存储器的实验电路图。这里使用一片IDT7132(2048×8位),两个端口的地址输入A8-A10引脚接地,因此实际使用的存储容量为256字节。左端
口的数据输出接数据总线DBUS,右端口的数据输出端接指令总线IBUS。
IDT7132有六个控制引脚:CEL#、LR/W#、OEL#、CER#、RR/W#、OER#。CEL#、LR/W#、OEL#控制左端口读、写操作;CER#、RR/W#、OER#控制右端口的读写操作。CEL#为左端口选择引脚,低电平有效;当CEL#=1时,禁止对左端口的读、写操作。LR/W#控制对左端口的读写。当LR/W#=1时,左端口进行读操作;LR/W#=0时,左端口进行写操作。OEL#的作用等同于三态门,当OEL#=0时,允许左端口读出的数据送到数据总线DBUS上;当OEL#=1时,禁止左端口的数据放到DBUS。因此,为便于理解,在以后的实验中,我们将OEL#引脚称为RAM_BUS#。控制右端口的三个引脚与左端口的三个完全类似,这里不再赘述。有两点需要说明:
(1) 右端口读出的数据(更确切的说法是指令)放到指令总线IBUS上而不是数据总线DBUS,然后送到指令寄存器IR。
(2) 所有数据/指令的写入都使用左端口,右端口作为指令端口,不需要进行数据的写入,因此我们将右端口处理成一个只读端口,已将RR/W#固定接高电平,OER#固定接地。这两点请同学好好理解。
存储器左端口的地址寄存器AR和右端口的地址寄存器PC都使用2片74LS163,具有地址递增的功能。同时,PC在以后的实验当中也起到程序计数器的作用。左右端口的数据和左右端口的地址都有特定的显示灯显示。存储器地址和写入数据都由实验台操作板上的二进制开关分时给出。
当LDAR#=0时,AR在T2时从DBUS接收来自SW7-SW0的地址;当AR+1=1时,在T2存储器地址加1。LDAR#和AR+1不能同时有效。在下一个时钟周期,令CEL#=0,LR/W#=0,则在T2的上升沿开始进行写操作,将SW7-SW07设置的数据经DBUS写入存储器。
三、实验任务
1. 按图3.2所示,将有关控制信号和二进制开关对应接好,仔细复查一遍,然
后接通电源。
2. 将二进制数码开关SW7-SW0(SW0为最低位)设置为00H,将其作为存储器
地址置入AR;然后将二进制开关的00H作为数据写入RAM中。用这个方法,向存储器的10H、20H、30H、40H单元依次写入10H、20H、30H和40H。 3. 使用存储器的左端口,依次将第2步存入的5个数据读出,观察各单元中存
入的数据是否正确。记录数据。注意:禁止两个或两个以上的数据源同时向数据总线上发送数据!在本实验中,当存储器进行读出操作时,务必将SW_BUS#的三态门关闭。而当向AR送入数据时,双端口存储器也不能被选中。
4. 通过存储器的右端口,将第2步存入的5个数据读出,观察结果是否与第3
步结果相同。记录数据。
5. 双端口存储器的并行读写和访问冲突。
将CEL#、CER#同时置为0,使存储器的左右端口同时被选中。当AR和PC的地址不相同时,没有访问冲突;地址相同时,由于都是读操作,也不会冲突。如果左右端口地址相同,且一个进行读操作,一个进行写操作,就会发生冲突。检测冲突的方法:观察两个端口的“忙”信号输出指示灯BUSYL#和BUSYR#。BUSYL#/BUSYR#灯亮(为0)时,不一定发生冲突,但发生冲突时,BUSYL#/BUSYR#必定亮。
四、实验要求
1. 做好实验预习,掌握IDT7132双端口存储器的功能特性和使用方法。 2. 写出实验报告,内容是:
(1) 实验目的。
(2) 实验任务3的数据表格。 (3) 实验任务4的数据表格。 (4) 实验任务5的检测结果。
五、实验步骤
1. 置DP=1,DB=0,编程开关拨到正常位置。
按电路图要求,将有关控制信号和二进制开关对应接好,反复检查后,接通电源。 数据通路 LDAR# 电平开关 K0 LDPC# K1 CEL# K2 LR/W# RAM_BUS# K3 K4 CER# K5 SW_BUS# K6 AR+1 和 PC+1 两个信号接地.
3. 将二进制数码开关SW7-SW0(SW0为最低位)设置为00H,将其作为存储器地址
置入AR;然后将二进制开关的00H作为数据写入RAM中.用这个方法,向存储器的10H,20H,30H,40H单元依次写入10H,20H,30H,40H. 任务:将00H,10H,20H,30H,40H分别写入存储器单元00H,10H,20H,30H,40H. (1) 令K0(LDAR#)=0, K2(CEL#)=1, K4(RAM_BUS#)=1, K5(CER#)=1,
K6(SW_BUS#)=0. 数据通路 LDAR# 电平开关 K0 状态 0 置SW7-SW0=00H, SW7 0 SW6 0 SW5 0 SW4 0 SW3 0 SW2 0 SW1 0 SW0 0 LDPC# K1 × CEL# K2 1 LR/W# RAM_BUS# K3 K4 × 1 CER# K5 1 SW_BUS# K6 0 按QD按钮,将00H打入地址寄存器AR.
(2) 令K0(LDAR#)=1, K2(CEL#)=0, K3(LR/W#)=0, K4(RAM_BUS#)=1, K5(CER#)=1,
K6(SW_BUS#)=0. 数据通路 LDAR# 电平开关 K0 状态 1 LDPC# K1 × CEL# K2 0 LR/W# RAM_BUS# K3 K4 0 1 CER# K5 1 SW_BUS# K6 0
置SW7-SW0=00H, SW7 0 SW6 0 SW5 0 SW4 0 SW3 0 SW2 0 SW1 0 SW0 0 按QD按钮,将00H写入存储器00H单元.
(3) 重复1和2,只是改变SW7-SW0分别为10H,20H,30H,40H,分别将
10H,20H,30H,40H 写入存储器单元10H,20H,30H,40H. 实验数据记录表:
存储单元地址 00H 10H 20H 30H 40H 存储单元数据/指令 00H 10H 20H 30H 40H 3.使用存储器的左端口,依次将第2步存入的5个数据读出,观察各单元中存入的数据是否正确.记录数据。(注意:禁止两个或两个以上的数据源同时向数据总线上发送数据!在本实验中,当存储器进行读出操作时,务必将SW_BUS#的三态门关闭.而当向AR送入数据时,双端口存储器也不能被选中. )
任务:从左端口读出存储器00H,10H,20H,30H,40H的内容.
(1) 令K0(LDAR#)=0, K2(CEL#)=1, K4(RAM_BUS#)=1, K5(CER#)=1,
K6(SW_BUS#)=0. 数据通路 LDAR# 电平开关 K0 状态 0 置SW7-SW0=00H, SW7 0 SW6 0 SW5 0 SW4 0 SW3 0 SW2 0 SW1 0 SW0 0 LDPC# K1 × CEL# K2 1 LR/W# RAM_BUS# K3 K4 × 1 CER# K5 1 SW_BUS# K6 0 按QD按钮,将00H打入地址寄存器AR.
(2) 先令 K6(SW_BUS#)=1,再令 K2(CEL#)=0, K3(LR/W#)=1, K4(RAM_BUS#)=0,
K5(CER#)=1,则在数据总线DBUS上显示出存储器单元00H的内容00H。
(3) 重复1和2的方法,只是改变1中SW7-SW0的值分别为10H,20H,30H,40H,则可
在数据总线DBUS上观察到存储器单元10H,20H,30H,40H的内容分别为10H,20H,30H,40H. 实验结果记录表1: 存储单元地址 00H 10H 20H 30H 40H 存储单元数据/指令 00H 10H 20H 30H 40H DBUS显示结果 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.通过存储器的右端口,将第2步存入的5个数据读出,观察结果是否与第3步结果相同.记录数据。
任务:从右端口读出存储器00H,10H,20H,30H,40H的内容.
(1) 令K1(LDPC#)=0, K2(CEL#)=1, K4(RAM_BUS#)=1, K5(CER#)=1,
K6(SW_BUS#)=0. 数据通路 LDAR# 电平开关 K0 状态 × 置SW7-SW0=00H, SW7 0 SW6 0 SW5 0 SW4 0 SW3 0 SW2 0 SW1 0 SW0 0 LDPC# K1 0 CEL# K2 1 LR/W# RAM_BUS# K3 K4 × 1 CER# K5 1 SW_BUS# K6 0 按QD按钮,将00H打入PC.
(2) 令 K6(SW_BUS#)=1, K2(CEL#)=1, K5(CER#)=1,则在指令总线IBUS上显示出
存储器单元00H的内容00H. (3) 重复1和2的方法,只是改变1中SW7-SW0的值分别为10H,20H,30H,40H,则可
在指令总线IBUS上观察到存储器单元10H,20H,30H,40H的内容分别为10H,20H,30H,40H.
实验结果记录表2:
存储单元地存储单元数据/IBUS显示结果 址 指令 00H 00H 0 0 0 0 0 0 0 0 10H 10H 0 0 0 1 0 0 0 0 20H 20H 0 0 1 0 0 0 0 0 30H 30H 0 0 1 1 0 0 0 0 40H 40H 0 1 0 0 0 0 0 0 5.双端口存储器的并行读写和访问冲突。
(1) 令K0(LDAR#)=0, K1(LDPC#)=0, K2(CEL#)=1, K4(RAM_BUS#)=1, K5(CER#)=1,
K6(SW_BUS#)=0. 数据通路 LDAR# LDPC# CEL# LR/W# RAM_BUS# CER# SW_BUS# 电平开关 K0 K1 K2 K3 K4 K5 K6 状态 0 0 1 × 1 1 0 置SW7-SW0=30H, SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0 0 0 1 1 0 0 0 0 按QD按钮,将30H打入地址寄存器AR和程序计数器PC. (2) 置K6(SW_BUS#)=1, K3(LR/W#)=1, K4(RAM_BUS#)=0.先令K5(CER#)=0,
K2(CEL#)=1,这时BUSYL#指令灯不亮.令K2(CEL#)=0,这时BUSYL#指令灯亮,表示左端口在右端口之后和右端口同时对同一个地址读,数据总线DBUS显示30H,指令总线IBUS也显示30H.再令K2(CEL#)=1,BUSYL#指示灯恢复不亮. (3) 置K6(SW_BUS#)=1, K3(LR/W#)=1, K4(RAM_BUS#)=0.先令K2(CEL#)=0,
K5(CER#)=1,
这时BUSYR#指示灯不亮.令K5(CER#)=0,这时BUSYR#指示灯亮,表示右端口在左端口之后和左端口同时对同一个地址读,数据总线DBUS显示30H,指令总线IBUS也显示30H.再令K5(CER#)=1, BUSYR#指示灯恢复不亮.(注意:将CEL#,CER#同时置为0,使存储器的左右端口同时被选中.当AR和PC的地址不相同时,由于都是读操作,也不会冲突.如果左右端口地址相同,且一个进行读操作,一个进行写操作,就会发生冲突.检测冲突的方法:观察两个端口的\"忙\"信号输出指示灯BUSYL#和BUSYR#.BUSYL#/BUSYR#灯亮(为0)时,不一定发生冲突,但发生冲突时,BUSYL#/BUSYR#必定亮.)
六、总结
在本次实验中,我们了解了双端口静态存储器的工作特性及其使用方法,掌握了半导体存储器怎样存储和读取数据和双端口存储器怎样并行读写,在存储数据到双端口存储器之前,首先要选择好数据存放的地址,然后才能存储。