1. 项目概述深入MC68060的硬件通信世界在嵌入式系统和老式工作站的设计与调试中Motorola后为Freescale现为NXP的MC68060处理器是一个绕不开的经典。作为68000家族的末代“皇帝”它代表了复杂指令集CISC微处理器在纯硬件设计上的一个高峰。对于硬件工程师和底层系统开发者而言理解这颗CPU如何与外部世界“对话”是进行板级设计、驱动编写乃至性能调优的基石。这种对话的核心就是通过其引脚上那一组组精密的电子信号——地址总线、数据总线和控制信号——来完成的。很多人初看芯片手册的信号描述章节会觉得那是一堆枯燥的定义和时序图。但在我看来这恰恰是理解一个处理器灵魂的钥匙。地址总线A31-A0决定了处理器能“看到”多大的物理世界4GB空间数据总线D31-D0是信息交换的“高速公路”而围绕它们展开的数十个控制信号则像交通警察和信号灯确保每一次读写操作都准确、有序、高效。尤其在多主设备如DMA控制器、其他处理器共享总线的复杂系统中这些信号的交互逻辑更是稳定性的生命线。本文将带你超越手册的表格以一线工程师的视角拆解MC68060这些关键信号的功能、交互协议以及在真实设计中的注意事项让你不仅能看懂手册更能用活这些知识。2. MC68060总线架构与核心信号组解析MC68060采用了一套高度集成但逻辑清晰的总线接口。与早期型号相比它在保持向后兼容性的同时引入了更高效的突发传输和更灵活的仲裁机制。理解其总线首先要从宏观上把握其信号的分组与协作关系。2.1 信号功能分组全景MC68060的信号并非各自为战而是根据功能形成了几个协同工作的群组。手册中的图2-1是理解这一点的最佳起点我们可以将其归纳为以下几个核心集群地址与数据通路这是总线的主体包括32位地址总线A31-A0、32位数据总线D31-D0以及直接相关的控制信号如周期长字地址CLA、字节选择BS3-BS0和传输大小SIZ1, SIZ0。它们直接负责寻址和数据搬运。传输属性与周期定义这组信号告诉外部设备“当前正在发生什么”。包括传输类型TT1, TT0、传输修饰符TM2-TM0、读/写R/W、总线锁定LOCK/LOCKE和缓存控制CIOUT, TCI。它们是总线周期的“身份证”和“指令集”。主设备传输控制当MC68060掌控总线作为主设备时由它主动发出的控制时序信号。主要是传输开始TS、传输进行中TIP和开始采样终止信号SAS。它们定义了总线周期的起止和关键采样点。从设备传输控制当外部设备如内存、外设响应MC68060的访问时用于反馈状态的输入信号。包括传输应答TA、传输错误应答TEA、传输重试应答TRA、突发禁止TBI和传输缓存禁止TCI。它们是确保传输可靠完成的“握手信号”。总线仲裁信号用于在多主设备系统中协商总线使用权。包括总线请求BR、总线授权BG、总线授权释放控制BGR、总线任期终止BTT和总线忙BB。这套协议决定了总线控制权如何安全、高效地转移。系统控制与状态包括中断IPL2-IPL0, IPEND, AVEC、复位RSTI, RSTO、时钟CLK, CLKEN、缓存/MMU控制CDIS, MDIS、处理器状态PST4-PST0以及测试JTAG, TCK等和电源信号。这种分组方式体现了模块化设计思想。在硬件设计时工程师通常会依据这些分组来布局PCB走线和连接外围芯片例如将所有的“从设备控制信号”连接到内存控制器将“仲裁信号”连接到中央仲裁器。2.2 关键信号交互逻辑初探信号之间存在着严格的时序和逻辑关系。例如一个最简单的读周期流程大致如下MC68060在获得总线权后首先置位地址总线A31-A0、传输属性如R/W1读SIZx定义大小和TS启动周期。随后它断言TIP表示周期正在进行。在合适的时刻由SAS信号界定它开始采样从设备反馈的TA信号。外部设备如内存在数据准备好后断言TA。MC68060在采样到有效的TA后从数据总线D31-D0上读取数据并结束当前周期撤销TIP等信号。这个过程看似简单但任何一个信号的时序偏差或逻辑冲突都可能导致读取失败、数据错误甚至系统死锁。尤其是在引入缓存、突发传输和总线锁定时交互逻辑会变得异常复杂。后续章节我们将深入这些细节。3. 地址与数据通路寻址与传输的基石地址和数据总线是总线最直观的部分但MC68060在其基础上增加了精细的控制以支持灵活的寻址模式和高效的数据传输。3.1 地址总线A31-A0与周期长字地址CLAA31-A0构成了32位地址总线可寻址4GB的线性空间。这里需要理解两个关键点字节寻址与对齐MC68060是字节可寻址的。地址总线输出的地址指向一个字节单元。然而它支持以字节8位、字16位和长字32位为单位进行传输。对于字或长字访问地址通常是对齐的即字访问地址A00长字访问地址A1A000。不对齐的访问虽然可能通过硬件或软件异常处理来支持但会严重影响性能。CLA信号的作用这是一个容易被忽略但至关重要的信号。在突发传输Burst Transfer模式下MC68060可以一次性连续读取或写入一个缓存行16字节即4个长字。为了高效地生成这4个连续长字的地址它使用了A3和A2位。在突发周期的第一个传输A3A2输出初始值在后续的每个传输中如果外部逻辑通常是内存控制器断言了CLA信号MC68060会在内部自动将A3A2递增以4为模循环从而自动生成下一个长字地址。这减轻了外部地址计数器的负担是实现高性能突发访问的关键机制。实操心得在设计支持突发传输的内存子系统时必须正确处理CLA信号。你需要一个状态机来监控总线周期类型通过SIZx判断是否为“Line”传输并在适当的时钟边沿CLKEN有效时断言CLA以触发处理器内部地址递增。如果CLA信号处理不当突发传输会退化为多个离散的长字周期带宽损失可达75%。3.2 数据总线D31-D0与字节选择BS3-BS0D31-D0是32位双向数据总线。数据的传输方向由R/W信号控制。这里的关键在于理解数据在总线上如何组织特别是非对齐和非长字传输时。字节选择信号的解码BS3-BS0这4个信号直接对应数据总线的4个字节通道BS0对应D31-D24BS1对应D23-D16BS2对应D15-D8BS3对应D7-D0。它们由处理器内部根据SIZ1、SIZ0、A1和A0自动生成如表2-6所示。例如当执行一个从地址0x1001开始的字节读操作时SIZ01A1A001处理器会置BS10有效BS0、BS2、BS31无效这意味着它只期望从D23-D16这8位数据线上获取有效数据。对外部设备的意义对于连接在总线上的设备如内存、FPGA、ASIC字节选择信号是至关重要的。在写周期它们指示了数据总线上哪些字节是有效数据应被写入目标地址。在读周期它们指示了处理器需要哪些字节的数据外部设备应将有效数据放置到对应的数据线位上其他位可以驱动为高阻态或任意值。许多老式的8位或16位外设需要依赖这些信号来正确地与32位处理器接口。3.3 传输大小SIZ1, SIZ0与地址线A1, A0的协同SIZx信号直接定义了传输的数据量00-长字01-字节10-字11-行16字节。但仅凭SIZx无法确定具体操作哪些字节必须结合地址的最低两位A1和A0。这三者共同决定了BS3-BS0的状态。一个常见误区认为“长字传输总是从4字节对齐的地址开始”。虽然对齐访问是最高效的但MC68060的硬件确实支持非对齐的长字访问。例如一个从地址0x1001开始的长字读SIZ00处理器会将其分解为多个总线周期可能是一个字读和一个字节读或者多个字节读并通过BSx信号和多个TA握手来完成。但这会显著降低性能并可能在某些严格对齐的从设备上引发总线错误通过TEA信号报告。注意事项在硬件设计时如果你的内存控制器或外设不支持非对齐访问你必须在地址解码逻辑中加入对齐检查。当检测到非对齐访问且SIZx指示为字或长字时可以立即断言TEA信号终止周期并让处理器触发总线错误异常。这比让设备返回错误数据要安全得多。4. 传输属性与周期定义总线的“语义层”如果说地址和数据总线是“物理层”那么传输属性信号就是总线的“语义层”。它们赋予了每个总线周期具体的含义使得处理器能与不同类型、不同特权级别的资源进行正确交互。4.1 传输类型TT1, TT0与修饰符TM2-TM0TTx信号将总线周期分为四大类这是总线协议的第一层分类00 - 普通访问Normal Access最常见的读写周期用于访问内存或内存映射外设。01 - MOVE16访问专为MOVE16指令设计用于快速搬运16字节数据块。它提示外部设备这可能是一个突发传输的理想候选。10 - 备用逻辑功能代码访问用于调试Debug Access或访问特定的逻辑功能代码空间。这通常被在线仿真器ICE或系统调试模块使用。11 - 应答访问用于中断应答、断点应答或低功耗停止广播。这不是普通的数据读写而是处理器的特殊响应周期。TMx信号则在TTx分类的基础上提供了更精细的上下文信息。对于普通和MOVE16访问TTx00/01TMx编码了访问类型和特权级别如表2-3所示。这是理解内存管理和缓存行为的关键。TMx编码的深层含义用户/管理员User/Supervisor区分当前访问是发生在用户模式还是特权管理员模式。这对于实现内存保护至关重要。一个用户程序试图访问标记为“管理员”的内存区域MMU可以阻止这一访问。代码/数据Code/Data指示当前访问是指令提取I-Fetch还是数据操作。MC68060有独立的指令缓存I-Cache和数据缓存D-Cache。这个信息帮助缓存正确分配和查找条目。缓存推送Cache Push当TMx000时表示这是一个由于缓存行替换如写回策略而引发的数据写回内存周期。外部逻辑可以据此优化对主存的访问。MMU表搜索Table Search当TMx011或100时表示当前周期是MMU在进行地址转换表遍历Table Walk。这是一个特权操作访问的是页表或段描述符。系统设计时需要确保这些访问能正确完成否则会触发MMU异常。4.2 用户可编程页面属性UPA1, UPA0UPAx信号是MMU功能的直接延伸。它们不是由程序员直接控制的而是根据当前访问的地址经过MMU或透明转换寄存器TTR翻译后从页表项或TTR中的U1、U0位复制而来。设计用途这两个信号输出给外部硬件如内存控制器、外设。例如你可以用UPA0来连接某个内存芯片的“写保护”引脚用UPA1来连接“缓存禁止”引脚。这样你可以在操作系统的内存管理单元中为每一页内存设置属性如“可缓存但只读”而这个属性会通过UPAx信号在硬件层面自动执行。这实现了软硬件协同的内存管理。实操心得在早期的无MMU系统或简单嵌入式系统中TTR透明转换寄存器非常有用。你可以将一段固定的地址空间如外设寄存器区域0xFF000000-0xFFFFFFFF配置为“非缓存、管理员模式”并设置UPAx为特定值。这样所有对该区域的访问都会自动带上这些属性无需复杂的页表管理简化了BSP板级支持包的启动代码设计。4.3 总线锁定LOCK与锁定结束LOCKE这两个信号用于实现“读-修改-写”原子操作例如测试并置位TAS指令。LOCK信号在原子操作序列的第一个读周期被断言并一直保持到最后一个写周期结束期间通知外部仲裁器不要将总线控制权交给其他主设备。LOCKE的陷阱手册中明确警告“Do not use LOCKE.”。这是因为LOCKE协议存在一个设计缺陷如果原子操作序列的最后一个写周期被从设备以重试TRA响应而LOCKE又已经发出仲裁器可能会在重试发生前就将总线授予其他主设备破坏了原子性。因此在新的设计中应使用BGR信号来控制锁定的释放并忽略LOCKE信号将其上拉。BGR的正确使用BGR总线授权释放控制是一个输入信号。当外部仲裁器需要紧急收回总线例如高优先级的DMA请求时即使在LOCK序列中如果仲裁器在撤销BG的同时断言BGRMC68060也会在当前传输结束后立即释放总线。如果BGR未被断言MC68060将完成整个锁定序列后再释放。这提供了灵活的优先级控制。5. 主从控制与握手协议总线周期的生命线总线周期的执行依赖于一套严格的主从握手协议。理解TS、TIP、SAS、TA、TEA、TRA这一系列信号的互动是进行硬件调试和性能分析的核心。5.1 主设备发起的周期控制TS, TIP, SASTS (Transfer Start)这是一个脉冲信号仅在一个BCLK周期内有效标志着一个新总线周期的开始。所有从设备都应在TS有效时锁存地址和属性信号A31-A0, R/W, SIZx, TTx, TMx等。在多主系统中所有主设备的TS信号必须连在一起以便每个主设备都能感知到总线周期的开始这对于监听Snoop机制是必需的。TIP (Transfer In Progress)这是一个电平信号在整个总线周期可能包含多个数据传输如突发期间保持有效。它告诉系统“总线正忙”。TIP在TS之后有效并在最后一个TA被采样后撤销。即使在背靠背的周期之间TIP也可能保持有效表示总线没有空闲。SAS (Starting Termination Acknowledge Signal Sampling)这是一个关键的时序信号。MC68060断言SAS是通知外部世界“我将在下一个BCLK的上升沿采样TA、TEA、TRA等终止信号”。这为从设备提供了明确的时间窗口来建立稳定的应答信号。SAS的引入使得总线时序更容易满足提高了系统在高频下的可靠性。5.2 从设备反馈的终止信号TA, TRA, TEA, TBI, TCI从设备通过这些信号来响应主设备的请求。TA (Transfer Acknowledge)最常用的信号表示当前数据传输成功完成。对于单次传输一个TA结束周期对于突发传输需要多个TA每个长字一个来完成整个行填充。TRA (Transfer Retry Acknowledge)从设备可以断言此信号在周期第一个数据传输时来请求主设备“重试”这个周期。这通常用于处理临时性的资源冲突例如从设备是一个需要较长时间释放的内部缓冲区。处理器收到TRA后会稍后重新发起相同的总线周期。TRA的优先级高于TA但低于TEA。TEA (Transfer Error Acknowledge)从设备断言此信号表示发生了不可恢复的错误如访问了不存在的地址、校验错误。这会立即终止总线周期并引发处理器内的总线错误异常。TEA的优先级最高。TBI (Transfer Burst Inhibit)当处理器发起一个突发读请求SIZx11时如果从设备如某些慢速内存或不支持突发的设备断言TBI与TA同时处理器会放弃突发模式将剩余的访问拆分为单个的长字周期。这对于连接旧式设备非常有用。TCI (Transfer Cache Inhibit)从设备可以通过此信号告诉处理器“不要缓存这次读取的数据”。这对于映射到易失性外设寄存器如状态寄存器的内存区域至关重要确保每次读取都能获得最新值而不是过时的缓存副本。MC68060与MC68040的应答模式MC68060支持两种应答终止模式原生模式和MC68040兼容模式。区别在于TRA和TEA的优先级逻辑。在原生模式下TEA TRA TA。在MC68040模式下TRA必须保持无效且TEA必须与TA同时断言才能表示重试。系统设计时需要根据外围芯片的支持情况通过硬件连接通常是上拉或下拉电阻来固定选择一种模式。6. 总线仲裁与多主设备协同在包含DMA控制器、其他处理器或总线主控设备的系统中总线是一种共享资源。MC68060提供了一套完整的仲裁协议来安全地管理总线所有权。6.1 仲裁信号组BR, BG, BGR, BTT, BB这套协议的核心是一个外部仲裁器可以是一个简单的PLD也可以是更复杂的总线控制器。请求与授权当MC68060需要访问总线时它断言BR。外部仲裁器根据优先级算法在适当时机向MC68060断言BG表示“总线即将给你”。获取总线MC68060在采样到BG有效并且检测到总线空闲通过监测BB或BTT信号取决于使用哪种协议后通过断言BB或BTT见下文来宣告它已成为总线主设备并开始驱动地址和控制信号。释放总线当外部仲裁器需要将总线交给其他设备时它撤销对MC68060的BG。MC68060在完成当前周期如果BGR无效且处于锁定序列则完成整个序列后通过撤销BB并在BTT协议下发出一个BTT脉冲来表明它已释放总线。6.2 BTT协议 vs. BB协议性能与兼容性的抉择这是MC68060总线设计中的一个重要选择点。BB协议这是从MC68040继承来的协议。MC68060通过断言BB总线忙来占用总线通过撤销BB来释放。其他主设备通过监测BB来判断总线是否空闲。这个协议简单兼容旧有设计。BTT协议这是MC68060引入的新协议旨在实现更高的性能。在此协议下BTT是一个脉冲信号。MC68060在释放总线时会发出一个BTT脉冲同时地址总线变为高阻。其他主设备在采样到BTT脉冲后就知道总线已释放可以立即开始仲裁和获取减少了总线空闲时间。手册的明确建议是使用BTT协议以获得全速和高频下的最佳性能。BB协议主要用于需要与MC68040硬件完全兼容的场合。两者不能混用。如果你选择BTT协议必须将BB引脚通过上拉电阻连接到VCC并将其视为未连接反之亦然。调试经验在多主设备系统调试中仲裁问题是常见的死锁源头。一个实用的技巧是使用逻辑分析仪同时捕获BR、BG、BB/BTT以及当前主设备的TS信号。通过观察这些信号的序列可以清晰地看到总线请求、授权、占用和释放的全过程很容易定位是哪个设备没有及时释放总线BB一直有效或是仲裁器没有正确响应请求BR有效但BG无效。7. 缓存与MMU相关控制信号MC68060集成了指令和数据缓存以及内存管理单元MMU相关控制信号直接影响系统性能和内存一致性。7.1 缓存一致性控制CIOUT, TCI, SNOOPCIOUT (Cache Inhibit Out)这是一个输出信号。当处理器决定不缓存当前读取的数据时例如访问被MMU标记为“非缓存”的页面或访问某些特殊空间它会断言CIOUT。这可以提示外部内存控制器或监听逻辑。TCI (Transfer Cache Inhibit)这是一个输入信号。如前所述外部设备可以用它来强制禁止缓存当前读取行。这对于I/O设备区域是必须的。SNOOP (Snoop Control)这是一个关键的输入信号用于维护多处理器系统中的缓存一致性。当其他总线主设备如另一个CPU或DMA进行内存写操作时它会启动总线周期并断言TS。如果此时SNOOP信号被断言MC68060就会“监听”这个总线事务。如果其他主设备写入的地址正好在MC68060的缓存中有一份副本MC68060会自动将该缓存行标记为无效Invalidate从而保证下次读取时能从主存获取最新数据。这个过程对软件完全透明是硬件实现的缓存一致性协议的基础。7.2 动态控制信号CDIS, MDISCDIS (Cache Disable)动态禁用片上缓存。当此输入信号有效时处理器不会从后续的访问中填充缓存但已有的缓存内容保持不变。这在调试时非常有用例如当你需要确保所有指令都从内存读取而不是缓存以设置软件断点时。注意CDIS不会清空缓存只是暂停其更新。MDIS (MMU Disable)禁用MMU的地址转换功能。当此信号有效时所有内存访问都使用物理地址即逻辑地址直接作为物理地址并且忽略所有页表和保护机制。这通常用于系统启动的最初阶段在MMU尚未初始化之前。8. 常见硬件设计问题与调试技巧实录基于MC68060的系统设计信号接口是稳定性的关键。以下是一些从实际项目中总结出的常见问题和解决思路。8.1 信号完整性与时序问题问题1数据总线偶尔出现误码尤其在高速运行时。排查首先检查PCB布局。D31-D0这32根线是否等长是否远离时钟和高频噪声源终端匹配电阻如果使用值是否正确使用示波器或逻辑分析仪观察数据信号在TA有效时的建立时间和保持时间是否满足MC68060的要求详见手册电气特性章节。技巧在布线时将数据总线、地址总线和关键控制信号如TS、TA分组进行等长布线。为CLK信号提供最干净的电源和地平面并使其远离其他信号线。问题2TA应答后处理器偶尔无法正确锁存数据。排查重点检查SAS和TA的时序关系。确认从设备是在MC68060断言SAS之后才驱动TA有效的吗TA有效到MC68060采样它的时钟上升沿之间满足最小建立时间Tsu吗使用逻辑分析仪的双脉冲触发功能捕获SAS上升沿和随后的TA信号。技巧在设计FPGA或CPLD作为从设备接口时用SAS的上升沿作为触发器来启动产生TA信号的逻辑这样可以自然满足时序要求。8.2 多主设备与仲裁死锁问题3系统运行一段时间后死锁所有主设备都占着BR但得不到BG。排查检查BTT或BB信号的连接。所有主设备的BTT信号必须连在一起所有主设备的TS信号也必须连在一起。这是协议要求用于内部状态同步。如果有一个设备未连接它的内部状态就会与其他设备不同步导致仲裁逻辑混乱。排查检查外部仲裁器的逻辑。它是否正确处理了BGR信号当高优先级请求到来时它是否在撤销BG的同时断言了BGR以请求MC68060即使处于锁定序列也尽快释放总线技巧在仲裁器逻辑中为每个主设备设置一个超时计数器。如果某个主设备占用总线超过预定时间仲裁器可以强制撤销其BG并断言BGR防止某个故障设备独占总线。8.3 缓存一致性问题问题4DMA控制器向内存写入数据后CPU读到的仍是旧数据。排查确保DMA控制器作为总线主设备在执行内存写操作时能正确驱动TS信号。同时必须确保在DMA写周期期间SNOOP信号被有效断言通常可以简单地上拉到有效电平如果系统需要全程监听。检查MC68060的缓存配置相关内存区域是否被设置为“可缓存”技巧对于由DMA频繁更新的缓冲区可以在软件层面将其对应的页表项或TTR设置为“非缓存”Cache Inhibit。这样虽然损失了缓存带来的读性能但彻底避免了一致性问题简化了设计。或者在DMA传输完成后由软件主动执行缓存无效化指令如CINVL。8.4 初始化与复位问题问题5系统上电后处理器不执行第一条指令。排查首先检查最基本的“三要素”电源、时钟、复位。用示波器测量CLK引脚是否有稳定、干净的时钟RSTI复位输入信号的上电复位时序是否满足手册要求通常需要在时钟稳定后保持一定时间的低电平复位释放后地址总线是否开始有变化尝试从复位向量地址0x00000000开始取指排查检查MDIS和CDIS引脚的上电状态。如果它们在复位期间或复位后处于未定义状态浮空可能会导致MMU或缓存行为异常。最好的做法是通过电阻将它们上拉或下拉到确定的电平通常MDIS上拉以在启动初期禁用MMUCDIS下拉以使能缓存。技巧在复位电路中确保RSTI的释放边沿是干净、无抖动的。一个常见的做法是使用专用的复位监控芯片并在RSTI信号线上靠近CPU引脚处放置一个小电容如10-100pF来滤除高频噪声。理解MC68060的信号不仅仅是记住每个引脚的定义更是要理解这些信号在时间轴上的舞蹈以及它们如何协同工作以完成复杂的任务。这份手册的描述是静态的图谱而真正的硬件设计是在动态的时序中让这幅图谱正确无误地运转起来。