一、FPGA 基础概念
1. 什么是 FPGA?与 CPLD、ASIC 的核心区别是什么?
解答: FPGA(现场可编程门阵列)是一种基于可编程逻辑单元(CLB)、可编程互连资源(PI)、I/O 接口和嵌入式资源(如 DSP、RAM、PLL)的半导体器件,可通过硬件描述语言(HDL)编程实现任意数字逻辑功能,属于'现场可编程'器件。
核心区别:
- FPGA:基于 SRAM 工艺,可编程性强、灵活性高,可反复擦写,适合快速原型验证、小批量量产,功耗中等,成本随规模上升;
- CPLD:基于 EEPROM/Flash 工艺,集成度低、逻辑资源少,不可反复擦写(或擦写次数有限),功耗低、延迟小,适合简单逻辑控制;
- ASIC:专用集成电路,定制化设计,集成度高、功耗低、性能最优,不可编程,研发周期长、成本高,适合大批量量产。
2. FPGA 的基本架构包括哪些部分?各部分的作用是什么?
解答: 核心架构包括 4 部分,不同厂商(Xilinx、Intel)命名略有差异,但功能一致:
- 可编程逻辑块(CLB):FPGA 的核心,由查找表(LUT)、触发器(FF)、多路选择器组成,用于实现各种组合逻辑和时序逻辑;
- 可编程互连资源(PI):包括布线资源、开关矩阵,用于连接各个 CLB、I/O 模块和嵌入式资源,实现信号的传输;
- I/O 接口模块(IOB):位于 FPGA 芯片边缘,负责 FPGA 与外部器件(如 CPU、DDR、ADC/DAC)的信号交互,支持多种电平标准(如 LVCMOS、LVDS、SSTL);
- 嵌入式资源:集成在 FPGA 内部的辅助资源,包括 PLL(锁相环,用于时钟倍频/分频、相位调整)、DSP 切片(用于高速数字信号处理,如滤波、乘法)、Block RAM(块 RAM,用于存储数据,比分布式 RAM 容量大、功耗低)。
3. FPGA 的配置方式有哪些?各适合什么场景?
解答: FPGA 的配置方式核心分为「主动配置」和「被动配置」,具体分类及场景如下:
- 主动配置(FPGA 主动读取配置文件):
- 配置芯片(如 Xilinx 的 SPI Flash、Intel 的 EPC 系列):最常用,上电后 FPGA 自动读取配置芯片中的 bitstream,适合量产产品,掉电后配置信息不丢失;
- 并行配置(Parallel Flash):配置速度快,适合对配置时间要求高的场景,但布线复杂、成本略高。
- 被动配置(外部控制器主动向 FPGA 写入配置文件):
- JTAG 配置:通过 JTAG 接口(TCK、TMS、TDI、TDO)配置,主要用于调试、开发阶段,方便快速下载 bitstream;
- 串口/USB 配置:通过 UART、USB 接口由 CPU 或电脑写入配置文件,适合调试或特殊场景(如远程配置);
- Slave Serial 配置:由外部控制器(如 MCU)通过串行信号控制配置,适合小型系统、低功耗场景。
4. 什么是 LUT?LUT 的工作原理是什么?常见的 LUT 有几种?
解答: LUT(查找表)是 FPGA 中实现组合逻辑的核心单元,本质是一个基于 SRAM 的'真值表缓存器'。
工作原理: LUT 的输入是组合逻辑的输入变量,输出是对应的逻辑结果;预先将输入变量所有可能的组合(真值表)存储在 SRAM 中,当输入信号到来时,LUT 根据输入值'查找'对应的输出结果,实现组合逻辑功能(如与、或、非、异或,以及更复杂的组合逻辑)。
常见类型:
- 4 输入 LUT:可实现任意 4 变量的组合逻辑(2^4=16 种真值表组合);
- 5 输入 LUT:可实现任意 5 变量的组合逻辑(2^5=32 种组合),部分高端 FPGA 采用;

