欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

计算机组成原理实验三:存储器部件教学实验

程序员文章站 2022-03-17 14:12:26
...

一、实验目的

  1. 熟悉ROM芯片和RAM芯片在功能和使用方法等方面的相同和差异之处。学习用编程器设备向EEPROM芯片内写入一批数据的过程和方法。
  2. 理解并熟悉通过字、位扩展技术实现扩展存储器系统容量的方案。
  3. 了解静态存储器系统使用的各种控制信号之间正常的时序关系。
  4. 了解如何通过读、写存储顺的指令实现对58C65 ROM芯片的读、写操作。
  5. 加深理解存储器部件在计算机整机系统中的作用。

二、实验设备与器材

    ~~~~ TEC-XP+教学实验系统和仿真终端软件PCEC。

三、实验说明和原理

    ~~~~ 内存储器原理:内存储器是计算机中存放正在运行中的程序和相关数据的部件。在教学计算机存储器部件设计中,出于简化和容易实现的目的,选用静态存储器芯片实现内存储器的存储体,包括唯读存储区和随读写存储区两部分,ROM存储区选用4片长度8位、容易8KB的58C65芯片实现,RAM存储区选用2片长度8位、容量2KB的6116芯片实现,每2个8位的芯片合成一组用于组成16位长度的内存字,6个芯片被分成3组,其地址空间分配关系是:0-1777h用于第一组ROM,固化监控程序,2000-2777h用于RAM,保存用户程序和用户数据,其高端的一些单元作监控程序的数据区,第二组ROM的地址范围可以由用户选择,主要用于完成扩展内存容量的教学实验。
    ~~~~ 地址总线的低13位送到ROM芯片的地址线引脚,用于选择芯片内的一个存储字。用于实现存储字的高位字节的3个芯片的数据线引脚、实现低位字节的3个芯片的数据线引脚分别连接在一起接到数据总线的高、低位字节,是实现存储器数据读写的信息通路。数据总线要通过一个双向三态门电路与CPU一侧的内部总线IB相连接,已完成存储器、接口电路和CPU之间的数据通讯。

四、实验内容

  1. 要完成存储器容量扩展的教学实验,需为扩展存储器选择一个地址,并注意 读写和OE等控制信号的正确状态。
  2. 用监控程序的D、E命令对存储器进行读写操作,比较RAM(3116)、EEPROM(28系列芯片)、EPROM(27系列芯片)在读写上的异同。
  3. 用监控程序的A命令编写一段程序,对RAM(6116)进行读写,用D命令查看结果是否正确。
  4. 用监控程序的A命令编写一段程序,对扩展存储器EEPRM(28系列芯片)进行读写,用D命令查看结果是否正确;如不正确,分析原因,改写程序,重新运行。

五、实验步骤与截图

  1. 检查FPGA下方的标有“/CE”的四组插针均是左边两个短接;
  2. 检查RAM(6116)上方的标有“/WE”的插针应是左边两个短接;
  3. RAM(6116)支持即时读写,可直接用A、E命令向扩展的存储器输入程序或改变内存单元的值。RAM中的内容在断电后会消失,重新启动实验机后会发现内存单元的值发生了改变。
    1>用E命令改变内存单元的值并用D命令观察结果。
<1>在命令行提示符状态下输入:
  E 2020↙
  屏幕将显示: 2020   内存单元原值:
  按如下形式键入:
  2020  原值:2222(空格)原值:3333(空格)原值:4444(空格)原值:5555*
<2>在命令行提示符状态下输入:
  D2020↙
  屏幕将显示从2020内存单元开始的值,其中2020H~2023H的值为:
  2222 3333 4444 5555

计算机组成原理实验三:存储器部件教学实验

<3>断电后重新启动教学实验机,用D命令观察内存单元2020~2023的值。
会发现原来置入到这几个内存单元的值已经改变,用户在使用RAM时,必须每次断电重新
启动后都要重新输入程序或修改内存单元的值。
0000  FFF7  0000  FFFF
2>用A命令输入一段程序,执行并观察结果。
   <1>在命令行提示符状态下输入:
   A 2000↙
   屏幕将显示:2000:
   按如下形式键入:
   2000:MVRD R0,AAAA
   2002:MVRD R1,5555
   2004:AND R0,R1
   2005:RET
   2006:↙
   <2>在命令行提示符状态下输入:
   T 2000↙
   R0的值变为AAAAH,其余寄存器的值不变。
   R0=AAAA
   T↙
   R1的值变为5555H,其余寄存器的值不变。
   R0=AAAA  R1=5555
   T↙
   R0的值变为0000H,其余寄存器的值不变。
   R0=0000
   <3>在命令行提示符状态下输入:
   G 2000
 运行输入的程序。
 R0=0000  R1=5555
 <4> 在命令行提示符状态下输入:
 R↙
 屏幕显示:
  R0=0000 R1=5555 R2=…

