i3-2120处理器配什么显卡好?
946 2023-04-03 04:57:41
从硬件的角度看,以太网接口电路主要由 MAC(Media Access Control,MAC)控制器和物理层接口 PHY(Physical Layer,PHY)两大部分构成。如下图所示:
但是,在实际的设计中,以上三部分并不一定是独立分开的。 由于,PHY 整合了大量模拟硬件,而 MAC 则是典型的全数字器件。考虑到芯片面积及模拟/数字混合架构的原因,通常,将 MAC 集成进微控制器而将 PHY 留在片外。更灵活、密度更高的芯片技术已经可以实现 MAC 和 PHY 的单芯片整合。总的来说,可分为下列几种类型:
MAC 及 PHY 工作在 OSI 七层模型的数据链路层和物理层。具体如下
IEEE802.3 标准文档下载地址:https://ieeexplore.ieee.org/browse/standards/get-program/page/。它分为很多个 section。标准文档贼长,没有全部看过,大概第一部分是 10Mb/s 以太网(其中有关于 MAC 的规范),第二部分是 100BASE-T 100Mb/s 基带网络介绍,第三部分是 1000 Mb/s 基带网络介绍,第四部分是 10 Gb/s 基带网络介绍。但是,并不是说每部分都是独立的。
MAC(Media Access Control,MAC)即媒体访问控制。该部分有两个概念:MAC 可以指的是一个硬件控制器,也可以指 MAC 通信协议。该协议位于 OSI 七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。MAC 硬件大约就是下面的样子了:
在发送数据的时候,MAC 协议可以事先判断是否可以发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC 协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至 LLC(逻辑链路控制)层。该层协议是以太网 MAC,由 IEEE-802. 3 以太网标准定义。最新的 MAC 同时支持 10Mbps 和100Mbps 两种速率。
以太网数据链路层其实包含 MAC(介质访问控制)子层和 LLC(逻辑链路控制)子层。一块以太网卡 MAC 芯片的作用不但要实现 MAC 子层和 LLC 子层的功能,还要提供符合规范的 PCI 界面以实现和主机的数据交换。
MAC 从 PCI 总线收到 IP 数据包或者其他网络层协议的数据包后,将之拆分并重新打包成最大 1518Byte、最小 64Byte 的帧。这个帧里面包括了目标 MAC 地址、自己的源 MAC 地址和数据包里面的协议类型(比如IP数据包的类型用 80 表示),最后还有一个DWORD(4Byte)的 CRC 码。
可是目标的 MAC 地址是哪里来的呢?这牵扯到一个 ARP 协议(介乎于网络层和数据链路层的一个协议)。第一次传送某个目的 IP 地址的数据的时候,先会发出一个 ARP 包,其 MAC 的目标地址是广播地址,里面说到:“谁是 xxx.xxx.xxx.xxx 这个 IP 地址的主人?”因为是广播包,所有这个局域网的主机都收到了这个 ARP 请求。收到请求的主机将这个 IP 地址和自己的相比较,如果不相同就不予理会,如果相同就发出 ARP 响应包。这个 IP 地址的主机收到这个 ARP 请求包后回复的 ARP 响应里说到:“我是这个 IP 地址的主人”。这个包里面就包括了他的 MAC 地址。以后的给这个IP地址的帧的目标 MAC 地址就被确定了。(其它的协议如 IPX/SPX 也有相应的协议完成这些操作)
IP 地址和 MAC 地址之间的关联关系保存在主机系统里面,叫做 ARP 表。由驱动程序和操作系统完成。在 Windows 及 Linux 里面可以用 arp -a
的命令查看 ARP 表。
收到数据帧的时候也是一样,做完 CRC 校验以后,如果没有 CRC 效验错误,就把帧头去掉,把数据包拿出来通过标准的接口传递给驱动和上层的协议栈。最终正确的达到我们的应用程序。
MII(Media Independent Interface)即媒体独立接口,MII 接口是 MAC 与 PHY 连接的标准接口。它是 IEEE-802.3 定义的以太网行业标准。MII 接口提供了 MAC 与 PHY 之间、PHY 与 STA(Station Management)之间的互联技术,该接口支持 10Mb/s 与 100Mb/s 的数据传输速率,数据传输的位宽为 4 位。“媒体独立” 表明在不对 MAC 硬件重新设计或替换的情况下,任何类型的 PHY 设备都可以正常工作。802.3 协议最多支持 32 个 PHY,但有一定的限制:要符合协议要求的 connector 特性。MII 接口如下图所示:
提到 MII,就有可能涉及到 RS,PLS,STA 等名词术语,下面讲一下他们之间对应的关系。
所谓 RS 即 Reconciliation sublayer,它的主要功能主要是提供一种 MII 和 MAC/PLS 之间的信号映射机制。它们(RS与MII)之间的关系如下图:
MII 的 Management Interface 是与 STA(Station Management)相连的。
关于本节,具体可参考 IEEE 以太网标准 802.3 的 22.3 Signal timing characteristics 节,其中包含时钟信号等更详细内容。
MII 接口主要包括四个部分。一是从 MAC 层到 PHY 层的发送数据接口,二是从 PHY 层到 MAC 层的接收数据接口,三是从PHY 层到 MAC 层的状态指示信号,四是 MAC 层和 PHY 层之间传送控制和状态信息的 MDIO 接口。
MII 包括一个数据接口,以及一个 MAC 和 PHY 之间的管理接口:
PHY 里面的部分寄存器是 IEEE 定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC 通过 SMI 总线不断的读取PHY 的状态寄存器以得知目前 PHY 的状态。例如连接速度、双工的能力等。当然也可以通过 SMI 设置 PHY的寄存器达到控制的目的。例如流控的打开关闭、自协商模式还是强制模式等。不论是物理连接的MII总线和 SMI 总线还是 PHY 的状态寄存器和控制寄存器都是由IEEE的规范的。因此不同公司的 MAC 和 PHY 一样可以协调工作。当然为了配合不同公司的 PHY 的自己特有的一些功能,驱动需要做相应的修改。
MII 支持 10Mbps 和 100Mbps 的操作,一个接口由 14 根线组成,它的支持还是比较灵活的。但是有一个缺点是因为它一个端口用的信号线太多,如果一个 8 端口的交换机要用到 112 根线,16 端口就要用到 224 根线,到 32 端口的话就要用到 448 根线。一般按照这个接口做交换机是不太现实的。所以现代的交换机的制作都会用到其它的一些从 MII 简化出来的标准,比如 RMII、SMII、GMII等。
简化媒体独立接口是标准的以太网接口之一,比 MII 有更少的 I/O 传输。RMII 口是用两根线来传输数据的,MII 口是用 4 根线来传输数据的,GMII 是用 8 根线来传输数据的。MII/RMII 只是一种接口,对于10Mbps 线速,MII 的时钟速率是 2.5MHz 就可以了,RMII 则需要 5MHz;对于 100Mbps 线速,MII 需要的时钟速率是 25MHz,RMII 则是 50MHz。
MII/RMII 用于传输以太网包,在 MII/RMII 接口是4/2bit的,在以太网的PHY里需要做串并转换,编解码等才能在双绞线和光纤上进行传输,其帧格式遵循IEEE 802.3(10M)/IEEE 802.3u(100M)/IEEE 802.1q(VLAN)。以太网帧的格式为:前导符+开始位+目的mac地址+源mac地址+类型/长度+数据+padding(optional)+32bitCRC。如果有vlan,则要在类型/长度后面加上2个字节的vlan tag,其中12bit来表示vlan id,另外4bit表示数据的优先级!
GMII是千兆网的MII接口,这个也有相应的RGMII接口,表示简化了的GMII接口。
GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式。GMII接口数据结构符合IEEE以太网标准,该接口定义见IEEE 802.3-2000。
PHY(Physical Layer,PHY)是 IEEE802.3 中定义的一个标准模块,STA(station management entity,管理实体,一般为MAC 或 CPU)通过 SMI(Serial Manage Interface)对 PHY 的行为、状态进行管理和控制,而具体管理和控制动作是通过读写 PHY 内部的寄存器实现的。一个 PHY 的基本结构如下图:
PHY 是物理接口收发器,它实现 OSI 模型的物理层。IEEE-802.3 标准定义了以太网 PHY。包括 MII/GMII (介质独立接口) 子层、PCS(物理编码子层)、PMA(物理介质附加)子层、PMD(物理介质相关)子层、MDI子层。它符合 IEEE-802.3k 中用于 10BaseT(第14条) 和 100BaseTX(第24条和第25条) 的规范。
PHY 寄存器在 IEEE802.3 标准的 22.2.4 Management functions 节有介绍,但不涉及所有的寄存器,个别寄存器需要到其它章节中看,当然,文档里面也提到该在哪里找到哪个寄存器。
PHY 寄存器的地址空间为 5 位,从 0 到 31 最多可以定义 32 个寄存器(随着芯片功能不断增加,很多 PHY 芯片采用分页技术来扩展地址空间以定义更多的寄存器),IEEE802.3 定义了地址为 0-15 这 16 个寄存器的功能,地址16 - 31的寄存器留给芯片制造商自由定义,如下表所示。
(1)官方介绍请参考 IEEE802.3 标准的 22.2.4 Management functions 节。
(2)上图的 B 和 E 表示了,在特定接口下,寄存器是基本的还是扩展的。例如:MII 接口下只有 0 和 1 寄存器是基本的,其它的是扩展的。注意:所为扩展是指留给 IEEE 以后的扩展特性用,不是给 PHY 厂商的扩展,PHY 厂商自定义的只能是 16~31 号寄存器
(3)在 IEEE 标准文档及某些 PHY 手册中,某寄存器的比特(bit)用X.y
表示,如 0.15 表示第 0 寄存器的第 15 位。
寄存器 0 是 PHY 控制寄存器,通过 Control Register 可以对 PHY 的主要工作状态进行设置。应该保证控制寄存器每个位的默认值,以便在没有管理干预的情况下,上电或复位时 PHY 的初始状态为正常操作状态。Control Register 的每一位完成的功能见下。
Reset: 通过将位 0.15 设置为逻辑 1 来完成复位 PHY。 该操作应将状态和控制寄存器设置为其默认状态。 因此,此操作可能会改变PHY 的内部状态以及与 PHY 关联的物理链路的状态。复位过程中 Bit15 保持为 1,复位完成之后该位应该自动清零。 在复位过程完成之前,PHY 不需要接受对控制寄存器的写入操作,并且在复位过程完成之前写入 0.15 以外的控制寄存器位可能不起作用。 复位过程应在0.15 位设置的 0.5 s 内完成。
(1)一般要改变端口的工作模式(如速率、双工、流控或协商信息等)时,在设置完相应位置的寄存器之后,需要通过 Reset 位复位 PHY 来使配置生效。
(2)该比特位的默认值为 0。
Loopback: 当位 0.14 被设置为逻辑 1 时,PHY 应置于环回操作模式。 当位 0.14 置位时,PHY 接收电路应与网络介质隔离,并且MII 或 GMII 处的 TX_EN 断言不应导致网络介质上的数据传输。 当位 0.14 置位时,PHY 应接受来自 MII 或 GMII 发送数据路径的数据,并将其返回给 MII 或 GMII 接收数据路径,以响应TX_EN 的断言。 当位 0.14 置位时,从断言 TX_EN 到断言 RX_DV 的延迟应小于 512 BT。 当位 0.14 置位时,除非设置了位 0.7,否则 COL 信号应始终保持无效。 清 0.14 位为零允许正常操作。
Loopback 是一个调试以及故障诊断中常用的功能,Bit14 置 1 之后,PHY 和外部 MDI 的连接在逻辑上将被断开,从 MAC 经过 MII/GMII(也可能是其他的 MAC/PHY 接口)发送过来的数据将不会被发送到 MDI 上,而是在 PHY 内部(一般在 PCS)回环到本端口的 MII/GMII 接收通道上,通过 Loopback 功能可以检查 MII/GMII 以及PHY接口部分是否工作正常,对于端口不通的情况可用于故障定位。
(1)需要注意的是,很多时候 PHY 设置 Loopback 后端口可能就 Link down 了,MAC 无法向该端口发帧,这时就需要通过设置端口Force Link up 才能使用 Loopback 功能。
(2)该比特位的默认值为 0。
Speed Selection: Bit13 和 Bit6 两位联合实现 对端口的速率控制功能。链接速度可以通过自动协商过程或手动速度选择来选择。 通过将位0.12清零来禁用自动协商时,允许手动速度选择。
如果 PHY 通过比特 1.15:9 和比特 15.15:12 报告它不能工作在所有速度时,则比特0.6和0.13的值应该与PHY可以操作的速度相对应。并且任何试图将该位设置为无效的操作均将被忽略。
(1)对Speed Selection的修改设置,往往需要复位端口才能配置生效。因此在设置该位置的时候需要检查自动协商的设置并通过Bit15复位端口。
(2)位0.6和0.13的默认值是根据位1.15:9和15.15:12所指示的PHY可以操作的***最高数据速率***的编码组合。
Auto-Negotiation Enable: 自动协商过程应通过将位0.12设置为逻辑1来启用。 如果位0.12设置为逻辑1,则位0.13、0.8和0.6不应对链路配置和除了自动协商协议规定之外的站操作产生影响。 如果将位0.12清零为逻辑0,则无论链路配置和自动协商过程的先前状态如何,位0.13、0.8和0.6都将确定链路配置。
如果PHY通过位1.3报告它缺乏执行自动协商的能力,则PHY应在位0.12返回零值。 如果PHY通过位1.3报告它缺乏执行自动协商的能力,则位0.12应该始终写为0,并且任何尝试将1写入位0.12都应该被忽略。
必须注意的是,对于1000BASE-T接口,自动协商必须打开。
Power Down: 通过将位0.11设置为逻辑1,可以将PHY置于低功耗状态。 清0.11位为零允许正常操作。 PHY在掉电状态下的具体行为是特定实现的。 处于掉电状态时,PHY应响应管理事务。 在转换到掉电状态期间和处于掉电状态期间,PHY不应在MII或GMII上产生寄生信号。
当位0.11或位0.10被设置为逻辑1时,PHY不需要满足RX_CLK和TX_CLK信号功能要求。 在位0.11和0.10清零后,PHY应在0.5 s内满足22.2.2中定义的RX_CLK和TX_CLK信号功能要求。
(1)Power Down模式一般在软件shut down端口的时候使用,需要注意的是端口从Power Down模式恢复,需要复位端口以保证端口可靠的连接。
(2)该位的默认值为 0。
Isolate: 通过将位0.10设置为逻辑1,PHY可能被迫将其数据路径与MII或GMII电隔离。 清零位0.10允许正常操作。 当PHY与MII或GMII隔离时,它不会响应TXD数据包和TX_EN,TX_ER、GTX_CLK的输入。并且它的TX_CLK,RX_CLK,RX_DV,RX_ER,RXD数据包、COL和CRS输出均应为高阻态。 当PHY与MII或GMII隔离时,它将响应管理事务(MDC/MDIO接口的信号)。
(1)IEEE802.3没有对Isolate 时MDI接口的状态进行规范,此时MDI端可能还在正常运行。Isolate在实际应用中并没有用到。
(2)由于目前很多百兆的PHY芯片其MAC接口主流的都是SMII/S3MII,8个端口的接口是相互关联的,一个端口设置Isolate可能会影响其他端口的正常使用,因此在使用中注意不要随意更改bit10的状态。
Restart Auto-Negotiation: 如果PHY通过位1.3报告它缺乏执行自动协商的能力,或者如果自动协商被禁用,则PHY应在位0.9返回零值。 如果PHY通过位1.3报告它缺乏执行自动协商的能力,或者如果禁用了自动协商,则应将位0.9始终写为0,并且任何尝试将1写入位0.9应被忽略。
Bit9置1将重新启动端口的自动协商进程,当然前提是Auto-Negotiation Enable是使能的。
一般在修改端口的自动协商能力信息之后通过Bit9置1重新启动自动协商来使端口按照新的配置建立link。
Duplex Mode: 可以通过自动协商过程或手动双面选择来选择双工模式。 通过将位0.12清零来禁用自动协商时,允许手动双面选择。
如果PHY通过位1.15:9和15.15:12报告它只能在一个双工模式下工作,则位0.8的值应该与PHY可以工作的模式相对应,并且任何尝试改变将该位0.8修改为无效指的操作应被忽略。
对Duplex Mode的修改配置也需要复位端口才能生效。
寄存器1是PHY状态寄存器,主要包含PHY的状态信息,大多数bit的值都是由芯片厂家确定的,每一个bit的功能在表3种已有详细说明。
寄存器中各位的详细说明如下:
在调试以及异常故障处理时,可以通过该位寄存器的状态判断AN是否成功,从而进一步的检查AN相关的设置是否正确,或者芯片的AN功能是否正常等。
寄存器2和3存放PHY芯片的型号代码,寄存器2(PHY ID1)为高16位,而寄存器3(PHY ID2)为低16位。由芯片制造商自行定义,实际应用中软件通过读取这两个寄存器的内容可以识别PHY的型号和版本。
PHY标识符应由由IEEE分配给PHY制造商的组织唯一标识符(OUI)的(只需要使用第3至第24位,共22位),加上6位制造商的型号以及4位制造商的修订版编号组成。 PHY标识符旨在提供足够的信息来支持30.1.2中所要求的oResourceTypeID对象。
OUI的第三位分配给位2.15,OUI的第四位分配给位2.14,依此类推。 位2.0包含OUI的第十八位。 位3.15包含OUI的第十九位,位3.10包含OUI的第二十四位。 位3.9包含制造商型号的MSB。 位3.4包含制造商型号的LSB。 位3.3包含制造商版本号的MSB,位3.0包含制造商版本号的LSB。具体如下图所示:
寄存器4是自动协商的能力通告寄存器,在AN Enable的前提下(见寄存器0),端口根据该寄存器的相关配置将自动协商信息通过FLP在MDI上进行通告。当AN配置为Disable状态的时候,寄存器4的配置将不起作用,端口的工作模式由控制寄存器中的配置决定。
该寄存器包含PHY的通告能力,它们将在自动协商期间传送给其链接伙伴。 基本页的位定义在IEEE标准的28.2.1.2中定义。 上电时,在自动协商开始之前,该寄存器应具有以下默认配置:
在FLP Burst内传输的基本链路代码字(基本页面)应该传达如图28-7所示的编码。 自动协商功能可以使用下一页功能支持其他页面。 下一页交换中使用的链接代码字的编码在28.2.3.4中定义。 在FLP Burst中,D0应该是第一个传输的位。
下一页功能使用标准的自动协商仲裁机制来允许交换任意的数据。 数据由可选的下一页信息携带,其遵循用于基本链接码字的传输和确认过程。 定义了四种类型的下一页编码:消息页面,未格式化页面,扩展消息页面和扩展的未格式化页面。
关于该部分,具体见IEEE标准的28.2.3.4 Next Page function。
在IEEE标准中,Auto-Negotiation Advertisement Register中的各部分全部是在独立章节中进行介绍的。具体如下:
寄存器5保存的是本端PHY接收到的对端PHY所通告的端口能力,寄存器5的结构和寄存器4基本一致。
寄存器6保存了PHY自动协商过程的异常信息。从这个寄存其中我们可以获取到Link Partner子否支持自动协商以及自动协商下一页有没有收到的信息。
自动协商下一页发送寄存器包含在支持下一页功能时要发送的下一页链接码字。 (见表28-6)内容在28.2.3.4中定义。 上电时,该寄存器应包含默认值2001H,该值表示消息代码设置为Null消息的消息页面。 该值可以由设备希望传输的任何有效的下一页消息代码替换。 写入该寄存器应将mr_next_page_loaded设置为true。
未完待续。。。