计算机组成原理之存储器容量扩展

存储器容量的扩展

解释一下为什么要进行存储器容量的扩展,在单片存储芯片容量是由限制的,难以满足实际的需要,必须要将若干的存储芯片连接在一起才能组成容量大的存储器,这样的情况我们称为存储容量的扩展,有位扩展和字扩展

位扩展

假设现在我们有一个1K x 4位的存储芯片,我们需要把这个存储芯片通过位扩展称为一个1K x 8位的存储芯片,以2114芯片为例。
1K x 4位 存储芯片,2^10 = 1K ,有10根地址线,每根地址线有4位数据, 1k x 8位 存储芯片,有10根地址线,每根线有8位数据。这样分析之后采用2片1k x 4位存储芯片就能构成。
这两个芯片采用相同的片选,两个芯片同时被选中。每个芯片进行读或者是写4位数据,两个芯片合在一起就是8位数据。所以一共需要2片芯片,10条地址线,8条数据线
对于2114芯片来讲,有10根地址线,这10根地址线分别和两片芯片相连,8根数据线,其中一个芯片和高四位(D7-D4)的地址线相连,一个芯片和低四位(D3-D0)的地址线相连。
在这里插入图片描述

字扩展

假设现在我们有一个1K x 8位的存储芯片,我们需要把这个存储芯片通过位扩展称为一个2K x 8位的存储芯片。
根据上面的分析采用 2片1K x 8位 存储芯片组成 2K x 8位 的存储器,2^11 = 2K,11根地址线,8根数据线,A0 - A9作为两个芯片的地址输入,数据线D0 - D7 都可以提供8位数据,这些芯片和系统的数据线相连,但是这两个芯片不能同时进行工作,如果两个芯片同时进行工作的话,每个芯片提供8位数据,两个芯片同时提交16位数据,就会对8根数据线造成混乱。
怎么保证两个芯片不同时工作?做法是把 2k x 8位 的存储器,分为两个 1k x 8位 的存储器。11根地址线,第11根地址线(A10)作为片选信号,如果A10等于0的话,我们就选择第一个芯片,如果A10等于1的话(用非门对1取反之后是0来选择第二个芯片),我们就选择第二个芯片。
在这里插入图片描述
0 0000000000-0 1111111111这1k的空间分给了第一个存储芯片,从1 0000000000-1 1111111111这1k的空间分给了第二个存储芯片,(最高位是地址位)。

字位同时扩展

1k x 4位的存储芯片变成 4k x 8位的存储芯片, 首先用2片1k x 4位的存储芯片变成 1k x 8位的存储芯片,然后再用4片 1k x 8位(这里的1k x 8位是用第一步划分2片做为一组) 的存储芯片变成 4k x 8位,这样就需要用到 2 x 4 = 8 片芯片。

2^12 = 4K,12根地址线。8根数据线,把8片芯片分成4组,每组两片1k x 4位的芯片,这样就需要留2根地址线作为片选信号来表示每组芯片的地址,剩下的A0 - A9 10根地址线直接和每一片芯片连接。 数据线是8位,但是一个芯片的数据线是4位,两个芯片为一组就是8位数据线,高四位的数据线和第一个芯片连接,低四位的数据线和第二个芯片连接。每组都芯片的数据线都这样相连。

00 0000000000 - 00 1111111111 这1k的地址给第一组芯片;(前两位是地址信号)

01 0000000000 - 01 1111111111 这1k的地址给第二组芯片;(前两位是地址信号)

10 0000000000 - 10 1111111111这1k的地址给第二组芯片;(前两位是地址信号)

11 0000000000 - 11 1111111111 这1k的地址给第二组芯片;(前两位是地址信号)
在这里插入图片描述

所以由A10和A11这两个地址来判断这两根地址线来判断,要访问的地址空间到底在哪一组芯片当中
如果是00,00二进制转换为十进制就是0,经过译码器之后Y0被选中,就是第一组芯片被选中,
如果是01,01二进制转换为十进制就是1,经过译码器之后Y1被选中,就是第二组芯片被选中,
如果是10,10二进制转换为十进制就是2,经过译码器之后Y2被选中,就是第三组芯片被选中,
如果是11,11二进制转换为十进制就是3,经过译码器之后Y3被选中,就是第四组芯片被选中,
(00第一组芯片)(01第二组芯片)(10第三组芯片)(11第四组芯片)

