计算机组成原理:储系统综合实验

储系统综合实验

一、 实验目的

  • 熟悉 Logisim 软件平台;

  • 熟悉 ROM、RAM 存储器的使用;

  • 掌握存储器字扩展,位扩展的基本原理;

  • 为 MIPS CPU 设计功能部件—寄存器文件;


二、 实验环境

Logisim 是一款数字电路模拟的教育软件,每一位用户都可以通过它来学习如何创建逻辑电路,方便简单。它是一款基于 Java 的应用程序,可运行在任何支持 JAVA 环境的平台,方便学生来学习设计和模仿数字逻辑电路。Logisim 中的主要组成部分之一就在于设计并以图示来显示 CPU。当然 Logisim 中还有其他多种组合分析模型来对你进行帮助,如转换电路,表达式,布尔型和真值表等等。同时还可以重新利用小规模的电路来作为大型电路的一部分。


三、 实验内容

1、存储扩展实验

**实验目的:**掌握存储扩展基本原理。

**实验内容:**设计字库文件,利用指定规格存储器进行存储器字扩展。

实验要求:

现有如下 ROM 部件,2个4K*16位ROM,3个4K*32 位ROM,7 个16K*32 位 ROM,请构建GB2312 1616 点阵字库存储器电路,电路输入为汉字区号和位号,由于16*16 点阵的字模码需要256 位点阵信息才能显示一个汉字,所以电路输出为 8*32 位

1) 电路图

2) 设计分析与说明
  • 对区号和位号经过一系列处理之后计算出存储器的14位偏移地址
  • 其中0-11位位地址线,12和13位为片选信号
  • 2位片选信号用来决定选择4个4K*32中的哪一个
  • 12位地址线用来选择相应ROM的地址
  • 将选中地址内的数据输出到相应的数据线
  • 8个输出引脚D0-D7,每个引脚输出32位数据,总计输出8*32=256位数据,从而可以表示16*16字形点阵所需要的256位信息

**输入:**汉字在GB2312编码中的区号和位号。
注意:这里区号引脚和位号引脚都只接受7个位数据,这是因为GB2312-80将汉字分为94个区和94个位,故7个位(可表示0-127)即可涵盖区间[0,94]。以“边”字为例,其GB2312编码为1763,17表示区号,63表示位号,故为了显示“边”,我们需要往区号引脚输入0010001(17),往位号引脚输入0111111(63)。

**输出:**GB2312区位码对应的汉字字形码。
电路总共有8个输出引脚D0-D7,每个引脚输出32位数据,总计输出8*32=256位数据,从而可以表示16*16字形点阵所需要的256位信息。

3) 实验结果的记录与分析

经测试,标准库与待测字库的显示一致,字库实现正确

4) 列出操作步骤及顺序
  • 对区号和位号经过一系列处理之后计算出存储器的偏移地址,每个偏移地址对应一个16*16汉字点阵码
  • 每次使用同一个存储器偏移地址同时对8个32位ROM进行寻址,单次寻址就可获得8*32=256位数据,其中每个32位ROM保存16*16点阵码的固定两行(表示一行需要16位,两行即32位)
  • 将2个 4K*16 ROM位扩展成1个 4K*32 ROM(使用splitter)
  • 将4个 4K*32 ROM字扩展成1个 16K*32 ROM(使用multiplexer)
  • 字库电路的8个输出引脚(D0-D7)连接至16*16 LED点阵屏上,从而显示汉字的形状
2、MIPS 寄存器文件设计

**实验目的:**为MIPS CPU构造核心功能部件,进一步熟悉多路选择器,译码器,解复用器等Logisim部件的使用
**实验内容:**设计完成满足如下规格要求的 MIPS 通用寄存器组。

1)利用 logisim 平台构建一个 MIPS 寄存器组,内部包含 32 个 32 位寄存器,其具体功能如下,具体封装文件为 regfile.circ.

表 1 芯片引脚与功能描述
引脚输入/输出位宽功能描述
R1#输入5读寄存器 1 编号
R2#输入5读寄存器 2 编号
W#输入5写入寄存器编号
Din输入32写入数据
WE输入1写入使能信号,为 1 时,CLK 上跳沿将Din 数据写入 W#寄存器
CLK输入1时钟信号,上跳沿有效
R1输出32R1#寄存器的值
R2输出32R2#寄存器的值
$s0输出32编号为 16 的寄存器的值
$s1输出32编号为 17 的寄存器的值
$s2输出32编号为 18 的寄存器的值
$ra输出32编号为 31 的寄存器的值
  1. 为减少实验中画图工作量,实验工程文件中对 5 位寄存器地址进行了简化,具体见引脚示意图,最终只需实现 4 个寄存器,0 号寄存器功能仍然是恒零。后续实验中如需要使用 32 个寄存器的 MIPS 寄存器文件组,将提供标准组件。

  2. 注意时钟信号和电平信号不要混连,时钟仅仅触发状态改变。

实验要求:

  • 利用logisim平台构建一个MIPS寄存器组,内部包含32个32位寄存器(实际4个)
  • 为减少实验中画图工作量,实验工程文件中对5位寄存器地址进行了简化,具体见引脚示意图,最终只需实现4个寄存器(0-3号),0号寄存器恒为0
  • 注意时钟信号和电平信号不要混连,时钟仅仅触发状态改变
