目录
- 简单可编程逻辑器件(PLD)
- 复杂可编程逻辑器件(CPLD)
- 现场可编程门阵列(FPGA)
- CPLD与FPGA的详细对比
- PLD的设计流程
- 集成电路设计概述
- 集成电路的设计思想
- 集成电路的设计步骤
- 集成电路的设计方法
- 标准单元(SC)设计方法详解
- 可编程逻辑器件(PLD)设计方法
1. 简单可编程逻辑器件(PLD)
1.1 PLD的基本结构
简单PLD的核心是"与-或"两级阵列结构,用于实现组合逻辑函数。其逻辑符号通常用一个大的与门(代表乘积项)和一个大的或门表示。
1.2 主要类型及比较
四种经典的简单PLD器件在"与"、"或"阵列和输出电路上有不同的可编程性,导致其灵活性和应用场景各异。
| 器件名 | "与"矩阵 | "或"矩阵 | 输出电路 | 特点与应用 |
|---|---|---|---|---|
| PROM (可编程只读存储器) | 固定(全译码) | 可编程 | 固定 | - 与阵列为全译码器,规模随输入n呈2^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主要由以下三个部分构成:
- **可编程逻辑阵列块 **(LAB, Logic Array Block) 宏单元(Macrocell)的集合,是实现核心逻辑功能的区域。
- **可编程I/O单元 **(I/O Block) 芯片与外部世界的接口,高度可配置。
- **可编程内部连线 **(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主要由以下部分构成:
- **可配置逻辑功能块 **(CLB, Configurable Logic Block) / **逻辑阵列块 **(LAB) 实现用户逻辑的核心单元。
- **可编程输入输出模块 **(IOB, Input/Output Block) 芯片的I/O接口。
- **可编程内部连线资源 **(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的设计是一个从抽象到具体的自动化过程,主要步骤如下:
-
**设计输入 **(Design Entry)
- 原理图输入: 使用元件符号和连线描述电路,直观但繁琐,不适合大规模设计。
- HDL语言输入(如Verilog, VHDL) 逻辑描述功能强大,已成为国际标准,便于移植和复用。其地位类似于软件开发中的高级语言。
-
**设计处理 **(Design Processing)
- 综合和优化: 将HDL代码转换为门级网表,并进行逻辑化简和优化,以减少资源消耗。
- 映射(Map) 将优化后的逻辑网表分割成适合目标器件内部逻辑资源(如LE、宏单元)实现的小块。
- 布局与布线(Place & Route) 将逻辑小块放置到器件内部的具体物理位置,并利用布线资源完成它们之间的连接。
- 生成编程文件: 生成最终用于下载到PLD芯片的二进制文件(如.pof, .sof, .bit)。
-
**模拟仿真 **(Simulation)
- 功能仿真: 在不考虑器件内部延时的情况下,验证设计的逻辑功能是否正确。
- 时序仿真: 在布局布线后,结合实际的器件延时信息,验证设计在真实硬件上的时序性能。
-
**下载编程 **(Download/Program)
- 将生成的编程文件通过专用的下载电缆(如JTAG)烧写到PLD芯片中。
-
**在线测试 **(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 :
verilogmodule 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个adder→xor,or,and门 →NMOS,PMOS晶体管。 - 结构图: 由4个一位全加器级联构成。
(3) 物理描述(物理域)
- 说明如何构造详细的元件来产生所要求的结构。
- 最低层次: 光刻掩膜信息,即各种不同层的版图(如多晶硅、有源区、金属层等)。
8. 集成电路的设计步骤
集成电路设计主要有两种自上而下的路线:正向设计 和反向设计。
8.1 正向设计(Top-down)
- 行为设计: 定义系统功能。
- 结构设计: 划分功能模块。
- 逻辑/电路设计: 将模块转换为逻辑图或电路图。
- 版图设计: 将电路图转换为物理版图。
- 验证与迭代: 进行版图解析、电路图提取、功能分析,并根据结果修改设计。
8.2 反向设计(Bottom-up)
- 单元设计: 从工艺开始,精心设计基本单元(如标准单元库)。
- 功能块/子系统设计: 基于单元逐步向上构建。
- 系统统合: 完成整个系统设计。
- 验证与迭代: 同样需要进行提取和验证,并可能回溯到单元设计阶段进行优化。
现代设计流程框架:
- 系统及功能设计 → 行为/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 标准单元法的设计流程
- 功能定义与说明 → HDL描述
- 逻辑综合 → 门级网表
- 逻辑与时序模拟(使用单元电路功能库)
- 布局布线(使用单元拓扑库)
- 寄生参数提取(使用工艺电学参数)
- 后仿真
- 版图生成(使用单元版图库)
- 交付制造
10.4 面临的挑战与解决方案
- 挑战: 工艺更新后,标准单元库需要随之更新,工作量巨大。
- 解决方案 :
- 使用EDA工具(如Cadence, Synopsys)提供的标准单元自动设计工具。
- 采用设计重用(Reuse)技术。
11. 可编程逻辑器件(PLD)设计方法
11.1 PLD的编程工艺
- 熔丝/反熔丝: 一次性编程(OTP)。熔丝烧断或反熔丝击穿形成通路。
- U/EPROM: 紫外线擦除,电可编程。
- E²PROM: 电擦写,可重复编程。
- SRAM : 基于静态RAM单元,掉电后数据丢失,需外挂配置芯片。Xilinx FPGA是典型代表。
11.2 PLD的基本结构
- 与或阵列: 实现组合逻辑功能。
- 逻辑宏单元(Macrocell) 提供时序电路所需的寄存器/触发器,并提供多种I/O方式、内部反馈和控制信号分配。
11.3 主要PLD厂商
- **Altera **(www.altera.com) 最大的PLD供应商之一。
- **Xilinx **(www.xilinx.com) FPGA的发明者,最大的PLD供应商之一。
- **Lattice Semiconductor **(www.latticesemi.com) ISP(在系统编程)技术的发明者。
- **Actel **(www.actel.com) 提供军品及宇航级产品。