1、计算机组成原理计算机组成原理 实验系列实验系列 一、总线与寄存器一、总线与寄存器 二、进位加法器二、进位加法器 三、比较器(仲裁器)三、比较器(仲裁器) 四、计数器四、计数器 五、运算器五、运算器 六、存储器六、存储器 七、时序发生器七、时序发生器 八、微程序控制器八、微程序控制器 九、硬布线控制器九、硬布线控制器赖晓铮赖晓铮 博士博士 华南理工大学华南理工大学QQ: 68046508(六)存储器(六)存储器 实验实验 实验内容:实验内容: 设计一个 8位字长的存储器 通路 ,包括 ROM和 RAM两个地址相互独立的存储器 ,实现对 ROM和 RAM存储器的数据读写操作及数据成批导入 ROM的
2、操作。实验目的:实验目的: 了解静态随机存储器 RAM和只读存储器 ROM的工作特性及读写方法。 掌握存储器与总线的连接及存储器地址空间映射的原理。存储器存储器 通路通路电路图电路图存存储储器器及及地地址址选选择择电电路路A11 A10 A9 A8 A7 A6 . A1 A00 0 0 0 0 0 . 0 0 0 0 0 0 0 0 . 0 1. . . . . . 0 0 0 1 1 1 . 1 0 0 0 0 1 1 1 . 1 1 . . . . . . . . . . 1 1 1 1 1 0 . 0 0 1 1 1 1 1 0 . 0 1 . . . . . . 1 1 1 1 1 1
3、 . 1 0 1 1 1 1 1 1 . 1 1 存储器地址空间范围 问题:问题: ROM和和 RAM的地址空间范围是多少?的地址空间范围是多少?最小最小 512B(ROM)最大最大 128B(RAM) 实验步骤:实验步骤:1) 依照 “ 附录: ROM批量导入数据 技巧 ” , 加载project.asm文件编译的 hex二进制文件到 ROM芯片 2764,并且查看 ROM烧写的数据段是否正确。2) 启动仿真前, 令 #ROM_OE = #RAM_OE = #RAM_WE = 1;启动仿真 后 ,令 #SW_BUS = 0,手动拨码开关输入 024H到地址总线 ABUS_0.11(绿色数码管
4、显示) 。3) 令地址锁存信号 ROM_CLK上升沿跳变 “0 1” ,将地址总线上的 024H打入地址锁存器 ROM_AR;令 #ROM_OE=0,使能 ROM存储器 2764输出,在数据总线 DBUS_0.7(红色数码管显示)上查看存储单元 024H读出的内容。 实验步骤:实验步骤:4) 手动拨码开关,向地址锁存器 RAM_AR打入地址 F80H;令 #RAM_WE = 0,使能 RAM存储器 6116输入,把存储单元024H的内容写入存储单元 F80H。5) 令 #ROM_OE = 1(禁止 ROM存储器 2764输出)且 #RAM_OE = 0(允许 RAM存储器 6116输出),在数
5、据总线 DBUS_0.7 上观察存储单元 F80H写入内容是否正确。6) 按照上述操作,把 ROM存储器 单元 024H、 028H、 02CH、 030H的内容依次写入 RAM存储器 单元 F80H、 F81H、F82H、 F83H,查看写入 RAM数据是否正确。思考题:思考题: 假设把 project.asm文件中的某个 ORG语句改为 “ ORG 0224H” ,请问该 ORG定义 的数据 段 还能被 访问到 么?如果不能, 是数据批量导入 ROM出错么?请修改 ROM的地址 片选电路 ,保证 “ ORG 0224H” 所定义的数据段能被访问到。 为何 ROM和 RAM需要使用两个独立的
6、 3-8译码器? 假设 RAM的片选电路与 ROM的片选电路共用一个 3-8译码器,即 ROM所在 3-8译码器的最低 2个端口给 ROM使用,最高 1个端口给 RAM 使用。 请给出 ROM和 RAM的地址空间范围 。 假设 RAM的地址空间范围改为 800H8FFH,请问存储器地址片选电路如何修改?假设再把 ROM的地址空间范围改为600H7FFH,请问存储器地址片选电路又如何修改? (六)存储器(六)存储器 实验实验附录:附录: ROM批量导入数据的技巧批量导入数据的技巧在在 本书的本书的 实验中,最重要的技巧是实验中,最重要的技巧是 如何把一组程序或数据如何把一组程序或数据一次性批量导入一次性批量导入 ROM中中 ,才能使,才能使 ROM在往后的实验中可以充在往后的实验中可以充当程序存储器或数据存储器的角色。本书将借用当程序存储器或数据存储器的角色。本书将借用 proteus的的 8051汇编器中的伪汇编指令来实现上述功能。汇编器中的伪汇编指令来实现上述功能。