Administrator
发布于 2026-08-08 / 1 阅读
0
0

用 FT4232H 制作 / 实验 USB-Blaster III:EEPROM、接线与验证记录

用 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 不是它造成的

关键证据:

  1. USB-Blaster I:

    no harts found
    
  2. 改成 FT4232H / USB-Blaster III:

    no harts found
    
  3. jtagconfig -d

    Nios V #0
    JTAG UART #0
    

    都能看到。

  4. Ashling:

    --list-probes
    

    能看到 probe。

  5. 最终检查 Platform Designer 才发现:

    ndm_reset_in 接错
    dbg_reset_out 没正确连接
    
  6. 改成:

    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 复位网络接错。


评论