山东大学计算机组成原理课设 实验四

简介: 第四次实验:2022年4月19日星期四,第7周第二次部件级实验,算分

一、实验时间

第四次实验:2022年4月19日星期四,第7周

第二次部件级实验,算分

二、实验内容

1.实验目的

(1)完成随机存储器(RAM)读写系统结构设计;

(2)熟悉随机存储器(RAM)的读写时序;

(3)完成随机存储器(RAM)读写操作的微程序实现;

(4)熟悉随机存储器(RAM)的功能测试。

2.设计要求

在硬件平台上已经提供了2k*8的的随机存储器(RAM)

本此实验的主要内容是设计一个具体的电路,用来对这个RAM进行读写操作,并控制好时序

3.结构框架图

实验要求

1、完成对RAM中数据的读取

2、ROM中存储的仍然是我们写的微指令

4. 实验要求和基本思路

实验方案

方案说明: 1、PC=0,作为起始地址   2、采用存储器间接寻址方式获得操作数

实验逻辑流程

1、利用软件将编写的微指令存储到ROM当中,利用软件将数据存入RAM中

2、按下单脉冲CP,启动电路开始运行,upc(第一个mod256计数器)得到脉冲信号(同时发送μRD:ROM的读信号;CPμIR:微指令寄存器时钟信号)(该计数器初值设定与开关K0-K7绑定)

3、upc会输出00地址到ROM地址线,在读信号影响下读出00地址的内容,并送入IR中

4、第一条微指令开始执行,作用为:保持启动电路,使用二路数据选择器选择PC输出,提供读信号和MAR打入信号,取出RAM 0地址中的数据Ad1,放入MAR寄存器中,并使PC+1

(此时PC提供MAR地址)(从RAM读出数据送到MAR寄存器中)(MAR此时存储的是数据的真实地址)

5、由于启停电路接上连续脉冲,所以upc会自动读取下一条微指令

6、第二条微指令开始执行,作用为:保持启动电路,使用二路数据选择器选择MAR输出(此时MAR输出早就保持着了),此时数据选择器为RAM提供地址(由MAR提供),给RAM提供读信号,和MBR打入信号(MAR不能打入脉冲,因为这个数据不存在MAR中),取出RAM Ad1地址中的数据X,放入MBR寄存器中

7、第三条微指令开始执行,作用为:使用二路数据选择器选择PC输出,提供读信号和MAR打入信号,取出RAM 1地址中的数据Ad2,放入MAR寄存器中

8、第四条微指令开始执行,作用为:使用二路数据选择器选择MAR输出,提供写信号(此时RAM地址输出是用来存储)和MBR的使能端信号,将MBR中的数据X打入RAM的Ad2地址中

9、停机,使连续脉冲不再对电路起作用

内存写入

ROM写入:从00、01......往后写5条下面给的微指令就行

RAM写入:


整体功能实现

利用PC作为地址从RAM中读取一个地址Ad1存在MAR中——》利用MAR读取Ad1作为地址在RAM中读取数据X存在MBR中——》利用PC作为地址从RAM中读取另一个地址Ad2存在MAR中——》把MBR中的数据X存入MAR地址中


测试数据执行顺序:1——》3——》2——》4

5. 微程序设计

上面的步骤全部需要通过微程序实现,总共需要五步,共五条微指令,写入ROM即可

微指令共24位:A23,A22,A21…A2,A1,A0

A7:HALT(停机指令)

A6:EN/WR(写RAM和使能信号)

A5:RD(读RAM)

A4:MARY(二路选择器选择MAR输出)

A3:PCY(二路选择器选择PC输出)

A2:CPMBR(MBR打入脉冲)

A1:CPMAR(MAR打入脉冲)

A0:CPPC(PC打入脉冲)

指令可以设计为:

三、电路图

1. 启动电路

本次实验使用实验平台上的连续脉冲,因此只需要按一次单脉冲键即可,连续脉冲会自动运行,并取出ROM中已经提前写入的所有微程序,直到停机指令的执行,因此需要在原本脉冲的基础上增加一个启动电路


启动电路具体的电路图在课件上有,这里我把它封装成一个单独的部件,以便之后可以复用


当HALT为1时,输出端CP一直为0,启动电路暂停运行。

特别提醒:最后的输出那里的非门一定不能少,一定不能少!!!

2. MBR寄存器

MBR寄存器和普通寄存器的功能类似,只是在输出端加上了三态门进行控制

