IMX6ULL的公板的以太网控制器(MAC)与物理层(PHY)芯片(KSZ8081RNB)连接的原理图分析(包含各引脚说明以及工作原理)
目录
- 什么叫以太网?它与因特网有何区别?
- 公板实现以太网的原理介绍(MII/RMII协议介绍)
- 公板的原理图下载地址
- 公板中IMX6ULL处理器与MAC(以太网控制器)有关的原理图
- IMX6ULL处理器的MAC引脚说明
- 1. **ENET1_TX_DATA0**
- 2. **ENET1_TX_DATA1**
- 3. **ENET1_TX_EN**
- 4. **ENET1_TX_CLK**
- 5. **ENET1_RX_DATA0**
- 6. **ENET1_RX_DATA1**
- 7. **ENET1_RX_ER**
- 8. **ENET1_RX_EN**
- 9. **NVCC_ENET**
- 物理层芯片KSZ8081RNB的原理图(该物理层芯片是公板使用的)
- 公板的IMX6ULL的以太网控制器1连接的物理层芯片KSZ8081RNB的各引脚介绍及连接情况说明
- 情况分析与目标说明
- KSZ8081RNB的数据手册(Data Sheet)
- 各引脚介绍及相应的连接情况分析
- 1. MDIO (Management Data Input/Output)
- 2. MDC (Management Data Clock)
- 3. RXD0/DUPLEX (Receive Data 0 / Duplex Mode)
- at the de-assertion of rese 的意思(在复位信号解除有效时)
- `Ipu/O`、`Ipd/O`、`Ipd/O`是什么意思?
- 4. RXD1/PHYAD2 (Receive Data 1 / PHY Address 2)
- PHY地址设置的详细介绍
- 请注意DNP的含义
- 公板以太网1对应的物理层芯片的物理地址
- `Ipu/O`、`Ipd/O`、`Ipd/O`的意思是什么?
- 公板以太网2对应的物理层芯片的物理地址
- 公板设置的两个以太网的物理层芯片的物理地址真的有点2,刚好是反的
- 5. PHYAD1 (PHY Address 1)
- 6. PHYAD0 (PHY Address 0)【同时也是RX3】
- 7. CRS_DV/CONFIG2 (Carrier Sense Data Valid / Configuration 2)
- 对模式“MII、MII back-to-back、RMII”模式的配置和介绍
- 8. RXER/ISO (Receive Error / Isolation)
- 9. REF_CLK/B-CAST_OFF (Reference Clock / Broadcast Off)
- 10. TXD0 (Transmit Data 0)
- 11. TXD1 (Transmit Data 1)
- 12. NC2 (No Connect 2)【实际上是TXD2】
- 13. NC3 (No Connect 3)【实际上是TXD3】
- 14. TXEN (Transmit Enable)
- 15. NC1 (No Connect 1)【实际上是TXC引脚】
- 16. INTRP/NAND_TREE (Interrupt / NAND Tree)
- 17. RST (Reset)
- 18. XI (Crystal Input)
- 19. XO (Crystal Output)
- 公板的IMX6ULL的以太网控制器2连接的物理层芯片KSZ8081RNB的各引脚介绍及连接情况说明
- 情况说明
- 整体原理图
- 物理层芯片的原理图
- MAC(以太网控制器)部分的原理图
- 与以太网1不同的地方
什么叫以太网?它与因特网有何区别?
详情见 https://blog.csdn.net/wenhao_ir/article/details/145691255
从上面这篇博文我们可以看出,以太网的主体是MAC层和物理层,而我们这篇博文涉及到的就是MAC(以太网控制器)与物理层芯片的连接,所以本篇博文中称我们实现的东西为以太网。
公板实现以太网的原理介绍(MII/RMII协议介绍)
在IMX6ULL内部,实现了以太网控制器(MAC)。
题外话:MAC属于链路层中的一层,链路层分为两层,下层为MAC层(媒介访问控制层),上层为 LLC 层(逻辑链路控制层)。
物理层由芯片KSZ8081RNB实现的,它和IMX6ULL内部的以太网控制器(MAC)通过协议MII/RMII
来进行对接。
MII(Media Independent Interface)和 RMII(Reduced Media Independent Interface)是两种标准接口,用于连接以太网物理层(PHY) 与 以太网控制器(MAC)。这两种接口规范主要用于以太网通信,它们定义了数据如何在物理层(PHY)和媒介访问控制层(MAC)之间传输。
MII和RMII的区别见链接:
https://www.cnblogs.com/fire909090/p/10654902.html
MII的原理示意图如下:
RMII的原理示意图如下:
MII与RMII最主要的区别如下:
①MII有4根TXD线,4根RXD线,而 RMII只有2根TXD线、2根RXD线。
②
采用MII接口,PYH的时钟频率要求25M,不需要与MAC层时钟一致。
采用RMII接口,PYH的时钟频率要求50M,需与MAC层时钟一致,通常从MAC层获取该时钟源。
从公板的原理图来看,采用的是RMII方式,以太网1的MAC原理图如下:
从原理图很明显看出公板用的是RMII方式,因为只有2根TXD线、2根RXD线,并且还向物理层芯片提供了时钟信号。
当然,从整个学习过程中,可以明显看出IMX6ULL是支持MII模式的,只是看你怎么配置物理层芯片并且怎么连接相关的引脚了,事实上IMX6ULL与MAC以太网控制器相关的引脚不只上面这些哦。
整个以太网的硬件框架示意图如下:
公板的原理图下载地址
之前在博文https://blog.csdn.net/wenhao_ir/article/details/145547974 中已经下载好了公板的原理图。
百度网盘下载链接:https://pan.baidu.com/s/1gy1OlDDNPDmKI8L_fHDxOQ?pwd=shtd
公板中IMX6ULL处理器与MAC(以太网控制器)有关的原理图
首先打开公板的核心板的原理图:
PDF文件 SPF-29364_A1.pdf 翻到第7页,就有IMX6ULL处理器的MAC(以太网控制器)的原理图,如下图所示:
IMX6ULL处理器的MAC引脚说明
现在来说明公板中IMX6ULL处理器的MAC(以太网控制器)的各引脚情况。
我们把上一个目录中获得的原理图:
再放大提取,可得到IMX6ULL处理器与网络相关的引脚,如下图所示:
从中我们可以提取如下17个引脚名:
ENET1_TX_DATA0
ENET1_TX_DATA1
ENET1_TX_EN
ENET1_TX_CLK
ENET1_RX_DATA0
ENET1_RX_DATA1
ENET1_RX_ER
ENET1_RX_ENENET2_TX_DATA0
ENET2_TX_DATA1
ENET2_TX_EN
ENET2_TX_CLK
ENET2_RX_DATA0
ENET2_RX_DATA1
ENET2_RX_ER
ENET2_RX_ENNVCC_ENET
从中可以看出,很明显,IMX6ULL支持两个网卡芯片的连接,可分别称为以太网1和以太网2,显然,以太网1和以太网2的引脚是一模一样的,没有区别,所以我们只需要了解下面这9个引脚的功能就可以了:
ENET1_TX_DATA0
ENET1_TX_DATA1
ENET1_TX_EN
ENET1_TX_CLK
ENET1_RX_DATA0
ENET1_RX_DATA1
ENET1_RX_ER
ENET1_RX_ENNVCC_ENET
以下是上面这9个引脚的功能说明:
在看这9个引脚的功能说明前,我要提醒的是,这些引脚实际上实现的是MAC层的功能,这些引脚与KSZ8081RNB提供的物理层相对接,具体的原理见本篇博文中前面对“原理框架”的说明。
1. ENET1_TX_DATA0
- 功能: 这是以太网 1 的发送数据线的第0位,用于数据从处理器传输到以太网物理层(PHY)设备。
2. ENET1_TX_DATA1
- 功能: 这是以太网 1 的发送数据线的第1位,类似于
ENET1_TX_DATA0
,也是用于数据从处理器到 PHY 的传输。
3. ENET1_TX_EN
- 功能: 这是以太网 1 的发送使能信号,用于启用发送功能。当该引脚为高电平时,启用数据发送。
4. ENET1_TX_CLK
- 功能: 这是以太网 1 的传输时钟信号。该引脚用于时钟同步,确保数据传输的时序正确。PHY 和 MAC 之间的时钟同步是以太网通信的关键。
- 注意:不要看到名字中有个TX就认为是传送数据时的时钟输出,实际上它也是接收数据时的时钟输出,IMX6ULL的官方文档:
IMX6ULLRM.pdf
的第892页有以下说明:
第4列表明信号ENET1_REF_CLK1
可以路由至下面两个Pad(引脚)上:
①引脚ENET1_TX_CLK上
②引脚GPIO1_IO05上
上面截图中ALT1和ALT4的含义见下面这篇博文:
https://blog.csdn.net/wenhao_ir/article/details/145680966
这说明其实这个引脚传送的信号为ENET1_REF_CLK1
,而信号ENET1_REF_CLK1
是以太网 1 的传输时钟信号,接收数据和传送数据时都由它向物理层芯片提供时钟信号。
我们还可以利用工具i.MX Pins Tool v6
来佐证我们的想法:
5. ENET1_RX_DATA0
- 功能: 这是以太网 1 的接收数据线的第0位,用于接收来自物理层的传入数据,传输方向是从 PHY 到处理器。
6. ENET1_RX_DATA1
- 功能: 这是以太网 1 的接收数据线 第1位,作用与
ENET1_RX_DATA0
相同,用于接收来自物理层的传入数据,传输方向是从 PHY 到处理器。
7. ENET1_RX_ER
- 功能: 这是以太网 1 的接收错误信号。当接收到错误的帧或数据时,该信号会被拉高,告知处理器数据接收出现问题。
8. ENET1_RX_EN
- 功能: 这是以太网 1 的接收使能信号,用于启用接收功能。当该信号为高电平时,启用接收数据功能。
9. NVCC_ENET
- 功能: 这是以太网电源引脚,用于为以太网接口提供电源。这个引脚提供给以太网 PHY 设备供电,通常会连接到 3.3V 或其他适合的电源。
可见,以太网 1 的8个MAC层相关引脚的构成如下:
3个发送相关引脚、3个接收相关引脚、1个时钟、1个错误信号,刚好8个。
物理层芯片KSZ8081RNB的原理图(该物理层芯片是公板使用的)
打开公板的底板的原理图:
PDF文件SPF-28616_C2.pdf 翻到第10页和第11页,就有物理层芯片KSZ8081RNB的连接原理图,如下面两幅图所示:
公板的IMX6ULL的以太网控制器1连接的物理层芯片KSZ8081RNB的各引脚介绍及连接情况说明
情况分析与目标说明
我们这里的目标是:
了解物理层芯片KSZ8081RNB在实现以太网1的RMII协议时涉及到的相关引脚的详细情况。
我们把以太网1的物理层芯片的原理图放大提取如下:
我们重点关心的就是KSZ8081RNB与IMX6ULL相连接的引脚,即KSZ8081RNB原理图封装中左边的19个引脚,这19个引脚如下:
MDIO
MDC
RXD0/DUPLEX
RXD1/PHYAD2
PHYAD1
PHYAD0
CRS_DV/CONFIG2
RXER/ISO
REF_CLK/B-CAST_OFF
TXD0
TXD1
NC2
NC3
TXEN
NC1
INTRP/NAND_TREE
RST
XI
XO
KSZ8081RNB的数据手册(Data Sheet)
一个芯片的官方Data Sheet才是了解它的使用的最权威的资料,比chatgpt都权威,事实证明, chatgpt在不热门的芯片分析上错误是很多的,比如这篇博文中对芯片KSZ8081RNB
的引脚分析,所以有必要亲自去看一看KSZ8081RNB的数据手册,这时候不能迷信chatgpt。
KSZ8081RNB的数据手册的在线浏览地址如下:
https://ww1.microchip.com/downloads/en/DeviceDoc/00002202C.pdf
百度网盘下载址如下:
https://pan.baidu.com/s/1RR44SHa2uWxQnjWs2ledTQ?pwd=mdhq
各引脚介绍及相应的连接情况分析
看以下内容前请注意:我们在原理介绍中已经分析出了这里连接MAC和物理层的协议是RMII,而不是MII,二者的主要区别在原理介绍中也给出了。
1. MDIO (Management Data Input/Output)
功能: 用于通过管理数据接口进行 PHY 配置和状态监控。MDIO 是一种串行数据线,通常通过MDC引脚传来的时钟信号进行同步,用于在主机和 PHY 之间传输控制信息。
通过引脚MDIO和后面马上讲到的引脚MDC,主设备可以读取和写入 PHY 芯片的寄存器。
不管在MII协议下还是RMII协议下,都需要它,并且它都作为MDIO口来使用。
它的网络标号为ENET_MDIO
,相关的原理图如下:
底板中的相关原理图如下:
核心版中的相关原理图如下:
可见,以太网1的物理层芯片KSZ8081RNB的MDIO
引脚连接的是GPIO1_IO06
对应的引脚。
2. MDC (Management Data Clock)
功能: 用于同步 MDIO 信号的时钟信号。MDC 配合 MDIO 实现对 PHY 的管理访问和配置。通常,MDC 是一个时钟信号,主机用它来控制 MDIO 数据的读取和写入。不管在MII协议下还是RMII协议下,都需要它,并且它都作为MDIO口来使用。
通过引脚MDIO和引脚MDC,主设备可以读取和写入 PHY 芯片的寄存器。
它的网络标号为ENET_MDC
,相关的原理图如下:
底板中的相关原理图如下:
核心版中的相关原理图如下:
可见,以太网1的物理层芯片KSZ8081RNB的MDC
引脚连接的是GPIO1_IO07
对应的引脚。
3. RXD0/DUPLEX (Receive Data 0 / Duplex Mode)
功能: 物理层芯片收到来自网线的数据后需要发给IMX6ULL的MAC(以太网控制器),RXD0
就表示发送数据的第0位,注意,是发送数据哈,不是接收数据,这里的发送和接收是在MII/RMII框架的基础上来说的,而MII/RMII框架是把MAC(以太网控制器)作为主端的,即发送和接收是相对于MAC(以太网控制器)来说的。
另外,它还是一个复用引脚,其复用功能是用来设置芯片的工作模式是半双工模式还是全双工模式的。全双工模式可以同时发送和接收数据,半双工模式只能发送或接收数据。
其设置全双工模式和半双工模式的原理如下:
关键是理解下面这句话:
Config Mode: The pull-up/pull-down value is latched as DUPLEX at the de-assertion of reset.
at the de-assertion of rese 的意思(在复位信号解除有效时)
at the de-assertion of reset
的意思为“在复位信号解除有效时”,在嵌入式系统中,复位信号通常是用来重新启动硬件,确保所有设备和电路处于已知的初始状态。单词asserted表示复位信号处于有效状态(例如,低电平表示复位有效),单词de-asserted表示复位信号解除有效,通常是指复位信号恢复为无效状态(例如,高电平表示复位结束)。
所以上面这句话的意思是在复位信号解除有效(即系统从复位状态恢复)时,RXD0/DUPLEX 引脚上的拉高或拉低(pull-up/pull-down)值会被捕获并被设置为 DUPLEX 模式。当其值为高电平时,表示用半双工模式,当引脚的值为低电平时,表示用全双工模式,如下面这个截图所示:
Ipu/O
、Ipd/O
、Ipd/O
是什么意思?
这里要说明下Data sheet中的Ipu/O
是啥意思?详情见博文 https://blog.csdn.net/wenhao_ir/article/details/145671635
相关的原理图如下:
可见,引脚 RXD0/DUPLEX
通过下拉电阻连接到了地,即它的电平值为低电平状态,所以这里设置的模式为全双工模式。
该引脚的网络标号有两个,分别为ENET1_RXD0
、ENET1_DUPLEX
,相关的原理图如下:
底板中的相关原理图如下:
核心版中的相关原理图如下:
可见,以太网1的物理层芯片KSZ8081RNB的RXD0/DUPLEX
引脚作为RXD0
时连接的是处理器MAC的ENET1_RX_DATA0
引脚,作为DUPLEX
时连接的是GND地。
4. RXD1/PHYAD2 (Receive Data 1 / PHY Address 2)
功能: 物理层芯片收到来自网线的数据后需要发给IMX6ULL的MAC(以太网控制器),RXD1
就表示发送数据的第1位,注意是发送不是接收。 注意,是发送数据哈,不是接收数据,这里的发送和接收是在MII/RMII框架的基础上来说的,而MII/RMII框架是把MAC(以太网控制器)作为主端的,即发送和接收是相对于MAC(以太网控制器)来说的。
PHY地址设置的详细介绍
另外,它还是一个复用引脚,Data sheet中对其复用功能的描述如下:
PHYAD[2:0] is latched at de-assertion of reset and is configurable to any value
from 0 to 7 with PHY Address 1 as the default value.
PHY Address 0 is assigned by default as the broadcast PHY address, but it can
be assigned as a unique PHY address after pulling the
B-CAST_OFF strap-in pin high or writing a ‘1’ to Register 16h, Bit [9].
PHY Address bits [4:3] are set to 00 by default.
要了解这段说明首先要知道PHY 地址(PHY Address)的作用。PHY 地址是每个以太网物理层设备的唯一标识符,主要用于:
①确定并区分网络中不同的 PHY 设备。
②通过 MDIO 接口对不同的 PHY 设备进行配置、管理和监控。
③在多 PHY 配置的系统中,通过不同的 PHY 地址来确保与每个设备的独立通信。
假设一个嵌入式系统连接了多个 PHY 设备。每个 PHY 设备都有一个唯一的 PHY 地址(如 1, 2, 3 等),通过 MDIO 协议,系统可以通过不同的地址来访问这些设备,进行配置或监控。
然后再对上面这段话进行具体解释如下:
这段描述的意思是关于 KSZ8081RNB 芯片中的 PHY 地址(PHY Address) 配置以及如何设置不同的地址。我们可以从下面几个方面进行逐步解释:
-
PHYAD[2:0] 和复位解除时的配置:
- PHYAD[2:0] 指的是 PHY 地址的最低 3 位,它们可以用于设置一个唯一的 PHY 地址。
- 在复位信号解除(de-assertion of reset)时,PHYAD[2:0] 的值会被 锁存(latched),并且可以根据需求配置成一个从 0 到 7 的任意值。默认情况下,PHY 地址 1 是预设值,也就是说,复位后 PHY 地址会默认为 1,但你可以修改它。
-
PHY 地址 0 和广播地址:
- PHY 地址 0 是一个特殊的地址,通常被视为 广播地址(Broadcast Address)。在默认情况下,PHY 地址 0 是用来发送广播消息的。
- 然而,你可以通过 拉高 B-CAST_OFF 引脚(即设置为高电平)或者通过向 寄存器 16h 的 第 9 位 写入 1 来将 PHY 地址 0 设置为一个唯一的地址,而不再是广播地址。设置PHY 地址 0 为唯一地址后,假如某个物理层设备的PHY 地址为0,则它不再接收广播信息。
-
PHY 地址位 [4:3] 默认值设置为 00:
- PHY 地址的第 4 和第 3 位(即 PHYAD[4:3])被设置为 00。这两位是固定的,不可修改。
- 如何设置 PHY 地址:
- PHY 地址 1 是 默认的 PHY 地址。你可以通过配置 PHYAD[2:0] 来选择地址值,这些位可以设置为从 0 到 7 之间的任何值。
- 如果你想将 PHY 地址 0 重新配置为一个唯一的地址而非广播地址,你可以通过以下两种方式之一:
- 拉高 B-CAST_OFF 引脚,即通过硬件控制。
- 或者,通过软件,向 寄存器 16h 的 第 9 位 写入 1 来实现。
小结:
- PHYAD[2:0] 用于配置 PHY 地址的 低 3 位,在复位解除时会锁存并默认设置为 地址 1,但是可以修改为从 0 到 7 的任意值。
- PHY 地址 0 是一个特殊地址,通常用于广播,但可以通过配置使其变为唯一地址。
- PHY 地址的第 4 和第 3 位 默认为 00,无法修改。
该引脚的网络标号为ENET1_RXD1
和ENET1_PHYAD2
,相关的原理图如下:
底板中的相关原理图如下:
请注意DNP的含义
注意,在这个底层原理图中,DNP 是 “Do Not Populate” 的缩写,表示“不要焊接”或“不要安装,所以相当于原理图是下面这样的:
公板以太网1对应的物理层芯片的物理地址
所以:
ENET1_PHYAD0的电平为低电平;
ENET1_PHYAD1的电平为高电平;
ENET1_PHYAD2的电平为低电平;
所以对于以太网1的物理层芯片的地址为二进制的010,即PHY地址为2。
Ipu/O
、Ipd/O
、Ipd/O
的意思是什么?
上面分别标注的紫色字Ipu/O
、Ipd/O
、Ipd/O
是引脚的类型说明,不是实际的电平值说明,详情见 https://blog.csdn.net/wenhao_ir/article/details/145671635
公板以太网2对应的物理层芯片的物理地址
用同样的方法我们可以分析出以太网2的物理层芯片的地址为二进制的001,即PHY地址为1。以太网2的物理层芯片的相关部分原理图如下(我已把DNP部分抹除掉):
公板设置的两个以太网的物理层芯片的物理地址真的有点2,刚好是反的
分析到这里,不得不说这公板的设计有点2,它把IMX6ULL的以太网1的物理层的芯片的地址设为2,而把以太网2的物理层的芯片的地址设为1,你说这不是犯2吗?你就不能把顺序调一下么?即把以太网1的物理层的芯片的地址设为1,把以太网2的物理层的芯片的地址设为2,这样不好么?真的够2呀。
核心版中的相关原理图如下:
可见,引脚RXD1/PHYAD2
当作为RXD1
时,连接的是IMX6ULL的以太网控制器(MAC)的引脚ENET1_RX_DATA1
,当作为PHYAD2
时,是被下拉为低电平了的。
5. PHYAD1 (PHY Address 1)
功能: 主要是用于配置 PHY 地址的第二位。与 PHYAD0
和 PHYAD2
一起,可以设置 PHY 芯片的唯一地址,以便在网络中正确识别。PHY 地址的详细介绍见对引脚 RXD1/PHYAD2
的介绍。
之前在对引脚 RXD1/PHYAD2
的介绍中,已经分析出它PHYAD1
的电平为高电平,所以代表逻辑值1。
当然在MII协议下,它还用作发送数据的第2位,不过我们这里用的协议是RMII协议,所以用不到这个发送数据位,注意,是发送数据哈,不是接收数据,这里的发送和接收是在MII/RMII框架的基础上来说的,而MII/RMII框架是把MAC(以太网控制器)作为主端的,即发送和接收是相对于MAC(以太网控制器)来说的。
相关原理图如下:
6. PHYAD0 (PHY Address 0)【同时也是RX3】
用于配置 PHY 地址的最低位(第一位)。与 PHYAD1
和 PHYAD2
一起,可以设置 PHY 芯片的唯一地址,以便在网络中正确识别。PHY 地址的详细介绍见对引脚 RXD1/PHYAD2
的介绍。
之前在对引脚 RXD1/PHYAD2
的介绍中,已经分析出它PHYAD2
的电平为低电平,所以代表逻辑值0。
当然在MII协议下,它还用作发送数据的第3位,不过我们这里用的协议是RMII协议,所以用不到这个发送数据位,注意,是发送数据哈,不是接收数据,这里的发送和接收是在MII/RMII框架的基础上来说的,而MII/RMII框架是把MAC(以太网控制器)作为主端的,即发送和接收是相对于MAC(以太网控制器)来说的。
相关原理图如下:
7. CRS_DV/CONFIG2 (Carrier Sense Data Valid / Configuration 2)
功能: CRS
(Carrier Sense)指示是否检测到载波信号,DV
(Data Valid)表示接收的数据是否有效。该引脚通常指示网络链路的状态,并在有有效数据时拉高。
与CRS_DV
相关的原理图如下:
可见,公板的以太网1的物理层芯片KSZ8081RNB连接的是处理器的MAC的ENET1_RX_EN
引脚,用来向MAC指示是否有有效数据。
其复用功能CONFIG2
的介绍如下。
对模式“MII、MII back-to-back、RMII”模式的配置和介绍
其复用功能CONFIG2
是一个配置引脚,从Data sheet中可以可以出它和CONFIG1、CONFIG0一起,用来设置物理层芯片的工作模式是处于MII协议下、还是MII back-to-back协议下、还是RMII协议下。
关于什么叫“MII back-to-back”模式,请参考我的另一篇博文:https://blog.csdn.net/wenhao_ir/article/details/145678597
默认情况下,三个引脚的电平值如下图所示:
上图中划红线的部分的pd
代表引脚内部有下拉电阻,即三个引脚的电平值默认都为低电平。所以默认传输模式为MII模式
。而我们这里需要的是RMII模式
,所以肯定要通过外围电路来重新设置它们的值。从上面的Data sheet的截图来看,只需要设置为不是000和110就行。
接下来我们来看下原理图,看下公板配置的具体值是多少,相关原理图如下:
把DNP部分去掉(DNP 是 “Do Not Populate” 的缩写,表示“不要焊接”或“不要安装),去掉后如下:
然后我们可以分别读出ENET1_CONFIG2、ENET1_CONFIG1、ENET1_CONFIG0的电平值分别为:0、0、1,所以模式的配置值为二进制的001,即十进制的1,结合Datasheet来看:
相当于使用的既不是MII模式,也不是MII back-to-back模式,那就是RMII模式了呗。
8. RXER/ISO (Receive Error / Isolation)
功能: RXER
是接收错误信号,当物理层芯片KSZ8081RNB接收到错误的帧时该引脚会变为高电平,进而通知处理器的MAC出现错误帧。
相关原理图如下:
其复用功能ISO
用于启用或禁用 PHY 的隔离功能。
隔离功能主要用于高噪声环境 或 需要电气保护 的应用,如工业控制、医疗设备、数据中心等。如果你的应用环境本身是一个相对 清洁 或 低干扰 的环境,那么启用隔离功能的必要性就不大。
启用 隔离功能 可能会导致 额外的延迟 或 功耗增加,因为隔离功能通常会涉及变压器或光耦等器件,这些器件可能影响信号传输的速度、信号质量或者功耗。如果目标系统没有电气噪声或高电压的干扰,启用隔离功能可能不会带来额外的好处,反而可能会浪费不必要的资源。因此,默认情况下不启用隔离功能有助于保持系统的 高效性能。
从Data sheet的截图来看,默认是没有启用的。
公板的相关原理图如下:
从原理图来,作为ISO
引脚时,公板对它的配置为低电平,所以没有启用隔离功能。
9. REF_CLK/B-CAST_OFF (Reference Clock / Broadcast Off)
REF_CLK
是PHY的参考时钟输出引脚,用于向别的器件提供MII/RMII框架下由MAC向物理层发送数据时的时钟信号。
注意并不是向MAC提供时钟信号,恰恰相反,物理层芯片KSZ8081RNB传输数据时的时钟信号还来自于MAC(以太网控制器),MAC(以太网控制器)发来的时钟信号通过KSZ8081RNB的引脚XI
进入KSZ8081RNB,相关原理图如下:
注意:不要看到ENET1_TX_CLK
中有个TX,就以为只是MAC发送数据时的时钟信号,实际上MAC接收数据时也是它提供时钟信号,具体的情况我前面已经解释了,在本博文中搜索ENET1_REF_CLK1
即可。
还要注意:在KSZ8081RNB的Data sheet中REF_CLK/B-CAST_OFF
的标签名称为RXC/B-CAST_OFF
,而不是原理图中的REF_CLK/B-CAST_OFF
这个引脚作为REF_CLK
时的相关原理图如下:
可见,这个引脚作为REF_CLK
时,只连接了第1501号测试点(TP是test point的缩写),而并没有连接处理器芯片,也就是说它是向别的第三方器件提供一个MAC向物理层芯片传输数据时的时钟信号的副本。
引脚REF_CLK/B-CAST_OFF
的复用功能为B-CAST_OFF
,它是禁用PHY 地址0的广播属性,即将PHY 地址0变为设置为一个唯一的地址,这个在前面介绍PHY 地址已经详细说明了,详情搜索本博文拉高 B-CAST_OFF 引脚
。
当把引脚B-CAST_OFF
拉高时,PHY 地址0就被设置为唯一地址属性了,而不是广播地址属性了,下面是KSZ8081RNB的Data sheet截图:
这个引脚作为B-CAST_OFF
时的相关原理图如下:
可见,在公板中,它是被设置为了高电平,即将PHY 地址0设置为了唯一地址。
10. TXD0 (Transmit Data 0)
功能: TXD0
是物理层芯片KSZ8081RNB的第0位接收数据线,用于从MAC接收数据。
注意:这里是物理层芯片接收数据哈,不是发送数据,这里的发送和接收是在MII/RMII框架的基础上来说的,而MII/RMII框架是把MAC(以太网控制器)作为主端的,即发送和接收是相对于MAC(以太网控制器)来说的。
相关原理图如下:
从上面这幅原理图可以看出,还引出了一个测试点。
由此可见,以太网1的物理层芯片KSZ8081RNB的引脚TXD0连接的是处理器MAC的ENET1_TX_DATA0
引脚。
11. TXD1 (Transmit Data 1)
功能: TXD1
是物理层芯片KSZ8081RNB的第1位接收数据线,用于从MAC接收数据。
注意:这里是物理层芯片接收数据哈,不是发送数据,这里的发送和接收是在MII/RMII框架的基础上来说的,而MII/RMII框架是把MAC(以太网控制器)作为主端的,即发送和接收是相对于MAC(以太网控制器)来说的。
相关原理图如下:
由此可见,以太网1的物理层芯片KSZ8081RNB的引脚TXD1连接的是处理器MAC的ENET1_TX_DATA1
引脚。
12. NC2 (No Connect 2)【实际上是TXD2】
因为我们这里使用的是RMII模式,所以TX只有两位,所以物理层芯片接收只需要两根线,所以不需要TXD2,所以原理图中记为NC2(即未连接的引脚)。
相关原理图如下:
13. NC3 (No Connect 3)【实际上是TXD3】
因为我们这里使用的是RMII模式,所以TX只有两位,所以物理层芯片接收只需要两根线,所以不需要TXD3,所以原理图中记为NC3(即未连接的引脚)。
相关原理图如下:
14. TXEN (Transmit Enable)
功能: 该引脚是用于使能数据发送的控制信号。当该引脚为高电平时,允许数据从MAC向物理层芯片发送,此时物理层芯片知道我可以接收由MAC发来的数据了。
注意:这里是物理层芯片接收数据哈,不是发送数据,这里的发送和接收是在MII/RMII框架的基础上来说的,而MII/RMII框架是把MAC(以太网控制器)作为主端的,即发送和接收是相对于MAC(以太网控制器)来说的。
相关原理图如下:
可见,以太网1物理层芯片KSZ8081RNB的引脚TXEN
是连到处理器的MAC的引脚ENET1_TX_EN
上的。
15. NC1 (No Connect 1)【实际上是TXC引脚】
这个引脚在MII/RMII协议进行数据发送时(数据由MAC发到物理层芯片),对外输出数据发送时的时钟信号,以供第三方器件或模板使用,和前面的引脚REF_CLK(RXC)
类似。
由于这里不需要用这个外送的时钟信号,所以原理图中没有对它进行连接,所以标注它为NC1 (No Connect 1)。
16. INTRP/NAND_TREE (Interrupt / NAND Tree)
功能:
INTRP
是中断信号输出,当 PHY 芯片发生特定事件(如链接变化、接收错误等)时,它会触发中断输出中断信号给处理器,相关原理图如下:
从上面的原理图中,我们可以看到以太网1的物理层芯片KSZ8081RNB的引脚INTRP
连接的是IMX6ULL的SNVS_TAMPER5
引脚。IMX6ULL的引脚 SNVS_TAMPER5 是一个与 SNVS (Secure Non-Volatile Storage) 相关的引脚,通常用于安全相关功能,如防篡改检测、硬件加密等。SNVS_TAMPER5
是SNVS子系统中的一个输入引脚,用于检测外部篡改信号或事件。这些篡改信号通常是通过硬件防护机制来监测设备是否遭受物理攻击或者不当操作。比如,设备如果受到攻击,可能会通过这个引脚触发篡改检测机制。
物理层芯片的引脚INTRP
产生的中断信号实际就是一种设备不正常的信号,所以可以连接到IMX6ULL的引脚 SNVS_TAMPER5
进行相应的处理。
物理层芯片KSZ8081RNB的INTRP/NAND_TREE
引脚的复用功能NAND_TREE
用来设置是否启用NAND Tree Mode
。
可见,当复位信号解除有效时,如果其处于低电平,代表启用NAND Tree Mode
;当复位信号解除有效时,如果其处于高电平,则代表禁用NAND Tree Mode
。
NAND Tree Mode
的介绍如下:
MAC 地址(媒体访问控制地址) 是网络设备唯一的标识符,在 以太网通信 中,每个设备需要一个唯一的 MAC 地址来与其他设备进行区分。在一些情况下,多个 PHY 设备可能需要共享一个统一的 MAC 地址空间,而 NAND Tree Mode 则通过特定的地址分配方式,使得网络中的多个设备能够根据需要识别和通信。
相关的原理图如下:
从原理图中,我们可以看出,ENET1_NAND_TREE
是通过下拉电阻接地的,所以其值为低电平,所以公板的以太网1的物理层芯片是启用了NAND Tree Mode
的。
17. RST (Reset)
功能: 用于对 PHY 芯片进行硬件复位。通过将该引脚拉低,PHY 可以被复位,恢复到初始状态。
相关原理图如下:
从这个原理图来看,ENET1_nRST
信号是由处理器的相关信号控制74LV595PW
芯片产生的,74LV595PW 是一款 8位串行输入/并行输出 移位寄存器(Shift Register)芯片。
18. XI (Crystal Input)
功能: XI
是物理层芯片的晶体振荡器的输入引脚,通常连接到外部晶体振荡器,用于提供时钟信号给 PHY 芯片。在这里是连接到处理器的MAC的引脚ENET1_TX_CLK
,注意,MAC的引脚ENET1_TX_CLK
并不只是提供发送数据时的时钟,也提供接收数据时的时钟哦,相关情况我已在上面的博文中详细描述,请在本博文中搜索关键词“佐证我们的想法”,进而跳转到相关内容。
相关的原理图如下:
19. XO (Crystal Output)
当采用MII接口,PYH的时钟频率要求25M,不需要与MAC层时钟一致,时钟信号不需要来自MAC层。此时就需要PYH有外部时钟源,此时XO引脚就作为连接外部时钟源的引脚,它的作用是作为晶体的反馈引脚。
上面这个Data sheet的截图解释了 KSZ8081RNB 芯片的 XO 引脚的功能和用途,具体说明如下:
-
Crystal feedback for 25 MHz crystal
- XO 引脚 用于接入 25 MHz 晶体振荡器 的 反馈信号。
- 当使用 25 MHz 晶体 时,XO 引脚 作为晶体的反馈引脚,用来连接晶体的反馈端口,帮助实现稳定的 时钟振荡。该引脚与 晶体 的谐振行为相关,允许物理层芯片通过晶体提供稳定的时钟信号。
-
This pin is a no connect if an oscillator or external clock source is used
- 如果你使用外部的 振荡器(oscillator) 或 时钟源(clock source) 来为芯片提供时钟信号,则 XO 引脚 不需要连接。
- 在这种情况下,XO 引脚 将是一个 不连接(No Connect) 引脚,因为时钟信号不再通过晶体产生,而是通过外部振荡器或时钟源直接提供给芯片的 其他时钟引脚。
小结
- XO 引脚 的主要作用是连接 25 MHz 晶体振荡器 的反馈端来提供时钟信号。如果你不使用晶体,而是选择使用外部振荡器或时钟源来提供时钟信号,则 XO 引脚 需要保持 不连接,以避免干扰芯片的正常工作。
简而言之,XO 引脚用来与 晶体 一起工作,而如果使用外部 时钟源或振荡器,则无需使用此引脚。
公板的IMX6ULL的以太网控制器2连接的物理层芯片KSZ8081RNB的各引脚介绍及连接情况说明
情况说明
由于和以太网控制器1连接的物理层芯片KSZ8081RNB的连接差不多,所以这里就说二者不同的地方就是了。
整体原理图
物理层芯片的原理图
打开公板的底板的原理图:
PDF文件SPF-28616_C2.pdf 翻到第第11页,就有以太网2物理层芯片KSZ8081RNB的连接原理图,如下面两幅图所示:
上图中的DNP 是 “Do Not Populate” 的缩写,表示“不要焊接”或“不要安装,所以相当于原理图是下面这样的:
MAC(以太网控制器)部分的原理图
与以太网1不同的地方
只有一个地方不一样,就那是物理层芯片的PHY 地址不一样,这个我前面已经说过了,我当时还说设计者有点2,刚好把以太网1的MAC连接的物理层芯片的PHY 地址设为了2,而以太网2的MAC连接的物理层芯片的PHY 地址设为了1,详情请搜索关键词“不得不说这公板的设计有点2”。