用 FT4232H 制作 / 实验 USB-Blaster III:EEPROM、接线与验证记录
整理时间:2026-08-08
实验目的:把手里的 FT4232H Mini Module 配置成 Quartus 25.1 可识别的 USB-Blaster III 类设备,用于 FPGA JTAG。
重要结论:这个实验本身成功打通了 Quartus/JTAG,但之前 Nios V 的 no harts found 最终证明是 Platform Designer Reset/Debug Reset 连接错误,并不是必须换 USB-Blaster III 才能解决。
1. 为什么做这个实验
最初使用 USB-Blaster I 调 Nios V 时,Ashling GDB Server 报:
Cannot set the JTAG frequency, continuing with auto adjust mode
Failed to get JTAG frequency from the debug probe
Error occurred during enumeration of RISC-V harts (no harts found).
因此一度怀疑:
USB-Blaster I
对 Nios V / Ashling 调试支持不足。
手里正好有:
FT4232H Mini Module
于是参考社区 USB-Blaster III 研究,尝试把 FT4232H EEPROM 配置成 Altera USB-Blaster III 类设备。
后续实测:
Quartus 能识别
Quartus 能下载 .sof
jtagconfig 能扫 FPGA
jtagconfig -d 能看到 JTAG UART #0 / Nios V #0
Ashling 能列出 probe
但 no harts found 一度仍存在。
最终修复 Platform Designer:
dbg_reset_out → ndm_reset_in
后 Nios V 才真正跑通。
因此本篇只记录:
FT4232H → USB-Blaster III 的制作实验本身。
不要把它和 Nios V 的 Reset 根因混为一谈。
2. USB-Blaster III 的硬件背景
Altera 官方 USB-Blaster III 是基于 FTDI 的新方案。
官方独立线缆框图中使用:
FTDI FT2232
并且 USB-Blaster III 在:
Quartus Prime 25.1+
获得正式软件支持。
官方资料列出的用途包括:
- Quartus Prime Programmer
- Signal Tap
- System Console
- Nios V debugger
- 其他 JTAG Server 支持的调试工具
社区资料进一步指出:
FT2232H
FT4232H
均可用于 USB-Blaster III / onboard USB-Blaster III 类实现。
3. 关键社区帖子
本次主要参考:
https://www.mikrocontroller.net/topic/571942
帖子给出的 Channel A JTAG 对应:
ADBUS0 → TCK
ADBUS1 → TDI
ADBUS2 → TDO
ADBUS3 → TMS
ADBUS4 → nTRST
ADBUS6 → PROC_RST
状态 LED 信号:
ACBUS7 → BLUE
ACBUS6 → GREEN
ACBUS5 → RED
ACBUS4 → ENABLE
其中 JTAG 最小验证只需要:
TCK
TDI
TDO
TMS
GND
4. FT4232H 的 EEPROM 配置
4.1 最重要:先备份
在 FT_PROG 中修改前,先保存 / 截图记录原始 EEPROM:
VID
PID
Product String
Serial Number
Channel mode
USB configuration
因为改成 Altera VID/PID 后,Windows 可能绑定到不同驱动,FT_PROG 不一定还能像原来一样直接看到设备。
5. VID / PID
本次参考社区资料,对 FT4232H “JTAG-only” 模式尝试:
VID = 0x09FB
PID = 0x6024
需要明确:
0x6024 = FT4232H / 无 UART这一具体映射来自社区对 Quartus 25.1 的逆向/实测记录,不应当当成完整官方 PID 规范。
帖子在 2025-04 的实测记录中给出:
6020 → FT2232H, JTAG only
6022 → FT2232H, JTAG + UART
6024 → 推测/实测对应 FT4232H without UART
本次 FT4232H 写入后,Windows/Quartus 确实出现了 USB-Blaster III 类识别结果。
6. “刷 USB-Blaster III”本质上刷的是什么
FT4232H 并不是像 MCU 那样下载一大段 USB-Blaster 固件。
主要是:
FT4232H 内部 USB/MPSSE 功能
+
外接 EEPROM 中的 USB Descriptor / 配置
+
Quartus USB-Blaster III 驱动
因此更准确叫:
改 FT4232H EEPROM 身份和配置
而不是“给 FT4232H 烧一套 FPGA 下载器 firmware”。
7. Channel A 的 JTAG 接线
FT4232H Channel A:
| FT4232H | JTAG | 方向(以 FTDI 为中心) |
|---|---|---|
| ADBUS0 / AD0 | TCK | 输出 |
| ADBUS1 / AD1 | TDI | 输出到 FPGA TDI |
| ADBUS2 / AD2 | TDO | 输入自 FPGA TDO |
| ADBUS3 / AD3 | TMS | 输出 |
| GND | GND | 共地 |
最容易弄反的是:
FTDI AD1 → FPGA TDI
FTDI AD2 ← FPGA TDO
TDI/TDO 的名字以 FPGA JTAG TAP 为参照。
8. 本次 FT4232H Mini Module 的实际引脚
对于本次使用的标准 FT4232H Mini Module,引出的 Channel A:
CN2-7 → AD0 / ADBUS0 → TCK
CN2-10 → AD1 / ADBUS1 → TDI
CN2-9 → AD2 / ADBUS2 ← TDO
CN2-12 → AD3 / ADBUS3 → TMS
GND → GND
因此最小连线:
FT4232H Mini Module FPGA
CN2-7 AD0 / TCK ───────────→ TCK
CN2-10 AD1 / TDI ───────────→ TDI
CN2-9 AD2 / TDO ←─────────── TDO
CN2-12 AD3 / TMS ───────────→ TMS
GND ─────────── GND
9. 接 Altera 传统 2×5 10-pin JTAG 口
USB-Blaster III 官方 legacy 2.54 mm 10-pin JTAG 定义可整理成:
| Legacy Pin | JTAG |
|---|---|
| 1 | TCK |
| 2 | GND |
| 3 | TDO |
| 4 | VCC_TARGET |
| 5 | TMS |
| 6 | nPROCRST |
| 7 | NC / other mode |
| 8 | nTRST |
| 9 | TDI |
| 10 | GND |
因此最小实验:
FT4232H FPGA 10-pin
ADBUS0 / TCK ─────────→ Pin 1 TCK
GND ────────── Pin 2 GND
ADBUS2 / TDO ←───────── Pin 3 TDO
ADBUS3 / TMS ─────────→ Pin 5 TMS
ADBUS1 / TDI ─────────→ Pin 9 TDI
第一轮测试:
nTRST
nPROCRST
可以先不接。
10. VCC_TARGET 和 IO 电压要特别注意
官方 USB-Blaster III 线缆内部有:
电平转换器
+
VCC_TARGET 检测
会根据目标板电压调整 JTAG 电平。
而直接拿 FT4232H Mini Module 裸接 FPGA:
FT4232H IO → FPGA JTAG
没有官方线缆里的自动 level translator。
因此必须确认:
FT4232H VIO
和:
FPGA JTAG bank / header 电平
兼容。
本次常见 FT4232H Mini Module I/O 为 3.3 V。
建议先测 FPGA JTAG Header:
Pin 4 VCC_TARGET 对 GND
如果目标也是约:
3.3 V
才适合直接连接 3.3 V FTDI IO。
若目标是:
1.8 V
2.5 V
不要直接拿 3.3 V FTDI IO 硬怼,应调整 VIO 或加入电平转换。
注意
如果 FT4232H 板和 FPGA 板分别供电:
一定共地
但不要随意把两个板的 3.3 V 电源硬并在一起。
11. EEPROM 改完后的识别现象
改完重新插 USB 后,Windows 一度显示为 USB-Blaster III 类设备。
Quartus Hardware Setup 也能识别。
实际命令:
quartus_pgm -l
输出:
1. USB <-> Serial Converter [USB-1]
虽然 Display Name 没直接显示:
USB Blaster III
但 Quartus 已经可以使用该 cable。
12. Quartus JTAG 验证
连接 FPGA 后:
jtagconfig -d
最终得到:
1. USB <-> Serial Converter [USB-1]
020F20DD 10CL016(Y|Z)/EP3C16/EP4CE15 (IR=10)
Design hash 1F61402E5E47F4F18794
- Node 0C006E00 JTAG UART #0
- Node 08986E00 Nios V #0
Captured DR after reset = (020F20DD) [32]
Captured IR after reset = (155) [10]
JTAG clock speed auto-adjustment is enabled.
JTAG clock speed 5 MHz
这说明至少以下链路都已经工作:
USB
↓
FT4232H
↓
MPSSE/JTAG
↓
EP4CE15 TAP
↓
Quartus JTAG Server
↓
Virtual JTAG / SLD
13. Quartus 下载 .sof
实测:
换成这个 FT4232H / USB-Blaster III 类设备后,Quartus 可以正常下载 FPGA 逻辑比特流。
因此作为 Quartus Programmer JTAG cable,这个 DIY 方案已经通过最基本验证。
可用:
quartus_pgm -l
列 cable。
然后:
quartus_pgm -c 1 --auto
扫 JTAG chain。
官方 USB-Blaster III 的命令行下载形式:
quartus_pgm -c 1 -m jtag -o "p;output_file.sof@1"
14. Ashling 怎么识别它
执行:
ash-riscv-gdb-server --list-probes
实测:
Cable Index Persistent ID Type Display Name
1 1 USB-Blaster-2 USB <-> Serial Converter [USB-1]
这说明 Ashling 能枚举该 probe。
注意:
Type = USB-Blaster-2
不等于“EEPROM 没改成功”。
当前 Nios V 工具链启动 Ashling 时实际使用:
--probe-type usb-blaster-2
它是 Ashling 的 probe backend 名称。
15. niosv-download 的实际命令
运行:
niosv-download software/app/build/Release/app.elf --go
工具实际启动:
ash-riscv-gdb-server
--auto-detect true
--probe-type usb-blaster-2
--instance 1
--device 020F20DD
--core-number 0
最初仍然出现:
Error occurred during enumeration of RISC-V harts (no harts found).
当时一度怀疑:
DIY USB-Blaster III ↔ Ashling compatibility
但后来证明这个判断不是本次故障根因。
16. 最终排除:no harts found 不是它造成的
关键证据:
-
USB-Blaster I:
no harts found -
改成 FT4232H / USB-Blaster III:
no harts found -
jtagconfig -d:Nios V #0 JTAG UART #0都能看到。
-
Ashling:
--list-probes能看到 probe。
-
最终检查 Platform Designer 才发现:
ndm_reset_in 接错 dbg_reset_out 没正确连接 -
改成:
dbg_reset_out → ndm_reset_in后 Nios V 软件调试才跑通。
因此:
不要用这次实验来证明 USB-Blaster I 一定不能调 Nios V,也不要用它证明必须 USB-Blaster III 才能调。
本次唯一能确定的是:
DIY FT4232H 方案可以被 Quartus/JTAG Server 使用,并成功完成 EP4CE15 JTAG scan 和
.sof下载;原来的 Nios V hart 错误根因在 Platform Designer Reset 网络。
17. 推荐的制作验证顺序
Step 1:备份 EEPROM
FT_PROG
→ Scan and Parse
→ 保存/截图原设置
Step 2:修改 VID/PID
实验配置:
VID = 09FB
PID = 6024
Step 3:重新插拔 USB
确认 Windows 驱动绑定。
Step 4:Quartus 看 cable
quartus_pgm -l
Step 5:只接 5 根线
TCK
TDI
TDO
TMS
GND
Step 6:扫 FPGA
jtagconfig -d
Step 7:Quartus 下载 SOF
先证明:
Programmer OK
Step 8:再测试 Nios V
ash-riscv-gdb-server --list-probes
以及:
niosv-download app.elf --go
如果 Nios V 出问题,仍然要独立检查:
clock
reset
dm_agent
dbg_reset_out / ndm_reset_in
18. 如果以后自己画 USB-Blaster III 类板子
直接照 FT4232H 裸接只适合作为实验。
一个更完整的板子应考虑:
USB connector
FT2232H / FT4232H
EEPROM
3.3 V / 1.8 V supply
VCCIO
JTAG level translator
VCC_TARGET sensing
ESD
JTAG header
status LED
官方 USB-Blaster III 明确包含 level translator 和 ESD,而不是 FTDI 管脚直接出去。
所以“自己画板”时不要照当前杜邦线实验版简单复制。
19. 官方 USB-Blaster III 与 DIY FT4232H 的区别
官方线:
USB
↓
FTDI controller
↓
Level Translator
↓
ESD
↓
JTAG header
本次 DIY:
USB
↓
FT4232H Mini Module
↓
ADBUS0~3
↓
FPGA JTAG
因此 DIY 最大的硬件注意事项是:
目标 JTAG 电平
20. 常用命令速查
列 Quartus cable:
quartus_pgm -l
自动扫描 JTAG:
quartus_pgm -c 1 --auto
详细查看 SLD:
jtagconfig -d
查看 Ashling probe:
ash-riscv-gdb-server --list-probes
下载 Nios V ELF:
niosv-download software/app/build/Release/app.elf --go
21. 本次实测结果
| 项目 | 结果 |
|---|---|
| FT4232H EEPROM 改 USB-Blaster III 类 VID/PID | ✅ |
| Windows 识别 | ✅ |
| Quartus 识别 cable | ✅ |
| FPGA JTAG IDCODE | ✅ |
Quartus 下载 .sof |
✅ |
jtagconfig -d |
✅ |
| JTAG UART #0 | ✅ |
| Nios V #0 | ✅ |
Ashling --list-probes |
✅ |
| 最初 Nios V hart enumeration | ❌ |
| 修正 Platform Designer Debug Reset 后 | ✅ 跑通 |
22. 参考资料
社区主帖:
- https://www.mikrocontroller.net/topic/571942
Altera USB-Blaster III User Guide:
- https://docs.altera.com/r/docs/864466/current/usb-blaster-iii-fpga-development-cable-user-guide/block-diagram
- https://docs.altera.com/r/docs/864466/current/usb-blaster-iii-fpga-development-cable-user-guide/signal-names-and-programming-modes
- https://docs.altera.com/r/docs/864466/current/usb-blaster-iii-fpga-development-cable-user-guide/software-requirements-and-supported-operating-systems
- https://docs.altera.com/r/docs/864466/current/usb-blaster-iii-fpga-development-cable-user-guide/command-line-programming-your-fpga-with-the-usb-blaster-iii-fpga-development-cable
FTDI:
- https://ftdichip.com/document/usb-modules-data-sheets/
- https://ftdichip.com/products/ft4232hq/
23. 一句话结论
FT4232H 改成 USB-Blaster III 类设备的实验是成功的,但这次 Nios V
no harts found的真正根因不是下载器,而是 Platform Designer 中dbg_reset_out / ndm_reset_in复位网络接错。