实验目的
理解主存地址基本概念,理解存储位扩展基本思想,并能利用相关原理构建能同时支持字节、半字、字访问的存储子系统。
主要任务
Logisim
\text{Logisim}
Logisim 中
RAM
\text{RAM}
RAM 组件只能提供固定的地址位宽,数据输出也只能提供固定的数据位宽,访问时无法同时支持字节/半字/字三种访问模式,实验要求利用
4
4
4 个
8
8
8 位的
RAM
\text{RAM}
RAM 组件进行扩展,设计完成既能按照
8
8
8 位、也能按
16
16
16 位、也能按照
32
32
32 位进行读写访问的
32
32
32 位存储器。
A
d
d
r
Addr
Addr 为
12
12
12 字节地址输入(字访问时忽略最低两位,半字访问时忽略最低位,倒数第二位片选,字节访问时,低两位进行片选)。
D
i
n
Din
Din 为
32
32
32 位写入数据 (不同访问模式有效数据均存放在最低位,高位忽略)。
M
o
d
e
Mode
Mode 为访问模式控制位(
00
00
00 表示字访问,
01
01
01 表示
1
1
1 字节访问,
10
10
10 表示
2
2
2 字节访问)。
W
E
WE
WE 是写使能,
1
1
1 表示写入,
0
0
0 表示读出。
D
o
u
t
Dout
Dout 是读出数据 (不同访问模式有效数据均存放在最低位,高位补零)。
实验原理
A
d
d
r
Addr
Addr 为
12
12
12 字节地址,低两位为片选地址,高
10
10
10 位为
RAM
\text{RAM}
RAM 的块内地址,每一个
RAM
\text{RAM}
RAM 可输出一个字节。
先考虑输出。整个字输出时,将四个
RAM
\text{RAM}
RAM 的数据全部输出。单字输出时根据字节地址末两位,选择一个
RAM
\text{RAM}
RAM 输出。半字输出时,若地址末两位为
00
00
00 或01,输出的是
0
0
0 号和
1
1
1 号
RAM
\text{RAM}
RAM 组成的半字;否则,输出
2
2
2 号和
3
3
3 号
RAM
\text{RAM}
RAM 组成的半字;因此片选为字节地址的倒数第二位。
再考虑输入,定义每一个
RAM
\text{RAM}
RAM 的输入为
I
n
0
,
I
n
1
,
I
n
2
,
I
n
3
In_0,In_1,In_2,In_3
In0,In1,In2,In3。整字输入时,
I
n
0
,
I
n
1
,
I
n
2
,
I
n
3
In_0,In_1,In_2,In_3
In0,In1,In2,In3 分别得到
D
i
n
Din
Din 的第
0
∼
7
,
8
∼
15
,
16
∼
23
,
24
∼
31
0\sim7,8\sim15,16\sim23,24\sim31
0∼7,8∼15,16∼23,24∼31 位。单字输入时,根据忽略高位的原则,
I
n
0
,
I
n
1
,
I
n
2
,
I
n
3
In_0,In_1,In_2,In_3
In0,In1,In2,In3 都得到
D
i
n
Din
Din 的第
0
∼
7
0\sim7
0∼7 位,然后根据写入片选信号选择一个
RAM
\text{RAM}
RAM 输入。半字输入时,根据边界对齐和忽略高位的原则,
I
n
0
,
I
n
2
In_0,In_2
In0,In2 得到
D
i
n
Din
Din 的第
0
∼
7
0\sim7
0∼7 位,
I
n
1
,
I
n
3
In_1,In_3
In1,In3 得到
D
i
n
Din
Din 的第
8
∼
15
8\sim15
8∼15 位,然后根据写入的片选信号选择高半字或低半字存储。
接下来分析写入数据时的片选信号,我们可以考虑
I
n
0
,
I
n
1
,
I
n
2
,
I
n
3
In_0,In_1,In_2,In_3
In0,In1,In2,In3 的输入条件(根据
M
o
d
e
Mode
Mode 分类讨论)。若要输入
I
n
0
In_0
In0:①
M
o
d
e
=
1
Mode=1
Mode=1;②
M
o
d
e
=
2
Mode=2
Mode=2,字节地址末两位为
00
00
00;③
M
o
d
e
=
3
Mode=3
Mode=3,字节地址倒数第二位为
0
0
0。若要输入
I
n
1
In_1
In1:①
M
o
d
e
=
1
Mode=1
Mode=1;②
M
o
d
e
=
2
Mode=2
Mode=2,字节地址末两位为
01
01
01;③
M
o
d
e
=
3
Mode=3
Mode=3,字节地址倒数第二位为
0
0
0。若要输入
I
n
2
In_2
In2:①
M
o
d
e
=
1
Mode=1
Mode=1;②
M
o
d
e
=
2
Mode=2
Mode=2,字节地址末两位为
10
10
10;③
M
o
d
e
=
3
Mode=3
Mode=3,字节地址倒数第二位为
1
1
1。若要输入
I
n
3
In_3
In3:①
M
o
d
e
=
1
Mode=1
Mode=1;②
M
o
d
e
=
2
Mode=2
Mode=2,字节地址末两位为
11
11
11;③
M
o
d
e
=
3
Mode=3
Mode=3,字节地址倒数第二位为
1
1
1。
可构造数字逻辑电路得到输入的片选信号,与写使能信号通过或门,即可确定是否输入数据。
综上所述,设计完成了既能按照
8
8
8 位、也能按
16
16
16 位、也能按照
32
32
32 位进行读写访问的
32
32
32 位存储器。