FPGA 基础面试题详解
一、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 与外部器件(如 CPU、DDR、ADC/DAC)的信号交互,支持多种电平标准(如 LVCMOS、LVDS、SSTL)。
- 嵌入式资源:集成在内部的辅助资源,包括 PLL(锁相环,用于时钟倍频/分频)、DSP 切片(高速数字信号处理)、Block RAM(大容量存储)。
3. FPGA 的配置方式有哪些?各适合什么场景?
答: 主要分为「主动配置」和「被动配置」两类:
-
主动配置(FPGA 主动读取配置文件)
- 配置芯片(如 SPI Flash):最常用,上电后自动读取 bitstream,适合量产产品,掉电后信息不丢失。
- 并行配置(Parallel Flash):速度快,适合对配置时间要求高的场景,但布线复杂、成本略高。
-
被动配置(外部控制器主动向 FPGA 写入)
- JTAG 配置:通过 JTAG 接口调试,方便快速下载 bitstream,主要用于开发阶段。
- 串口/USB 配置:由 CPU 或电脑写入,适合调试或远程配置场景。
- Slave Serial 配置:由外部 MCU 控制,适合小型系统、低功耗场景。
4. 什么是 LUT?工作原理及常见类型?
答: LUT(查找表)是实现组合逻辑的核心单元,本质是基于 SRAM 的'真值表缓存器'。输入变量所有可能的组合预先存储在 SRAM 中,信号到来时根据输入值'查找'输出结果。
常见类型:
- 4 输入 LUT:可实现任意 4 变量的组合逻辑(16 种组合)。
- 5 输入 LUT:可实现任意 5 变量的组合逻辑(32 种组合),部分高端 FPGA 采用。
- 6 输入 LUT:Xilinx 7 系列及以上主流配置,灵活性更高,还可拆分为两个 4 输入 LUT 使用。
5. FPGA 中的触发器(FF)有哪些类型?
核心用于实现时序逻辑(存储、同步信号):

