IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> logisim实验七:MIPS RAM设计 -> 正文阅读

[嵌入式]logisim实验七:MIPS RAM设计

实验目的

学生理解主存地址基本概念,理解存储位扩展基本思想,并能利用相关原理构建能同时支持字节、半字、字访问的存储子系统。

实验内容

Logisim 中 RAM 组件只能提供固定的地址位宽,数据输出也只能提供固定的数据位宽,访问时无法同时支持字节/半字/字三种访问模式,实验要求利用 4 个4 K*8 位的 RAM 组件进行扩展,设计完成既能按照 8 位、也能按 16 位、也能按照 32 位进行读写访问的 32 位存储器。
在这里插入图片描述

方案设计

  • 整体设计思路:控制电路可以分成三部分:对输入的待存储数据的控制与划分,对RAM芯片的控制,对输出数据的控制。分成三部分的好处在于可以减小问题规模,同时优化电路结构,避免过于冗杂。半字访问时片选位为0时访问0和1RAM,片选位为1时访问2和3RAM。接下来讨论三部分电路的设计思路。

  • 预处理:对输入的十二位地址和32位数据进行划分处理,方便后续操作。add1为低两位地址,用于字访问模式下的片选,add2为倒数第二位地址,用于半字访问模式下的片选。
    在这里插入图片描述

  • 输入控制:将输入的32位2进制待存数分成四个八位二进制数,In0,In1,In2,In3,然后分别讨论四个RAM组件的输入数据在不同访问模式下应该是多少,设输入到四个RAM组件的数据分别为IN0,IN1,IN2,IN3。IN0:任何控制模式下只能是In0(控制RAM组件在部分访问模式下不存取数据是RAM芯片芯片控制电路要干的事情,输入控制电路只要保证相应的RAM组件在需要存储数据的时候拿到正确的待存储数就可以了)。字访问时输入到四个RAM的数据分别为In0,In1,In2,In3;字节访问时输入到RAM的数据为In0;半字访问时输入到RAM的数据IN0和IN2为In0,IN1和IN3为In1。
    在这里插入图片描述

  • RAM控制:通过对存储引脚str的控制来确保存储数据的正确性,一个RAM是否需要存储数据取决于使能端WE的输入和访问模式,可以将两者的结果两者的最终结果相与得到str的控制信号。通过解复用器分别得到在半字访问和字节访问模式下的片选信号,将不同模式下的片选信号做或运算即为访问模式对RAM产生的控制信号。
    在这里插入图片描述

  • 输出控制:思路上与输入控制相似,对最终结果的四个部分OUT0,OUT1,OUT2,OUT3分别进行控制,通过分线器拼成Dout。设RAM组件直接输出的结果分别为out0,out1,out2,out2,字访问模式下最终结果的四个部分分别为各个RAM组件的输出;字节访问模式下OUT0的结果为所选定的那个RAM组件的输出,其余为0;半字访问模式下根据所选RAM组件的不同OUT0为out0或out1,OUT1为out1或out3,OUT2和OUT3为0。
    在这里插入图片描述

  • 整体电路
    在这里插入图片描述

实验步骤

  • 弄清电路要求,弄清各个引脚的功能。
  • 构思整体思路,对控制电路进行功能划分。
  • 分别设计三部分控制电路。
  • 连接各部分电路。
  • 测试发现bug,修改电路。
  • 总结收获。

故障与调试

  • 遇到的第一个bug是实验电路不输出结果,原因在于使用的片选引脚进行RAM组件的控制,这样的设计会使得未被选中的的RAM不输出结果,而在实验所给的测试样例中无论是否为本次操作选到的RAM组件,都要输出对应RAM中存储的数据。借此机会也弄清了输入输出的逻辑,在一次脉冲中输出的数据为此脉冲来到的前一瞬间对应RAM中存储的数据。
    在这里插入图片描述
  • 发现上面第一个bug后在测试之前同时修改了存在的第二个bug:没有考虑WE端。
  • 继续测试发现当访问模式不为字访问时输出结果错误,具体表现为访问一个没有存储过数据的地址输出结果不为0。把出现错误的区域锁定在了输出控制部分,因为在RAM控制电路部分的地址输入是直接从输入的地址中提取的,问题出在这个地方的概率很低。错误在于将RAM输出的结果作或运算得到最终输出,应该用多路选择器做数据选择。
    在这里插入图片描述
  • 同理,半字访问下的输出结果也是错的,测试到半字访问时将电路一并做了修改。
  • 半字访问的地址提取错误,应该是倒数第二位,还有一些类似的接错引脚,连电路的时候接着发现并修改了。
    在这里插入图片描述

测试与分析

  • 通过给定的测试电路与平台线上测试的方式找到了输出错误的样例,最终将电路修改正确。
    在这里插入图片描述
    在这里插入图片描述

实验总结

  • 通过本次实验,我进一步优化了设计逻辑电路的方法,通过将问题划分的方式可以大幅降低问题的复杂规模,降低设计难度。同时,我发现了调试电路时与平时调试程序的共性:遇到bug按出错概率从高到低检查验证各部分电路,可以大大提高调试效率。本次实验使我受益匪浅。
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-13 11:53:07  更:2022-05-13 11:53:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:55:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码