MII时序基础:时钟频率25MHz/2.5MHz,数据建立保持时间,传输延迟概念
做MII接口设计,时钟和时序是绕不开的坎。我记得刚接触MII时,被25MHz和2.5MHz两种频率绕晕过——明明都是MII,为什么时钟差这么多?其实背后对应的是两种速率模式:100Mbps和10Mbps。说白了,时钟就是数据的节拍器,频率定了,通信速率也就定了。
两种时钟模式的差异对比
MII接口有两种工作模式,时钟频率差了一个数量级。我个人习惯先看MAC侧提供的TX_CLK/RX_CLK频率,一量就知道对方在跑哪种速率。下面这个表把关键参数列清楚了:
| 参数 | 100Mbps模式 | 10Mbps模式 |
|---|---|---|
| 时钟频率(TX_CLK / RX_CLK) | 25 MHz | 2.5 MHz |
| 时钟周期 | 40 ns | 400 ns |
| 数据位宽 | 4 bit(半字节) | 4 bit(半字节) |
| 每位数据有效窗口 | 40 ns(整周期) | 400 ns |
| 典型建立时间要求 | 10 ns | 100 ns(相对宽松) |
看了这个表你可能会问:建立时间为什么是10ns和100ns?实际上IEEE 802.3标准对MII接口的时序有明确约束,我拿常见的PHY芯片数据手册对照过,基本都在这个量级。你想想看,2.5MHz时钟周期是400ns,留给数据的建立保持窗口特别大,几乎不可能出错。但25MHz下,40ns的周期要分出建立时间、保持时间和传输延迟,稍微不留神就踩雷。
建立时间与保持时间——MII的眼睛
建立时间和保持时间,我更喜欢叫它“数据的入场券”。什么意思呢?建立时间指的是数据在时钟有效沿来到之前必须提前稳定的最小时间;保持时间是时钟沿过后数据必须继续稳定的最小时间。MII接口的数据信号(TXD[3:0]、RXD[3:0])在TX_CLK/RX_CLK的上升沿被采样,这两个时间窗口决定了数据能不能被正确“看见”。
MII标准中虽然没有像DDR那样给出精确的Tsu/Th数值,但普遍PHY会要求Tsu ≥ 10ns、Th ≥ 10ns(100M模式)。如果你是自己做MAC侧设计,我建议把内部逻辑的时序约束做到Tsu ≥ 15ns、Th ≥ 5ns以上,留点安全垫。
传输延迟的概念——信号在路上花了多久
传输延迟是个组合概念。对MII来说,主要包括:
- Tco——时钟沿到数据输出的延迟(MAC内部逻辑驱动到引脚)
- Tpd——PCB走线传播延迟(约6.5ps/mm,FR4材质)
- Tsetup——接收端需要的建立时间(上文已讲)
我习惯用一个公式来检查时序是否收敛:
Tclk_period > Tco(max) + Tpd(max) + Tsetup(required) + 余量
拿100M模式来说,Tclk_period = 40ns。假设Tco=8ns,Tpd=2ns(约30cm走线),Tsetup=10ns,加起来20ns,余量20ns——看起来很富裕。但千万别忽略PCB上的串扰和电源噪声,它们会吃掉余量。我见过一个案例,走线长了10cm,余量从20ns掉到5ns,在高温下就挂了。
MII时钟与数据时序关系图
下面这张SVG把核心时序概念整合在一起,你可以直观看到时钟、数据、建立保持窗口以及传输延迟之间的关系:
实践经验:余量才是王道
我做了几年MAC设计,吃亏最多的就是时序余量。MII虽然是并行接口、速率不高,但很多新手会忽略PCB走线等长、时钟抖动这些细节。说白了,规格书上给的建立保持时间只是理论最小值,实际芯片内部还有setup/hold的失配、时钟占空比失真、温度电压波动。
嗯,这里要提一个我自己的习惯:每次MII模块上板前,我都会用时序分析工具(比如Synopsys的PrimeTime或FPGA的Timing Analyzer)跑一遍从TX_CLK到TXD的路径约束。看到余量大于10ns才敢烧进FPGA。因为你在仿真里看到的一切美好,到了实际板子上都会打折扣——电源纹波、串扰、温度漂移……这些都是看不见的贼。
回到传输延迟,还有一个容易搞混的概念:Tprop(即时钟树传播延迟)在MII中不像DDR那么敏感,因为MII是源同步,时钟和数据走同一条路径。但如果你的设计把MAC和PHY放在不同芯片上,且距离超过20cm,就要留意时钟输出(TX_CLK)和数据输出的相对延迟。我见过有人在10cm走线上丢了2ns时序,最后靠加一个延迟链(delay element)才救回来。
最后总结下本章三个基础概念的核心记忆点:
- 时钟频率25MHz/2.5MHz —— 对应100M/10M速率,周期40ns/400ns;
- 建立/保持时间 —— 数据在时钟沿前后的稳定窗口,100M模式典型各需10ns;
- 传输延迟 —— 从时钟沿到数据生效的路径延迟,包括Tco和Tpd,需保证周期余量。
弄懂这三个点,后续分析不同MII变种(RMII、GMII)的时序差异时就有了基础武器。别急,我们后面会慢慢拆解。