目录
- 什么叫以太网?它与因特网有何区别?
- 公板实现以太网的原理介绍(MII/RMII协议介绍)
- 公板的原理图下载地址
- 公板中IMX6ULL处理器与MAC(以太网控制器)有关的原理图
- IMX6ULL处理器的MAC引脚说明
- 物理层芯片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)
- 4. RXD1/PHYAD2 (Receive Data 1 / PHY Address 2)
- 5. PHYAD1 (PHY Address 1)
- 6. PHYAD0 (PHY Address 0)【同时也是RX3】
- 7. CRS_DV/CONFIG2 (Carrier Sense Data Valid / Configuration 2)
- 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的各引脚介绍及连接情况说明
- 与以太网1不同的地方
什么叫以太网?它与因特网有何区别?
详情见 https://blog.youkuaiyun.com/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.youkuaiyun.com/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_EN
ENET2_TX_DATA0
ENET2_TX_DATA1
ENET2_TX_EN
ENET2_TX_CLK
ENET2_RX_DATA0
ENET2_RX_DATA1
ENET2_RX_ER
ENET2_RX_EN
NVCC_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_EN
NVCC_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.youkuaiyun.com/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的数据手册的在线浏览地址如下: