计算机组成原理-存储器


今天依然按照计划继续搞实验箱.

实验箱的存储单元使用的芯片是HY6116AP-10。很轻松地google到了芯片手册:

点我下载


 对于这次实验来说我们只需要关心芯片手册的第一页。这个芯片有10根地址线,为了统一接口,故实验箱只提供了8根地址线,只对外引出了A0~A7,D0~D7,CE(CS)和WE接口。

CE为片选,低电平有效。WE为低电平时进行写操作,为高电平时进行读操作。

知道了这些就可以对6116写数据了具体做法是:

1.将6116单元的WE和CE连接到SWITCH(其实就是控制面板= =)单元的对应接口,D0~7连接到数据总线任意一排,要注意不要插反。输入单元的SW_G也插到控制面板的对应接口。

2.当片选CE为低电平,写始能WE为高电平,SW_G为高电平时,会输出某一地址下所存储的数据(此时地址线未连接)。此时将SW_G调至低电平,在INPUT UNIT输入一些数据比如01010101,随后把WE至低电平一秒再至回高电平(因为没找到没找到写数据延时,假设是1秒),此时写数据成功。


那么怎么验证刚才写入的数据是否正确呢?还记得SW_G的作用么?当SW_G为高电平时,数据总线会显示6116在某一地址下存储的数据,果然是01010101没错。

我们可以利用这个机制做些有趣的东西。将SW_G至低电平,在INPUT UNIT输入10101010,然后来回拨动SW_G开关,这时会看到一排红色二极管交替闪烁,可惜不是太好看。嗯,还能做个振荡器什么的,在这里就不演示了。


到现在向同一个地址内写入不同数据的问题已经解决了,向任意地址内写入任意数据该怎么做呢= =

查询实验箱手册才知道SIGNAL UNIT的T3用边沿来控制地址总线的数据刷新。也就是说当SW_G为低电平时,通过输入单元输入任意地址并切换T3的状态,相应的数据就会被写入到地址总线中。到现在为止,向任意地址内写入任意数据可以实现了,做法如下:

1.令WE = 1, SW_G= 0,LOAD连接T3 保持任意值不动。

2.将INPUT UNIT的开关至于00000001的状态,代表的含义是地址0x01;

3.推LOAD开关一次,此时ADDR BUS与INPUT UNIT亮灯状态相同;

4.将WE至低电平一秒后推回;

5.将SW_G至高电平查看写入数据。

OVER


最后时我今天的作品:让存储器在地址0x01单元存储我的名字的缩写,并通过显示器(两位数码管)显示。


### Logisim 存储器实验配置教程 Logisim 是一款用于模拟数字电路的工具,广泛应用于教学环境中帮助学生理解计算机组成原理。以下是关于如何在 Logisim 中进行存储器实验的相关指导。 #### 配置存储器模块 在 Logisim 中创建存储器模块,可以按照以下方法操作: 1. **打开 Memory 类型组件** 在左侧工具栏中找到 `Memory` 组件并拖动到工作区。这一步会引入 RAM 或 ROM 的基本单元[^1]。 2. **设置地址宽度和数据宽度** 双击放置好的内存模块,在弹出的属性窗口中调整参数: - 地址线数量决定了可寻址空间大小(例如 8 表示 \(2^8=256\) 字节)。 - 数据线宽度定义了每次读写的数据位数(通常为 8、16 或 32 位)。 3. **连接控制信号** 存储器需要外部输入一些必要的控制信号才能正常运行,这些信号包括但不限于: - Write Enable (WE): 控制是否允许写入新数据。 - Clock Signal: 同步触发器的操作周期。 下面是一个简单的 Verilog 片段展示如何实现同步逻辑[^2]: ```verilog always @(posedge clk or posedge reset) begin if(reset) mem_addr <= 0; else mem_addr <= next_mem_addr; end ``` 4. **初始化内容** 对于 ROM 而言,可以在其属性对话框里手动填充值或者导入预设文件;而 RAM 则默认为空白状态等待动态填充。 #### 常见问题及其解决方案 - **无法加载自定义二进制映像** 如果遇到此情况,请确认所选路径无误,并且确保图像格式兼容当前版本软件的要求。 - **仿真过程中发生未预期行为** 这可能是因为某些连线松散或者是内部寄存器初始值设定不当引起的错误。建议逐一排查各条线路连通性和元件间交互关系正确性。 ```python def check_connections(circuit): """A function to simulate checking connections.""" for component in circuit.components: if not component.is_connected(): return False return True ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值