分类 默认分类 下的文章

计算机组成原理4

实验过程:

RAM ROM引脚

RAM

随机存储器针脚:
sel(片选)

load data

clr

A

D

ROM

Sel引脚:

D 引脚:

A 引脚:

任务1:存储器位扩展

在这个任务中,我们将使用Logisim来创建一个存储器位扩展电路。位扩展是通过多个存储器器件来扩展字长的一种方式。我们将使用4个322位芯片来组成一个328位的存储器,并改变地址、设置片选sel和加载ld信号来模拟位扩展。
  1. 打开Logisim并创建一个新的电路。
  2. 在电路中添加4个322位的存储器芯片,并将它们连接在一起,以创建一个328位的存储器。设置每个存储器的地址范围,确保它们不重叠。
  3. 添加一个地址输入端口(Address BUS),一个片选sel输入端口,一个加载ld输入端口,以及一个输出端口。
  4. 连接地址输入端口到存储器的地址输入,并将片选sel和加载ld连接到相应的存储器控制端口。
  5. 使用Logisim的时钟源来改变地址、设置sel和ld信号,观察输出结果。

322 位芯片组成 328 位的存储器

32*2 地址是32个(有5个地址位,32个单元),数据位宽是2位(每个单元两个bit,也就是输出两个bit)

存储器选择5地址位宽 + 2数据位宽

任务2:存储器字扩展

利用logisim组件做如下电路
字扩展指的是增加存储器中字的数量。如下图⽤4个328位芯⽚组成1288位存储器。了解数据总线(Address BUS)和地址总线(Data BUS)概念和简单应用
  1. 打开Logisim并创建一个新的电路。
  2. 在电路中添加4个328位的存储器芯片,并将它们连接在一起,以创建一个1288位的存储器。设置每个存储器的地址范围,确保它们不重叠。
  3. 添加一个地址输入端口(Address BUS)和一个片选sel输入端口。
  4. 连接地址输入端口到存储器的地址输入,并将片选sel连接到相应的存储器控制端口。
  5. 使用Logisim来改变地址和片选信号,观察输出结果。
总地址位
7 6    5 4 3 2 1
<片选><-----地址------>

解码器

右边的针脚

加上load data 、 clear 线路

任务3:存储器字位扩展

存储器字位扩展(4片324位存储器位组成2片328位存储器字扩展为64*8位存储器)
  1. 打开Logisim并创建一个新的电路。
  2. 在电路中添加4个324位的存储器芯片,并将它们连接在一起,以创建2片328位的存储器。设置每个存储器的地址范围,确保它们不重叠。
  3. 添加一个地址输入端口(Address BUS)和一个片选sel输入端口。
  4. 连接地址输入端口到存储器的地址输入,并将片选sel连接到相应的存储器控制端口。
  5. 使用Logisim来改变地址和片选信号,观察输出结果。

两片合起来

6     5 4 3 2 1
<片选><-----地址------>

片选1

片选2

任务4:学号和成绩显示电路

完成如下学号、成绩显示电路(注:为降低难度,存储显示系统为十六进制,使用时不要输入十进制以外数据,直观上做十进制数据操作)
  1. 打开Logisim并创建一个新的电路。
  2. 添加一个只读存储器(Read-Only Memory,ROM)组件,并设置其大小和地址范围,以适应学号和成绩数据的存储。
  3. 添加一个地址输入端口和一个片选sel输入端口,并将它们连接到ROM。
  4. 添加一个显示组件,用于显示学号和成绩数据。

  1. 设置ROM加载镜像,读入相应的学号成绩文本文件。

先保存镜像,然后加载镜像

填入数据就行

v2.0 raw
0 1 2 3 4 5 6 7 
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
v2.0 raw
90 91 92 93 94 95 96 97
98 99 a0 80 81 82 83 84
85 86 87 88 89 70 71 72
73 74 75 76 77 78 79 99

  1. 模拟电路运行,并通过更改地址来查看不同的学号和成绩数据。

CLK模拟:

这里100存了a0当做100分

任务5:RAM写入实验

RAM写入实验 在logisim的管理窗口创建如下子电路,完成下图的绘制,利用启用时钟模拟在RAM中的所有单元写入数据。
  1. 打开Logisim并创建一个新的电路。
  2. 添加一个RAM组件,并设置其大小和地址范围。
  3. 添加一个地址输入端口和一个数据输入端口,以便将数据写入RAM。
  4. 添加一个时钟源(Clock)以便模拟时钟信号。
  5. 使用时钟模拟将数据写入RAM中的各个单元。
  6. 添加一个数据输出端口,以显示RAM中的存储数据,并可以更改测试数据。

数据随便弄点

v2.0 raw
0 1 2 3 4 5 6 7 
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28

这样就可以啦

记得时钟线一定要连好。

任务6:8*16K 32位存储器电路

做如下8*16K 32位存储器电路(更改存储数据)
  1. 打开Logisim并创建一个新的电路。
  2. 添加8个32位存储器芯片,并设置其大小和地址范围,以创建8*16K 32位存储器。
  3. 添加一个地址输入端口和一个数据输出端口。
  4. 连接地址输入端口到存储器的地址输入,并将数据输出端口连接到存储器的数据输出。
  5. 使用Logisim来更改地址总线地址数据,观察输出数据的变化。

16*32的

画完了

计算机组成原理3

https://type.dayiyi.top/index.php/archives/222/

实验过程

1. RS触发器

1.1 介绍

RS触发器是数字电路中的核心元件,经常被用作更复杂触发器的基础。例如,它可以进一步改进为D触发器,以完成更多的任务。RS触发器在数字电路中负责同步和管理电路的工作。

1.2 电路结构与绘制

RS触发器由两个与非门或或非门(如G1和G2)构成,通过交叉连接输入输出端得到。这种交叉连接创建了正反馈,这是所有触发器电路的关键特性。

  • 输入:R、S
  • 输出:Q、~Q

状态定义如下:

  • 0态:Q=0,~Q=1
  • 1态:Q=1,~Q=0

1.3 模拟分析

  1. 当使用或非门作RS触发器时,如果R、S同时为1,那么Q和~Q输出都会为0。这破坏了互补逻辑关系。若同时撤销(变为0),RS触发器将处于不稳定状态。
  2. 对于与非门组成的RS触发器,当R、S都为0时,Q和~Q都为1,这也破坏了互补逻辑关系。同样,如果它们同时变为1,触发器将不稳定。

1.4 真值表

RSQ~Q描述
00不变不变保持状态
0110置1
1001置0
11不确定不确定不稳定状态
  • 当R=0,S=0时,输出Q和~Q不会发生改变,保持当前状态。
  • 当R=0,S=1时,Q输出为1,而~Q输出为0。这称为"Set"或置1操作。
  • 当R=1,S=0时,Q输出为0,而~Q输出为1。这称为"Reset"或置0操作。
  • 当R=1,S=1时,这是一个禁止的输入组合,因为它导致输出进入一个不确定或不稳定的状态。在实际电路中,这种组合通常避免使用。

1.5 触发器


2. D触发器

2.1 介绍

D触发器是一个记忆元件,有两个稳定状态,常用作时序电路的基础。它在数字逻辑电路中是非常重要的。它可以根据电平触发或边沿触发来工作。电平触发时,当CP(时钟脉冲)为1时触发。而边沿触发则在CP的前沿(从0变为1)进行。D触发器可以置0或置1,当CP=0时,输入信号不会有任何效果,它的状态保持不变,因此也被称为D锁存器。

2.2 真值表

CPDQ_next描述
0x不变保持状态
100传输0到Q
111传输1到Q
  • 当CP(时钟脉冲)为0时,无论D(数据输入)是什么值,Q的输出都不会改变,因此它被称为"保持"或"锁存"状态。
  • 当CP为1时,D的值被传输或复制到Q输出。因此,如果D=0,Q将输出0,如果D=1,Q将输出1。

2.3 触发器

自带的触发器

3. 制作4位寄存器

3.1 电路设计:

  1. 准备4个D触发器。
  2. 为每个D触发器设置一个并行输入(D0,D1,D2,D3)和一个并行输出(Q0,Q1,Q2,Q3)。
  3. 所有的D触发器应共用同一个时钟信号CP。
  4. 当CP有一个上升沿时,每个D触发器的输入值都会被“锁存”或传输到其对应的Q输出。

3.2 画图

3.3 模拟运行:

  • 设置输入D0-D3。
  • 触发时钟信号。

正常啦

4. 在Logisim中完成8位寄存器

4.1电路设计:

  1. 在Logisim中打开一个新的工作区。
  2. 添加8个D触发器。
  3. 为每个D触发器设置一个并行输入(D0-D7)和一个并行输出(Q0-Q7)。
  4. 所有的D触发器都应该连接到同一个时钟信号。

4.2 画图

4.3模拟运行:

  1. 使用Logisim的工具更改D输入的值。
  2. 激活时钟信号。
  3. 测试

RST:

5.利用组件构建 MIPS 8位寄存器设计如下(简化只设计0-1号寄存器)

隧道标记:R1# 为RD1输出选择端 RD1数据输出端1
R2# 为RD2输出选择端 RD2数据输出端2
WE为写使能
CLK为时钟输入 Din为数据输入端

MIPS(Microprocessor without Interlocked Pipeline Stages)是一个RISC(Reduced Instruction Set Computer)架构的微处理器系列。RISC是一种设计思路,它通过减少每条指令所做的工作和简化指令集来提高性能。MIPS架构在过去的几十年中已被广泛应用于许多应用程序,从桌面计算机到嵌入式系统。

MIPS寄存器是存储数据的基本单位,对数据的读写操作都会经过寄存器。在MIPS架构中,寄存器的读写都是同步的,需要时钟信号。

任务:

1. 当WE=1时,通过多路解复用器选择相应寄存器(相应寄存器使能)

选择0 寄存器:

选择1 寄存器:

选择2 寄存器:

选择3 寄存器:

2. 设置DIN数据,R1、R2选择输入端口

设置寄存器选择4寄存器,数据位00011111

3. 给定CLK时钟(电平0-1) RD1、RD2端输出数据

点击时钟:

写到寄存器4

R2读取寄存器4:

R1 读取寄存器4:

4. 测试寄存器电路以上,并扩展完成8位0-3位寄存器电路,分析并模拟运行电路并测试(结果写入实验报告)

感谢老师的文件,已经扩展完了。

主要的内容就是,解码器多点,然后加上两个

DMX MUX上面的线路上多点点就可以啦。

5.根据以上例程利用组件构建 MIPS 32位寄存器设计如下(简化只设计0-3号寄存器)

这里扩展

6.当WE=1时,通过多路解复用器选择相应寄存器(相应寄存器使能)

选择就行了。

这里
0 0 0 寄存器(恒为0的寄存器)

0 1 1 寄存器

1 0 2 寄存器

1 1 3 寄存器

7.设置DIN数据,R1、R2选择输入端口

可以玩玩啦

  • 选择输入寄存器(WR)
  • WE 启动选择
  • Din写入数据
  • R1 选择要读的寄存器
  • R2 选择要读的寄存器
  • 跳时钟
  • 就可以显示数据啦。

8. 给定CLK时钟(电平0-1) RD1、RD2端输出数据

done
但那个附录小故事还是挺好看的。

虚拟化和容器——实验5 常用命令的使用

创建一个容器 ,名字为CentosTest

docker pull centos:7
docker create -it --name CentosTest centos:7

启动容器:

docker start CentosTest

在容器里执行命令(bin/bash):

docker exec -it CentosTest /bin/bash
ls
exit

退出后查看容器状态:

docker ps -a

仍然在运行

创建一个nginx容器NginxTest,nginx:latest,并且映射到80端口

