浅析以太网接口
以太网相关接口主要包括:MII/RMII/SMII以及GMII/RGMII/SGMII接口。
一、MII接口
MII(Media Independent Interface)介质无关接口或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口和一个MAC和PHY之间的管理接口。“媒体独立”表明在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作。
MII接口提供了MAC与PHY之间、PHY与STA(Station Management)之间的互联技术,该接口支持10Mb/s与100Mb/s的数据传输速率,数据传输的位宽为4位。
MII接口可分为MAC模式和PHY模式,一般说来MAC和PHY对接,但是MAC和MAC也是可以对接的。以前的10M的MAC层芯片和物理层芯片之间传送数据是通过一根数据线来进行的,其时钟是10M,在100M中,如果也用一根数据线来传送的话,时钟需要100M,这会带来一些问题,所以定义了MII接口,它是用4根数据线来传送数据的,这样在传送100M数据时,时钟就会由100M降低为25M,而在传送10M数据时,时钟会降低到2.5M,这样就实现了10M和100M的兼容。
MII接口主要包括四个部分:一是从MAC层到物理层的发送数据接口,二是从物理层到MAC层的接收数据接口,三是从物理层到MAC层的状态指示信号,四是MAC层和物理层之间传送控制和状态信息的MDIO接口。
MII接口的MAC模式定义:
MII接口PHY模式定义:
MDIO接口包括两根信号线:MDC和MDIO,通过它MAC层芯片(或其它控制芯片)可以访问物理层芯片的寄存器(前面100M物理层芯片中介绍的寄存器组,但不仅限于100M物理层芯片,10M物理层芯片也可以拥有这些寄存器),并通过这些寄存器来对物理层芯片进行控制和管理。
MDIO管理接口如下:
MDC:管理接口的时钟,它是一个非周期信号,信号的最小周期(实际是正电平时间和负电平时间之和)为400ns,最小正电平时间和负电平时间为160ns,最大的正负电平时间无限制。它与TX_CLK和RX_CLK无任何关系。
MDIO是一根双向的数据线,用来传送MAC层的控制信息和物理层的状态信息。
二、RMII接口
MII接口也有一些不足之处,主要是其接口信号线很多,发送和接收和指示接口有14根数据线(不包括MDIO接口的信号线,因为其被所有MII接口所共享),当交换芯片的端口数据较多时,会造成芯片的管脚数目很多的问题,这给芯片的设计和单板的设计都带来了一定的问题。为了解决这些问题,人们设计了两种新的MII接口,它们是RMII接口(Reduced MII接口)和SMII接口(Serial MII接口)。这两种接口都减少了MII接口的数据线,不过它们一般只用在以太网交换机的交换MAC芯片和多口物理层芯片中,而很少用于单口的MAC层芯片和物理层芯片中。RMII接口和SMII接口都可以用于10M以太网和100M以太网,但不可能用于1000M以太网,因为此时时钟频率太高,不可能实现。
从图中可以看到,RMII接口相对于MII接口减少了一半的连接线,只有8根接口线。
TXD[1:0]:数据发送信号线,数据位宽为2,是MII接口的一半;
RXD[1:0]:数据接收信号线,数据位宽为2,是MII接口的一半;
TX_EN(Transmit Enable):数据发送使能信号,与MII接口中的该信号线功能一样;
RX_ER(Receive Error):数据接收错误提示信号,与MII接口中的该信号线功能一样;
CLK_REF:是由外部时钟源提供的50MHz参考时钟;与MII接口不同,MII接口中的接收时钟和发送时钟是分开的,而且都是由PHY芯片提供给MAC芯片的。这里需要注意的是,由于数据接收时钟是由外部晶振提供而不是由载波信号提取的,所以在PHY层芯片内的数据接收部分需要设计一个FIFO,用来协调两个不同的时钟,在发送接收的数据时提供缓冲。PHY层芯片的发送部分则不需要FIFO,它直接将接收到的数据发送到MAC就可以了。
CRS_DV:此信号是由MII接口中的RX_DV和CRS两个信号合并而成。当介质不空闲时,CRS_DV和RE_CLK相异步的方式给出。当CRS比RX_DV早结束时(即载波消失而队列中还有数据要传输时),就会出现CRS_DV在半位元组的边界以25MHz/2.5MHz的频率在0、1之间的来回切换。因此,MAC能够从 CRS_DV中精确的恢复出RX_DV和CRS。在100Mbps速率时,TX/RX每个时钟周期采样一个数据;在10Mbps速率时,TX/RX每隔10个周期采样一个数据,因而TX/RX数据需要在数据线上保留10个周期,相当于一个数据发送10次。当PHY层芯片收到有效的载波信号后,CRS_DV信号变为有效,此时如果FIFO中还没有数据,则它会发送出全0的数据给MAC,然后当FIFO中填入有效的数据帧,数据帧的开头是“101010---”交叉的前导码,当数据中出现“01”的比特时,代表正式数据传输开始,MAC芯片检测到这一变化,从而开始接收数据。当外部载波信号消失后,CRS_DV会变为无效,但如果FIFO中还有数据要发送时,CRS_DV在下一周期又会变为有效,然后再无效再有效,直到FIFO中数据发送完为止。在接收过程中如果出现无效的载波信号或者无效的数据编码,则RX_ER会变为有效,表示物理层芯片接收出错。
三、SMII接口
SMII即Serial MII,串行MII的意思,跟RMII相比,连线进一步减少到4根;
TXD:发送数据信号,位宽为1;
RXD:接收数据信号,位宽为1;
SYNC:收发数据同步信号,每10个时钟周期置1次高电平,指示同步。
CLK_REF:所有端口共用的一个参考时钟,频率为125MHz。为什么100Mbps速率要用125MHz时钟?因为在每8位数据中会插入2位控制信号。
TXD/RXD以10比特为一组,以SYNC为高电平来指示一组数据的开始,在SYNC变高后的10个时钟周期内,TXD上依次输出的数据是:TXD[7:0]、TX_EN、TX_ER,控制信号的含义与MII接口中的相同;RXD上依次输出的数据是:RXD[7:0]、RX_DV、CRS,RXD[7:0]的含义与RX_DV有关,当RX_DV为有效时(高电平),RXD[7:0]上传输的是物理层接收的数据。当RX_DV为无效时(低电平),RXD[7:0]上传输的是物理层的状态信息数据。
四、SSMII接口
SSMII即Serial Sync MII,叫串行同步接口,跟SMII接口很类似,只是收发使用独立的参考时钟和同步时钟,不再像SMII那样收发共用参考时钟和同步时钟,传输距离比SMII更远。
五、SSSMII接口
SSSMII即Source Sync Serial MII,叫源同步串行MII接口,SSSMII与SSMII的区别在于参考时钟和同步时钟的方向,SSMII的TX/RX参考时钟和同步时钟都是由PHY芯片提供的,而SSSMII的TX参考时钟和同步时钟是由MAC芯片提供的,RX参考时钟和同步时钟是由PHY芯片提供的,所以顾名思义叫源同步串行。
六、GMII接口
与MII接口相比,GMII的数据宽度由4位变为8位,GMII接口中的控制信号如TX_ER、TX_EN、RX_ER、RX_DV、CRS和COL的作用同MII接口中的一样,发送参考时钟GTX_CLK和接收参考时钟RX_CLK的频率均为125MHz(1000Mbps/8=125MHz)。
有一点需要特别说明下:发送参考时钟GTX_CLK,它和MII接口中的TX_CLK是不同的,MII接口中的TX_CLK是由PHY芯片提供给MAC芯片的,而GMII接口中的GTX_CLK是由MAC芯片提供给PHY芯片的,两者方向不一样。在实际应用中,绝大多数GMII接口都是兼容MII接口的,所以,一般的GMII接口都有两个发送参考时钟:TX_CLK和GTX_CLK(两者的方向是不一样的),在用作MII模式时,使用TX_CLK和8根数据线中的4根。
七、RGMII接口
RGMII即Reduced GMII,是GMII的简化版本,将接口信号线数量从24根减少到14根(COL/CRS端口状态指示信号,这里没有画出),时钟频率仍旧为125MHz,TX/RX数据宽度从8位变为4位,为了保持1000Mbps的传输速率不变,RGMII接口在时钟的上升沿和下降沿都采样数据。在参考时钟的上升沿发送GMII接口中的TXD[3:0]/RXD[3:0],在参考时钟的下降沿发送GMII接口中的TXD[7:4]/RXD[7:4]。RGMI同时也兼容100Mbps和10Mbps两种速率,此时参考时钟速率分别为25MHz和2.5MHz。TX_EN信号线上传送TX_EN和TX_ER两种信息,在TX_CLK的上升沿发送TX_EN,下降沿发送TX_ER;同样的,RX_DV信号线上也传送RX_DV和RX_ER两种信息,在RX_CLK的上升沿发送RX_DV,下降沿发送RX_ER。
八、SGMII接口
SGMII即Serial GMII,串行GMII,收发各一对差分信号线,时钟频率625MHz,在时钟信号的上升沿和下降沿均采样,参考时钟RX_CLK由PHY提供,是可选的,主要用于MAC侧没有时钟的情况,一般情况下,RX_CLK不使用,收发都可以从数据中恢复出时钟。在TXD发送的串行数据中,每8比特数据会插入TX_EN/TX_ER 两比特控制信息,同样,在RXD接收数据中,每8比特数据会插入RX_DV/RX_ER两比特控制信息,所以总的数据速率为1.25Gbps=625Mbps*2。其实,大多数MAC芯片的SGMII接口都可以配置成SerDes接口(在物理上完全兼容,只需配置寄存器即可),直接外接光模块,而不需要PHY层芯片,此时时钟速率仍旧是625MHz,不过此时跟SGMII接口不同,SGMII接口速率被提高到1.25Gbps是因为插入了控制信息,而SerDes端口速率被提高是因为进行了8B/10B变换,本来8B/10B变换是PHY芯片的工作,在SerDes接口中,因为外面不接PHY芯片,此时8B/10B变换在MAC芯片中完成了。
总结下:
MII接口 | 14根数据线 | 分为MAC模式和PHY模式,一般说来MAC和PHY对接 |
RMII(Reduced MII)接口 | 8根数据线 | 一般只用在以太网交换机的交换MAC芯片和多口物理层芯片中;可以用于10M以太网和100M以太网,但不可能用于1000M以太网 |
SMII(Serial MII)接口 | 4根数据线 | 一般只用在以太网交换机的交换MAC芯片和多口物理层芯片中;可以用于10M以太网和100M以太网,但不可能用于1000M以太网 |
SSMII接口 | 即Serial Sync MII,叫串行同步接口 | |
SSSMII接口 | 即Source Sync Serial MII,叫源同步串行MII接口 | |
GMII接口 | 24根数据线 | 千兆网的MII接口 |
RGMII接口 | 14根数据线 | 千兆网的MII接口 |
SGMII接口 | 2根数据线 | 千兆网的MII接口 |
浅谈串口转以太网技术
1.概述
串口转以太网目前可以采用串口转以太网模块来实现,变得非常简单易用,但是在该技术中出现的一些新问题、使用误区需要引起注意。串口转以太网并不是简单传输媒介的变化,而是串口到TCP/IP的协议转化。其中关系到的关键技术包括:TCP/IP的工作模式问题、串口分帧技术、9位技术。这里详细分析这些串口转网口的技术。
2.澄清一个概念:到底是串口转以太网还是串口转TCP/IP?
串口一般来说就是UART,它实际只定义了数据链路层的规范,也就是起始位、数据位、停止位。但是在不同的物理层又分为:TTL串口、RS232串口、RS485串口等。
TTL串口:它是MCU芯片之间进行数据通信的串口,它以+5V(或者+3.3V)表示1,以GND表示0。
RS232串口:它是实现设备之间通信的串口,其主要将信号电压从0~5V的电压变为±15V(实际一般为±12V)。电压的增加,增大了数据传输的距离和可靠性。
RS485串口:它是实现远距离通信的串口,可以实现上千米的数据传输。其主要特征是用差模信号(A、B两根线之间的电压)代替了RS232共模信号(信号线和GND之间的电压),从而能够抵抗共模干扰,实现更远距离的传。
如果按照ISO的7层模型(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)来分的话,串口实际上只包含了物理层、数据链路层。而TCP/IP协议应该属于网络层和传输层。所以串口转TCP/IP并不准确。以太网属于物理层和数据链路层,所以串口转以太网更加准确。由于目前在以太网之上运行的协议多半是TCP/IP协议,所以串口转以太网也可以说成是串口转TCP/IP。
3.串口转网口关键技术一:TCP/IP的工作模式问题
串口转以太网,并不是简单物理层和数据链路层的转化。由于串口协议本身不具有网络层和传输层,串口转以太网,实际是将串口的数据作为TCP/IP的应用层数据,用TCP/IP封装传输的方式。TCP/IP的应用层数据是TCP/IP所要传送的真正有效的数据。例如用户通过socket的recv()和send()函数接收和发送的实际是应用层数据。这样通过串口转TCP/IP用户就可以用recv()和send()函数收发串口数据了。但是TCP/IP并不只是recv()和send()这么简单,根据工作模式的不同,它关系到连接、关闭、监听等,这是串口转网口后需要增加处理的部分。TCP/IP的工作模式可以分为:TCP服务端模式(TCP Server)、TCP客户端模式(TCP Client)、UDP模式。
UDP模式:UDP模式是基于非连接的模式,只要有数据发送即可发送,不需要事先连接。所以这种模式更加地接近于串口的通信方式。但是UDP协议无法保证数据不丢失,容易产生误码。
TCP模式:TCP模式采用数据可靠传输机制,所以可以保证数据基本不误码、不丢失。在TCP通信中,必然是由通信的两端构成,其中一方是TCP客户端,一方是TCP服务端。TCP客户端和TCP服务端的概念可以用电话来类比。TCP客户端是打电话的人,而TCP服务端是接电话的人。
如何选择TCP/IP的工作模式?
TCP与UDP的选择:尽量选择TCP模式,特别是经过internet的大数据量传输,udp容易误码和丢失。
选择TCP客户端还是TCP服务器端:请遵循以下原则:原则一:发起数据发送的一方应该选择为客户端。例如一个数据采集系统,采集终端应该为客户端。这是因为当TCP连接断开的情况下,客户端能够在需要发送数据的时候主动建立连接。而TCP服务端,只能够被动地接受连接,使得数据无法发送出去。原则二:IP或者域名固定的一方为服务器端。例如在有多个数据采集终端,而只有一个中心服务器的情况下,中心服务器应该为服务端。这是因为,中心服务器的IP或域名一般是固定的,而采集终端的IP是不断增加和变化的。中心服务器难以记住所有的采集终端的IP,所以也难以发起连接;而采集终端寻找中央服务器就比较容易。
4.串口转网口关键技术二:串口分帧技术
串口数据是可以连续不断发送的,而以太网数据则是以数据包为单位发送的。这样就关系到将多长的串口数据打包后作为一个以太网数据包发送的问题。
数据包长度:以太网数据包最长1500多字节,所以在串口转网口转发器收到1500字节后必须将其打包发送。用户可以设定这个数据包长度上限。
数据包间隔:除了数据包长度作为串口分帧的规则外,一个更为符合逻辑的方法是通过数据包间隔。当串口转TCP/IP转发器发现的串口数据流中出现了T毫秒的空闲时间时,则认为之前收到的串口数据可以作为一个以太网数据包发送了。这里的T就是用户设定的数据包间隔。
5.串口转网口关键技术三:9位技术
以太网数据是以字节Byte计算的每个字节都是8位,但是串口数据则有可能出现9位,第9位常常用于区分是地址帧还是数据帧,1表示地址帧0表示数据帧。那么在当串口转化为以太网之后,如何将第9位也传送出去就成了一个关键技术。
在众多的串口转网口方案中都是将第9位直接舍弃的,目前据了解上海卓岚信息科技的方案具有快速地适应9位的功能,其实现方法中采用了称之为RealCom的协议。由于增加了第9位,所以串口数据不能够直接透明地转化为TCP/IP应用层数据,realcom 协议将串口数据打包之后整个作为TCP/IP的应用数据传输。这样可以在realcom协议的协议头部加入该数据包的9位是1还是0的信息,从而实现了9位传输技术。
浅谈串口转以太网模块
一、什么是串口转以太网模块?
串口转以太网模块又叫做串口联网模块、TCP模块、物联网模块、单片机上网模块、嵌入式串口服务器模块等,是一种网络通讯接口转换设备,实现单片机的TTL串口电平通讯转换成TCP/IP网络通讯,并实现双向数据透明传输。利用串口转以太网i模块,为嵌入式系统通过以太网传输数据提供了快速的解决方案,用户不需要具体的网络知识就可以轻松的将单片机、串口设备联网,从而实现远程数据采集、远程控制等智能化系统的搭建。
有人串口转以太网模块分为:M0系列、M4系列、超级网口系列。
M0系列是商业级串口联网模块、遵循功能简单、可靠、价格合理;
M4系列工业级、多功能、多串口、高性能;
超级网口系列将模块的功能封装到网口中。
K2采用M0系列内核,是简单可靠的商用级模块;
K3的定位是工业级,采用M4系列的TI内核,继承了 M4系列的成熟扎实的透传功能,为数传稳定性提供保障。
根据接口类型分为:插针式、贴片式;
功能支持:
(1)虚拟串口联网模块:模块搭配虚拟串口软件,可以实现不更改原串口软件的前提下,与232/485通讯的系统无缝融合,转换为网络甚至远程通讯;
(2)云串口联网模块:模块搭配有人D2D点对点云服务平台,实现PC到模块、模块到模块的跨网络数据传输,用户无需做路由器端口映射和动态域名,且更稳定可靠;
二、串口转以太网模块厂家
有人物联网是专业生产嵌入式、工业级串口转以太网模块的厂家。产品均经过高低温测试,拥有CE、FCC国际认证。有人物联网提供应用于远程控制、数据采集的整体解决方案,包括电脑端、网页端、手机APP、服务器、硬件各个平台定制化服务。
三、串口转以太网模块图片
四、串口转以太网模块选型
串口转以太网模块系列:
1.实现串口转有线以太网,支持D2D转发和自动虚拟串口;
2.所有产品型号以“USR-TCP232-”开头,以下省略;(超级网口系列除外,开头为"USR-")。
系列 | 型号 | 功能 | 特点 |
超级网口系列特点:1.单串口转以太网模块;2.小体积网口一体外壳; | K2 | UART转以太网 | 商业级,多功能,性价比 |
K3 | UART转以太网 | 工业级,多功能,高性能,Cortex-M4内核 | |
串口转以太网模块 M4系列特点:1.多串口服务器,多串口可同时使用;2.支持:DHCP、内置网页、域名解析;3.Cotex-M4内核,主频120MHz,高端性能,更强更可靠,工业级温度 ; | E2 | UART转以太网 | 双串口服务器,插针式,兼容-T引脚 |
ED2 | UART转以太网 | 三串口服务器,插针式,引脚兼容ZLG产品 |
五、串口转以太网模块应用领域
工业数据传输、安防监控、物联网、公共安防、工业自动化、智能家居、电力控制、环境监测、智能农业、门禁考勤系统、POS系统、售饭系统、楼宇自动化系统、电力监控、自助银行系统、电信机房监控等。
六、使用方法
应用框图如下图所示
七、串口以太网常见问题
由于用户在使用有人物联网的串口以太网模块的时候,总是会遇到一些问题。本文从帮助用户快速运用有人串口以太网模块的角度出发,整理了几个用户在使用串口以太网模块的过程中遇到的常见问题,供用户参考。
1. 串口以太网模块能跨网关吗?
串口以太网模块可以跨越网关工作于外网,跨越路由器和交换机与公网的服务器进行通讯,实现远程的数据采集和控制。
2. 网络到串口转换是双向的吗?
串口以太网模块实现的网络到串口的转换是双向全双工的,和普通串口一样,收发可同时进行。
3. 不能通过串口设置,串口通讯乱码,不能通讯
请注意串口以太网模块是TTL电平,可以直接和单片机IO口连接,如果要和计算机连接需要使用RS232转TTL转换器,注意模块和单片机连接时需要交叉,即是RXD接TXD,TXD接RXD。使用串口方式配置串口以太网模块,需要将CFG引脚接地后进行,网络方式配置需要将串口以太网模块接到计算机同一个局域网内,或将串口以太网模块直接与计算机相连。
4. 配置后串口以太网模块会保存配置吗?
串口以太网模块上有EEPROM芯片,模块会保存设置,如果断电,下次启动将按保存的设置工作,不需要重复配置,用户CPU也无需对串口以太网模块进行任何的初始化操作,在串口以太网模块的网络建立连接前的数据会缓存在模块内等到网络连接时发送出去。
八、串口服务器和串口转以太网模块的区别
现在市面上的串口转以太网产品主要有两种,即串口服务器和串口转以太网模块。用户在开始项目前,首先需要考虑的是选择串口服务器还是串口转以太网模块。
USR-TCP232-300
USR-TCP232-24
上图所示,第一个是串口服务器,第二个为串口转以太网模块。其差别如下:
从外观上 | 串口服务器是串口转以太网模块加一个外壳,该外壳具电磁隔离的功能。USR-TCP232-300串口服务器的内置串口转以太网模块就是USR-TCP232-24。 |
从体积上 | 串口转以太网模块的大小在44×32×15mm左右,串口服务器的在95×84×25mm左右。 |
从价格上 | 串口转以太网模块的价格比串口服务器的价格便宜一半、,用户一旦通过测试,会大批量地采购。串口服务器USR-TCP232-300的售价为169元,而串口转以太网模块USR-TCP232-24的售价为89元。 |
从功能上 | 串口服务器和串口转以太网模块的功能完全一样。 |
总而言之,如果你的串口设备是一个现成的设备,而且设备机壳无法打开并放入模块的,那么你可以选择串口服务器,它可以外置使用。但是价格相对较高。如果你是该串口设备的厂家,具有重新组装设计设备的能力,且用量较大,需要降低成本的,可以考虑采用串口转以太网模块,并将该模块内置到你的设备内部。