《集成电路设计》复习资料2(设计基础与方法)

目录

  1. 简单可编程逻辑器件(PLD)
  2. 复杂可编程逻辑器件(CPLD)
  3. 现场可编程门阵列(FPGA)
  4. CPLD与FPGA的详细对比
  5. PLD的设计流程
  6. 集成电路设计概述
  7. 集成电路的设计思想
  8. 集成电路的设计步骤
  9. 集成电路的设计方法
  10. 标准单元(SC)设计方法详解
  11. 可编程逻辑器件(PLD)设计方法

1. 简单可编程逻辑器件(PLD)

1.1 PLD的基本结构

简单PLD的核心是"与-或"两级阵列结构,用于实现组合逻辑函数。其逻辑符号通常用一个大的与门(代表乘积项)和一个大的或门表示。

1.2 主要类型及比较

四种经典的简单PLD器件在"与"、"或"阵列和输出电路上有不同的可编程性,导致其灵活性和应用场景各异。

器件名 "与"矩阵 "或"矩阵 输出电路 特点与应用
PROM (可编程只读存储器) 固定(全译码) 可编程 固定 - 与阵列为全译码器,规模随输入n2^n指数级增长。 - 仅适用于数据存储,不适合实现复杂的逻辑函数。
PLA (可编程逻辑阵列) 可编程 可编程 固定 - 在简单PLD中具有最高的灵活性 。 - 但结构相对复杂,集成度较低。
PAL (可编程阵列逻辑) 可编程 固定 固定 - 通过可编程"与"阵列增加输入项,固定"或"阵列简化了器件结构。 - 或阵列固定明显影响了编程的灵活性
GAL (通用阵列逻辑) 可编程 固制 可由用户组态 - 核心创新在于用输出逻辑宏单元 (OLMC)替代了固定的或阵列。 - 可以实现时序电路,大大增强了灵活性。

1.3 关键结构详解

(1) GAL的输出逻辑宏单元(OLMC)

OLMC是GAL器件区别于PAL的关键,它使得输出功能可配置。

  • 主要组成
    • 异或门: 用于控制输出信号的极性(取反或不取反)。
    • D触发器: 用于锁存数据,使GAL能够设计时序逻辑电路。
    • 4个多路选择器 : 用于灵活配置以下信号路径:
      • 输出使能(Output Enable)
      • 反馈信号选择(Feedback)
      • 或门控制(OR Gate Control)
      • 输出选择(Output Selection)
(2) PAL实现全加器示例

文档以全加器为例,展示了如何利用PAL的可编程"与"阵列和固定"或"阵列来实现组合逻辑功能。通过将全加器的和(S)与进位(Cn+1)表达式分解为多个乘积项,并在"与"阵列中进行编程连接,即可在固定的"或"阵列输出端得到所需结果。


2. 复杂可编程逻辑器件(CPLD)

CPLD可以看作是多个简单PLD(如GAL)的集成和扩展,其结构更为复杂,集成度更高。

2.1 CPLD的主要结构

CPLD主要由以下三个部分构成:

  1. **可编程逻辑阵列块 **(LAB, Logic Array Block) 宏单元(Macrocell)的集合,是实现核心逻辑功能的区域。
  2. **可编程I/O单元 **(I/O Block) 芯片与外部世界的接口,高度可配置。
  3. **可编程内部连线 **(PIA, Programmable Interconnect Array) 连接各个LAB之间以及LAB与I/O单元之间的互连网络。

2.2 宏单元(Macrocell)内部结构

每个宏单元是CPLD的基本逻辑单元,通常包含:

  • 乘积项逻辑阵列: 用于生成组合逻辑。
  • 乘积项选择矩阵: 用于选择和分配乘积项。
  • 可编程触发器: 用于实现时序逻辑。

2.3 可编程I/O单元

