3736 字
19 分钟
ECE2050-Chapter11
2025-08-24

好的,这份中文自学讲义根据您提供的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 位的数据值。
  • 三种常见的存储器类型
    1. 动态随机存取存储器 (DRAM):常用于计算机的主内存(内存条)。
    2. 静态随机存取存储器 (SRAM):常用于高速缓存(CPU Cache)。
    3. 只读存储器 (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)
      1. 电荷泄漏:电容中的电荷会随着时间慢慢泄漏掉,所以必须周期性地刷新(Refreshed),即重新充电,以保持数据不丢失。
      2. 破坏性读取:读取数据时,电容会放电,导致存储的值被破坏。因此,每次读取后,控制器都必须立即将数据重新写入(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)
    • 实现步骤:
      1. 创建真值表:将A和B作为输入,X, Y, Z作为输出。
        AB地址(AB)XYZ数据(XYZ)
        0000001001
        0101010010
        1010010010
        1111110110
      2. 编程ROM:将真值表中的输出结果(XYZ)作为数据,存入对应的地址(AB)中。
      3. 完成电路:将输入信号A, B连接到ROM的地址线上,输出信号X, Y, Z从数据线上引出。

这种使用存储器(特别是LUT)来实现逻辑功能的方法,是现代**现场可编程门阵列(FPGA)**技术的核心。


第四部分:逻辑阵列 (Logic Arrays)#

逻辑阵列是另一种用于实现逻辑功能的通用结构,主要分为PLAFPGA

1. PLA (可编程逻辑阵列)#

  • 结构:由一个可编程的 AND 阵列 和一个可编程的 OR 陣列 组成。

  • 原理:专门用于实现“积之和 (Sum-of-Products)”形式的组合逻辑。

    • AND 阵列:用于生成所有需要的“积”项(product terms / implicants)。
    • OR 陣列:用于将不同的积项“或”起来,形成最终的输出。
  • 特点:只能实现组合逻辑,内部连接是固定的。

  • 示例

    • X = (NOT A)BC + ABC
    • Y = AB
    • 在下图中,AND阵列生成了 (NOT A)BCABCAB 三个积项。OR阵列则将前两项相加以得到X,并将第三项直接输出为Y。

2. FPGA (现场可编程门阵列)#

FPGA 是一种更高级、更灵活的可编程逻辑器件。它像一个由海量基础逻辑模块组成的“芯片画布”,用户可以通过编程来定义这些模块的功能以及它们之间的连接方式。

  • 核心组成部分

    1. 逻辑单元 (LE - Logic Elements)可配置逻辑块 (CLB):这是FPGA的核心,用于执行基本的逻辑运算。
    2. 输入/输出单元 (IOE - Input/Output Elements):位于芯片边缘,负责与外部电路进行通信。
    3. 可编程互连资源 (Programmable Interconnection):像一张巨大的“电话交换网”,由导线和可编程开关组成,用于连接不同的LE和IOE。
    4. 专用硬件模块:现代FPGA通常还集成了许多专用硬核,如 RAM模块DSP模块(用于数字信号处理)和乘法器等,以提高特定任务的执行效率。
  • 逻辑单元 (LE) 的内部结构

    • 一个典型的LE主要由以下部分组成:
      • 查找表 (LUT):一个小的RAM,用于实现组合逻辑。例如,一个4输入LUT可以实现任意4输入的组合逻辑功能。
      • 触发器 (Flip-flop):用于实现时序逻辑,使电路能够存储状态。
      • 多路选择器 (Multiplexer):用于在LE内部选择信号路径,例如选择输出是直接来自LUT(组合逻辑输出),还是来自触发器(时序逻辑输出)。

上图为Altera Cyclone IV系列FPGA中一个逻辑单元的详细结构图,清晰地展示了LUT、触发器(Register)以及相关的选择和控制逻辑。

3. FPGA 设计流程#

使用FPGA进行设计,通常遵循以下步骤,并借助专用的CAD(计算机辅助设计)工具(如 Intel Quartus 或 AMD Vivado):

  1. 设计输入 (Enter the design):使用硬件描述语言 (HDL)(如 Verilog 或 VHDL)或原理图来描述你的电路功能。
  2. 仿真 (Simulate):在计算机上对设计进行仿真,以验证其逻辑功能是否正确。
  3. 综合 (Synthesize):CAD工具将你的HDL代码“翻译”成由LUT、触发器等底层元件组成的逻辑网表,并将其映射到目标FPGA芯片的具体资源上。
  4. 下载 (Download):将生成的配置文件(位流文件)下载到FPGA芯片中。这个过程是在配置FPGA内部的LUT内容和互连开关。
  5. 测试 (Test):在实际硬件上运行并测试设计,验证其是否符合预期。

本章复习与小结#

  • 存储阵列与位单元:存储器的基本结构,由字线和位线控制。
  • RAM (易失性)
    • DRAM:使用电容存储,需要刷新,成本低,容量大。
    • SRAM:使用交叉耦合反相器存储,无需刷新,速度快,成本高。
  • ROM (非易失性):断电后数据不丢失,现代ROM如闪存可擦写。
  • 用存储器实现逻辑:存储器可以作为查找表 (LUT) 来实现任何组合逻辑功能。
  • 逻辑阵列
    • PLA:由AND阵列和OR阵列构成,实现组合逻辑。
    • FPGA:由可编程的逻辑单元(LE)、IO单元和互连资源构成,功能强大灵活,是现代数字系统快速原型验证和实现的核心技术。
  • FPGA设计流程:设计输入 -> 仿真 -> 综合 -> 下载 -> 测试。

思考与测验 (True/False Quiz)#

请判断以下说法的正误,并思考为什么。

  1. 一个存储单元可以存储一字节(byte)的数据。

    • 错误 (False)。一个最基本的存储单元(bit cell)只能存储一**位(bit)**的数据。一字节由8位组成。
  2. 在存储阵列中,一个数据单元的位置被称为它的地址。

    • 正确 (True)。地址是访问特定数据单元的唯一标识。
  3. RAM 是一种随机地址存储器。

    • 错误 (False)。RAM 的全称是随机存取 (Random Access) 存储器,强调的是访问方式的随机性,而不是地址的随机性。
  4. 即使在断电后,存储在静态RAM(SRAM)中的数据仍能保留。

    • 错误 (False)。SRAM 和 DRAM 都属于RAM,都是易失性的。只要断电,数据就会丢失。SRAM的“静态”指的是它不需要刷新。
  5. 动态RAM(DRAM)必须周期性地刷新以保持数据。

    • 正确 (True)。这是DRAM最核心的特点,因为它的数据存储在会漏电的电容上。
  6. ROM 是只读存储器。

    • 正确 (True)。虽然现代的ROM(如闪存)可以写入,但其“只读”的名称源于其历史和主要应用场景(读取远多于写入)。
  7. FPGA 是一种固定功能的电路。

    • 错误 (False)。FPGA 的全称是现场可编程 (Field Programmable) 门阵列,其最大的特点就是功能不是固定的,而是可以通过编程来定义。
ECE2050-Chapter11
https://chr0mium.link/posts/ece2050-chapter11/
作者
Cr
发布于
2025-08-24
许可协议
CC BY-NC-SA 4.0