用16k*8构成64k*32
时间: 2024-06-25 16:01:21 浏览: 279
使用16k*8位宽的存储器芯片来构建64k*32位宽的存储器系统,我们需要理解每个芯片的容量和如何组合它们。16k表示每块芯片有16,384字节(16 * 1024),而8位宽意味着一次读写操作只能访问8个比特。
要得到64k*32位(即65,536字节*32位),首先计算所需的总容量,即65,536 bytes * 32 bits = 2,147,483,648 bits。由于1 byte = 8 bits,我们实际上需要的是262,144 bytes。
将这个总容量分解到16k*8的芯片中,我们需要计算262,144字节需要多少个16k芯片。262,144 / 16,384 = 16块16k芯片。但是,16k是指每块芯片有16,384字节,而我们需要的是262,144字节,这意味着最后一块芯片可能不会完全填满。
为了达到32位的宽度,我们需要确保每个地址能够访问连续的32位数据。在这些16k芯片中,由于它们是8位宽的,所以我们需要将多个芯片串联在一起,形成一个位宽为32的总线结构,这样一次可以读写32位。
相关问题
用16K*8位的DRAM芯片构成64K*32位存储器,请画出该存储体的组成逻辑框图
为了将16KB×8位的DRAM(动态随机存取存储器)芯片组成一个64KB×32位的存储器,我们需要使用位扩展(bit expansion)和地址映射的技术。这里是一个简单的逻辑框图描述:
1. **高位地址扩展**:
- 首先,我们有64KB的总容量需求,这需要4个16KB的DRAM芯片并行连接。每个芯片有自己的8位数据线(D0-D7),所以我们需要四个这样的芯片串联起来提供32位的数据宽度(D0-D31)。
2. **地址解码器**:
- 有一个地址解码器,它接收32位的主地址,并将其分解为四个部分,对应四个DRAM芯片,每个部分包含8KB的地址范围。同时,这个解码器会生成控制信号(比如 Chip Select, CS)选择相应的芯片读写操作。
3. **字节选通**:
- 由于每个芯片都是8位宽,但在最终系统中我们需要32位的数据,因此需要内部的字节选通信号(Byte Enable, BE),用于从每个芯片的8位数据线上选择需要的32位数据。
4. **数据缓冲器**:
- 如果数据传输速率存在差异(例如,一次只能访问一个DRAM芯片的一行),可能会插入一个数据缓冲器,用于暂存来自不同芯片的数据,直到所有数据都被读取或写入完毕。
5. **控制逻辑**:
- 控制逻辑负责协调各个步骤,包括地址计数、周期同步等,以保证整个系统的正常工作。
以下是逻辑框图的大致示意:
```
+--+
| 主CPU (32位地址) |
+-->-> Address Decoding & Chip Select ->
| Data Buffer |
+-->-> Byte Enable (for each DRAM chip) ->
| DRAM Chips (16Kx8 Bit each) |
+-----------------------------------------+
| |
v v
+-----------------------------+----------------+
| Data Path (BE) | Output |
+-----------------------------+----------------+
```
用容量为16K ×1的DRAM 芯片构成64K*8的存储器,为什么刷新时按16k算而不是64k
这是因为DRAM芯片的刷新是以行为单位进行的。每一行包含了多个存储单元,而行的数量是由DRAM芯片的地址线数决定的。在16K×1的DRAM芯片中,地址线数为14根,因此可以寻址2^14个不同的行。刷新时需要遍历所有的行来保持数据的稳定性,因此刷新操作是按照行的数量进行的,即2^14行,而不是按照存储器整体的大小来计算。因此,使用16K×1的DRAM芯片构成64K×8的存储器时,刷新操作需要按照16K的行进行,而不是按照64K进行。
阅读全文