I/O单元功能强大且灵活:

  • 电气兼容性: 能兼容TTL和CMOS等多种接口和电压标准。
  • 模式配置: 可配置为输入、输出、双向、集电极开路和三态等形式。
  • 多电压支持: 支持多种I/O电压(如5V, 3.3V, 2.5V, 1.8V),以适应不同工艺节点并降低功耗。
  • 封装方式: 常见封装包括BGA(球栅阵列)、PGA(插针栅阵列)、QFP(方型扁平式)和DIP(双列直插)。

2.4 可编程连线阵列(PIA)

  • PIA在各个逻辑宏单元之间以及宏单元与I/O单元之间提供信号连接。
  • 关键特性 : CPLD中一般采用固定长度 的线段进行连接,因此信号传输延时是固定的 ,这使得CPLD的时间性能容易预测,适合对时序要求严格的控制逻辑应用。

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

FPGA是目前集成度最高、功能最强大的可编程逻辑器件。

3.1 FPGA的主要结构

FPGA主要由以下部分构成:

  1. **可配置逻辑功能块 **(CLB, Configurable Logic Block) / **逻辑阵列块 **(LAB) 实现用户逻辑的核心单元。
  2. **可编程输入输出模块 **(IOB, Input/Output Block) 芯片的I/O接口。
  3. **可编程内部连线资源 **(IR, Interconnect Resources) 连接所有CLB和IOB的复杂布线网络。

3.2 FPGA的关键技术:查找表(LUT)

  • 基本原理 : LUT(Look-Up Table)是FPGA实现逻辑功能的核心。一个N输入的LUT本质上是一个2^N x 1 bit的SRAM。
  • 工作方式: 用户描述的逻辑电路的所有可能输出结果会被预先计算并写入这个SRAM中。当输入一个N位地址(即N个输入信号)时,LUT直接输出该地址对应的内容,从而实现任意N输入的组合逻辑功能。
  • 主流规格 : 目前FPGA中多使用4输入LUT,即一个16x1 bit的RAM。

3.3 FPGA的内部资源(以Cyclone II为例)

  • 架构: 采用二维行列式架构。
  • **逻辑元素 **(LE) 是Cyclone II架构中最小的逻辑单元,每个LAB包含16个LE。
  • 配套资源 : 除了CLB/LAB,FPGA还集成了丰富的硬核资源,如:
    • **数字时钟管理模块 **(DCM)
    • **嵌入式存储器 **(BRAM)
    • **内嵌功能单元 **(如PLL锁相环)
    • 硬IP核(如处理器、高速收发器等)

4. CPLD与FPGA的详细对比

特性 CPLD FPGA
内部结构 乘积项(Product-term) 查找表(Look-up Table, LUT)
程序存储 内部EEPROM/Flash ,掉电后数据不丢失,可加密 基于SRAM ,掉电后数据丢失,需外挂配置芯片(如EEPROM)。一般不能保密
资源类型 组合电路资源丰富,适合实现复杂的组合逻辑。 触发器资源丰富,易于实现复杂的时序逻辑和算法。
集成度
使用场合 完成控制逻辑、接口逻辑等。 能完成比较复杂的算法、数字信号处理(DSP)、SoPC等。
速度与延时 延时固定且可预测,整体速度相对较慢。 延时取决于布局布线,但内部速度快
其他资源 较少 丰富(嵌入式存储器、锁相环、硬核IP等)
保密性 (非易失性存储) (易失性存储,配置文件易被读取)

总结: CPLD基于非易失性存储,结构简单,延时可预测,适合胶合逻辑和控制;FPGA基于SRAM,结构复杂,资源丰富,适合高性能、高密度的复杂算法和系统级应用。


5. PLD的设计流程

