ARM BTLM(Bluetooth Logic Module)是早期ARM开发平台中的关键组件,它集成了FPGA、PLD和蓝牙功能模块。作为调试接口的核心,JTAG在BTLM中扮演着至关重要的角色。我们先从硬件架构层面理解其设计逻辑:
BTLM采用模块化堆栈设计,JTAG信号通过顶部板卡向下传递至母板,形成完整的扫描链:
这种架构允许开发者单独配置FPGA或调试ARM代码:
verilog复制// 典型JTAG信号连接示例
module jtag_router (
input nMBDET, // 母板检测信号
input TDI_above, // 上层模块的TDI
output TDO_above, // 向上层模块输出的TDO
input TDI_below, // 下层模块的TDI
output TDO_below // 向下层模块输出的TDO
);
assign TDO_below = nMBDET ? TDI_above : 1'bz;
assign TDO_above = nMBDET ? 1'bz : TDI_below;
endmodule
BTLM支持两种工作模式,信号路由动态变化:
| 工作模式 | 信号路径 | 控制信号 |
|---|---|---|
| 用户模式 | Multi-ICE → FPGA → 逻辑模块 → 母板 | CONFIG=0, S2[4]=0 |
| PLD编程模式 | JTAG工具 → PLD → FPGA | CONFIG=1 |
关键控制信号nMBDET的作用:
注意:当BTLM未连接母板时,nMBDET被拉高将导致JTAG端口不可用。这是硬件设计的保护机制,避免信号冲突。
表4-2中详细说明了各JTAG信号的功能特性:
| 信号 | 方向 | 功能描述 |
|---|---|---|
| TDI | 输入 | 测试数据输入,通过模块堆栈向下传输 |
| TDO | 输出 | 测试数据输出,返回链中最后一个设备的响应 |
| TCK | 输入 | 测试时钟,采用串联终端电阻减少反射 |
| RTCK | 输出 | 返回时钟,用于同步设备(如含单时钟的可综合核) |
| nRTCKEN | 输出 | 低电平有效,指示需要RTCK信号回传 |
特殊信号处理技巧:
BTLM采用灵活的时钟分配方案(图4-5):
时钟信号路由示例:
code复制母板时钟 → 固态开关U2 → FPGA_CLK
↘ Lydia时钟
射频模块 → RF_SYS_CLK → FPGA_CLK3
RF_TX_CLK → FPGA_FAST1(可隔离)
BTLM支持两种配置模式(通过S2[4]选择):
配置状态机关键信号:
使用Multi-ICE调试器的典型连接步骤:
tcl复制jtag newtap btml fpga -irlen 8 -expected-id 0x3f0f0f0f
jtag newtap btml pld -irlen 6 -expected-id 0x0612d093
jtag newtap btml arm -irlen 4 -expected-id 0x0792601f
常见问题排查:
BTLM通过AMBA AHB总线与系统通信,内存空间分为(表5-1):
| 地址范围 | 大小 | 设备 | 访问特性 |
|---|---|---|---|
| 0x30000000 | 256MB | BTLM别名区 | 主/从接口均可访问 |
| 0x40000000 | 256MB | 蓝牙外设区 | 包含UART/GPIO等寄存器 |
| 0xC0000000 | 256MB | BTLM主区域 | 必须直接连接母板 |
关键设计要点:
蓝牙子系统包含多个关键外设(表5-5):
UART控制器(基址0x43000000):
code复制波特率 = 系统时钟 / (16 × (BRDIV + (FRAC/64)))
GPIO控制器(基址0x42000000):
中断控制器(基址0x41000000):
BTLM提供4个38针Mictor连接器用于生产测试:
BTLM对电源质量敏感,建议测量点:
测量方法:
早期ARM开发平台的设计哲学在BTLM中体现明显:
与现代ARM开发板对比:
在嵌入式系统教学中,BTLM仍是理解以下概念的优秀平台: