ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

计算机组成原理存储器实验:6116芯片读写时序与实操全解析

计算机组成原理存储器实验:6116芯片读写时序与实操全解析 计算机组成原理课上存储器实验基本是每个人都躲不过去的一道坎。多思计组虚拟实验室里的存储器实验就是把一块 6116 芯片搬到屏幕上让你亲手拨地址、拨数据、按控制信号把一个数写进去再读出来。很多人第一次打开实验面板时会被满屏开关和指示灯吓住其实核心就一件事弄清楚地址线、数据线、控制线三者怎么配合。这篇文章面向刚接触这个实验的新手我会把 6116 的引脚逻辑、读写时序、虚拟面板操作流程和常见故障全部拆开讲你看完照着做一遍基本就能把这个实验吃透。我指导过不少学弟学妹做这个实验发现大家卡住的地方往往不是“不会拨开关”而是不理解背后的信号关系。所以这篇写得会比较啰嗦每个步骤都会告诉你为什么这么做而不是只给一套“照着点”的流程。实验做完之后你还会发现存储器的读写逻辑和后面运算器、数据通路实验是连着的这一步地基打得牢不牢直接影响后面几周的心情。1. 动手前先弄懂实验到底要做什么1.1 虚拟实验平台到底在模拟什么多思计组虚拟实验室把真实实验箱上的操作搬到了屏幕上本质上是把 CPU 和存储器之间的连接抽象成三组信号地址总线、数据总线、控制总线。6116 是一片 2K×8 的静态 RAM2K 表示有 2048 个存储单元8 表示每个单元能存 8 位二进制数也就是一个字节。地址线上给 11 位地址2 的 11 次方正好是 2048所以它需要 11 根地址线数据线上传 8 位数据所以有 8 根数据线控制线则决定当前是读还是写。虚拟实验的任务就是让你亲手操作这三组信号观察存储器的完整行为。你在面板上看到的地址开关对应地址总线数据开关对应数据总线CE、OE、WE 这几个开关对应控制总线。拨开关的过程就是在向总线发送电平信号指示灯就是总线上的电平反馈。这个逻辑想清楚之后整个实验就不再是“乱点一通”而是有明确目标的信号操作练习。1.2 为什么偏偏用 6116 讲存储原理你可能想问都什么年代了为什么还在用 6116 这种老芯片做教学实验。答案很简单它足够简单又足够典型。6116 是经典的静态随机存储器也就是 SRAM。它靠六管存储单元锁存数据只要不掉电数据就能一直保持不需要像 DRAM 那样周期性刷新。这对教学来说非常友好你写入一个数之后可以慢慢观察不用担心数据因为没刷新而消失。它的控制信号也很有代表性片选 CE 负责决定芯片是否工作输出使能 OE 负责决定数据是否输出写使能 WE 负责决定是否写入。这三种信号的组合几乎涵盖了所有简单存储器的基本控制逻辑。换一颗更大更复杂的芯片引脚多了新手容易迷失在细节里换一颗更简单的寄存器堆又体现不出“地址寻址”这个概念。6116 的 2K 容量刚好够你理解地址译码8 位数据宽度又和大多数教学 CPU 的总线宽度一致所以它在计算机组成原理实验课里几乎是标配。1.3 实验开工前必须掌握的几个关键词第一个词是“低有效”。6116 的 CE、OE、WE 三个控制信号都是低电平有效也就是说要让某个功能生效对应引脚必须接低电平也就是开关拨到 0。新手最容易在这里翻车总以为开关拨 1 才是“开”。记住在 6116 的世界里拨 0 才是让芯片听你指挥。第二个词是“高阻态”。数据线是双向的它既能输出数据也能输入数据。当芯片没有被选中或者处于既非读也非写的状态时数据引脚对外表现为高阻态相当于和外部电路“断开”谁也不驱动。这个状态对避免总线冲突至关重要后面我会专门展开讲。第三个词是“建立时间和保持时间”。真实芯片在工作时地址和数据信号必须提前稳定一小段时间写入信号结束后还要再保持一小段时间否则数据就可能写错。虚拟实验为了让操作看得清楚不会在这些纳秒级参数上为难你但你在实验报告里画时序图时必须把这些窗口画出来。把这些基础概念过一遍再去看实验面板你会觉得那些开关和指示灯突然有了含义而不是一堆乱七八糟的控件。2. 吃透 6116引脚、真值表与读写时序2.1 11 根地址线、8 根数据线和 3 根控制线打开实验面板之前先把芯片引脚的作用看清楚。6116 的引脚分成三类地址线、数据线、控制线另外还有电源和地。引脚方向作用A0-A10输入11 位地址线可寻址 2K 个存储单元D0-D7双向8 位数据线读时输出数据写时接收数据CE输入片选信号低电平有效高电平时芯片不参与操作OE输入输出使能低电平有效决定是否把数据放到数据总线上WE输入写使能低电平有效低电平时执行写入VCC / GND电源5V 供电与地这里有一个很关键的概念数据线是双向的。你往存储器里写数据时数据是从外部流向芯片你从存储器读数据时数据是从芯片流向外部。同一个引脚在不同时刻扮演不同角色靠的就是控制信号来切换方向。CE 决定芯片是否“上线”OE 决定输出电路是否打开WE 决定是否进入写模式。把三个控制信号组合起来就能得到一组真值表这是整个实验的理论核心CEWEOE当前操作D0-D7 状态1XX芯片未选中高阻010读输出存储数据001写外部数据输入000写WE 优先外部数据输入011选中但未读未写高阻注意看第二行和第三行读操作要求 OE0、WE1写操作要求 WE0OE 此时不起决定作用。很多教材会把写操作简写成“CE0 且 WE0 时写入”但你在实验面板上实际操作时最稳妥的做法是写操作时把 OE 置 1避免读输出和外部写入同时抢数据总线。2.2 读操作三组信号的“正确姿势”读操作说白了就是三件事先把地址送到地址线上再把芯片“打开”最后从数据线上把结果拿走。在多思平台上地址开关拨好就相当于地址线上有了电平组合CE 拨 0相当于告诉芯片“你被选中了”WE 拨 1相当于告诉芯片“我不是要写你”OE 拨 0相当于告诉芯片“把你肚子里那个单元的内容放到数据线上去”。三个条件都满足数据指示灯就会显示存储内容。读操作有一个很容易被忽略的点地址必须先稳定然后再给读信号。如果数据灯刚亮你就去拨地址拨动过程中会有一些中间状态的地址出现芯片可能把别的存储单元的内容也输出一下造成视觉上的闪烁。真实芯片上地址变化到数据稳定输出需要一段存取时间虚拟实验里灯几乎是瞬间亮但操作的先后顺序还是要养成习惯先地址后控制信号。我在指导别人做实验时经常强调一个动作读的时候眼睛先看地址开关确认无误再看 CE、OE、WE 三个状态最后才看数据指示灯。这个顺序看起来很基础但能避免大量低级错误。2.3 写操作比读多一个关键动作写操作比读操作多一个关键动作把 WE 从 1 拨到 0再拨回 1。这个从高到低再回到高的过程就是一次写脉冲。数据并不是在 WE 变成 0 的瞬间写进去的而是在 WE 由 0 变 1 的上升沿被锁存进存储单元。你可以把这个过程类比成盖章WE 拉低是“章压下去”WE 拉高是“章抬起来”真正留下痕迹的是抬起来那一下。所以操作时不要一直把 WE 按在 0 上不放写完要记得拉回 1不然芯片一直处在写模式数据线上永远是外部开关的内容你根本看不出存储结果。写操作的完整顺序是先拨地址让地址线稳定再拨数据让数据线上出现要写入的值然后把 CE 拉低OE 置 1WE 拉低等一小会儿再把 WE 拉高。WE 上升沿到来时数据总线上的值被锁进对应地址的存储单元。有一个时序细节值得写在实验报告里地址建立时间指的是地址必须先于 WE 下降沿稳定一段时间数据建立时间指的是数据必须在 WE 上升沿之前就绪。如果你先拉低 WE 再拨数据放在真实芯片上很可能写入错误数据。虚拟实验不一定严格模拟这种错误但养成“先数据后脉冲”的习惯没有坏处。2.4 高阻态数据总线不“打架”的关键高阻态这个词听着抽象其实特别重要。想象一条走廊只能容纳一个人说话。6116 的 8 根数据线就是这条走廊外部数据开关是一拨人6116 内部存储单元是另一拨人。读的时候内部的人需要走到走廊里喊话外部数据开关必须全体闭嘴写的时候外部的人要往走廊里喊话内部存储单元的输出必须闭嘴。两边如果同时开嗓谁的话都听不清反映到电路上就是总线冲突严重时甚至可能损坏芯片。高阻态就是“闭嘴”状态引脚对外表现为既不是稳定的高电平也不是稳定的低电平而是相当于断开。正是因为有了高阻态双向数据总线才能在不同时刻被不同设备安全驱动。在实验操作中写数据之前你要确保 6116 的输出端已经进入高阻态否则外部数据开关给的数据驱动不过去。具体操作就是让 WE0或者让 OE1芯片输出电路不工作数据总线完全交给外部开关控制。这个细节很多教材只一笔带过但恰恰是实验中出现各种诡异现象的头号原因。3. 全流程实操从初始化到批量读写验证3.1 进入实验面板先做一件事清空所有状态多思计组虚拟实验室的界面不同版本可能略有差异但存储器实验面板的核心布局基本一致左侧或上方是 6116 芯片图示中间是地址开关和数据开关右侧是控制信号开关下方或旁边是数据指示灯和存储内容查看窗口。打开实验后不要急着写入先把所有开关恢复到初始状态CE 置 1让芯片处于未选中状态WE 置 1OE 置 1让芯片既不读也不写。这一步相当于让所有总线静默避免上电瞬间的随机状态干扰你的判断。然后看一眼数据指示灯。6116 上电后存储内容是随机的虚拟实验里可能表现为全 0、全 1 或者一堆无规律的值这都是正常的不代表实验出了问题。正因为初始值不可预知实验的第一步永远是“先写后读”而不是直接读某个地址指望它里面有特定数据。3.2 第一次写入向 000H 地址写 5AH以向 000H 地址写入 5AH 并读回验证为例完整走一遍流程。第一步拨地址。000H 转成二进制是 00000000000A0-A10 全部拨到 0。如果面板上的地址开关标的是十六进制直接拨成 0 也行如果标的是二进制就一位一位拨到 0。第二步拨数据。5AH 拆成高四位和低四位5 对应二进制 0101A 对应二进制 1010合起来就是 01011010。数据开关 D7 到 D0 从高位到低位依次拨成 0、1、0、1、1、0、1、0。新手最快的转换方式是四位一组先转高四位再转低四位不容易错。第三步给控制信号。CE 置 0OE 置 1WE 置 0。此时芯片被选中处于写模式数据线上的 01011010 在 WE 拉高的时刻被锁进 000H 单元。保持状态两三秒后把 WE 拉回 1写入完成。第四步读回验证。把 OE 从 1 拨到 0WE 保持 1CE 保持 0此时芯片切换到读模式。看数据指示灯应该显示 01011010。如果显示的值不是它先不要慌跳到下一章的排查环节按顺序检查所有开关状态。3.3 连续读写多个地址验证存储器的“记忆”能力单个地址写读成功之后不要急着收工建议至少测四个有代表性的值00H、FFH、5AH、A5H。为什么要选这四个00H 是 8 位全 0FFH 是 8 位全 1可以一次性检查每位是否能正常置 0 和置 15AH 和 A5H 的高低四位正好相反能检查相邻数据线之间有没有相互干扰。操作步骤和第一次完全一样先拨地址再拨数据然后 CE0、OE1、WE0停一下WE 拉回 1再切到读模式验证。每次操作完把结果填进记录表里。我建议你手动画一张类似下面的表实验报告也能直接用地址(HEX)写入数据(HEX)读回结果(HEX)结论0005A5A写读正常0010000写读正常002FFFF写读正常003A5A5写读正常如果你贪快想一次把所有地址写完再统一读也不是不行但那样一旦出错很难定位是写入阶段的问题还是读取阶段的问题。新手老老实实“写一个读一个”效率反而更高。3.4 用三个小实验观察存储器的保持特性读写验证通过后可以做几个小实验加深理解。第一个实验把 CE 置 1让芯片未选中然后随意拨动地址开关拨出一个和刚才完全不同的地址。此时数据指示灯应该变成高阻态面板上可能表现为指示灯全灭或者熄灭。接着把地址拨回 000HCE 拨 0OE 拨 0WE 拨 1你会发现读出的还是 5AH。这说明只要不掉电片选信号不选中芯片存储内容会一直保持。第二个实验连续读同一个地址很多次比如对着 000H 连续读十几次。你会发现数据灯每次都显示同样的值没有任何变化。这就是静态 RAM 的非破坏性读出。和 DRAM 读完后需要回写不同SRAM 读出操作本身不会破坏存储内容。第三个实验把 CE0、WE1、OE1芯片被选中但没有读也没有写。此时数据线是高阻态数据灯不应该亮。这个状态对应真值表里的“选中但未读未写”。理解了这个状态后面理解总线隔离就顺理成章了。这三个实验看起来简单却是让你把存储器的行为从“看别人讲解”变成“自己验证过”的关键一步。4. 信号灯不听话常见问题与排查技巧4.1 写入后读出来全是 FF 或 00现象往某个地址写了一个数切到读模式验证结果数据灯不是全 1 就是全 0和写入值完全对不上。最常见的原因是 CE 一直是 1芯片压根没被选中。很多新手潜意识里觉得开关拨到 1 才是“激活”但 6116 的控制信号全是低有效CE 必须为 0 芯片才工作。先检查 CE 是不是拨在 1 上。第二个常见原因是写入动作没真正发生。比如你拨了 WE0但马上又拨回 1中间停留时间太短虚拟实验里可能看不出问题真实芯片上就可能写失败。虽然虚拟平台不一定会模拟这种时序错误但操作习惯必须正确WE 拉低后保持一会儿再拉高给写脉冲留出完成的窗口。排查顺序建议先看 CE再看 WE最后看 OE。逐一检查三个控制开关状态对着真值表对比八成能发现是哪一步没做对。4.2 数据指示灯卡死拨数据开关没反应现象数据指示灯锁定在某个值不管怎么拨数据开关灯都不跟着变好像开关失效了。这说明数据总线正被 6116 的输出电路牢牢占住。什么情况下会这样当你处于读状态时OE0 且 WE1芯片把存储单元的数据输出到数据线上此时数据总线由芯片内部驱动。外部数据开关虽然也在连接总线上但它的驱动能力抢不过芯片所以拨了也没用。解决办法很简单写操作前先把 OE 置 1或者把 WE 拉低让输出端进入高阻态把总线控制权交还给数据开关。这是一个非常经典的“总线使用权”问题理解了它后面做运算器实验时遇到三态门相关的问题也会很有感觉。4.3 一拨地址开关数据灯就跟着乱跳现象地址开关拨动过程中数据指示灯开始无规律闪烁看起来像灵异事件。本质上是芯片在“不稳定的地址”上做了读操作。你拨开关是有过程的在这个过程中地址线上会短暂出现各种中间组合每一个组合都可能对应一个存储单元芯片就会把这些内容轮流输出到数据线上造成乱跳。正确操作顺序是先让 CE 置 1把芯片隔离掉再去拨地址开关。等所有地址位都稳定了再把 CE 拨回 0然后给出读信号。这样芯片永远只看到一个稳定的最终地址而不是拨动过程中的中间状态。真实实验箱上这个毛病还会因为机械开关抖动而更明显所以这个好习惯越早养成越好。4.4 读出的内容张冠李戴换地址没用现象往 000H 写了数据读的时候怎么也读不出来但往其他地址乱写乱读偶尔能对上。怀疑是芯片坏了其实多半是拨错了地址位。11 位地址线在面板上分布范围较广有的版本把开关按 A10 到 A0 排列有的版本按 A0 到 A10 排列新手如果没看丝印很容易把高位当成低位。比如你心里想拨 000H但 A0 位实际被拨成了 1读出来的就是 001H 的内容。排查方法是回到最基础从 000H 开始每次只让地址加 1也就是只改变最低位观察读出的内容变化。如果最低位变了但读出的内容没变说明地址线接反了或拨错了位置。把地址开关逐位理清问题自然消失。4.5 快速定位问题的排查思路表把上面几个典型问题整理成一张表实验现场照着查效率会高很多现象可能原因排查方法写入后读回全 FFCE 一直为 1芯片未选中或写入未真正发出检查 CE 是否置 0重新执行一次完整写脉冲写入后读回全 00写入数据前数据开关没拨对或始终处于写模式写之前核对数据开关写完后把 WE 拉回 1数据灯卡死拨开关无效芯片一直处于读输出状态总线被占用写操作前把 OE 置 1 或 WE 拉低释放总线拨地址时数据乱跳芯片在地址不稳定期间持续读先 CE1 隔离地址稳定后再 CE0读出的内容对不上地址地址位拨错或高低位顺序看反从 000H 开始逐次加 1核对最低位变化写完立刻读是对的过一会儿读不对操作过程中开关被误碰检查当前开关状态是否仍是读模式这张表建议截图保存。实验现场出问题时从第一行开始逐项核对比漫无目的地乱点开关有效得多。5. 多思虚拟平台的实操心得与进阶建议5.1 虚拟实验与实物实验箱的差异在虚拟平台上做实验最大的好处是不会烧东西、不会接错线、随时可以重置。但也正因为它太“干净”有些真实世界的问题它模拟不出来比如机械开关抖动、导线接触不良、信号在长走线上的反射和延迟。我在带学生做实验时经常提醒虚拟平台能通过的实验拿到真实实验箱上不一定一次成功。虚拟实验忽略了电路噪声和开关抖动你在平台上养成操作习惯到了实物环境会省很多事。反过来虚拟平台都做不对的实物环境基本也做不对。所以不要小看这个“模拟器”它是你把原理内化的最佳练习场。虚拟平台对时序参数的处理也比较理想化。真实 6116 有地址存取时间、WE 脉宽最小要求虚拟实验基本不会为这些细节为难你。但实验报告里画时序图时该标的建立时间、保持时间还是要标这是老师考察你是否真正理解读写的关键点。5.2 容易被忽略的好用功能多思计组虚拟实验室里有几个功能新手往往没注意到但用好了会省很多时间。第一个是存储内容查看窗口。实验面板之外通常有一个能直接浏览 2K 地址空间的窗口你可以立刻看到哪个地址存了哪个值。做完一批写入之后不用一个个地址读打开窗口扫一眼就能确认结果。这个窗口特别适合用来调试“读不出来”的问题它能告诉你芯片里到底写了什么。第二个是手动脉冲或单步触发。有些版本提供写入脉冲按钮点一下就会产生一个标准的 WE 脉冲信号比手动拨开关更接近真实时序。如果你觉得手动拨 WE 老是掌握不好节奏可以试试这个功能。第三个是实验状态保存。写了一半想去吃饭直接存档回来接着做不用重新拨一遍开关。这个功能适合做批量读写这类耗时任务。第四个是总线波形查看。部分版本会显示 CE、WE、OE、地址和数据的时序波形图实验报告需要画时序图时直接截图是非常有力的素材。5.3 做实验记录与写实验报告的小建议实验记录别只截图面板那是偷懒复盘时根本没信息量。比较好的做法是每步操作都记录成一张表地址、写入数据、控制信号状态、读回数据、结论。这张表既是你的操作日志也是实验报告的主体内容。写实验报告时至少要包含三样东西一是地址-数据对照表证明你做了哪些写读验证二是读周期和写周期的时序图手动画一遍也好从平台截图也好要能体现地址稳定、写脉冲、数据有效这几个关键阶段三是调试记录把你遇到的“写入后读不出”“总线卡死”这类问题和解决过程写进去。老师看到调试记录比看到一张完美无瑕的“顺利通过”更有好感因为它说明你真的动手并思考了。最后说一点个人经验。我做这个实验之前一直觉得存储器就是“往格子里面装东西”做完之后才意识到真正难的不是装东西而是决定什么时候让谁说话。控制信号的低有效、高阻态、写脉冲上升沿锁存这一整套逻辑才是存储系统设计的精髓。如果你能把 6116 这块芯片的读写时序彻底搞明白后面做运算器、做数据通路实验时很多概念都会顺很多。实验做完后不要急着关平台花十分钟把真值表里那五个控制组合挨个试一遍对信号的理解会有一个质的提升。
返回列表