PLD的设计是一个从抽象到具体的自动化过程,主要步骤如下:

  1. **设计输入 **(Design Entry)

    • 原理图输入: 使用元件符号和连线描述电路,直观但繁琐,不适合大规模设计。
    • HDL语言输入(如Verilog, VHDL) 逻辑描述功能强大,已成为国际标准,便于移植和复用。其地位类似于软件开发中的高级语言。
  2. **设计处理 **(Design Processing)

    • 综合和优化: 将HDL代码转换为门级网表,并进行逻辑化简和优化,以减少资源消耗。
    • 映射(Map) 将优化后的逻辑网表分割成适合目标器件内部逻辑资源(如LE、宏单元)实现的小块。
    • 布局与布线(Place & Route) 将逻辑小块放置到器件内部的具体物理位置,并利用布线资源完成它们之间的连接。
    • 生成编程文件: 生成最终用于下载到PLD芯片的二进制文件(如.pof, .sof, .bit)。
  3. **模拟仿真 **(Simulation)

    • 功能仿真: 在不考虑器件内部延时的情况下,验证设计的逻辑功能是否正确。
    • 时序仿真: 在布局布线后,结合实际的器件延时信息,验证设计在真实硬件上的时序性能。
  4. **下载编程 **(Download/Program)

    • 将生成的编程文件通过专用的下载电缆(如JTAG)烧写到PLD芯片中。
  5. **在线测试 **(In-Circuit Verification)

    • 在实际硬件环境中对器件的最终功能和性能指标进行测试和验证。

设计工具 : Altera(现Intel PSG)的Quartus II是新一代FPGA/CPLD开发软件,已逐步取代Maxplus II,支持新器件和大规模FPGA的开发。

6. 集成电路设计概述

6.1 CMOS LSI的发展历程

集成电路技术从MSI发展到ULSI,其关键参数发生了巨大变化:

发展阶段 年份 元件数/芯片 特征线宽 (μm) 速度功耗积 (pJ) 栅氧化层厚度 (nm) 结深 (μm) 芯片面积 (mm²) 硅片直径 (英寸)
MSI 1966 10² ~ 10³ 10 ~ 5 10² ~ 10 120 ~ 100 2 ~ 1.2 < 10 2 ~ 3
LSI 1971 10³ ~ 10⁵ 5 ~ 3 10 ~ 1 100 ~ 40 1.2 ~ 0.5 10 ~ 25 4 ~ 5
VLSI 1980 10⁵ ~ 10⁷ 3 ~ 1 1 ~ 10⁻² 40 ~ 15 0.5 ~ 0.2 25 ~ 50 6
ULSI 1990+ 10⁷ ~ 10⁹ < 1 < 10⁻² 15 ~ 10 0.2 ~ 0.1 50 ~ 100 > 6

6.2 设计在产业链中的地位

  • 集成电路产业是以市场、设计、制造、应用为主要环节的系统工程。
  • 设计是连接市场和制造之间的桥梁,是集成电路产品开发的入口。
  • 成功的产品来源于成功的设计,而成功的设计取决于优秀的设计工具(EDA)。

6.3 集成电路设计的特点(vs. 分立电路)

  • 对设计正确性提出更为严格的要求。
  • 测试问题更加复杂。
  • 版图设计(布局布线)成为关键环节。
  • 必须采用分层分级(Hierarchical)和模块化设计。
  • 需要应对高度复杂电路系统的设计挑战。

7. 集成电路的设计思想

7.1 分层分级设计(Hierarchical Design)

将一个复杂的集成电路系统设计问题,逐级分解为复杂性更低的设计级别,直至最终级别的复杂性足够低。

(1) 设计层次(从高到低,抽象到具体)
  • **系统级 **(System Level)
  • **算法级 **(Algorithm Level)
  • **寄存器传输级 **(RTL, Register Transfer Level)
  • **逻辑级 **(Logic Level)
  • **电路级 **(Circuit Level)
  • **版图级 **(Layout Level)
(2) 设计域
  • **行为域 **(Behavioral Domain) 描述集成电路的功能(做什么)。
  • **结构域 **(Structural Domain) 描述集成电路的逻辑和电路组成(怎么做)。
  • **物理域 **(Physical Domain) 描述集成电路掩膜版的几何特性和物理实现(如何制造)。

7.2 设计描述示例:4位加法器

以4位加法器为例,展示不同层次和域的设计描述。