采用单步和连续两种方式执行一段程序,查看结果,断电后发生什么情况?
答:断电前,单步和连续结果一样;断电后,单步可以运行,但前后结果不一样,断电后,连续不可运行。
     ~~~~~ RAM芯片可直接用A命令键入程序,但断电会丢失,要再次调适该程序必须重新输入,对那些较长的程序或经常用到的程序可通过交叉汇编,在上位机生成代码文件,每次加电启动后不用重新输入,只需通过PCEC16将代码文件传送给下位机即可。

  1. 将扩展的ROM芯片插入标有“EXTROMH”和“EXTROML”的自锁紧插座,要注意芯片插入的方向,带有半圆形缺口的一方朝左插入。
         ~~~~~ 如果芯片插入方向不对,会导致芯片烧毁,然后锁紧插座。
  2. 将扩展芯片下方的插针按下列方式短接:将标有“/MWR”和“RD”的三个插针左面两个短接,将标有“/MWR”“/OE”“GND”的三个插针左边两个短接。
  3. 将扩展芯片上方标有EXTROMH和EXTROML的“/CS”信号用自锁紧线短接,然后短接到MEMDC 138芯片的上方的标有“4000-5fff”地址单元。
         ~~~~~ 注意:标有/CS的圆孔针与标有MEM/CS的一排圆孔针中的任意一个都可以用导线相连;连接的地址范围是多少,用户可用的地址空间就是多少。
  4. 将标有“DataBus 15-8”和“DataBus 7-0”的数据总线的指示灯下方的插针短接。
  5. 将标有“DataBus 15-8”和“AdressBus 7-0”的数据总线的指示灯下方的插针短接。
    下面以2764A为例,进行扩展EPROM实验。
  6. EPROM 是紫外线可擦除的电可改写的只读存储器芯片。在对EPROM进行重写前必须先擦除并判断芯片是否为空,再通过编程器进行编程。
    <1>将芯片0000~001F的内存单元的值置成01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
    <2>将变成好的芯片插在扩展芯片的高位,低位不插,按上面的提示插好插针。
    (1)用D命令看内存单元0000~001F的值。可以看到内存单元的值为:01FF 02FF 03FF 04FF~~1FFF。
    (2)用E命令向芯片内存单元置值,再用D命令查看,会发现原来的指没有改变;
    (3)用A命令向芯片所在的地址渐入程序,用U命令反汇编,会发现地址保持原来的值。该试验说明,EPOROM不能直接修改和编程,必须先擦除,再通过编程器编程。
    (4)将教学其断电后重启,用D命令看内存单元的0000~001F的内容,会发现数值不变,EPROM的内容在断电后会保持。
    0001 0002 0003 0004 0005 0006 0007 0008 0009 000A……001E 001F
  7. AT28C64B的读操作和一般的RAM一样,而其写操作,需要一定的时间,大约为1毫秒。因此,需要编写一延迟程序,在对EEPROM进行写操作时,调用该子程序,以完成正确的读写。
1)用E命令改变内存单元的值并用D命令观察结果。
<1>在命令行提示符状态下输入:
E   5000↙
屏幕将显示:  5000    内存单元原值:
按如下形式键入:
一、原值:2424(按空格)原值:3636(按空格)原值:4848(按空格)原值: 5050↙
<2>在命令行提示符状态下输入:
  D  5000↙
屏幕将显示5000H—507FH内容单元的值,从5000开始的连续四个内存单元的值依次为 2424 3636 4848 5050.
<3>断电后重新启动,用D命令观察看内存单元5000—5003的值,会发现这四个单元的值没有发生改变,说明EEPROM的内容断电后可保存。

2)AT28C64B 存储器不能直接用A命令出入程序,单字节的指令可能会写进去,双字节指令的低位会出错(建议试一试),可将编写好的程序用编程器写入片内;也可以将程序放到RAM(6116)中,调用延时子程序,访问AT28C64B中的内存地址。
下面给出的程序,在5000H—500FH单元中依次写入数据000H、0001H、…00FH。

从2000H单元开始输入主程序:
(2000)MVRD R0,0000
        MVRD R2,0010;R2记录循环次数
        MVRD R3,5000;R3的内容为16为内存地址
(2006)STRR [R3],R0;将R0寄存器的内容放到R3给出的内存单元中
        CALA 2200;调用程序地址为2200的延时子程序
        INC   R0;R0加1
        INC   R3;R3加1
DEC  R2;R2减1
JRNZ 2006;R2不为0跳转到2006H
RET 
从2200H单元开始输入延时子程序:
PUSH   R3
MVRD  R3,    FFFF
(2203)  DEC   R3
        JRNZ  2203
        POP    R3
        RET 
运行主程序,在命令提示符下输入: G 2000↙。
程序执行结束后,在命令提示符下输入: D  5000↙;
可看到从5000H开始的内存单元的值变为
5000: 0000  0001  0002  0003  0004  0005  0006  0007
5008: 0008  0009  000A  000B  000C  000D  000E  000F

计算机组成原理实验三:存储器部件教学实验
计算机组成原理实验三:存储器部件教学实验

六、实验思考题

思考:
1)为何能用E命令直接写58C65的存储单元,而A命令则有时不正确.
    ~~~~ 能用E命令直接写AT28C64B的存储单元,而不用A命令,修改延时子程序,将其延时改短,可将延时子程序中的R3的内容赋成00FF或0FFF等,再看运行结果时,发现因为当写入双字节指令的低位时会出错,这也是不能用A命令而只能用E命令去写存储单元的原因。
2)将延时改短,将程序中的R3的内容赋成00FF,再看运行结果。
计算机组成原理实验三:存储器部件教学实验

7实验心得

    ~~~~ 此次试验需要连线,需要检查试验室内线的好坏,为试验前期准备.通过本次实验,我熟悉了ROM芯片和RAM芯片在功能和使用方法的差异之处,学习了用编程EEPROM芯片内写入一批数据的过程和方法。通过不断的操作,通过自身的思考,我理解并熟悉通过字、位扩展技术实现扩展存储器系统容量的方案,编程过程需要思考指令的执行过程,锻炼了自身的编程能力,完善了自身的能力.