<think>好的,我现在需要解决用户的问题:如何用1K×4位的芯片构建2K×8位的存储器,并绘制连接图。首先,我得回忆一下存储器扩展的相关知识,可能包括位扩展和字扩展。 首先,用户提供的例子中,引用[1]提到用1Kx8的芯片组成2Kx8存储器,需要两片芯片,通过片选线作为第11根地址线来选择芯片。这说明在字扩展的情况下,地址线的高位用于片选。而当前用户的问题是用1K×4位的芯片构建2K×8位,这可能需要同时进行位扩展和字扩展,因为单个芯片的数据位宽只有4位,而目标存储器的数据位宽是8位,所以需要位扩展;同时,容量1K到2K,需要进行字扩展。 接下来,我需要确定所需的芯片数量。原来的单个芯片是1K×4位,目标存储器是2K×8位。每个存储单元需要8位数据,所以需要将两个1K×4位的芯片并联进行位扩展,得到18位的模块。然后,因为容量需要从1K扩展到2K,所以需要两个这样的模块,进行字扩展。因此,总芯片数量应该是:每组位扩展需要2片,共有两组字扩展,所以总共4片芯片。这应该符合计算:(2K×8)/(1K×4) = (2*8)/(1*4)=4片。 然后,地址线的分配。1K的容量需要10根地址线(2^10=1024)。目标容量是2K,即2*1024=2048,需要11根地址线。其中,低10位(A0-A9)用于片内地址,剩下的最高位A10用于片选,决定选择哪一组字扩展的模块。 数据线方面,每个1K×4的芯片提供4位数据,所以需要将两个芯片的数据线合并,组成8位的数据总线。例如,第一组中的两个芯片分别处理D0-D3和D4-D7,合并后得到8位数据。 片选信号方面,当A10为0时,选中第一组(低1K地址),当A10为1时,选中第二组(高1K地址)。同时,每个组内的两个芯片需要同时被选中,因此它们的片选信号应该连接到同一个译码器的输出,比如通过A10经过非门或直接连接,具体取决于译码逻辑。 控制线方面,读/写信号(R/W)需要连接到所有芯片的相应控制引脚,确保同一时间所有被选中的芯片进行读写操作。此外,存储器使能信号(如MREQ)可能需要参与片选逻辑,确保只有在存储器被访问时才激活芯片。 接下来,绘制连接图的大致结构。地址线A0-A9连接到所有芯片的地址引脚,A10连接到片选译码器。数据线的低四位来自第一组的两个芯片,高四位来自第二组的两个芯片?或者可能需要每组内的两个芯片分别处理低四位和高四位,然后合并成8位?这里可能需要更仔细的思考。 例如,第一组的两个芯片,一个负责D0-D3,另一个负责D4-D7,它们的地址线都连接到A0-A9,并且片选信号由A10控制。当A10为低时,第一组被选中,两个芯片同时工作,提供8位数据。同样,当A10为高时,第二组被选中,其两个芯片的数据线同样合并为8位。这样,每组内的两个芯片是位扩展,而两个组之间是字扩展。 这样,地址线A0-A9用于片内寻址,A10作为组选择。每组由两个芯片组成,每个芯片处理4位数据。总共有四个芯片,分为两组。 关于译码器的使用,可能需要将A10输入到一个反相器,用于生成两个片选信号:当A10=0时,选第一组;当A10=1时,选第二组。或者使用一个译码器,将A10作为输入,输出两个片选信号。例如,1-to-2译码器,输入A10,输出CS0和CS1,分别连接到两组芯片的片选端。 另外,每个芯片的片选端可能需要是低电平有效还是高电平有效,这需要根据具体芯片的规格来定,但假设都是低电平有效的话,译码器的输出需要对应。 最后,数据总线需要将每个组内的两个芯片的数据线合并。例如,第一组的芯片1的数据线连接到D0-D3,芯片2连接到D4-D7,合并后的8位数据总线连接到系统的数据线D0-D7。同样,第二组的两个芯片也是如此连接。 控制信号方面,R/W线连接到所有芯片的读写控制端,确保同步操作。MREQ信号可能需要与译码器的使能端连接,只有当MREQ有效时,译码器才工作,从而选择相应的芯片组。 总结步骤: 1. 位扩展:每组两个1K×4芯片组成18的模块。 2. 字扩展:使用两个这样的模块组成2K×8存储器,通过A10选择模块。 3. 地址线分配:A0-A9用于片内地址,A10用于片选。 4. 数据线合并:每组内的两个芯片各提供4位,组成8位。 5. 片选逻辑:A10控制两个组的选择,可能通过译码器或直接连接。 现在需要验证这些步骤是否正确,并考虑可能的错误点。例如,是否地址线的高位正确用于片选,数据线的连接是否正确,控制信号是否处理得当。同时,引用中的例子,比如引用[3]和[4]提到选板、选片等,可能与此类似的情况,但用户的问题不需要分板,只需分两组。 可能还需要考虑是否需要额外的逻辑门来处理片选信号,或者是否直接使用高位地址线作为片选。例如,在字扩展中,A10直接连接到第一组的片选,而通过反相器连接到第二组,或者使用译码器将A10转换为两个片选信号。 最终的连接图应显示地址线A0-A9连接到所有芯片,A10经过译码生成两个片选信号CS0和CS1,分别连接到两个组的片选端。每个组内的两个芯片的片选端连接在一起,数据线分别处理低四位和高四位,合并到数据总线。控制线R/W连接到所有芯片的读写控制端,MREQ可能连接到译码器的使能端,确保存储器使能时才工作。</think>### 使用1K×4位芯片构建2K×8存储器的设计方案 #### 1. **芯片数量计算** - 目标容量:$2K \times 8$位 - 单芯片容量:$1K \times 4$位 - **扩展**:需将两个芯片并联实现8位数据宽度,每组提供$1K \times 8$位。 - **扩展**:需两组(每组2片)实现$2K \times 8$位。 - **总芯片数**:$2 \text{(位扩展组)} \times 2 \text{(字扩展组)} = 4$片[^3][^4]。 #### 2. **地址线与数据线分配** - **地址线**: - $2K = 2^{11}$,需 **11根地址线**($A_0$-$A_{10}$)。 - 片内寻址:$1K = 2^{10}$,低10位地址($A_0$-$A_9$)连接所有芯片。 - 片选信号:最高位地址($A_{10}$)用于选择组(字扩展),$A_{10}=0$选第一组,$A_{10}=1$选第二组[^1]。 - **数据线**: - 每组内两个芯片分别处理数据位$D_0$-$D_3$和$D_4$-$D_7$,合并为8位总线。 #### 3. **控制信号设计** - **片选逻辑**: - 使用$A_{10}$通过1-to-2译码器生成两组片选信号($\overline{CS_0}$和$\overline{CS_1}$)。 - 每组内两芯片共享同一片选信号。 - **读写控制**: - 读写信号(R/W)并联至所有芯片的控制引脚。 - **存储器使能**: - MREQ信号连接译码器使能端,确保仅在存储器工作时激活[^2]。 #### 4. **连接图说明** - **地址线**:$A_0$-$A_9$连接至所有芯片的地址引脚。 - **数据线**: - 第一组芯片1:输出$D_0$-$D_3$,芯片2:输出$D_4$-$D_7$。 - 第二组同理。 - **片选信号**: - $A_{10}$经译码器输出$\overline{CS_0}$(第一组)和$\overline{CS_1}$(第二组)。 - **控制信号**:R/W连接所有芯片,MREQ使能译码器。 ### 连线图解示意图 ``` 地址总线(A0-A10) │ ├─ A0-A9 ─┬─ 芯片1 (组1, D0-D3) │ └─ 芯片2 (组1, D4-D7) │ ├─ A10 ── 译码器 ─┬─ CS0 (组1片选) │ └─ CS1 (组2片选) │ 数据总线(D0-D7) │ ├─ 组1芯片1 ─ D0-D3 ├─ 组1芯片2 ─ D4-D7 ├─ 组2芯片1 ─ D0-D3 └─ 组2芯片2 ─ D4-D7 控制信号(R/W, MREQ) │ ├─ R/W ── 所有芯片 └─ MREQ ── 译码器使能端 ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值