(1) 行为描述(行为域)
  • 算法级 : co, s <= a + b + c;

  • RTL级 : Si = (ai ⊕ bi) ⊕ ci; Ci+1 = aibi + ci(ai + bi)

  • Verilog HDL :

    verilog 复制代码
    module add4(a, b, c, s, co);
        input[3:0] a, b;
        input c;
        output[3:0] s;
        output co;
        reg[4:0] carry;
        integer i;
        always@(a or b or c) begin
            carry[0] = c;
            for(i=0; i<=3; i=i+1) begin
                s[i] = a[i] ^ b[i] ^ carry[i];
                carry[i+1] = (a[i] & b[i]) | (carry[i] & (a[i] | b[i]));
            end
        end
        assign co = carry[4];
    endmodule
(2) 结构描述(结构域)
  • 说明元件是如何连接起来完成功能的。
  • 层次关系Adder4 → 4个adderxor, or, and门 → NMOS, PMOS晶体管。
  • 结构图: 由4个一位全加器级联构成。
(3) 物理描述(物理域)
  • 说明如何构造详细的元件来产生所要求的结构。
  • 最低层次: 光刻掩膜信息,即各种不同层的版图(如多晶硅、有源区、金属层等)。

8. 集成电路的设计步骤

集成电路设计主要有两种自上而下的路线:正向设计反向设计

8.1 正向设计(Top-down)

  1. 行为设计: 定义系统功能。
  2. 结构设计: 划分功能模块。
  3. 逻辑/电路设计: 将模块转换为逻辑图或电路图。
  4. 版图设计: 将电路图转换为物理版图。
  5. 验证与迭代: 进行版图解析、电路图提取、功能分析,并根据结果修改设计。

8.2 反向设计(Bottom-up)

  1. 单元设计: 从工艺开始,精心设计基本单元(如标准单元库)。
  2. 功能块/子系统设计: 基于单元逐步向上构建。
  3. 系统统合: 完成整个系统设计。
  4. 验证与迭代: 同样需要进行提取和验证,并可能回溯到单元设计阶段进行优化。

现代设计流程框架

  • 系统及功能设计行为/RTL设计综合 (生成网表) → 逻辑仿真自动布局布线 (生成版图) → 物理验证后仿真签核 (Sign-off) → 制版流片

9. 集成电路的设计方法

主要分为三大类:全定制半定制可编程逻辑器件

9.1 全定制方法(Full-Custom Design Approach)

  • 定义 : 在晶体管层次上对每个单元的性能、面积进行优化设计,所有掩膜层均由人工设计。
  • 优点
    • 集成度最高,面积利用率高。
    • 速度快,功耗低。
    • 适合模拟/数模混合IC设计。
  • 缺点
    • 设计复杂度高,周期长。
    • 费用高昂。
  • 应用: 存储器、CPU、通信IC等对性能价格比要求极高且产量大的芯片。
  • 现状: 由于单元库的成熟,纯全定制设计已较少见。

9.2 半定制方法(Semi-Custom Design Approach)

主要适合于开发周期短、成本和风险小的小批量数字电路设计。又分为两种:

(1) 基于门阵列(Gate Array, GA)的设计方法
  • 原理 : 在预先制造好的、具有固定晶体管阵列的"母片"上,通过定制金属互连层来实现所需逻辑。
  • 类型
    • **通道式门阵列 **(GA) 晶体管行之间有固定的布线通道。
    • **无通道门阵列 **(Sea-of-Gates, SoG) 无固定布线通道,未利用的逻辑门区域可用于布线,集成度更高。
  • 特点: 只有上面几层金属互连是定制的,开发成本低,周期短。
(2) 基于标准单元(Standard Cell, SC)的设计方法
  • 原理 : 从标准单元库中调用预先设计好的逻辑单元(如与门、触发器等),按照规则排列并进行互连。
  • 布局: 芯片中心是单元区,四周是I/O单元。单元具有等高不等宽的结构,行间留有可调整的布线通道。
  • 标准单元库 : 包含单元的多种描述文件:
    • 逻辑符号(L) 用于原理图。
    • 功能描述/Verilog模型: 用于功能仿真。
    • 电路结构/SPICE网表: 用于电路仿真。
    • 拓扑版图(O) 用于布局。
    • 物理版图(A) 用于最终制造。
  • 优点
    • 100%硅片面积利用率
    • 布局布线自由度大,可达到100%布通率
    • 自动化程度高,设计周期短。
    • 是目前应用最广泛的ASIC设计方法
  • 发展趋势: 随着工艺进步,采用更多布线层(3~7层)和"跨单元布线"(Over-cell routing)技术,允许单元不等高,提高了芯片利用率,但也增加了自动布线的难度。