docker run -dit -p 80:80 --name NginxTest nginx:latest

替换容器内的index.html

#在容器外:
echo "欢迎使用Docker容器" >> index.html
docker cp index.html NginxTest:/usr/share/nginx/html

尝试看看

curl 127.0.0.1

导出容器

docker export -o nginxtest.tar NginxTest
ls

导入容器

docker import nginxtest.tar nginx:v1.0
docker images

输出容器和宿主机的端口映射关系:

docker inspect -f {{.NetworkSettings.Ports}} NginxTest
docker port NginxTest

删除容器NginxTest CentosTest

docker rm -f NginxTest CentosTest

计算机组成原理2

更好的浏览:https://type.dayiyi.top/index.php/archives/219/

1.利用Logisim软件设计一个1位加法器

加法器是数字系统中的基本逻辑器件,减法器和硬件乘法器都可由加法器来构成。

全加器,全加器是实现两个一位二进制数及低位来的进位数相加(即将三个二进制数相加),求得和数及向高位进位的逻辑电路。所以全加器有三个输入端(A,B,C)和两个输出端S,Cout)。

设计思路:一个全加器可以用两个1位半加器和或门组成。

1.1半加器:

真值表

ABSum (S)Carry (Cout)
0000
0110
1010
1101
  1. 和(Sum,): S=AB
  2. 进位(Carry, Cout): C = AB

image-20231019200842433

也可以直接生成

image-20231019201020494

全加器:

输入:A、B、C

输出:S、Cout

同样的,还是先写真值表

ABCSum (S)Carry (Cout)
00000
00110
01010
01101
10010
10101
11001
11111

然后直接生成就可以啦

image-20231019201712436

image-20231019201812901

逻辑关系式:

和(Sum, S):S=ABC

进位(Carry, Cout): Cout=AB+BC+AC

结果与加法器一样(这个加法器可以调位宽):

image-20231019203740394

2、利用1位全加器设计4位加法器

改下标签:cincout

image-20231019202020321

魔改电路位置,直接画就行:

image-20231019204356330

image-20231019202038523

image-20231019203417451

image-20231019204704074

image-20231019204824841

要命:

image-20231019205256455

正常工作了

image-20231019205413466

3、可控加减电路的设计(利用上节课数据选择器电路)

3.1 生成一个数字选择器

真值表:

SD0D1Y
0000
0010
0101
0111
1000
1011
1100
1111

逻辑表达式:$Y=S⋅D_1+S⋅D_0$

image-20231019205804368

image-20231019205815724

image-20231019205912487

image-20231019205943573

3.2 画一下

image-20231019210122918

3.3 4位全加器

image-20231019211011296

3.4 画

不兼容的位宽诶

image-20231019211229304

3.5 生成一个4位2路选择器

  • $( Y1 = SEL \cdot D21 + \overline{SEL} \cdot D11 )$
  • $( Y2 = SEL \cdot D22 + \overline{SEL} \cdot D12 )$
  • $( Y3 = SEL \cdot D23 + \overline{SEL} \cdot D13 )$
  • $( Y4 = SEL \cdot D24 + \overline{SEL} \cdot D14 )$

输入:

  • $D_{11}$
  • $D_{12}$
  • $D_{13}$
  • $D_{14}$
  • $D_{22}$
  • $D_{23}$
  • $D_{24}$
  • $D_{25}$
  • $S_{el}$

输出:

  • $Y_{1}$
  • $Y_{2}$
  • $Y_{3}$
  • $Y_{4}$

真值表:

要命

对一下:

然后把这里删掉:中间多的那几个引脚删掉

这个样子:

出来啦

4、在Logisim中应用运算器部件设计

99+55

img

99-55

21*6

5、main电路中调用子电路实现特定四则运算

Python 3.12.0 (tags/v3.12.0:0fb18b0, Oct  2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> (100+50-15)*2
270

文件:


https://pic.icee.top/blog/dl_files/实验2_文件_49688a97-1eae-40b9-9d4a-8f5fa1762cfe.rar