存储器容量的扩展
解释一下为什么要进行存储器容量的扩展,在单片存储芯片容量是由限制的,难以满足实际的需要,必须要将若干的存储芯片连接在一起才能组成容量大的存储器,这样的情况我们称为存储容量的扩展,有位扩展和字扩展
位扩展
假设现在我们有一个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第四组芯片)