发明内容
本发明提供了一种电口模块的数据读写方法和系统,以解决目前主机通过金手指上的I2C接口读取电口模块中数据的方案中,主机对PHY芯片的访问受限,通用性较差的问题。
为了解决上述问题,本发明提供了一种电口模块的数据读写方法,其特征在于,所述电口模块包括:物理层PHY芯片、微控制单元MCU和金手指,所述PHY芯片与所述MCU通信,所述MCU通过所述金手指与主机通信;
所述方法包括:
所述MCU读取所述PHY芯片内部的寄存器中的数据;
所述MCU将所述PHY芯片内部的寄存器中的数据映射到所述MCU内部预设的映射寄存器中;
所述MCU将所述映射寄存器中的数据通过所述金手指发送至所述主机。
优选地,所述PHY芯片上设有管理数据输入输出MDIO接口,所述MCU上设有输入输出I/O接口,所述金手指上设有集成电路总线I2C接口;所述PHY芯片通过所述MDIO接口、以及所述I/O接口与所述MCU通信,所述MCU通过所述金手指上的I2C接口与所述主机通信。
优选地,所述PHY芯片内部的寄存器包括介质无关接口MII寄存器,
所述MCU读取所述PHY芯片内部的寄存器中的数据的步骤包括:
所述MCU通过所述I/O接口以及MDIO接口、按照MDIO普通帧的结构读取所述PHY芯片内部的MII寄存器中的数据;
所述MCU将所述PHY芯片内部的寄存器中的数据映射到所述MCU内部预设的映射寄存器中的步骤包括:
所述MCU按照预先设置的MII寄存器地址和映射寄存器地址的映射关系,分别将所述MII寄存器中的数据存储至所述MII寄存器对应的映射寄存器中。
优选地,所述MCU还设有映射区接口,
所述MCU将所述映射寄存器中的数据通过所述金手指发送至所述主机的步骤包括:
所述MCU通过所述映射区接口、以及所述金手指上的I2C接口接收所述主机发送的读取信息,所述读取信息包括读取的MII寄存器地址;
所述MCU查找与所述读取的MII寄存器地址相对应的映射寄存器地址,并读取所述映射寄存器中的数据,将所述映射寄存器中的数据通过所述金手指上的I2C接口发送至所述主机。
优选地,所述MCU还设有通用读写接口,所述方法还包括:
所述MCU通过所述通用读写接口、以及所述金手指上的I2C接口接收主机发送的第一写入信息,并将所述第一写入信息写入内部预设的通用读写寄存器中;所述第一写入信息包括写入的MII寄存器地址和写入所述MII寄存器中的数据;
所述MCU读取所述通用读写寄存器中的第一写入信息,并通过所述I/O接口以及MDIO接口、按照MDIO普通帧的结构将所述第一写入信息中的数据写入PHY芯片中与所述写入的MII寄存器地址对应的MII寄存器中。
优选地,所述MCU还设有通用读写接口,所述PHY芯片内部的寄存器包括MDIO管理装置MMD寄存器;所述方法还包括:
所述MCU通过所述通用读写接口、以及所述金手指接收主机发送的第二写入信息,并将所述第二写入信息写入内部预设的通用读写寄存器中;所述第二写入信息包括写入的MMD寄存器地址和写入所述MMD寄存器中的数据;
所述MCU读取所述通用读写寄存器中的第二写入信息,并通过所述I/O接口以及MDIO接口、按照MDIO扩展帧的结构将所述第二写入信息中的数据写入PHY芯片中与所述写入的MMD寄存器地址对应的MMD寄存器中。
根据本发明的另一方面,还提供了一种电口模块的数据读写系统,其特征在于,所述电口模块包括:物理层PHY芯片、微控制单元MCU和金手指,所述PHY芯片与所述MCU通信,所述MCU通过所述金手指与主机通信;
所述MCU包括:
读取模块,用于读取所述PHY芯片内部的寄存器中的数据;
映射模块,用于将所述PHY芯片内部的寄存器中的数据映射到所述MCU内部预设的映射寄存器中;
发送模块,用于将所述映射寄存器中的数据通过所述金手指发送至所述主机。
优选地,所述PHY芯片上设有管理数据输入输出MDIO接口,所述MCU上设有输入输出I/O接口,所述金手指上设有内部整合电路I2C接口;所述PHY芯片通过所述MDIO接口、以及所述I/O接口与所述MCU通信,所述MCU通过所述金手指上的I2C接口与所述主机通信。
优选地,所述PHY芯片内部的寄存器包括介质无关接口MII寄存器,
所述读取模块,具体用于通过所述I/O接口以及MDIO接口、按照MDIO普通帧的结构读取所述PHY芯片内部的MII寄存器中的数据;
所述映射模块,具体用于按照预先设置的MII寄存器地址和映射寄存器地址的映射关系,分别将所述MII寄存器中的数据存储至所述MII寄存器对应的映射寄存器中。
优选地,所述MCU还设有映射区接口,所述发送模块包括:
读取信息接收子模块,用于通过所述映射区接口、以及所述金手指上的I2C接口接收所述主机发送的读取信息,所述读取信息包括读取的MII寄存器地址;
查找读取子模块,用于查找与所述读取的MII寄存器地址相对应的映射寄存器地址,并读取所述映射寄存器中的数据,将所述映射寄存器中的数据通过所述金手指上的I2C接口发送至所述主机。
与现有技术相比,本发明实施例包括以下优点:
首先,本发明在电口模块中设置了PHY芯片、MCU和金手指,其中所述PHY芯片与所述MCU通信,所述MCU通过所述金手指与主机通信。在对电口模块内PHY芯片中的数据进行读取时,首先可以通过MCU读取PHY芯片内部的寄存器中的数据,并将所述寄存器中的数据映射到所述MCU内部预设的映射寄存器中;然后所述MCU可以将所述映射寄存器中的数据通过所述金手指发送至所述主机。因此,本发明实施例中主机并不是直接通过I2C接口读取电口模块内PHY芯片中的数据,而是通过MCU进行数据的映射,再读取MCU中的数据,MCU对PHY芯片的访问接口更加灵活,并不限定于对只能通过I2C接口访问的寄存器的数据读取,所以本发明的通用性较高。
其次,本发明中还可以根据不同需求设定PHY芯片中各寄存器的值,从而满足不同的客户需求,开发不同方案的产品。
再次,本发明中还可以实现对PHY芯片的状态进行检测,并与主机交互,针对不同的状态执行相应的操作。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
目前的电口模块都采用集成度很高的PHY芯片作为开发方案,针对PHY芯片外围做简单的电路设计,并提供I2C接口使主机能够通过金手指读取芯片内部分寄存器的信息。但是,PHY芯片内部只有少数寄存器可以通过I2C接口访问,并且主机无法通过I2C接口对PHY芯片内部寄存器的值进行配置,因此,上述电口模块的设计方案使得主机对PHY芯片的访问受限,通用性较差。
本发明针对上述问题,提出了一种电口模块的数据读写方法和系统,本发明中的电口模块可以为SFP-T模块,当然也可以为其他形式的电口模块。下面通过以下各个实施例进行详细说明。
实施例一:
本发明实施例一中,电口模块可以包括:PHY芯片、MCU(Micro ControlUnit,微控制单元)和金手指。
物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口,物理层的芯片称为PHY芯片。本发明实施例中所述PHY芯片内部可以包括多个寄存器存储数据,对电口模块的数据读写操作即为对所述PHY芯片内部寄存器的数据读写操作。
MCU是指随着大规模集成电路的出现及其发展,将计算机的CPU(Central Processing Unit,中央处理器)、RAM(Random Access Memory,随机存储器)、ROM(Read Only Memory,只读存储器)、定时计数器和多种I/O(Input/Output,输入输出)接口集成在一片芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。本发明实施例中所述MCU一方面可以与所述PHY芯片通信,另一方面还可以通过所述金手指与主机通信,起到在PHY芯片和主机之间中转的作用。
参照图1,示出了本发明实施例一的一种电口模块的数据读写方法的流程图,该方法具体可以包括以下步骤:
步骤101,所述MCU读取所述PHY芯片内部的寄存器中的数据。
本发明实施例中,所述MCU可以与所述PHY芯片通信,通过所述MCU可以读取所述PHY芯片内部的寄存器中的数据。
步骤102,所述MCU将所述PHY芯片内部的寄存器中的数据映射到所述MCU内部预设的映射寄存器中。
在MCU中可以预先设置映射寄存器,在读取到所述PHY芯片内部的寄存器中的数据之后,MCU即可将所述寄存器中的数据映射到所述MCU内部预设的映射寄存器中。
因此后续主机即可通过读取所述MCU中的映射寄存器中的数据读取所述PHY芯片的内部寄存器中的数据,而无需直接通过I2C接口读取PHY芯片的内部寄存器中的数据。
步骤103,所述MCU将所述映射寄存器中的数据通过所述金手指发送至所述主机。
当主机需要读取PHY芯片的内部寄存器中的数据时,所述MCU即可从所述映射寄存器中获取主机需要读取的数据,并将所述映射寄存器中的数据通过所述金手指发送至所述主机。
本发明实施例中主机并不是直接通过I2C接口读取电口模块内PHY芯片中的数据,而是通过MCU进行数据的映射,再读取MCU中的数据,MCU对PHY芯片的访问接口更加灵活,并不限定于对只能通过I2C接口访问的寄存器的数据读取,所以本发明实施例的通用性较高。
实施例二:
参照图2,示出了本发明实施例二的一种电口模块的结构框图,该电口模块可以包括:PHY芯片201、MCU202、金手指203和EEPROM(ElectricallyErasable Programmable Read-Only Memory,电可擦可编程只读存储器)204。如图2所示,PHY芯片和MCU之间通过MDIO(Management DataInput/Output,管理数据输入输出)总线连接,MCU和金手指之间通过I2C总线连接,EEPROM和金手指之间通过I2C总线连接。PHY芯片通过MDIO接口协议来访问,主机通过金手指上的I2C接口与MCU通信,同时通过金手指上的I2C接口与EEPROM通信。其中MCU的I2C从机地址为ACh,EEPROM的I2C从机地址为A0h。
本发明实施例中以MCU为C8051F300单片机(对于单片机的选取,主要从两方面考虑:成本和性能。该单片机价格相对低廉,并且对于实现本发明实施例的软件功能足够,并且该单片机为C8051内核,开发也相对容易)、PHY芯片为AR8033(该芯片提供了MDIO接口)、以及EEPROM为AT24C02组成的硬件电路为例,电口模块与主机的接口符合金手指设计规范。
参照图3,示出了本发明实施例二的一种电口模块的数据读写方法的流程图,该方法具体可以包括以下步骤:
步骤301,所述MCU读取所述PHY芯片内部的寄存器中的数据。
本发明实施例中,要实现主机对PHY芯片的访问,可以转换成MCU对PHY芯片的访问,然后再将MCU对PHY芯片的访问结果返回给主机。所述PHY芯片内部的寄存器可以包括MII(Media Independent Interface,介质无关接口)寄存器和MMD(MDIO Manageable Device,MDIO管理装置)寄存器,对电口模块的数据读写操作即可以为对PHY芯片中的MII寄存器和MMD寄存器的数据读写操作。
PHY芯片(AR8033)在通信接口上,提供了MDIO接口。MDIO接口是一种简单的双线串行接口,将管理器件(如MAC(medium access control,介质访问控制)控制器、微处理器)与具备管理功能的收发器(如多端口G比特以太网收发器或10GbE XAUI收发器)相连接,从而控制收发器并从收发器收集状态信息。其中可收集的信息包括链接状态、传输速度与选择、断电、低功率休眠状态、TX(发送)/RX(接收)模式选择、自动协商控制、环回模式控制等。除了拥有IEEE要求的功能之外,收发器厂商还可添加更多的信息收集功能。
本发明实施例中,所述MDIO接口包括MDC(Management Data Clock,管理数据时钟)管脚和MDIO管脚。MDC是管理数据的时钟输入,最高速率可达8.3MHz;MDIO是管理数据的输入输出双向接口,数据是与MDC时钟同步的。
MDIO的通信帧可以包括MDIO普通帧,图4为MDIO普通帧的结构示意图,其中MDC为MDC管脚处的时钟信号,MDIO为MDIO管脚处的普通帧信号,MDIO普通帧信号的描述如下:
(1)MDIO接口在没有传输数据的空闲状态(IDLE),MDIO管脚处于高阻态;
(2)MDIO管脚出现一个32bit高位的前导码PRE(1...1);
(3)MDIO管脚出现一个2bit数据的开始标识码ST(01),一个读/写操作开始;
(4)MDIO管脚出现一个2bit数据的OP码来标识是读(10)还是写操作(01);
(5)MDIO管脚出现一个5bit数据的(PHY ADD[4:0])来标识PHY芯片的地址;
(6)MDIO管脚出现一个5bit数据的(PHY REG ADD[4:0])来标识PHY芯片的寄存器地址;
(7)MDIO管脚需要2个时钟(TA)的访问时间;
(8)MDIO管脚串行读出/写入16bit的寄存器数据(DATA);
(9)MDIO接口恢复成IDLE状态,同时MDIO管脚进入高阻状态。
由于MDIO普通帧结构对PHY芯片寄存器的访问数量有限(32个寄存器地址),因此MDIO通信帧还可以包括MDIO扩展帧,MDIO扩展帧的结构与MDIO普通帧的结构类似。MDIO扩展帧是采用两个连续的MDIO普通帧组合而成,分别用于发送(接收)16位的扩展地址和16位的数据,地址和数据通过OP码来区分,扩展帧的ST码为(00),与普通帧的(01)不同。
例如,MDIO扩展帧的帧结构可以如表一所示,表一示出了4种结构,其中第1种为地址,后面3种为数据。
表一
对于PHY芯片中的不同寄存器访问方式也不同,主要涉及以上两种方式,其中MII寄存器采用MDIO普通帧结构访问,MMD寄存器采用MDIO扩展帧结构访问。在802.3协议标准中,对MMD寄存器的访问,同时可以通过MII寄存器的0x0D和0x0E寄存器来实现,即在读取MMD寄存器中的数据时,首先主机可以通过MCU将读取的MMD寄存器的地址发送给PHY芯片,PHY芯片可以将读取的MMD寄存器中的数据存储到MII寄存器的0x0D和0x0E寄存器中,然后再通过MCU读取MII寄存器中的数据即可。因此本发明实施例中在提供访问接口时,MCU可以只读取MII寄存器中的数据。
所述MCU上设有I/O接口,MCU可以通过两个普通I/O接口来模拟MDC管脚和MDIO管脚的通信时序,即所述I/O接口可以包括模拟MDC管脚和模拟MDIO管脚,通过控制MDC管脚和模拟MDIO管脚的输出电平即可实现时钟和数据的传输,模拟出MDIO通信帧的结构。其中所述PHY芯片上的MDC管脚和MCU上的模拟MDC管脚连接,所述PHY芯片上的MDIO管脚和MCU上的模拟MDIO管脚连接,因此,所述PHY芯片即可以通过所述MDIO接口、以及所述I/O接口实现与所述MCU的通信。
在本发明的一种优选实施例中,该步骤301可以包括:所述MCU通过所述I/O接口以及MDIO接口、按照MDIO普通帧的结构读取所述PHY芯片内部的MII寄存器中的数据。
所述MCU通过所述I/O接口以及MDIO接口、按照MDIO普通帧的结构读取所述PHY芯片内部的MII寄存器中的数据的步骤可以包括以下子步骤:
a1,所述MCU按照所述MDIO普通帧采用的MDC信号结构设置所述模拟MDC管脚的电平,生成模拟MDC信号输出至所述MDC管脚;
a2,所述MCU按照所述模拟MDC信号以及所述MDIO普通帧采用的MDIO信号结构设置所述模拟MDIO管脚的电平,生成模拟MDIO信号输出至所述MDIO管脚;
a3,所述MCU接收所述PHY芯片通过所述MDIO管脚输出的MDIO信号,获取所述MDIO信号中的数据。所述数据为所述PHY芯片按照所述模拟MDIO信号中的MII寄存器地址查找对应的MII寄存器,并从查找到的MII寄存器中获取的数据。
MCU输出至所述MDIO管脚的模拟MDIO信号中包括了MCU要读取的MII寄存器的地址,PHY芯片按照所述模拟MDIO信号中的MII寄存器地址查找对应的MII寄存器,并从查找到的MII寄存器中获取的数据,然后将所述数据填入PHY芯片输出给MCU的MDIO信号中,MCU即可获取所述MDIO信号中的数据。
按照图4所示的MDIO普通帧的结构,该读取过程可以描述如下:
1、将MDIO接口设置为空闲状态(IDLE),MDIO管脚处于高阻态,即模拟MDIO管脚设置为漏极开路输出;
2、发送32个前导码。模拟MDC管脚输出高电平上升沿时模拟MDIO管脚输出高电平,连续执行32次;
3、发送ST码。普通的MDIO读操作帧格式对应ST码为01,模拟MDC管脚输出高电平上升沿时模拟MDIO管脚依次输出一个低电平和一个高电平;
4、发送OP码。普通的MDIO读操作帧格式对应OP码为10,模拟MDC管脚输出高电平上升沿时模拟MDIO管脚依次输出一个高电平和一个低电平;
5、发送PHY地址。默认PHY地址为0,模拟MDC管脚输出高电平上升沿时模拟MDIO管脚依次输出5个低电平;
6、发送PHY寄存器地址。根据MCU要读取的MII寄存器地址,在模拟MDC管脚和MDIO管脚上输出对应的5位寄存器地址二进制位,高位在前;如读取寄存器地址0x1E,则模拟MDC管脚输出高电平上升沿时模拟MDIO管脚依次输出4个高电平和一个低电平;
7、发送TA码。模拟MDIO管脚两个时钟周期的高阻态输出,等待PHY芯片的响应;
8、读入16字节的数据。模拟MDC管脚连续输出16个时钟,并且在MDC管脚高电平上升沿时,读取MDIO管脚的电平状态,作为数据的输出二进制码,16位数据输出高位在前依次读入;
9、将MDIO接口设置为空闲状态(IDLE),同时MDIO管脚进入高阻状态。重复上述操作。
对应的程序功能函数代码如下:
步骤302,所述MCU将所述PHY芯片内部的寄存器中的数据映射到所述MCU内部预设的映射寄存器中。
为了保存MCU从PHY芯片中读取的寄存器数据,在MCU的内存中,可以预先设置映射寄存器(例如可以为包含32个元素的无符号整型双字节数组)。MCU可以循环读取PHY芯片内的MII寄存器(32个)中的数据,然后将所述PHY芯片内部的MII寄存器中的数据映射到所述MCU内部预设的映射寄存器中。
本发明实施例中,为了完成数据映射,可以预先设置MII寄存器地址和映射寄存器地址的映射关系,因此,该步骤302可以包括:所述MCU按照预先设置的MII寄存器地址和映射寄存器地址的映射关系,分别将所述MII寄存器中的数据存储至所述MII寄存器对应的映射寄存器中。
步骤303,所述MCU将所述映射寄存器中的数据通过所述金手指发送至所述主机。
本发明实施例中,所述金手指上设有I2C接口,所述MCU通过所述金手指上的I2C接口与所述主机通信。针对MCU中的映射寄存器,本发明实施例还可以在MCU中设置映射区接口(该映射区接口为软件接口,对应映射寄存器),因此主机可以通过金手指上的I2C接口和所述MCU上的映射区接口读取所述MCU内部的映射寄存器中的数据。
在本发明的一种优选实施例中,该步骤303可以包括以下子步骤:
b1,所述MCU通过所述映射区接口、以及所述金手指上的I2C接口接收所述主机发送的读取信息,所述读取信息包括读取的MII寄存器地址;
b2,所述MCU查找与所述读取的MII寄存器地址相对应的映射寄存器地址,并读取所述映射寄存器中的数据,将所述映射寄存器中的数据通过所述金手指上的I2C接口发送至所述主机。
由于PHY芯片的MII寄存器地址为5位(单字节),而数据为16位(双字节),因此主机对MCU的I2C操作方式为单字节地址双字节数据访问方式,所以在MCU中,需要将32个元素的双字节无符号整型数组,映射到32个单字节I2C子地址中(0x00~0x1F),MCU在接收或者返回主机数据时,都以双字节形式处理。
上述步骤301-步骤303描述的是主机读取PHY芯片内部寄存器中的数据的过程,本发明实施例中主机还可以通过MCU向所述PHY芯片的内部寄存器写入数据。为了实现数据写入的功能,本发明实施例中还可以在MCU上设置通用读写接口(该通用读写接口为软件接口)和通用读写寄存器,通用读写接口与通用读写寄存器相对应,主机可以通过金手指上的I2C接口和MCU上的通用读写接口将要写入PHY芯片内的数据写入MCU中的通用读写寄存器中,再通过MCU将该数据写入PHY芯片对应的寄存器中。
所述通用读写接口的地址可以定义如下:
ACh.0x40:如果将数据写入MII寄存器中,则该地址存储写入的MII寄存器的地址;如果将数据写入MMD寄存器中,则该地址存储偏移量(Offset值,例如0x1F);
ACh.0x41~ACh.0x42:如果将数据写入MII寄存器中,则该地址中无数据;如果将数据写入MMD寄存器中,则该地址存储写入的MMD寄存器的地址;
ACh.0x43~ACh.0x44:该地址存储写入MII寄存器中或MMD寄存器中的数据;
ACh.0x45:该地址标识读写标识位,例如“1”表示读、“0”表示写;
MCU可以周期检测ACh.0x45地址的读写标识位,当主机触发对PHY芯片内寄存器的写操作时,将对应的写入的寄存器的地址和写入的数据存储至上述ACh.0x40~ACh.0x44地址中(根据MII寄存器和MMD寄存器的不同写入的方式不同),然后MCU会读取ACh.0x40~ACh.0x44地址中存储的信息,在与PHY芯片交互。
因此,本发明实施例所述的电口模块的数据读写方法还可以包括以下步骤:
步骤304,所述MCU通过所述通用读写接口、以及所述金手指上的I2C接口接收主机发送的第一写入信息,并将所述第一写入信息写入内部预设的通用读写寄存器中。
其中,所述第一写入信息可以包括写入的MII寄存器地址和写入所述MII寄存器中的数据。
步骤305,所述MCU读取所述通用读写寄存器中的第一写入信息,并通过所述I/O接口以及MDIO接口、按照MDIO普通帧的结构将所述第一写入信息中的数据写入PHY芯片中与所述写入的MII寄存器地址对应的MII寄存器中。
MCU向MII寄存器写入数据时,与MCU从MII寄存器中读取数据时发送模拟MDC信号和模拟MDIO信号的方式相同,MCU发送至PHY芯片的模拟MDIO信号中包括了写入的MII寄存器地址(通过MDIO普通帧中的PHY REG ADD[4:0]字段)和写入所述MII寄存器中的数据(通过MDIO普通帧中的DATA字段)。对于具体的过程参照上述步骤301的相关描述即可,本发明实施例在此不再详细论述。
步骤306,所述MCU通过所述通用读写接口、以及所述金手指接收主机发送的第二写入信息,并将所述第二写入信息写入内部预设的通用读写寄存器中。
其中,所述第二写入信息包括写入的MMD寄存器地址和写入所述MMD寄存器中的数据。
步骤307,所述MCU读取所述通用读写寄存器中的第二写入信息,并通过所述I/O接口以及MDIO接口、按照MDIO扩展帧的结构将所述第二写入信息中的数据写入PHY芯片中与所述写入的MMD寄存器地址对应的MMD寄存器中。
本发明实施例中,对于MMD寄存器的写入,MCU可以直接采用MDIO扩展帧的结构生成MDIO信号,并将MDIO信号发送至PHY芯片,以提高处理速度。MMD寄存器的数据和地址均是16位,因此MDIO扩展帧可以采用两个MDIO普通帧组合而成,分别用于存储MMD寄存器的数据和地址。
MCU向MMD寄存器写入数据时,对于一次写入过程MCU将生成两个模拟MDIO信号,其中一个模拟MDIO信号中可以包括写入的MMD寄存器地址(通过MDIO普通帧中的DATA字段),另一个模拟MDIO信号中可以包括写入所述MMD寄存器中的数据(通过MDIO普通帧中的DATA字段)。对于地址和数据可以通过扩展帧中两个普通帧内的OP码进行区分,在扩展帧中还可以包括所述MMD寄存器的偏移量(通过MDIO普通帧中的PHY REG ADD[4:0]字段)。对于具体的过程参照上述步骤301的相关描述即可,本发明实施例在此不再详细论述。
上述步骤301-步骤303描述的是主机读取PHY芯片内部寄存器中的数据的过程,步骤304-步骤305描述的是主机向MII寄存器写入数据的过程,步骤306-步骤307描述的是主机向MMD寄存器写入数据的过程,这三个过程并不限定于上述执行顺序,根据实际情况执行上述各个过程即可。
在本发明的一种优选实施例中,MCU在接收到主机发送的读取信息之后,查找与所述读取的MII寄存器地址相对应的映射寄存器地址之前,还可以判断所述读取新此种包括的读取的MII寄存器地址是否小于等于所述PHY芯片中MII寄存器的最大地址;若是,则执行所述MCU查找与所述读取的MII寄存器地址相对应的映射寄存器地址的步骤;若否,则说明此时不是针对PHY芯片内部的MII寄存器进行读取,而是读取MCU内部的自定义寄存器,此时所述读取的MII寄存器地址即为读取的MCU内部自定义寄存器的地址,MCU即可将主机访问的自定义寄存器中的数据通过金手指上的I2C接口发送给主机。
MCU在接收到主机发送的第一写入信息之后,将所述第一写入信息写入内部预设的通用读写寄存器中之前,也可以判断所述写入的MII寄存器地址是否小于等于所述PHY芯片中MII寄存器的最大地址;若是,则执行所述将所述第一写入信息写入内部预设的通用读写寄存器中的步骤;若否,则说明此时不是针对PHY芯片内部的MII寄存器进行写入,而是要写入MCU内部的自定义寄存器,此时所述写入的MII寄存器地址即为写入的MCU内部自定义寄存器的地址,MCU即可根据所述第一写入信息将主机要写入的数据写入对应的内部自定义寄存器中。
对于读取MCU内部的自定义寄存器和写入MCU内部的自定义寄存器的过程本发明实施例在此不再详细论述。
本发明实施例中,还可以实现对PHY芯片的状态进行检测,并与主机交互,针对不同的状态执行相应的操作,因此,本发明实施例中还可以包括以下各个过程:
所述MCU检测所述金手指上的发射端禁用Tx-Disable引脚是否接收到主机发送的Tx-Disable信息;若是,则将所述PHY芯片的复位RESET管脚设置为低电平,关闭所述PHY芯片的发射端;若否,则不设置所述PHY芯片的复位RESET管脚。
本发明实施例中还可以MCU还可以对EEPROM的写权限进行控制,对EEPROM进行写保护,保证只在工程模式打开,防止用户误操作。可以定义MCU中的一个控制寄存器(可以为任何一个寄存器),通过该控制寄存器的值设置EEPROM的写权限。首先所述MCU读取内部预设的控制寄存器中的数据;在所述控制寄存器中的数据为1时,将所述EEPROM的读写控制管脚设置为高电平,禁用所述EEPROM的写权限;在所述控制寄存器中的数据为0时,将所述EEPROM的读写控制管脚设置为低电平,开启所述EEPROM的写权限。
本发明实施例中,所述MII寄存器包括特定寄存器(例如地址为0x1F的寄存器),所述金手指还包括LOS管脚,所述方法还可以包括:所述MCU通过所述I/O接口、以及所述MDIO接口读取所述特定寄存器中的数据;在所述特定寄存器中的数据的指定位(可以为所述数据中的任意一个bit为)为1时,将所述LOS管脚设置为高电平,通知所述主机信号丢失;在所述特定寄存器中的数据的指定位为0时,将所述LOS管脚设置为低电平,通知所述主机信号正常。
首先,本发明实施例中,将主机对PHY芯片的访问转换成MCU对PHY芯片的访问,MCU对PHY芯片的访问接口更加灵活,通用性较高;其次,本发明实施例还可以根据不同需求设定PHY芯片中各寄存器的值,从而满足不同的客户需求,开发不同方案的产品;再次,本发明实施例还可以实现对PHY芯片的状态进行检测,并与主机交互,针对不同的状态执行相应的操作。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
实施例三:
参照图5,示出了本发明实施例三的一种电口模块的数据读写系统的结构框图,所述电口模块可以包括:PHY芯片501、MCU502和金手指503,所述PHY芯片与所述MCU通信,所述MCU通过所述金手指与主机通信。
其中,所述MCU502可以包括:
读取模块5021,用于读取所述PHY芯片内部的寄存器中的数据;
其中,所述PHY芯片内部的寄存器包括MII寄存器和MMD寄存器。
映射模块5022,用于将所述PHY芯片内部的寄存器中的数据映射到所述MCU内部预设的映射寄存器中;
发送模块5023,用于将所述映射寄存器中的数据通过所述金手指发送至所述主机。
在本发明的一种优选实施例中,所述PHY芯片上设有MDIO接口,所述MCU上设有I/O接口,所述金手指上设有I2C接口;所述MDIO接口包括管理数据时钟MDC管脚和MDIO管脚,所述I/O接口包括模拟MDC管脚和模拟MDIO管脚,所述MDC管脚和模拟MDC管脚连接,所述MDIO管脚和模拟MDIO管脚连接。所述PHY芯片通过所述MDIO接口、以及所述I/O接口与所述MCU通信,所述MCU通过所述金手指上的I2C接口与所述主机通信。
所述读取模块,具体用于通过所述I/O接口以及MDIO接口、按照MDIO普通帧的结构读取所述PHY芯片内部的MII寄存器中的数据。
所述读取模块可以包括以下子模块:
第一生成子模块,用于按照所述MDIO普通帧采用的MDC信号结构设置所述模拟MDC管脚的电平,生成模拟MDC信号输出至所述MDC管脚;
第二生成子模块,用于按照所述模拟MDC信号以及所述MDIO普通帧采用的MDIO信号结构设置所述模拟MDIO管脚的电平,生成模拟MDIO信号输出至所述MDIO管脚;
接收获取子模块,用于接收所述PHY芯片通过所述MDIO管脚输出的MDIO信号,获取所述MDIO信号中的数据;所述数据为所述PHY芯片按照所述模拟MDIO信号中的MII寄存器地址查找对应的MII寄存器,并从查找到的MII寄存器中获取的数据。
所述映射模块,具体用于按照预先设置的MII寄存器地址和映射寄存器地址的映射关系,分别将所述MII寄存器中的数据存储至所述MII寄存器对应的映射寄存器中。
在本发明的一种优选实施例中,所述MCU还设有映射区接口,所述发送模块可以包括以下子模块:
读取信息接收子模块,用于通过所述映射区接口、以及所述金手指上的I2C接口接收所述主机发送的读取信息,所述读取信息包括读取的MII寄存器地址;
查找读取子模块,用于查找与所述读取的MII寄存器地址相对应的映射寄存器地址,并读取所述映射寄存器中的数据,将所述映射寄存器中的数据通过所述金手指上的I2C接口发送至所述主机。
本发明实施例中,主机还可以向PHY芯片内的寄存器写入数据,所述MCU还设有通用读写接口,主机可以通过金手指上的I2C接口与所述MCU上的通用读写接口与所述MCU进行交互。
所述MCU还可以包括以下模块:
第一接收模块,用于通过所述通用读写接口、以及所述金手指上的I2C接口接收主机发送的第一写入信息,并将所述第一写入信息写入内部预设的通用读写寄存器中;所述第一写入信息包括写入的MII寄存器地址和写入所述MII寄存器中的数据;
第一写入模块,用于读取所述通用读写寄存器中的第一写入信息,并通过所述I/O接口以及MDIO接口、按照MDIO普通帧的结构将所述第一写入信息中的数据写入PHY芯片中与所述写入的MII寄存器地址对应的MII寄存器中;
第二接收模块,用于通过所述通用读写接口、以及所述金手指上的I2C接口接收主机发送的第二写入信息,并将所述第二写入信息写入内部预设的通用读写寄存器中;所述第二写入信息包括写入的MMD寄存器地址和写入所述MMD寄存器中的数据;
第二写入模块,用于读取所述通用读写寄存器中的第二写入信息,并通过所述I/O接口以及MDIO接口、按照MDIO扩展帧的结构将所述第二写入信息中的数据写入PHY芯片中与所述写入的MMD寄存器地址对应的MMD寄存器中。
第一判断模块,用于在所述查找读取子模块查找与所述读取的MII寄存器地址相对应的映射寄存器地址之前,判断所述读取的MII寄存器地址是否小于等于所述PHY芯片中MII寄存器的最大地址;以及在所述第一判断模块的判断结果为是时,调用所述查找读取子模块。
第二判断模块,用于所述第一接收模块在将所述第一写入信息写入内部预设的通用读写寄存器中之前,判断所述写入的MII寄存器地址是否小于等于所述PHY芯片中MII寄存器的最大地址;以及在所述第二判断模块的判断结果为是时,调用所述第一接收模块。
本发明实施例中,还可以实现对PHY芯片的状态进行检测,并与主机交互,针对不同的状态执行相应的操作,所述MCU中还可以包括EEPROM。因此,所述MCU还可以包括以下模块:
检测模块,用于检测所述金手指上的发射端禁用Tx-Disable引脚是否接收到主机发送的Tx-Disable信息;
RESET设置模块,用于在检测模块的检测结果为是时,将所述PHY芯片的复位RESET管脚设置为低电平,关闭所述PHY芯片的发射端;
控制数据读取模块,用于读取内部预设的控制寄存器中的数据;
读写控制设置模块,用于在所述控制寄存器中的数据为1时,将所述EEPROM的读写控制管脚设置为高电平,禁用所述EEPROM的写权限;在所述控制寄存器中的数据为0时,将所述EEPROM的读写控制管脚设置为低电平,开启所述EEPROM的写权限。
特定数据读取模块,用于通过所述I/O接口、以及所述MDIO接口读取所述特定寄存器中的数据;
LOS设置模块,用于在所述特定寄存器中的数据的指定位为1时,将所述LOS管脚设置为高电平,通知所述主机信号丢失;在所述特定寄存器中的数据的指定位为0时,将所述LOS管脚设置为低电平,通知所述主机信号正常。
目前的电口模块实现方案PHY芯片集成度很高,基本不需要配置就可直接工作,但模块的功能扩展存在严重缺陷;本发明实施例采用MCU来控制PHY芯片的设计方案可以很好实现扩展功能,对PHY芯片的访问接口更加灵活,对主机的不同读写方式都可以兼容;目前的电口模块实现方案对PHY芯片工作状态没有进行检测和控制,本发明实施例采用MCU控制PHY芯片的方案能实现检测PHY芯片各种状态,并能与主机交互;本发明实施例可以根据客户的不同需求来设定不同的PHY芯片内部寄存器工作值,来满足客户的不同需求,快速开发出不同方案的产品。
对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本发明实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种电口模块的数据读写方法和系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。