《MIPS RAM设计:探索计算机组成原理实验》

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


                                                                          图1.1 实验电路框架图

                                                                       图1.2 电路引脚与功能描述
二、方案设计
    1.设计原理
     字节:8位
     半字:16位
     字:32位

    2.设计思路
    RAM:
     因为要实现不同模式的访问,最小单位为字节,所以RAM位宽为8位,最大单位为字32位,所以一共需要4片8位RAM组件。
     把这四片RAM的数据对应标记为byte0,byte1,byte2,byte3
     字节地址输入:
     Addr为12位字节地址,RAM的地址位宽为10位,所以可用分线器将字节地址低2位作为片选
     地址,高10位为RAM的块内地址,每个RAM可输出一个字节。
     读出数据:
     字读出时,直接将四个RAM的数据全部输出
     半字读出时,根据字节地址倒数第二位决定输出哪个半字(此时忽略字节地址最低位,倒数第二位实现片选)
     字节读出时,根据字节地址低两位决定输出哪个字节(字节地址低两位实现片选)
     写入数据:
     设每一个RAM的输入分别为r0,r1,r2,r3.
     字写入时,r0,r1,r2,r3分别得到Din的第0 ~ 7,8 ~ 15,16 ~ 23,24 ~ 31位
     半字写入时,根据边界对齐和忽略高位的原则,r0和r2得到Din的第0 ~ 7位,r1和r3得到Din的第8 ~ 15位,然后根据写入的
                           片选信号选择高半字或低半字存储
     字节写入时,根据忽略高位的原则,r0,r1,r2,r3都得到Din的第0 ~ 7位,然后根据写入的片选信号选择一个RAM写入
     写入数据时的片选信号:
     可以结合Mode对r0,r1,r2,r3的输入条件分类讨论(Mode:00字访问,01字节访问,10半字访问)
     输入r0条件: ①Mode=00; ②Mode=01,字节地址末两位为00; ③Mode=10,字节地址倒数第二位为0
     输入r1条件: ①Mode=00; ②Mode=01,字节地址末两位为01; ③Mode=10,字节地址倒数第二位为0
     输入r2条件: ①Mode=00; ②Mode=01,字节地址末两位为10; ③Mode=10,字节地址倒数第二位为1
     输入r3条件: ①Mode=00; ②Mode=01,字节地址末两位为11; ③Mode=10,字节地址倒数第二位为1
     可构造数字逻辑电路得到写入的片选信号,与写使能信号通过或门,即可确定是否写入数据。
     综上所述,设计完成了既能按照8位、也能按照16位、也能按照32位进行读写访问的32位存储器。
     3.设计电路图

三、实验步骤
     1.下载educoder平台上的初始代码,并用Logisim打开
     2.连接好RAM以及时钟、使能端等

     3.读出逻辑实现(从左到右为字读出、半字读出、字节读出)

     4.写入逻辑及写入片选信号逻辑实现

     5.调整布局,使线路整体匀称、美观

四、故障与调适
     按照整体思路连接后,在“MIPS RAM测试”子电路进行测试,发现并没有出现“PASS”,而是“FAIL”

     原因分析:
     通过对右下方报错信息分析,结合对每一部分电路的检查,发现是在“Dout”电路中,半字和字节的连接顺序连接错误

     解决方案:
     将半字和字节的连接顺序调换,实现正确的逻辑

五、测试与分析
     在“MIPS RAM测试”子电路中,按下CTRL+K进行自动测试

     Educoder平台测试结果

六、实验总结
     1.根据实验要求,结合各个引脚要求实现的功能进行整体构思
     2.对功能进行划分,确定各引脚功能实现的顺序,采取“逐个击破”策略
     3.对引脚功能的实现进行具体设计(从RAM连接到片选信号的设计)
     4.将各部分功能电路组合起来,争取实现目标要求,并进行测试
     5.根据测试结果,寻找并纠正错误,完成电路设计
——
     本次实验看似简单,其实难度还是比较大,有几个细节要特别注意。整体来看,实验要求我们根据MODE信号,WE信号,
字节地址信号给出存储器访问的相关控制信号。虽然是一个组合电路设计,但是需要对内存地址有着比较深的理解。
     刚刚开始实验时,一时间不知从哪里入手,还是去MOCC慕课听了谭老师讲解的一些注意事项,又深入了解学习了内存地址
后才逐渐摸到门道。最终在不断试错、结合前辈经验一路“摸爬滚打”构建出了实验的大体框架。在连接完电路后,我又结合之前实验对隧道的妙用,对电路进行了美化,自我感觉还是很好的。总之通过这次实验大大加深了我对内存地址的理解,对于Logisim的使用以及对逻辑电路的美化也是一次很好的训练,总之这次实验我收获很多!

参考:
https://zhuanlan.zhihu.com/p/144958263
https://blog.csdn.net/weixin_45775050/article/details/122974628
https://blog.csdn.net/gyp0205/article/details/124694193?spm=1001.2014.3001.5502

物联沃分享整理
物联沃-IOTWORD物联网 » 《MIPS RAM设计:探索计算机组成原理实验》

发表评论