1. ARM硬件架构中的电源复位系统设计
1.1 电源复位信号解析
在ARM硬件系统中,电源复位(Power-on Reset)是确保芯片可靠启动的关键机制。当系统上电时,复位控制器会监控nSYSPOR信号并生成相应的复位信号序列。这个过程中涉及几个关键信号:
- nSYSPOR:电源复位信号,在GLOBAL_DONE变高后初始化复位状态机。该信号同时被传递到Tile头连接器
- nBOARDPOR:上电时产生,分配到内存扩展板和FPGA配置PLD。它还会触发nTRST信号,确保处理器核中的嵌入式ICE宏单元被复位
- nTRST:开漏TAP控制器复位信号(由nBOARDPOR驱动)
重要提示:GLOBAL_DONE的释放时间取决于系统中的Logic Tiles。如果Tile需要更长时间配置,该信号会保持低电平更久。
1.2 复位时序详解
复位时序涉及多个阶段的精确协调。图3-13展示了典型的电源复位和配置时序:
- 电源电压达到稳定状态(约7μs)
- 基板FPGA完成配置(2.6μs)
- 所有FPGA完成配置(时间取决于Logic Tiles)
- 复位信号依次释放
系统还可以通过JTAG信号nTRST或系统复位信号nSRST进行复位,如图3-14所示。这种多源复位机制提供了灵活的调试和恢复能力。
1.3 复位时的内存重映射
在正常操作下,基板的动态内存位于地址0x0。但为了在复位后运行启动代码,必须将非易失性内存重映射到启动地址。这是通过修改连接内存设备的静态内存控制器片选信号实现的。
重映射逻辑电路(图3-15)的关键要素:
- REMAP信号:来自系统控制器,复位时为高电平
- DMCS0信号:通常由访问内存区域0x00000000-0x0FFFFFFF生成,复位时被禁用并重定向到静态内存
- 开关S8[4]:控制启动内存选择路径(OFF时启用静态内存片选,ON时路由到Tile site 2的AXI/AHB主设备)
2. 电源供应系统设计
2.1 电源架构概述
ARM基板的电源系统(图3-16)包含多级电压调节和保护电路。当使用12V砖式电源供电时:
- 标称12V电平(DC fused)供给FET
- 输入电压检测:过高时比较器关闭FET,断开DC fused与VSMP的连接;过低时nSHDN1和nSHDN2变低,关闭调节器
- 电源按钮控制开关机状态(J48短路时强制上电)
2.2 电压调节器配置
电源系统包含多个电压调节器,按特定序列供电(例如3.3V调节器输出不能超过5V调节器输出):
- 5V调节器(AACI专用)
- 3.3V主电源
- 1.8V和1.5V核心电压
- USB调试电路专用调节器(由主机USB连接器供电)
警告:使用PCI背板或螺丝端子供电时,缺少过压和极性保护,错误的电压连接可能导致基板和连接板损坏。
2.3 电源保护机制
电源系统包含多重保护设计:
- 12V DCIN输入带5A保险丝
- LCD扩展、USB、键盘和鼠标连接器的5V电源带1A额外保险丝
- 极性保护和关断逻辑(图3-17)
- 电压监控和自动关断
3. 内存控制器架构
3.1 静态内存控制器(SMC)
SMC管理以下设备(表3-5):
- NOR Flash(64MB @0x40000000)
- DOC Flash(64MB @0x44000000)
- SRAM(2MB @0x48000000)
- 配置Flash(8MB @0x4C000000)
- 以太网控制器(16MB @0x4E000000)
- USB控制器(16MB @0x4F000000)
- PISMO内存扩展连接器(四个64MB区域)
SMC总线结构(图3-18)包含:
- 地址和数据缓冲器
- 控制信号生成逻辑
- 设备片选解码电路
3.2 动态内存控制器(DMC)
DMC管理基板上的256MB DDR SDRAM(地址0x70000000-0x7FFFFFFF)。当REMAPSTAT为高时,内存还会在0x0-0x0FFFFFFF处有别名。
DMC总线设计(图3-21)特点:
- 系列和终端电阻抑制控制和数据线上的反射和噪声
- 多时钟域同步
- 2.5V电压调节器为DRAM供电
4. 时钟系统架构
4.1 时钟域划分
ARM基板的时钟系统包含多个域(图3-22):
- FPGA参考时钟和Tile时钟
- 外设专用时钟(音频CODEC、以太网等)
- 调试时钟(JTAG TCK、USB调试端口)
4.2 Tile时钟设计
Tile时钟信号(表3-6)包括:
- GLOBALCLK:全局共享时钟,可由ICS307可编程振荡器0提供
- CLK_NEG_DN/CLK_POS_DN:Tile到FPGA的时钟信号
- CLK_NEG_UP/CLK_POS_UP:FPGA到Tile的时钟信号
- PLDCLK:Tile配置时钟
- REFCLK:测试芯片时钟分频器参考
- HCLKIN/HCLKOUT:测试芯片时钟
时钟路由逻辑(图3-23)允许灵活配置时钟路径,支持不同Tile组合。
4.3 外设时钟分配
各外设使用专用时钟源:
- 音频CODEC:24.576MHz晶体
- 以太网:25MHz晶体
- USB:12MHz振荡器
- RTC:32.768kHz晶体
- PCI:33MHz或66MHz(由P_66EN选择)
- 定时器:35MHz、1MHz或32.768kHz可选
4.4 ICS307可编程时钟发生器
五个可编程时钟(OSC0-OSC4)特点:
- 频率范围:6-200MHz
- OSC0作为主参考时钟(通常用作GLOBALCLK)
- 输出频率计算公式:
频率(MHz) = [48/(VDW + 8)] × [(RDW + 2)/DIVIDE]
其中:
- VDW:VCO分频字(4-511)
- RDW:参考分频字(1-127)
- DIVIDE:分频比(2-10,由3位编码选择)
时钟控制通过SYS_OSCx寄存器实现(图3-24),提供精确的时钟管理能力。
5. 音频系统设计
5.1 AACI接口架构
FPGA中的AACI(图3-25)通过AC-link协议与LM4549音频CODEC通信,支持:
- PCM音频数据格式
- 2路立体声输出,1路单声道输入
- 12/16/18位采样深度
- 4kHz-48kHz可调采样率
- 250mW RMS输出功率(32Ω负载)
5.2 麦克风输入配置
两个麦克风输入通过J4连接,支持以下配置(通过LK1选择):
- AB连接:CODEC_MIC1供电(主动麦克风)
- BC连接:CODEC_MIC2供电(主动麦克风)
- 无连接:两个麦克风均为被动式
6. 字符LCD控制器
字符LCD控制器(图3-26)特点:
- 支持Varitronix MDL(S)-16263 16×2显示屏
- 支持4位或8位数据接口(实际使用4位)
- 标准ASCII字符集显示
- 专用控制信号(RS、RnW、E等)
- 背光LED控制
7. 设计经验与调试技巧
7.1 电源系统调试要点
- 上电顺序验证:
- 确保电压调节器按正确序列启动
- 检查所有电源轨的电压精度(特别是1.8V和1.5V核心电压)
- 电流消耗监测:
- 各电源轨的电流应在预期范围内
- 异常电流可能表明短路或元件故障
- 保护电路测试:
- 验证过压和欠压保护触发阈值
- 测试极性保护功能
7.2 时钟系统配置建议
- 时钟树设计原则:
- 保持时钟走线等长
- 适当使用终端电阻减少反射
- 注意时钟域交叉的同步处理
- ICS307配置技巧:
- 使用厂商提供的频率计算工具验证分频设置
- 上电后通过寄存器验证时钟配置
- 对于关键时钟,考虑使用冗余设计
- 时钟监控:
- 使用示波器验证各时钟域频率和稳定性
- 检查时钟抖动是否符合系统要求
7.3 内存系统优化
- 静态内存控制器配置:
- 根据设备类型正确设置总线宽度和时序
- 优化片选信号解码逻辑
- 合理分配内存地址空间
- 动态内存控制器调优:
- 校准DDR时序参数(CL、tRCD、tRP等)
- 验证信号完整性(眼图测试)
- 优化刷新和电源管理设置
- 内存测试策略:
- 上电时执行基本内存测试
- 实现运行时ECC或奇偶校验(如有)
- 监控内存访问错误率
7.4 复位系统设计经验
- 复位信号分布:
- 确保复位信号到达所有需要复位的器件
- 注意复位信号的走线质量(避免过长或分支过多)
- 考虑使用复位缓冲器驱动大负载
- 复位时序验证:
- 用逻辑分析仪捕获复位序列
- 验证各模块的复位释放顺序
- 确保复位持续时间满足所有器件要求
- 复位源管理:
- 实现复位原因寄存器(电源上电、看门狗、手动等)
- 不同复位源可采取不同处理策略
- 调试接口复位应不影响整个系统
7.5 音频系统调试技巧
- CODEC初始化:
- 严格按照AC'97协议时序初始化
- 验证寄存器配置是否正确
- 检查主时钟频率精度
- 音频质量测试:
- 测量THD+N(总谐波失真加噪声)
- 检查采样率转换质量
- 验证抗混叠滤波器性能
- 麦克风配置:
- 根据麦克风类型正确设置偏置电压
- 调整增益设置避免削波或信噪比过低
- 测试不同采样率和位深下的性能
8. 常见问题排查指南
8.1 电源相关问题
- 系统无法上电:
- 检查12V输入极性是否正确
- 验证保险丝是否完好(F1/F2)
- 测量VSMP电压是否正常
- 电压调节器不稳定:
- 检查输入电容容量和ESR
- 验证反馈网络电阻值
- 确保负载电流在调节器能力范围内
- 电源序列异常:
- 检查track信号连接
- 验证各调节器的enable信号时序
- 测量各电压轨的上电时间
8.2 时钟相关问题
- 时钟无输出:
- 检查ICS307的供电和参考时钟
- 验证串行配置数据是否正确
- 测量STRB信号是否正常
- 时钟抖动过大:
- 检查电源噪声(特别是VCO供电)
- 优化PCB布局(缩短时钟走线)
- 考虑使用更好的参考时钟源
- 时钟同步问题:
- 验证各时钟域之间的同步逻辑
- 检查跨时钟域信号的处理(使用同步器)
- 分析建立/保持时间是否满足
8.3 内存访问故障
- 静态内存访问错误:
- 验证片选信号解码逻辑
- 检查地址/数据线连接
- 调整SMC时序参数
- DDR内存不稳定:
- 校准DQS与CLK的相位关系
- 优化ODT(On-Die Termination)设置
- 检查VREF电压精度
- 内存重映射失败:
- 验证REMAP信号是否正常
- 检查开关S8设置
- 分析地址解码逻辑
8.4 复位异常处理
- 系统无法复位:
- 检查nSYSPOR信号是否产生
- 验证复位信号缓冲器工作状态
- 测量复位网络负载是否过大
- 复位不完全:
- 分析各模块的复位要求(持续时间、电平)
- 检查复位信号质量(上升时间、毛刺)
- 验证看门狗定时器配置
- 复位源混淆:
- 检查复位原因寄存器
- 验证各复位源的优先级逻辑
- 分析复位树设计是否合理
8.5 音频系统故障
- 无音频输出:
- 检查AACIBITCLK是否存在
- 验证CODEC电源和复位
- 分析AC-link信号完整性
- 音频失真:
- 检查采样率设置
- 验证数据位宽配置
- 测量模拟输出电路
- 麦克风不工作:
- 检查LK1设置是否正确
- 验证偏置电压是否正常
- 测试麦克风输入电路
9. 硬件设计最佳实践
9.1 PCB布局指南
- 电源分配:
- 使用星型拓扑分配核心电源
- 保持电源走线足够宽
- 合理放置去耦电容(靠近器件引脚)
- 信号完整性:
- 控制关键信号的阻抗
- 避免长距离平行走线
- 对高速信号使用差分对
- 热设计:
- 为高功耗器件提供足够散热
- 均衡PCB热分布
- 考虑环境温度影响
9.2 元件选型建议
- 电压调节器:
- 选择低噪声LDO用于模拟供电
- 考虑高效率DC-DC转换器
- 注意瞬态响应特性
- 时钟器件:
- 选择低抖动振荡器
- 考虑温度补偿型晶体
- 验证长期频率稳定性
- 内存器件:
- 选择工业温度级器件
- 验证与控制器的兼容性
- 考虑未来升级路径
9.3 测试策略
- 原型测试:
- 分阶段验证各子系统
- 建立全面的测试用例
- 记录详细的测试结果
- 生产测试:
- 设计高效的测试夹具
- 实现自动化测试脚本
- 建立合格/不合格标准
- 现场监测:
- 实现硬件健康监测
- 记录关键参数历史
- 提供远程诊断接口
9.4 文档与版本控制
- 设计文档:
- 维护详细的原理图注释
- 记录所有设计决策
- 更新BOM和装配图
- 版本管理:
- 使用系统化的版本控制
- 记录各版本的变更
- 保留旧版本文档
- 知识传递:
- 编写详细的设计指南
- 进行交叉培训
- 建立问题解决知识库
