FPGA(Field Programmable Gate Array)是「可程式化的硬體」。 速度與彈性兼備,是高效能即時系統的最佳選擇之一。
一、FPGA 概念
什麼是 FPGA?
「現場可程式化邏輯閘陣列」: - 數百萬個邏輯單元 - 可被使用者自由組合 - 開機後從 Flash 載入「bitstream」決定邏輯
FPGA vs ASIC vs MCU
| 特性 | MCU | FPGA | ASIC |
|---|---|---|---|
| 性能 | 中 | 高 | 最高 |
| 功耗 | 低 | 中 | 低 |
| 彈性 | 軟體可改 | 硬體可改 | 固定 |
| 並行 | 序列為主 | 大量並行 | 並行 |
| 量產成本 | 低 | 中-高 | 量產極低 |
| NRE 成本 | 低 | 中 | 極高(百萬美元+) |
| 開發時間 | 短 | 中 | 長(年) |
適合 FPGA 的應用
- 高速資料處理(影像、雷達、通訊)
- 即時控制(馬達、電源)
- 客製化介面
- 演算法加速(AI、加密)
- 原型驗證(pre-silicon)
- 小量產的 ASIC 替代
二、FPGA 內部結構
主要元件
1. CLB / LB / Slice
邏輯區塊,含: - LUT(Look-Up Table):實現任意組合邏輯 - FF(Flip-Flop):時序邏輯 - 進位鏈(Carry Chain):加法器加速
2. BRAM(Block RAM)
數十到數千 kbit 的 SRAM。
3. DSP Slice
硬體乘法加法器,AI / DSP 加速。
4. Clock Manager
PLL/MMCM/DCM 產生多個時鐘。
5. SerDes Transceiver
高速 GTH/GTY/GTM:6.6/16.3/58 Gbps。
6. IO 模組
LVCMOS、LVDS、HSTL、SSTL 等多種電平。
7. Hard CPU(部分 FPGA)
ARM Cortex-A、RISC-V 嵌入。
三、主要 FPGA 廠商
AMD(前 Xilinx)
- Spartan-7:低成本
- Artix-7:通用
- Kintex-7 / UltraScale:中高階
- Virtex / UltraScale+:高階
- Zynq-7000 / UltraScale+ MPSoC:FPGA + ARM
- Versal:ACAP(FPGA + AI Engine + ARM)
Intel(前 Altera)
- Cyclone:低成本
- MAX 10:含 Flash
- Arria:中階
- Stratix:高階
- Agilex:頂級
Lattice
- iCE40:超低功耗,開源工具支援好
- MachXO3:低成本控制
- CrossLink:MIPI 介面
- ECP5:中階高速
Microchip(前 Microsemi / Actel)
- SmartFusion / PolarFire:加固抗輻射
其他
- Efinix:新興,FPGA + RISC-V
- GOWIN:中國,低成本
- QuickLogic:超低功耗
四、FPGA 開發流程
設計輸入(Verilog/VHDL)
│
┌──────▼──────┐
│ 模擬驗證 │
└──────┬──────┘
│
┌──────▼──────┐
│ 合成 │ → Netlist
└──────┬──────┘
│
┌──────▼──────┐
│ 實作(P&R) │ → Place & Route
└──────┬──────┘
│
┌──────▼──────┐
│ 時序分析 │
└──────┬──────┘
│
┌──────▼──────┐
│ Bitstream │
└──────┬──────┘
│
┌──────▼──────┐
│ 下載到FPGA │
└─────────────┘
五、HDL 設計
Verilog / SystemVerilog
主流,C-like 語法。
VHDL
Pascal 風格,嚴謹但冗長。
高階綜合(HLS)
C/C++ → 硬體: - Vitis HLS(AMD) - Catapult(Siemens) - Intel HLS Compiler - 適合:演算法 prototyping、AI inference
範例:簡單計數器(Verilog)
module counter (
input clk,
input rst_n,
output reg [7:0] count
);
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
count <= 8'h00;
else
count <= count + 1;
end
endmodule
範例:UART 接收器(簡化)
module uart_rx #(
parameter CLK_FREQ = 50_000_000,
parameter BAUD = 115200
)(
input clk,
input rx,
output reg [7:0] data,
output reg ready
);
localparam DIV = CLK_FREQ / BAUD;
// ... 實際實現包含 start bit 偵測、移位、stop bit 確認
endmodule
六、設計開發工具
AMD
- Vivado(中高階 FPGA)
- Vitis IDE(軟硬整合)
- Vivado HLS / Vitis HLS
Intel
- Quartus Prime(Pro / Standard / Lite)
- ModelSim / Questa
Lattice
- Diamond
- Radiant
- iCEcube2
開源工具鏈
- Yosys(合成)
- nextpnr(P&R)
- icestorm / ECP5 toolchain(Lattice 部分系列)
- SymbiFlow / F4PGA
iCE40 系列已有完整開源工具鏈,FPGA 學習最友善。
模擬
- ModelSim / Questa
- Verilator(開源,極快)
- Icarus Verilog(開源)
- GTKWave(波形檢視)
七、FPGA IP 與 SoC 整合
IP(Intellectual Property)
可重用的硬體模組: - AMD:MicroBlaze、AXI 系列、PCIe Hard IP - Intel:Nios II、Avalon - 開源:OpenCores、LiteX、PicoRV32、VexRiscv
軟核處理器
在 FPGA 內實現的 CPU: - MicroBlaze(AMD) - Nios II(Intel) - RISC-V(開源)
硬核處理器
實體 CPU 整合在 FPGA 中: - Zynq 的 ARM Cortex-A9 / A53 - Versal 的 ARM Cortex-A72 / R5
八、典型應用
1. 高速通訊
- 100/400G 乙太網
- PCIe Gen4/5 介面
- HFT(高頻交易)
2. 影像處理
- 4K/8K 視訊
- 機器視覺
- 醫學影像
3. 馬達控制
- 多軸 servo
- 矩陣換流器
4. AI Inference
- 邊緣 AI(Versal AI Edge、Agilex AI)
- 量化模型加速
5. 雷達 / 聲納 / 軟體無線電(SDR)
6. 加密與安全
7. ASIC 原型驗證
九、本章總結
✅ 您應該掌握:
- [x] FPGA 與 MCU/ASIC 的差別
- [x] FPGA 內部結構(LUT、FF、BRAM、DSP)
- [x] 主要廠商與型號定位
- [x] FPGA 開發流程
- [x] HDL(Verilog/VHDL)入門概念
- [x] 工具鏈
- [x] IP 與 SoC FPGA
- [x] 典型應用領域
下一章
09-SoC設計.md — SoC 系統單晶片。