1) 电路图
2) 设计分析与说明
3) 实验结果的记录与分析

经测试,符合条件,电路设计正确

4) 列出操作步骤及顺序

输入引脚:

  • 分别通过reg1# reg2# write_reg#获得输入的三个寄存器编号,因为实验只要求实现0-3号寄存器,所以只需提取5位编号输入的低2位(00/01/10/11)
  • 通过 write_data 获取要写入寄存器的32位数据
  • 通过 WE 获取写入标志
  • 通过 clk 获取时钟信号

输出引脚:

  • 将读寄存器1的值输出到reg1
  • 将读寄存器2的值输出到reg2
  • 将4个寄存器当前保存的值输出到$0,$1,$2,$3

寄存器选择输出:

  • 利用多路复用器(multiplexer),多路复用器可以通过select bits选择多个输入中的一个进行输出
  • 将四个寄存器的输出引脚同时接到多路复用器的输入引脚上,将reg1#和reg2#作为多路复用器的select bits,从而选择指定输入进行输出。

寄存器选择写入:

  • 利用解复用器(demultiplexer),解复用器可以将输入只通过select bits指定的线路输出。
  • 将write_data同时连接到四个寄存器的data引脚(由于0号寄存器恒为0,因此可以忽略data引脚,或者将en置0)
  • 将we引脚作为解复用器的输入
  • 将write_reg#作为解复用器的select bits
  • 通过解复用器将要写入数据的寄存器的enable引脚置1,下个时钟信号到来时,只有该写入寄存器的enable引脚为1,因此wrtie_data数据只会写入到该寄存器中(其余寄存器enable引脚为0,时钟信号不会触发寄存器写入),从而实现寄存器选择写入

四、实验收获和体会

通过存储扩展实验,我了解到了存储器字位拓展的具体实现,掌握了存储扩展基本原理。之前知识会在纸上画画简单的电路图,使用logisim设计电路图之后,更加了解了电路的一些细节设计,掌握了一些器件的用法已经各引脚的功能。

通过MIPS 寄存器文件设计进一步熟悉多路选择器,译码器,解复用器等Logisim部件的使用。

五、实验中碰到的问题和解决的方法

1.寄存器的引脚比较多,可能会连错线

解决方法:每次连线的时候的要认真看每一个引脚的名称,掌握其具体功能

2.存储扩展的输出引脚显示不了部分字形阵

通过MIPS 寄存器文件设计进一步熟悉多路选择器,译码器,解复用器等Logisim部件的使用。

五、实验中碰到的问题和解决的方法

1.寄存器的引脚比较多,可能会连错线

解决方法:每次连线的时候的要认真看每一个引脚的名称,掌握其具体功能

2.存储扩展的输出引脚显示不了部分字形阵

解决方法:注意每一个ROM的表示范围。由于数据已经导入到ROM中,所以顺序固定为从左到右地址增加,在进行字扩展时,要注意地址区间的划分

  • 8
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
存储器扩展实验旨在向您展示如何使用Logisim设计和实现存储器扩展电路。存储器扩展电路是一种用于扩展计算机的存容量的电路,其原理是通过增加更多的存单元来扩展存储器。 以下是一个基本的存储器扩展电路: ![](https://img-blog.csdnimg.cn/20210927220353216.png) 该电路由以下组件组成: - 存储器单元:每个存单元可以存一个位(0或1)。 - 地址选择器:将输入地址解码为存储器单元的选择信号。 - 数据输入:将数据输入到存储器单元。 - 数据输出:从存储器单元读取数据。 在这个电路中,每个存单元都有一个唯一的地址。地址选择器根据输入地址选择要读取或写入的存单元。如果选择读取,则数据输出从该单元读取数据。如果选择写入,则数据输入将数据写入该单元。 为实现存储器扩展电路,您需要完成以下步骤: 1. 设计存储器单元 您需要设计一个存储器单元,它可以存一个位(0或1)。您可以使用D触发器或SR触发器等元件来实现存储器单元。 2. 复制存储器单元 根据需要扩展存储器的容量,复制存储器单元。例如,如果您需要增加存储器容量到8位,则需要复制存储器单元7次。 3. 设计地址选择器 地址选择器将输入地址解码为存储器单元的选择信号。例如,如果地址为3,则地址选择器将选择第4个存储器单元。 您可以使用多路选择器或译码器等元件来实现地址选择器。 4. 实现数据输入和输出 数据输入将数据写入存储器单元,而数据输出存储器单元读取数据。 为了实现数据输入和输出,您需要使用开关或输入/输出端口等元件来输入和输出数据。 5. 连接电路 最后,将所有组件连接起来,以构建完整的存储器扩展电路。 以下是一个简单的存储器扩展电路示例: ![](https://img-blog.csdnimg.cn/20210927220610527.png) 该电路扩展了4位存储器的容量。它包含4个存单元、2个地址选择器、1个数据输入和1个数据输出。每个存单元都由一个D触发器实现。地址选择器由一个2到4译码器和一个多路选择器实现。 这只是一个简单的示例,您可以根据需要进行扩展和修改。通过使用Logisim,您可以轻松地设计、模拟和测试存储器扩展电路。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值