MPC8535E接口电气特性深度解析:JTAG、SATA与I2C硬件设计实战
1. 项目概述与核心价值
在嵌入式硬件设计的江湖里,摸爬滚打了十几年,我越来越深刻地体会到,数据手册里那些密密麻麻的电气特性表格,才是决定一个项目是“一次点亮”还是“反复调试”的命门。很多工程师,尤其是刚入行的朋友,拿到像MPC8535E这样的PowerQUICC III处理器手册,往往直奔功能描述和寄存器配置,对电气特性章节却是一扫而过,觉得那是芯片设计者的事。直到板子回来,JTAG死活连不上,SATA链路时断时续,I2C通信偶发错误,才开始回头翻这些“天书”,耗费大量时间在信号完整性上“捉虫”。
今天,我们就来彻底拆解MPC8535E数据手册中关于JTAG、SATA和I2C这三个关键接口的电气特性。我的目标不是照本宣科地翻译手册,而是结合我踩过的坑和积累的经验,告诉你这些参数在真实的PCB设计、元器件选型和调试中到底意味着什么。无论是设计通信基站的主控板,还是工业控制器的核心单元,理解并妥善处理这些电气细节,是确保系统长期稳定运行的基石。这篇文章适合所有正在或即将使用PowerPC架构处理器进行硬件开发的工程师,无论你是想深入理解接口本质,还是急需解决手头的调试难题,相信都能找到直接的参考。
2. JTAG接口:调试命脉的电气基石
JTAG(Joint Test Action Group)接口是我们接触芯片的第一道门,也是产品生命周期内进行调试、编程和边界扫描测试的生命线。MPC8535E的JTAG接口电气特性,直接决定了我们使用的调试器(如Lauterbach、PEEDI)能否可靠连接,以及信号在板级传输中是否会畸变。
2.1 DC电气特性:电平与驱动能力解析
手册中的Table 57. JTAG DC Electrical Characteristics给出了静态参数。我们逐项拆解其设计含义:
高/低电平输入电压 (VIH/VIL):
VIH(min) = 2.0V,VIL(max) = 0.8V。这里的OVDD是JTAG接口的供电电压,典型值为3.3V。- 设计要点:这意味着对于3.3V的
OVDD,输入信号高于2.0V才会被识别为逻辑‘1’,低于0.8V才会被识别为逻辑‘0’。在0.8V到2.0V之间的区域是不确定状态,必须避免信号长时间停留在此区间,否则会导致逻辑误判。在PCB布线时,要特别注意防止JTAG信号线(TCK, TMS, TDI, TRST)受到噪声干扰,尤其是当它们靠近开关电源或高速数字线路时。
高/低电平输出电压 (VOH/VOL):
VOH(min) = 2.4V @ IOH = -2mA,VOL(max) = 0.4V @ IOL = 2mA。- 设计要点:这两个参数定义了芯片JTAG输出引脚(主要是TDO)的驱动能力。在输出电流为2mA时,输出高电平至少能有2.4V,低电平最高不超过0.4V。这决定了TDO信号线能驱动多大的负载(主要是调试器接口的输入电容和上拉电阻)。如果TDO线上挂的设备太多或走线过长导致容性负载过大,可能会造成边沿变缓,违反AC时序要求。
输入漏电流 (IIN):
Max = ±5μA。这个值非常小,意味着在信号不驱动时(高阻态),流入或流出输入引脚的电流极小。- 设计要点:这允许我们在TMS、TDI等输入信号上使用较大的上拉或下拉电阻(如10kΩ),而不会在电阻上产生明显的压降。通常,为了确保JTAG链在无连接时处于确定状态,会在TMS和TRST(低有效)上使用10kΩ上拉到
OVDD。
实操心得:上拉电阻的选择虽然漏电流小,允许使用大电阻,但在噪声环境复杂的系统中,我倾向于为TMS和TRST使用4.7kΩ而非10kΩ的上拉电阻。这能提供更强的抗干扰能力,确保芯片在复杂电磁环境下仍能可靠进入调试模式。对于TDO,一般不需要外部上拉,除非调试器接口有特殊要求。
2.2 AC电气特性:时序与信号完整性
Table 58. JTAG AC Timing Specifications和相关的时序图(Figure 46, 48)定义了动态参数。理解这些时序的代号是关键,手册给出了清晰的模式:tJT(first two letters)(signal)(state)(reference)(state)。
外部时钟频率与脉宽:
fJTG(max) = 33.3 MHz,tJTG(min) = 30 ns。这是JTAG时钟TCK的最高频率。大多数调试器工作在远低于此的频率下(如10-15MHz),所以通常这不是瓶颈。tJTKHKL(min) = 15 ns。这是TCK高电平或低电平的最小脉宽。关键点:这意味着TCK的占空比不能太极端,必须保证高电平和低电平的时间都至少15ns。如果时钟信号因走线问题产生过冲或振铃,可能会在阈值电平附近来回跳变,导致脉宽小于最小值,从而引发通信错误。
建立与保持时间 (Setup/Hold Time):
tJTDVKH(min) = 4 ns(输入数据对TCK上升沿的建立时间)。tJTDXKH(min) = 10 ns(输入数据在TCK上升沿后的保持时间)。- 设计要点:这是PCB布局和调试器电缆长度的核心约束。TMS和TDI信号必须在TCK上升沿之前至少4ns就保持稳定,并在之后至少保持10ns。如果调试器电缆过长(比如超过30cm),或者PCB上JTAG走线与其他高速线并行且长度不匹配,就会引入信号延迟(
tPD)和 skew,容易违反建立时间要求。解决方案是尽量缩短调试接口到芯片的走线,并保证其阻抗连续。
输出有效与保持时间:
tJTKLDV(max) = 10 ns(TCK下降沿后,TDO数据有效的最大时间)。tJTKLDX(min) = 0 ns(TCK下降沿后,TDO数据保持的最小时间)。- 调试要点:这告诉调试器应该在TCK下降沿之后等待至少10ns再去采样TDO数据。高质量的调试器硬件和驱动会自动处理这个时序。如果你在使用简单的FTDI芯片自制的JTAG适配器,需要在固件或软件中考虑这个延迟。
TRST断言时间:
tTRST(min) = 25 ns。TRST是低电平有效的异步复位信号,这个参数要求其低电平脉冲宽度至少25ns。- 实操要点:在电路设计中,确保连接TRST的按键或复位电路产生的低电平脉冲宽度远大于此值(通常ms级别)。在软件控制TRST时(如通过GPIO模拟),控制拉低的延时也需要满足此要求。
Table 1: JTAG接口关键电气参数与设计检查点
| 参数符号 | 参数描述 | 规范值 | 设计/调试检查要点 |
|---|---|---|---|
VIH/VIL | 输入高低电平 | Min 2.0V / Max 0.8V | 测量JTAG输入信号幅值,确保噪声裕量充足。 |
VOH/VOL | 输出高低电平 | Min 2.4V / Max 0.4V @2mA | 检查TDO输出波形,在负载下是否仍满足电平要求。 |
tJTDVKH | 输入建立时间 | Min 4 ns | 检查TMS/TDI相对TCK的时序,重点排查长电缆或走线延迟。 |
tJTDXKH | 输入保持时间 | Min 10 ns | 通常易满足,但需注意调试器驱动能力过强导致过冲后回稳慢的问题。 |
tJTKLDV | 输出有效时间 | Max 10 ns | 确保调试器采样TDO的时机在此时间之后。 |
tTRST | 复位脉宽 | Min 25 ns | 确认硬件复位电路或软件模拟的复位脉冲宽度足够。 |
踩坑记录:TCK信号振铃导致的调试失败我曾遇到一个案例,调试器始终无法识别内核。用示波器查看TCK信号,发现其上升沿/下降沿有严重的振铃,在阈值电压附近多次穿越。这导致芯片内部实际采样到的TCK时钟周期和脉宽极不稳定,严重违反了
tJTG和tJTKHKL的要求。根本原因是JTAG连接器到芯片的走线过长(约15cm)且没有串联阻尼电阻。解决方案是在TCK信号上靠近芯片端串联一个22Ω的电阻,有效抑制了振铃,调试接口立即恢复正常。教训:即使频率不高,对于时钟信号也要像对待高速信号一样,做好阻抗控制和端接。
3. SATA接口:高速差分信号的电气挑战
MPC8535E集成的SATA接口支持1.5Gbps和3.0Gbps速率,用于连接高速存储设备。其电气规范的核心是确保差分信号在高速传输下的完整性。
3.1 参考时钟要求:系统同步的源头
SATA PHY需要一个纯净的参考时钟SD2_REF_CLK/_B。Table 59中的参数至关重要:
- 频率与容差:典型频率为100/125/150 MHz,容差
tCLK_TOL为±350 ppm。这意味着时钟频率的误差不能超过±0.035%。必须选用高精度、低抖动的晶体振荡器,普通的±50ppm晶振可能处于临界状态,建议使用±25ppm或更好的。 - 上升/下降时间:
tCLK_RISE/FALL(max) = 1 ns。要求时钟边沿必须陡峭。在布局时,参考时钟差分对应作为高速信号处理,走线等长、紧耦合,并远离噪声源。 - 抖动:
- 周期抖动
tCLK_CJ(max) = 100 ps。 - 相位抖动
tCLK_PJ(max) = ±50 ps。 - 设计要点:时钟抖动会直接转化为数据眼图的闭合,降低信噪比。除了选择低抖动晶振,电源的纯净度(纹波噪声)对时钟抖动影响巨大。务必为时钟发生器芯片提供独立的LC滤波电源,并确保其接地良好。
- 周期抖动
3.2 发送器(TX)特性:驱动能力的标尺
Table 60定义了芯片SATA发送端的输出特性。
- 差分输出电压(VSATA_TXDIFF):对于3.0Gbps模式,典型值为500mV,范围400-600mV。这个电压是在接收端测得的差分电压峰值。
- 上升/下降时间(tSATA_20-80TX):3.0Gbps下最大136ps。边沿过快会产生更多的高频分量,加剧EMI;边沿过慢则会影响眼图宽度。芯片内部通常会优化此参数。
- 差分对阻抗(ZSATA_TXDIFFIM):85-115 Ω。这指导我们PCB差分线的阻抗应控制为100Ω ±15%。必须使用阻抗计算工具设计叠层和线宽线距,并在制板后通过TDR(时域反射计)进行验证。
- 回波损耗(RLSATA_TXDD11等):这是一组在不同频段下,发送端反射能量的指标。值越大(负得越多)越好。满足此指标依赖于PCB设计良好的阻抗连续性(避免过孔、拐角)和连接器(SATA座)的优质选型。
3.3 接收器(RX)特性:信号识别的门槛
Table 61定义了接收端的输入要求。
- 差分输入电压(VSATA_RXDIFF):3.0Gbps下最小240mV,最大750mV。发送端发出的信号经过PCB和电缆的损耗,到达接收端必须仍在此幅度范围内。长距离背板或劣质线缆可能导致信号衰减到门限以下,引发误码。
- 差分阻抗与回波损耗:同样要求100Ω差分阻抗。接收端的回波损耗要求甚至比发送端更严格(例如
RLSATA_RXDD11在1.2-2.4GHz要求≤-8 dB),因为反射信号会干扰接收器对原始信号的判断。
3.4 OOB信号与共模电压:链路初始化的关键
SATA使用OOB(带外)信号(COMINIT, COMRESET, COMWAKE)进行链路初始化和电源管理。
- OOB检测阈值(VSATA_OOBDETE):75-125 mV。OOB信号是低频突发信号,接收器需要能检测到这个幅度的差分电压。
- DC共模电压(Vdc_cm):200-450 mV。这是SATA链路在DC耦合模式下,差分信号线的共同直流电压点。这一点极易被忽视。如果发送器和接收器的共模电压不匹配,会导致直流电流流过AC耦合电容,可能引起信号偏移。MPC8535E的SATA接口通常采用AC耦合(通过串联电容),这可以隔离两端的直流共模电压,但电容的容值和放置位置(靠近发送端)仍需遵循规范。
Table 2: SATA接口关键电气参数与设计对策
| 参数类别 | 关键参数 | 规范示例 (3.0Gbps) | 硬件设计对策与检查点 |
|---|---|---|---|
| 参考时钟 | 频率容差 | ±350 ppm | 选用±25ppm以下的高稳有源晶振。 |
| 相位抖动 | ≤ ±50 ps | 为时钟芯片提供干净电源,加强滤波。 | |
| 发送器(TX) | 差分输出电压 | 400-600 mV | 测量发送端眼图,确认幅度达标。 |
| 差分阻抗 | 100Ω ±15% | PCB差分线严格做100Ω阻抗控制,减少过孔。 | |
| 回波损耗 | 见Table 60 | 使用高质量连接器,检查阻抗连续性。 | |
| 接收器(RX) | 差分输入电压 | 240-750 mV | 评估链路损耗(PCB+线缆),确保信号衰减不超限。 |
| 共模电压(DC耦合) | 200-450 mV | 如使用DC耦合,确认两端共模电压兼容;推荐AC耦合。 | |
| 通用 | AC耦合电容 | - | 选用0402或0201封装的10nF~100nF高频电容,靠近TX端放置。 |
经验分享:SATA链路不稳定的排查步骤
- 查电源:首先测量SATA PHY模拟电源(通常为1.0V或1.2V)的纹波。高速串行接口对电源噪声极其敏感,纹波应小于30mVpp。
- 查时钟:用高带宽示波器测量
SD2_REF_CLK的差分波形,检查频率、幅度、抖动是否达标。这是源头。- 查耦合电容:确认TX路径上的AC耦合电容(通常100nF)已正确焊接,且容值无误。丢失电容会导致链路无法建立。
- 查PCB走线:审查SATA差分对是否严格等长(长度差<5mil)、是否遵循100Ω阻抗、是否远离噪声源(如时钟、电源)。必要时使用矢量网络分析仪(VNA)测量S参数。
- 眼图测试:如果条件允许,在芯片发送端和连接器接收端分别进行眼图测试。发送端眼图检查芯片驱动能力,接收端眼图评估信道质量。眼图张开度大、抖动小是链路健康的标志。
4. I2C接口:低速总线的时序奥秘
I2C虽然速度不快(MPC8535E支持最高400kHz),但其开漏结构和多设备共享的特性,使得时序要求同样严格,否则极易出现通信失败。
4.1 DC电气特性:电平与负载
Table 63定义了I2C总线的静态电压水平。
- 输入电平:
VIH(min) = 0.7 * OVDD,VIL(max) = 0.3 * OVDD。对于3.3V系统,VIH > 2.31V,VIL < 0.99V。噪声容限比JTAG更宽松。 - 输出低电平:
VOL(max) = 0.2 * OVDD@ 3mA sink current。对于3.3V系统,当芯片(作为主机或从机)主动拉低SDA或SCL线时,在吸入3mA电流的情况下,线电压不能超过0.66V。这个3mA的拉电流能力是关键,它决定了总线上拉电阻的最小值。
上拉电阻计算:假设OVDD为3.3V,总线电容Cb为200pF(包括所有器件引脚和走线电容)。为了满足上升时间tI2CR(max)=300ns的要求,RC时间常数必须足够小。 由Tr ≈ 2.2 * Rpu * Cb,可得Rpu ≤ Tr / (2.2 * Cb) = 300ns / (2.2 * 200pF) ≈ 681Ω。 同时,考虑低电平要求:当总线被拉低时,VOL = Rpu * IOL,其中IOL是芯片的拉电流。为了在IOL=3mA时VOL<0.66V,则Rpu < 0.66V / 3mA = 220Ω。 显然,从上升时间算出的电阻上限(681Ω)远大于从低电平算出的上限(220Ω)。因此,上拉电阻的选择主要受限于低电平电压要求。通常选择在2.2kΩ到4.7kΩ之间是一个经验值,但必须用最坏情况计算验证:
- 如果
Rpu=4.7kΩ,则低电平电流IOL = (3.3V - 0V) / 4.7kΩ ≈ 0.7mA,远小于芯片的3mA sink能力,因此低电平会远低于0.66V,满足要求。 - 上升时间
Tr ≈ 2.2 * 4.7kΩ * 200pF ≈ 2.07us,这远超300ns的最大值!这就是矛盾点。 实际上,在400kHz模式下,标准负载电容Cb通常按400pF计算。若Rpu=2.2kΩ,Cb=400pF,则Tr ≈ 2.2 * 2.2kΩ * 400pF ≈ 1.94us,仍然不满足300ns。手册中的tI2CR和tI2CF是信号本身的上升/下降时间要求,而非总线RC时间常数。对于开漏总线,这个边沿时间主要由主设备的输出级(下拉强度)和上拉电阻共同决定。实践中,在400kHz速率下,我通常选择1kΩ到2.2kΩ的上拉电阻,并严格控制总线走线长度和负载数量,以减小寄生电容。
4.2 AC电气特性:通信协议的时序骨架
Table 64和 Figure 52 是I2C通信的时序蓝图。
- 时钟频率:
fI2C(max) = 400 kHz。在软件配置I2C控制器分频器时,需确保生成的SCL时钟不超过此限。 - 数据建立与保持时间:
tI2DVKH(min) = 100 ns(数据建立时间)。tI2DXKL(min) = 0 ns(对于CBUS兼容主机) 或300 ns(对于标准I2C从设备) (数据保持时间)。- 关键点:MPC8535E作为I2C主机时,它内部会保证SDA数据在SCL低电平期间至少有300ns的保持时间(见Note 2),以防止在SCL下降沿附近SDA变化,被误认为是起始或停止条件。但当我们使用MPC8535E作为从机,或者外接其他微处理器作为主机时,必须确保满足此保持时间要求。
- 起始与停止条件:
tI2SVKH(min) = 0.6 us(重复起始条件建立时间)。tI2PVKH(min) = 0.6 us(停止条件建立时间)。- 这些时间定义了起始(S)和停止(P)信号相对于SCL时钟的关系,通常由硬件I2C控制器自动满足。
Table 3: I2C总线常见问题与硬件排查点
| 问题现象 | 可能原因 | 排查与解决措施 |
|---|---|---|
| 通信完全无应答 | 1. 电源或地址错误。 2. SDA/SCL被意外拉死(如器件损坏)。 3. 上拉电阻缺失或过大。 | 1. 测量从设备电源,核对地址。 2. 断开所有从设备,用万用表测SDA/SCL对地电阻,排查短路。 3. 确认上拉电阻已焊接,阻值合适(1kΩ-4.7kΩ)。 |
| 通信时好时坏 | 1. 总线电容过大,边沿太缓。 2. 电源噪声干扰。 3. 时序裕量不足。 | 1. 用示波器看SDA/SCL波形,检查上升/下降时间是否过长(>1us)。减少从设备或缩短走线。 2. 在I2C电源引脚增加去耦电容。 3. 降低I2C时钟频率(如从400kHz降至100kHz)测试。 |
| 特定数据错误 | 1. 建立/保持时间违规。 2. 信号过冲/振铃。 | 1. 用示波器双通道捕获SDA和SCL,放大查看数据变化沿与SCL边沿的关系。 2. 在SCL和SDA上串联小电阻(如22Ω-100Ω)阻尼振铃。 |
| 只能读写部分器件 | 总线冲突,多个主设备或从设备驱动冲突。 | 检查总线拓扑,确保多主设备有仲裁机制,从设备地址不冲突。检查是否有器件在非应答期间错误地拉低了总线。 |
避坑指南:I2C上拉电阻与总线电容的权衡我设计过一个带有5个I2C从设备(温度传感器、EEPROM、IO扩展器等)的背板。最初使用4.7kΩ上拉电阻,在常温下通信正常,但在高温下出现偶发错误。用示波器抓取波形,发现SDA的上升沿在高电平段有一个明显的“台阶”,上升时间接近3us。原因是高温下MOSFET的导通特性变化,加上总线电容(约300pF)较大,导致边沿过于缓慢,在400kHz时钟下,高电平维持时间不足,被某些响应速度快的从设备误判为低电平。解决方案是将上拉电阻减小至1.5kΩ,并优化布局,将最远的从设备移近。电阻减小后,虽然静态功耗略有增加,但上升时间缩短至约1us,通信在高低温下都变得稳定可靠。核心原则:在满足低电平电压要求的前提下,总线电容越大,上拉电阻应越小,以确保足够的边沿速度。
5. 通用设计原则与信号完整性考量
无论是JTAG、SATA还是I2C,其可靠性的底层逻辑都指向信号完整性。基于MPC8535E的电气特性,我们可以提炼出一些通用的硬件设计准则。
5.1 电源完整性是根本
所有接口的电气参数都基于干净的电源。OVDD(3.3V IO电源)和X2VDD(SerDes模拟电源)的纹波噪声必须严格控制。
- 策略:为每个电源域使用独立的LDO或开关电源+LC滤波器。在芯片的每个电源引脚附近放置一个0.1uF和一个10uF的陶瓷电容,形成高频和低频去耦。对于SATA PHY等高速模拟电路,甚至需要增加磁珠进行隔离。
- 检查:使用示波器(带宽≥200MHz)的AC耦合模式,直接测量芯片电源引脚上的纹波,目标值应小于标称电压的2%-3%。
5.2 谨慎处理未使用引脚
对于MPC8535E,未使用的接口引脚(如未用的SATA通道、JTAG的TDO如果不需要)需要根据手册要求妥善处理。通常,输入引脚不能悬空,应通过电阻上拉或下拉到固定电平,防止浮空状态引入噪声和额外功耗。
5.3 接口保护与ESD
所有外露的接口(如JTAG接头、SATA连接器)都是ESD(静电放电)的入口点。
- 策略:在信号线上串联小电阻(如22Ω、33Ω)或磁珠,可以限制瞬间电流并增加阻尼。在信号线对地之间添加TVS二极管阵列(如USBLC6-2SC6,适用于多路信号),将ESD能量钳位到安全电压。保护器件应尽可能靠近连接器放置。
- 权衡:串联电阻会增加信号路径的阻抗,可能影响高速信号(如SATA)的完整性。对于SATA,应选择极低电容(<0.5pF)的专用ESD保护器件。
5.4 参考时钟的布局要点
SATA和SerDes的参考时钟是系统同步的心脏,其布局优先级最高。
- 策略:时钟差分对应尽可能短、直,严格等长,并包地处理。远离任何数字信号线、电源平面分割区域。时钟发生器芯片的电源滤波必须加强。如果使用外部晶振,应将晶振和负载电容放置在离芯片引脚极近的位置,下方保持完整地平面。
- 检查:使用示波器差分探头测量时钟波形,确保幅值、抖动、过冲在规范之内。
6. 调试实战:从电气特性到问题定位
当硬件完成后,接口不通,如何利用这些电气参数定位问题?
第一步:静态检查
- 测量所有相关电源电压(
OVDD,X2VDD等)是否准确。 - 检查JTAG、I2C上拉电阻是否焊接,阻值是否正确。
- 检查SATA AC耦合电容是否存在、容值是否正确、方向(如果是极性电容)是否正确。
第二步:动态波形捕获
- JTAG:连接调试器,用示波器测量TCK、TMS、TDI、TDO。重点看TCK是否干净,TMS/TDI在TCK上升沿前是否稳定(验证
tJTDVKH),TDO在TCK下降沿后是否有效(验证tJTKLDV)。 - I2C:发起一次扫描或读写操作。观察SCL和SDA的波形。测量高/低电平是否满足
VIH/VIL和VOL。放大观察SDA数据变化点与SCL边沿的关系,检查建立/保持时间。 - SATA:上电后,用示波器差分探头测量参考时钟
SD2_REF_CLK的频率、幅值、抖动。如果条件允许,在链路训练阶段(Gen1/Gen2协商),可以尝试捕获TX差分信号,查看是否有OOB信号或差分数据活动。更深入的排查需要用到协议分析仪或误码率测试仪。
第三步:对比分析与调整将测量到的波形参数与手册中的Min/Max/Typ值对比。常见的调整手段包括:
- 调整端接电阻:对于信号过冲,尝试在驱动端串联小电阻。
- 优化电源:如果纹波过大,增加去耦电容或调整电源滤波电路。
- 降低速率:对于I2C通信不稳定,尝试降低时钟频率,看问题是否消失。如果消失,则问题很可能出在时序或总线负载上。
- 检查共地:确保调试器、测试设备与目标板有良好的共地连接,避免地弹噪声影响测量准确性。
理解MPC8535E接口的电气特性,本质上是在理解芯片与外部世界对话的“语言规则”。这份数据手册的电气章节,就是最权威的语法手册。它告诉我们电压多高算“是”,多低算“否”,信号需要提前多久准备好,又能保持多久。将这些冷冰冰的参数,转化为PCB上一根根精心布置的走线、一颗颗恰当选择的元件,以及调试时一个个有针对性的测量点,正是硬件工程师的价值所在。希望这份结合了规范解读与实战经验的梳理,能让你下次面对这些表格时,不再感到陌生和畏惧,而是将其视为通往稳定可靠设计的可靠地图。