特别注意:三态门的控制端EN,值为1的时候是通路,值为0的时候是高阻态

3.总图

特别注意:总图中包含了uPC和PC两个计数器,uPC负责给出ROM中的微程序的地址,而PC负责给出RAM中数据的地址

这里复用了之前实验的模256计数器和数据选择器

四、补充说明

1、如果一直不成功,请试试重新编译电路图后上传(一直不成功,重新编译后上传就成功了www)

2、如果仍然不成功,请一定仔细研究微指令,微指令里面有很多细节

相关文章
|
存储 自然语言处理 算法
【编译原理】LR(1)分析法:C/C++实现
【编译原理】LR(1)分析法:C/C++实现
1718 0
|
6月前
|
人工智能 自然语言处理 算法
当GEO遭遇造假,AI优化向何处去?
生成式引擎优化(GEO)兴起,虚假榜单泛滥成灾。王耀恒警示:部分代运营公司利用AI批量炮制“行业第一”等伪排名,操纵AI回答,污染知识源头。他呼吁回归真实可信的品牌建设,推动技术反制与行业自律,重塑GEO伦理,让AI呈现的不是谎言,而是经得起验证的真相。
|
9月前
|
Windows
windows错误0x80070057?各种安装软件时出现参数错误0x80070057解决办法
本文介绍了Windows系统中常见的错误代码0x80070057的解决方法。该错误通常出现在安装IIS、Edge浏览器、系统更新或文件复制等操作中。文章推荐使用FixWin 11这款修复工具,帮助用户快速解决此类问题。工具支持多种Windows系统问题修复,操作简单,适合普通用户使用。
1173 0
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
本文介绍了Spring Boot中静态资源的访问位置、如何进行静态资源访问测试、自定义静态资源路径和静态资源请求映射,以及如何处理自定义静态资源映射对index页面访问的影响。提供了两种解决方案:取消自定义静态资源映射或编写Controller来截获index.html的请求并重定向。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
|
缓存 并行计算 数据处理
全面提升Python性能的十三种优化技巧
通过应用上述十三种优化技巧,开发者可以显著提高Python代码的执行效率和性能。每个技巧都针对特定的性能瓶颈进行优化,从内存管理到并行计算,再到使用高效的数值计算库。这些优化不仅能提升代码的运行速度,还能提高代码的可读性和可维护性。希望这些技巧能帮助开发者在实际项目中实现更高效的Python编程。
1018 22
|
人工智能 编译器 芯片
【AI系统】为什么需要 AI 编译器
本文探讨了AI编译器的黄金年代及其必要性,通过对比传统编译器与AI编译器的区别,揭示了AI编译器在处理复杂神经网络模型时的优化能力和对异构计算平台的支持。随着AI硬件的多样化和软件碎片化问题的加剧,AI编译器成为连接上层应用与底层硬件的关键桥梁,旨在提高性能、降低成本并增强软件的可移植性。
545 2
|
运维 安全 应用服务中间件
自动化运维之宝:使用Ansible实现批量配置管理
【8月更文挑战第45天】在现代IT运维领域,自动化工具的运用如同给运维人员装备了一副翅膀。本文将介绍如何利用Ansible这一强大的自动化工具来简化和加速日常的运维任务,特别是批量配置管理的实战技巧。通过实际案例,我们将深入探讨如何编写Ansible Playbook,以及如何使用它来自动化软件部署、系统配置和安全性强化。你将学会如何从重复繁琐的任务中解放出来,提升效率,保障系统的稳定性与安全性。
322 21
|
大数据
熵值法+TOPSIS法确定决策方案
熵值法+TOPSIS法确定决策方案
463 0
汉化FC(红白机)游戏需要用到哪些技术?
这篇文章介绍了FC(红白机)游戏文本汉化的基本流程和技术知识。主要步骤包括分析游戏ROM、寻找文本字符串、学习游戏代码、修改文本、修改ROM头信息、重新映射、测试和修正。文章还提供了汉化实例,详细讲解了如何使用各种工具,如VirtuaNES Debugger、NO$NES、6502 Simulator等进行ROM分析和修改。此外,文章还介绍了如何使用汇编语言编写自定义程序以实现大字体汉化和在游戏画面切换时恢复原来的VROM。整个过程需要对6502汇编语言、NES硬件架构和ROM结构有一定的理解和编程经验。
编译原理----0型,1型,2型,3型文法
编译原理----0型,1型,2型,3型文法
783 1