存储器有上千行,为何地址线不用上千根?
发表时间:2026-07-31 17:35:41
n根地址线可以组成2的n次方种不同编码。译码器把每种编码展开成一个存储位置的选择信号;地址位数决定存储深度,数据线数量决定每个地址一次读写多少位。
原理图上只有十来根地址线,芯片内部却能放下成千上万个存储位置。初学者第一次看到会问:每一行都要被单独选中,为什么不需要同样多的引脚?答案不在多拉线,而在二进制地址经过译码后被展开。
每根地址线只有0和1两种状态,n根线可以组成2的n次方种组合。本文只讲地址深度和数据字宽这两个容易混淆的量,并用一个容量计算把地址线、字线和数据线分开。
四根地址线为什么能选中十六行?
四根地址线A3到A0一共有0000到1111十六种组合。4—16译码器在任一时刻只把其中一种组合翻译成一根有效字线,其余字线保持无效。
字线可以理解为存储阵列里某一行的门。地址变了,译码器打开另一行;外部不需要把十六根字线全部引到封装,只需要提供四位编码。
如果目标深度不是刚好等于2的整数次幂,设计仍要向上取足够的地址位,多出来的编码可以保留不用或由片选逻辑屏蔽。地址位少一根,能够表示的位置会直接减半,不是只少一个存储单元。
图1 16×8存储矩阵的线选译码真实结构
图2 四位地址译成十六根独占字线的关系
地址位数和数据位宽为什么不能混算?
地址位数决定有多少个可选择的位置,也就是深度。数据线数量决定每个位置一次读出或写入多少位,也就是字宽。比如深度1024需要10位地址,而每个地址存16位则需要16根数据线。
“1024×16”不是十六位地址。前面的1024表示地址数量,后面的16表示每个地址的数据宽度。控制器管脚规划时把两者混在一起,会直接导致容量、总线宽度和封装引脚数判断错误。
两个器件即使总位数相同,接口也可能完全不同。4K×8需要更多地址组合但数据总线较窄,2K×16地址深度较小却一次传输更多位。扩容时要先判断系统缺的是深度还是并行带宽。
先把容量写成“深度×字宽”,再分别计算地址线和数据线,很多原理图错误会在连线前暴露。
图3 地址向量变化与一热字线选择波形
阵列再变大,为什么要分成行列译码?
如果只做单译码,超大阵列需要很长的译码线和字线,布线、驱动和延迟都会变重。行列重合译码把地址拆成两组,先选一行,再选一列交点。
资料中的32×32矩阵使用行译码和列译码定位一个单元。外部依然只提交地址编码,内部用较小的两个译码器完成选择,这也是大容量阵列常见的组织思路。
行列组织还帮助阵列把长线分段,减少单根选择线需要驱动的负载。对板级工程师来说,不必推导内部晶体管尺寸,但要明白外部地址编码和内部物理行列并不是一根线对一根线。
1. 写出深度取不小于目标深度的2的幂。
2. 计算地址位n位地址最多表示2的n次方个位置。
3. 写出字宽它直接对应一次传输的数据位数。
4. 检查封装地址、数据、控制和电源引脚要分别预算。
图4 深度、地址位数与字宽的分项计算界面
地址是编码,字线才是阵列里的选择门
存储器不需要为每一行准备一根外部地址引脚,因为少量二进制地址经过译码,可以在芯片内部展开成大量选择线。
计算动作是把目标容量先写成深度×字宽,再分别算地址位和数据线。你现在看到的存储接口,最容易混淆的是地址深度、字宽,还是字节使能?
你最容易混淆的是地址深度、数据字宽,还是字节使能?






哔哩哔哩
微信公众号
小红书
抖音
知乎
西瓜视频
头条
微信视频号