好的,这份中文自学讲义根据您提供的PPT内容整理而成,其中包含了PPT中的所有知识点,并增加了相应的解释和说明,以帮助您更好地理解。
ECE 2050 数字逻辑与系统 - 中文自学讲义
第11章:存储器与逻辑阵列
讲师:Tinghuan CHEN, Ph.D. 香港中文大学(深圳)
引言
欢迎来到第11章的学习。在之前的章节中,我们探讨了计数器等时序逻辑电路。本章我们将进入一个同样至关重要的领域:存储器和逻辑阵列。我们将学习计算机是如何存储海量数据,以及如何利用类似存储器的结构来实现复杂的逻辑功能。
第一部分:存储器 (Memory)
1. 什么是存储阵列 (Memory Arrays)?
存储阵列是一种能够高效存储大量数据的电子设备。它的核心工作原理是:通过一个唯一的地址(Address)来读出(read)或写入(write)一个数据值(Data)。
- 基本概念:
- 地址 (Address):可以想象成每个存储单元的“门牌号”。如果一个存储器有 N 个地址位,那么它总共可以区分 2^N 个不同的存储位置。
- 数据 (Data):存储在每个地址位置上的信息。如果数据宽度为 M 位,那么每个地址位置可以存储一个 M 位的数据值。
- 三种常见的存储器类型:
- 动态随机存取存储器 (DRAM):常用于计算机的主内存(内存条)。
- 静态随机存取存储器 (SRAM):常用于高速缓存(CPU Cache)。
- 只读存储器 (ROM):用于存储固件,如计算机的BIOS。
2. 存储阵列的结构
我们可以将存储阵列想象成一个二维的表格,由许多微小的位单元 (bit cells) 组成,每个位单元只能存储1位(0或1)。
-
关键参数定义:
- 深度 (Depth):存储器中有多少行,它等于地址位所能表示的数量,即 2^N。每一行存储一个“字(word)”。
- 宽度 (Width):存储器中有多少列,它等于每个数据值的位数,即 M。
- 阵列大小 (Array Size):总的存储容量。计算公式为:深度 × 宽度 = 2^N × M。
-
示例:2² × 3位 存储阵列
- 这个描述意味着:
- 地址位 N = 2。因此,深度为 2² = 4,有4个独立的存储位置(地址为 00, 01, 10, 11)。
- 数据位 M = 3。因此,宽度为3,每个存储位置可以存放一个3位的数据。
- 总容量:4个字,每个字3位。
- 举例说明:如下图所示,当地址为 “10” 时,对应的数据是 “100”。
- 这个描述意味着:
3. 存储阵列的内部工作原理:位单元、字线和位线
- 位单元 (Bit Cell):存储阵列中最基本的单元,用于存储1个二进制位。
- 字线 (Wordline):
- 可以理解为“行选择”线,其作用类似于一个**使能(enable)**信号。
- 每一条字线连接着存储阵列中的一整行位单元。
- 地址输入通过一个译码器(Decoder),确保在任何时刻只有一条字线被激活(变为高电平 HIGH)。
- 被激活的字线所对应的那一行,就是当前要进行读/写操作的行。
- 位线 (Bitline):
- 可以理解为“列数据”线。
- 每一条位线连接着存储阵列中的一整列位单元。
- 写入数据时:通过位线将数据(0或1)送入被字线选中的那一行位单元中。
- 读取数据时:被字线选中的那一行位单元,会将其存储的值(0或1)输出到位线上。
上图展示了一个 4x3 的存储阵列。一个2位地址(例如 10
)输入到2:4译码器,译码器会激活 wordline₂
。此时,只有第二行的位单元(从上往下数,以0开始)被选中,它们存储的数据(100
)就会分别出现在 Data₂
, Data₁
, Data₀
上。
第二部分:存储器的分类
1. RAM vs. ROM
-
随机存取存储器 (RAM - Random Access Memory):
- 易失性 (Volatile):一旦断电,存储在里面的数据就会全部丢失。
- 特点:读写速度都很快。
- 命名来源:可以随机(即以任意顺序)访问任何一个数据单元,且访问时间基本相同,这与早期磁带等顺序访问设备形成对比。
- 应用:计算机的主内存(DRAM)。
-
只读存储器 (ROM - Read Only Memory):
- 非易失性 (Nonvolatile):断电后数据不会丢失。
- 特点:读取速度快,但写入操作非常慢,甚至完全不能写入。
- 命名来源:历史上,ROM的数据在制造时就被写入,或者通过烧断熔丝的方式一次性写入,之后就无法修改。
- 现代发展:如今,像闪存 (Flash memory) 这样的ROM是可以被多次擦写,但其写入机制仍比RAM复杂且慢。U盘、固态硬盘(SSD)和手机存储都属于ROM。
2. RAM的两种主要类型:DRAM 与 SRAM
RAM根据其位单元的构造不同,分为动态(DRAM)和静态(SRAM)两种。
-
DRAM (动态随机存取存储器)
- 发明人:Robert Dennard(1966年于IBM)。他的发明使得高密度、低成本的计算机主内存成为可能,极大地推动了计算机革命。
- 存储原理:每个位单元使用一个电容 (Capacitor) 来存储数据。电容里有电荷代表 “1”,没有电荷代表 “0”。
- 为何称为“动态” (Dynamic):
- 电荷泄漏:电容中的电荷会随着时间慢慢泄漏掉,所以必须周期性地刷新(Refreshed),即重新充电,以保持数据不丢失。
- 破坏性读取:读取数据时,电容会放电,导致存储的值被破坏。因此,每次读取后,控制器都必须立即将数据重新写入(rewritten)。
- 优缺点:结构简单(一个晶体管一个电容),集成度高,成本低,适合做大容量内存。但速度相对较慢,且需要刷新电路。
-
SRAM (静态随机存取存储器)
- 存储原理:每个位单元使用一对交叉耦合的反相器 (cross-coupled inverters) 构成一个锁存器来存储数据。
- 为何称为“静态” (Static):只要保持通电,这对反相器就会稳定地维持在 “0” 或 “1” 的状态,不需要周期性刷新。
- 优缺点:速度极快,不需要刷新。但每个位单元需要多个晶体管(通常是6个),结构复杂,成本高,功耗也更大,不适合做大容量内存。
- 应用:常用作CPU内部的高速缓存(L1, L2, L3 Cache),以弥补CPU与主内存(DRAM)之间的速度差距。
3. ROM的内部实现
-
ROM的点表示法 (Dot Notation):
- 在ROM的阵列图中,我们可以用一个“点”来简化表示连接。
- 当字线被激活时,如果交叉点有“点”,则位线被拉高(或拉低),输出为 “1”(或 “0”)。如果没有“点”,则位线保持默认状态。
- 下图中的点阵实际上定义了存储在ROM中的数据。
-
闪存 (Flash Memory) 的发明:
- 发明人:舛冈富士雄 (Fujio Masuoka) 于上世纪70年代末在东芝公司发明了闪存。
- 命名来源:其数据擦除过程(一次性擦除一个块)让他想起了相机的闪光灯(flash),因此得名。
- 意义:闪存是一种非易失性、可多次擦写的ROM,它的出现彻底改变了便携式电子产品的存储方式。如今,闪存已发展成为一个年产值数百亿美元的巨大市场。
第三部分:使用存储器实现逻辑功能
任何组合逻辑功能都可以用一个真值表来表示。存储器,尤其是ROM,其“地址-数据”的对应关系与逻辑函数的“输入-输出”关系天然吻合。因此,我们可以用存储器来实现逻辑电路。
-
核心思想:
- 将逻辑函数的输入变量作为存储器的地址输入。
- 在存储器的相应地址中,预先存储该输入组合对应的输出结果。
- 当输入信号到来时,存储器直接“查找”并输出结果,而无需执行逻辑运算。这种结构被称为查找表 (Look-Up Table, LUT)。
-
示例:使用 2² × 3位 ROM 实现三个逻辑函数
- 逻辑函数:
X = A AND B
Y = A OR B
Z = (NOT A) AND (NOT B)
- 实现步骤:
- 创建真值表:将A和B作为输入,X, Y, Z作为输出。
A B 地址(AB) X Y Z 数据(XYZ) 0 0 00 0 0 1 001 0 1 01 0 1 0 010 1 0 10 0 1 0 010 1 1 11 1 1 0 110 - 编程ROM:将真值表中的输出结果(XYZ)作为数据,存入对应的地址(AB)中。
- 完成电路:将输入信号A, B连接到ROM的地址线上,输出信号X, Y, Z从数据线上引出。
- 创建真值表:将A和B作为输入,X, Y, Z作为输出。
- 逻辑函数:
这种使用存储器(特别是LUT)来实现逻辑功能的方法,是现代**现场可编程门阵列(FPGA)**技术的核心。
第四部分:逻辑阵列 (Logic Arrays)
逻辑阵列是另一种用于实现逻辑功能的通用结构,主要分为PLA和FPGA。
1. PLA (可编程逻辑阵列)
-
结构:由一个可编程的 AND 阵列 和一个可编程的 OR 陣列 组成。
-
原理:专门用于实现“积之和 (Sum-of-Products)”形式的组合逻辑。
- AND 阵列:用于生成所有需要的“积”项(product terms / implicants)。
- OR 陣列:用于将不同的积项“或”起来,形成最终的输出。
-
特点:只能实现组合逻辑,内部连接是固定的。
-
示例:
X = (NOT A)BC + ABC
Y = AB
- 在下图中,AND阵列生成了
(NOT A)BC
、ABC
和AB
三个积项。OR阵列则将前两项相加以得到X,并将第三项直接输出为Y。
2. FPGA (现场可编程门阵列)
FPGA 是一种更高级、更灵活的可编程逻辑器件。它像一个由海量基础逻辑模块组成的“芯片画布”,用户可以通过编程来定义这些模块的功能以及它们之间的连接方式。
-
核心组成部分:
- 逻辑单元 (LE - Logic Elements) 或 可配置逻辑块 (CLB):这是FPGA的核心,用于执行基本的逻辑运算。
- 输入/输出单元 (IOE - Input/Output Elements):位于芯片边缘,负责与外部电路进行通信。
- 可编程互连资源 (Programmable Interconnection):像一张巨大的“电话交换网”,由导线和可编程开关组成,用于连接不同的LE和IOE。
- 专用硬件模块:现代FPGA通常还集成了许多专用硬核,如 RAM模块、DSP模块(用于数字信号处理)和乘法器等,以提高特定任务的执行效率。
-
逻辑单元 (LE) 的内部结构:
- 一个典型的LE主要由以下部分组成:
- 查找表 (LUT):一个小的RAM,用于实现组合逻辑。例如,一个4输入LUT可以实现任意4输入的组合逻辑功能。
- 触发器 (Flip-flop):用于实现时序逻辑,使电路能够存储状态。
- 多路选择器 (Multiplexer):用于在LE内部选择信号路径,例如选择输出是直接来自LUT(组合逻辑输出),还是来自触发器(时序逻辑输出)。
- 一个典型的LE主要由以下部分组成:
上图为Altera Cyclone IV系列FPGA中一个逻辑单元的详细结构图,清晰地展示了LUT、触发器(Register)以及相关的选择和控制逻辑。
3. FPGA 设计流程
使用FPGA进行设计,通常遵循以下步骤,并借助专用的CAD(计算机辅助设计)工具(如 Intel Quartus 或 AMD Vivado):
- 设计输入 (Enter the design):使用硬件描述语言 (HDL)(如 Verilog 或 VHDL)或原理图来描述你的电路功能。
- 仿真 (Simulate):在计算机上对设计进行仿真,以验证其逻辑功能是否正确。
- 综合 (Synthesize):CAD工具将你的HDL代码“翻译”成由LUT、触发器等底层元件组成的逻辑网表,并将其映射到目标FPGA芯片的具体资源上。
- 下载 (Download):将生成的配置文件(位流文件)下载到FPGA芯片中。这个过程是在配置FPGA内部的LUT内容和互连开关。
- 测试 (Test):在实际硬件上运行并测试设计,验证其是否符合预期。
本章复习与小结
- 存储阵列与位单元:存储器的基本结构,由字线和位线控制。
- RAM (易失性):
- DRAM:使用电容存储,需要刷新,成本低,容量大。
- SRAM:使用交叉耦合反相器存储,无需刷新,速度快,成本高。
- ROM (非易失性):断电后数据不丢失,现代ROM如闪存可擦写。
- 用存储器实现逻辑:存储器可以作为查找表 (LUT) 来实现任何组合逻辑功能。
- 逻辑阵列:
- PLA:由AND阵列和OR阵列构成,实现组合逻辑。
- FPGA:由可编程的逻辑单元(LE)、IO单元和互连资源构成,功能强大灵活,是现代数字系统快速原型验证和实现的核心技术。
- FPGA设计流程:设计输入 -> 仿真 -> 综合 -> 下载 -> 测试。
思考与测验 (True/False Quiz)
请判断以下说法的正误,并思考为什么。
-
一个存储单元可以存储一字节(byte)的数据。
- 错误 (False)。一个最基本的存储单元(bit cell)只能存储一**位(bit)**的数据。一字节由8位组成。
-
在存储阵列中,一个数据单元的位置被称为它的地址。
- 正确 (True)。地址是访问特定数据单元的唯一标识。
-
RAM 是一种随机地址存储器。
- 错误 (False)。RAM 的全称是随机存取 (Random Access) 存储器,强调的是访问方式的随机性,而不是地址的随机性。
-
即使在断电后,存储在静态RAM(SRAM)中的数据仍能保留。
- 错误 (False)。SRAM 和 DRAM 都属于RAM,都是易失性的。只要断电,数据就会丢失。SRAM的“静态”指的是它不需要刷新。
-
动态RAM(DRAM)必须周期性地刷新以保持数据。
- 正确 (True)。这是DRAM最核心的特点,因为它的数据存储在会漏电的电容上。
-
ROM 是只读存储器。
- 正确 (True)。虽然现代的ROM(如闪存)可以写入,但其“只读”的名称源于其历史和主要应用场景(读取远多于写入)。
-
FPGA 是一种固定功能的电路。
- 错误 (False)。FPGA 的全称是现场可编程 (Field Programmable) 门阵列,其最大的特点就是功能不是固定的,而是可以通过编程来定义。