9.3 可编程逻辑器件(PLD)设计方法

  • 定义 : 逻辑单元已预先制成,无需任何掩膜,通过编程即可实现特定逻辑功能。
  • 分类
    • 按集成度
      • LDPLD(低密度): PROM, PLA, PAL, GAL。
      • HDPLD(高密度): CPLD, FPGA。
    • 按编程工艺: 熔丝/反熔丝、U/EPROM、E²PROM、SRAM。

10. 标准单元(SC)设计方法详解

10.1 标准单元库的主要内容

  • 基本单元: 非门、与非门、或非门、异或门、缓冲器、复合门、多路选择器、触发器、锁存器、加法器、移位寄存器等。
  • 较大规模单元/IP: 乘法器、除法器、算术运算单元、FIFO等(通常需要付费)。
  • 模拟单元模块: 振荡器、比较器等。
  • 同一功能的不同驱动能力、延迟特性等。

10.2 标准单元布图方法

  • 基本方式: 从库中调出单元按行排列,行间留有布线通道。
  • 互连
    • 同行或相邻行单元可通过上下通道互连。
    • 隔行垂直互连需借用单元内部的"走线道"(Feed-through)或专门的"空单元"(Empty Cell)。

10.3 标准单元法的设计流程

  1. 功能定义与说明 → HDL描述
  2. 逻辑综合 → 门级网表
  3. 逻辑与时序模拟(使用单元电路功能库)
  4. 布局布线(使用单元拓扑库)
  5. 寄生参数提取(使用工艺电学参数)
  6. 后仿真
  7. 版图生成(使用单元版图库)
  8. 交付制造

10.4 面临的挑战与解决方案

  • 挑战: 工艺更新后,标准单元库需要随之更新,工作量巨大。
  • 解决方案
    • 使用EDA工具(如Cadence, Synopsys)提供的标准单元自动设计工具
    • 采用设计重用(Reuse)技术。

11. 可编程逻辑器件(PLD)设计方法

11.1 PLD的编程工艺

  1. 熔丝/反熔丝: 一次性编程(OTP)。熔丝烧断或反熔丝击穿形成通路。
  2. U/EPROM: 紫外线擦除,电可编程。
  3. E²PROM: 电擦写,可重复编程。
  4. SRAM : 基于静态RAM单元,掉电后数据丢失,需外挂配置芯片。Xilinx FPGA是典型代表

11.2 PLD的基本结构

  • 与或阵列: 实现组合逻辑功能。
  • 逻辑宏单元(Macrocell) 提供时序电路所需的寄存器/触发器,并提供多种I/O方式、内部反馈和控制信号分配。

11.3 主要PLD厂商

相关推荐
halen3331 小时前
How Masters Tool Fixed My Digital Disaster
算法·均值算法·推荐算法
重生之后端学习2 小时前
78. 子集
java·数据结构·算法·职场和发展·深度优先
摸鱼仙人~2 小时前
0-1背包与完全背包:遍历顺序背后的秘密
人工智能·算法
juleskk2 小时前
2.15 复试训练
开发语言·c++·算法
那起舞的日子2 小时前
斐波那契数列
java·算法
wostcdk2 小时前
筛质数汇总
数据结构·算法
不吃橘子的橘猫3 小时前
《集成电路设计》复习资料4(Verilog HDL概述)
学习·算法·fpga开发·集成电路·仿真·半导体
宇木灵3 小时前
C语言基础-五、数组
c语言·开发语言·学习·算法
楼田莉子3 小时前
Linux学习:线程的同步与互斥
linux·运维·c++·学习