1. ARM940T信号架构概述
作为ARM9系列处理器的重要成员,ARM940T采用哈佛架构设计,集成了4KB指令缓存和4KB数据缓存。这款处理器在嵌入式领域广泛应用,其信号接口设计体现了ARM体系结构的典型特征。处理器通过AMBA总线与系统其他组件通信,采用JTAG接口进行调试和测试,并通过专用调试信号支持实时追踪和断点设置。
ARM940T的信号接口可分为五大类:
- AMBA总线信号(31个)
- 协处理器接口信号(14个)
- JTAG/TAP控制器信号(19个)
- 调试信号(14个)
- 杂项信号(9个)
这些信号组共同构成了处理器的对外交互通道,每个信号组都有明确的时序要求和电气特性。在实际电路设计中,需要特别注意信号方向标识(Input/Output/Bidirectional),错误连接可能导致总线冲突或功能异常。
关键提示:ARM940T的nTRST信号必须在上电时保持至少16个TCK周期的低电平,以确保边界扫描逻辑正确初始化。这是调试接口正常工作的先决条件。
2. AMBA总线接口深度解析
2.1 AHB协议信号组
ARM940T实现了AMBA 2.0规范的AHB(Advanced High-performance Bus)接口,包含以下关键信号:
总线控制信号:
- AGNT(输入):总线授权信号,来自总线仲裁器
- AREQ(输出):总线请求信号,向仲裁器申请总线使用权
- BWAIT(双向):传输等待信号,从设备可延长传输周期
- BLAST(双向):突发传输结束指示
地址/数据总线:
- BA[31:0](输出):32位地址总线
- BD[31:0](双向):32位数据总线
- BWRITE(双向):传输方向控制(高电平表示写操作)
保护与传输属性:
- BPROT[1:0](输出):保护控制位
- BPROT[0]:0=用户模式,1=特权模式
- BPROT[1]:0=数据访问,1=指令取指
- BSIZE[1:0](输出):传输大小
- 00=字节,01=半字,10=字
2.2 总线传输机制
ARM940T支持AHB的四种基本传输类型:
- 空闲传输:BTRAN[1:0]=00,无数据传输
- 非连续传输:BTRAN[1:0]=01,单次独立访问
- 连续传输:BTRAN[1:0]=11,地址递增的突发访问
- 缓冲写传输:BUFFSTRAHB有效,延迟地址有效信号
突发传输长度通过BURST[1:0]信号编码:
- 00:无突发信息
- 10:4字突发
- 其他:保留
典型的总线访问时序如下:
- 主设备置位AREQ请求总线
- 仲裁器响应AGNT授权
- 主设备在BCLK上升沿输出地址和控制信号
- 从设备在下一个周期返回BWAIT/BLAST响应
- 数据在BCLK双沿采样/驱动
设计经验:在高速系统中,建议对BA[31:0]和BD[31:0]总线进行等长布线,偏差控制在±0.5ns以内,以确保建立保持时间满足要求。
2.3 总线错误处理
BERROR信号用于指示传输异常,可能由以下情况触发:
- 访问未映射的地址空间
- 违反存储器保护规则
- 从设备内部错误
当BERROR有效时,ARM940T将根据当前操作类型产生数据中止或预取中止异常。开发者可通过CP15寄存器配置具体的错误处理策略。
3. JTAG调试接口详解
3.1 TAP控制器架构
ARM940T的JTAG接口完全兼容IEEE 1149.1标准,包含标准的5线接口:
- TCK:测试时钟(1-10MHz典型值)
- TMS:测试模式选择
- TDI:测试数据输入
- TDO:测试数据输出
- nTRST:测试复位(异步低有效)
TAP控制器状态机包含16个状态,主要分为:
- 指令寄存器路径(选择测试指令)
- 数据寄存器路径(传输测试数据)
关键状态转换发生在TCK上升沿,由TMS信号控制。典型的调试会话流程包括:
- 通过nTRST复位TAP控制器
- 移入指令(如BYPASS、EXTEST)
- 执行数据寄存器扫描操作
- 返回Run-Test/Idle状态
3.2 边界扫描链设计
ARM940T提供完整的边界扫描支持,包含以下专用信号:
- DRIVEOUTBS:扫描单元使能
- ECAPCLKBS:EXTEST捕获时钟
- ICAPCLKBS:INTEST捕获时钟
- SHCLK1BS/SHCLK2BS:扫描移位时钟
边界扫描链(Scan Chain 3)可用于:
- 板级互连测试(EXTEST)
- 芯片引脚状态采样(SAMPLE)
- 内部逻辑测试(INTEST)
扫描链操作时序:
- 进入Capture-DR状态采样引脚状态
- 进入Shift-DR状态移出数据
- 进入Update-DR状态更新输出锁存
调试技巧:使用IDCODE指令(0x0E)可以读取处理器的TAPID[31:0]寄存器,验证JTAG连接是否正确。ARM940T的IDCODE通常为0x0F0F0F0F。
3.3 调试扫描链
除标准边界扫描链外,ARM940T还提供专用调试扫描链(Scan Chain 2),用于访问:
- EmbeddedICE观察点寄存器
- 调试控制状态寄存器
- 通信通道寄存器
典型调试操作序列:
- 选择Scan Chain 2(指令0x02)
- 移入调试命令和数据
- 执行Update-DR操作
- 返回Run-Test/Idle状态等待响应
4. 调试系统实现
4.1 EmbeddedICE硬件
ARM940T集成两个观察点单元,每个单元包含:
- 地址比较器(32位)
- 数据比较器(32位)
- 控制信号比较器(8位)
- 外部输入信号(EXTERN0/1)
观察点配置寄存器通过JTAG接口访问,支持:
- 指令断点设置
- 数据访问监视
- 外部事件触发
典型断点设置流程:
- 通过DBGRQI请求调试状态
- 配置观察点地址/数据/控制掩码
- 设置调试控制寄存器使能断点
- 退出调试状态继续执行
4.2 调试信号接口
关键调试信号包括:
- DBGACK:调试状态指示
- EDBGRQ:外部调试请求
- RANGEOUT0/1:观察点匹配指示
- COMMRX/COMMTX:调试通信通道
调试状态进入条件:
- 执行BKPT指令
- 外部EDBGRQ有效
- 观察点匹配且使能
- 调试异常产生
性能考量:调试状态下处理器时钟可能降至1/10正常频率(通过ECLK输出),实时调试时需考虑时序影响。
4.3 调试通信通道
ARM940T提供独立的32位通信通道,包含:
- 数据写寄存器(0x0C)
- 数据读寄存器(0x0D)
- 控制寄存器(0x0E)
通信流程示例:
- 主机轮询COMMTX状态
- 当COMMTX=1时写入数据
- 目标读取数据后自动清除COMMTX
- 目标写入响应数据置位COMMRX
- 主机读取数据后清除COMMRX
5. 系统集成注意事项
5.1 时钟域管理
ARM940T涉及多个时钟域:
- FCLK:处理器核心时钟(最高200MHz)
- BCLK:总线时钟(异步或同步于FCLK)
- TCK:JTAG时钟(独立异步时钟)
时钟切换电路设计要点:
- 异步时钟域间需加同步触发器
- TCK频率不得超过FCLK的1/10
- 时钟门控信号需满足建立保持时间
5.2 电源管理
关键电源控制信号:
- PWRDOWN:核心电源关断控制
- CLKEN:时钟使能控制
低功耗模式转换流程:
- 停止核心指令发射
- 排空处理器流水线
- 断言PWRDOWN信号
- 关闭时钟发生器
5.3 复位序列
系统复位需协调以下信号:
- nTRST:JTAG复位(先于BnRES释放)
- BnRES:系统复位(保持至少16个FCLK周期)
- PORESET:上电复位(保持1ms以上)
复位后初始化步骤:
- 配置存储器控制器
- 初始化CP15系统控制寄存器
- 设置异常向量表
- 启用缓存和MMU
在实际项目中,ARM940T的信号接口设计直接影响系统性能和可靠性。建议在原型阶段使用逻辑分析仪捕获关键信号波形,特别是AMBA总线的时序关系和JTAG接口的状态转换。对于高速系统,信号完整性仿真和时序分析必不可少。