CN109144916A - 一种处理数据包的方法及装置、芯片 - Google Patents
一种处理数据包的方法及装置、芯片 Download PDFInfo
- Publication number
- CN109144916A CN109144916A CN201710459377.7A CN201710459377A CN109144916A CN 109144916 A CN109144916 A CN 109144916A CN 201710459377 A CN201710459377 A CN 201710459377A CN 109144916 A CN109144916 A CN 109144916A
- Authority
- CN
- China
- Prior art keywords
- data packet
- chip
- register
- length
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种处理数据包的方法,包括:向芯片发送从总线和接口标准PCIE模式切换到本地总线模式的指令;通过本地总线与所述芯片进行数据包的传输。一种处理数据包的装置、芯片。本方案利用本地总线实现了提插包的功能,提供一种备用通路,当PCIE通路挂掉的时候能够完成其对数据包的传输工作。
Description
技术领域
本发明实施例涉及但不限于数据通信数据处理领域,尤指一种处理数据包的方法及装置、芯片。
背景技术
在光网络的各种设备中,CPU对于本地总线的读写访问是不可缺少的功能。CPU需要向本地部件(FPGA(Field-Programmable Gate Array,现场可编程门阵列)设计单元或本地芯片)的配置寄存器写值,从而使本地部件在预定的工作模式下工作,CPU还需要读取本地部件的状态寄存器、数据缓存实现监控功能以及提取协议算法所需的数据。
在硬件开发中,PCIE(Peripheral Component Interface Express,总线和接口标准)作为第三代高性能总线接口,凭借其高速率传输数据的特点,在计算机和通信平台领域中被广泛的应用在外围设备互联上,在光接入网类的芯片设计中,也会使用PCIE进行CPU和芯片、芯片与芯片之间的互联,如图1所示,一般情况下,CPU和芯片,例如ASIC(ApplicationSpecific Integrated Circuits,专用集成电路)通过PCIE进行交互的连接过程。
不过因为在IC(Integrated Circuit,集成电路)开发中,有些模块将由多个项目组的开发人员共同参与设计,那么在模块与模块之间的互联上就有可能存在设计的风险,一些设计上的问题在验证的过程中可能不易被发现。考虑到在IC开发中,产品投片所需的成本相当高,为了缩短开发周期,并且在一定程度上降低开发的成本,因此,当PCIE发生故障不能正常运行时,能够完成其基本的数据传输的功能,保证系统正常运行的一种备选的方案是必要的。
发明内容
本发明实施例提供一种处理数据包的方法及装置、芯片,以利用local bus实现了提插包的功能。
一种处理数据包的方法,包括:
向芯片发送从总线和接口标准PCIE模式切换到本地总线模式的指令;
通过本地总线与所述芯片进行数据包的传输。
可选地,所述通过本地总线与所述芯片进行数据包的传输,包括:
读取所述芯片上的第一状态寄存器的状态位,若所述状态位指示当前有数据包待提取,则从所述第一状态寄存器中读取待提取的数据包的长度;
从所述芯片上的第一数据寄存器中读取指定长度的数据包,通过所述指定长度乘以读取次数的积与所述待提取的数据包的长度进行比对,来确定是否完成数据包的提取。
可选地,所述从所述芯片上的第一数据寄存器中读取指定长度的数据包之后,还包括:更新所述第一状态寄存器的状态位。
可选地,所述通过本地总线与所述芯片进行数据包的传输,包括:
读取所述芯片上的第二状态寄存器的状态位,若所述状态位指示所述芯片有足够的缓存,则将待插入的数据包的长度写入所述第二状态寄存器,将指定长度的所述待插入的数据包写入第二数据寄存器;
通过所述指定长度乘以写入次数的积与所述待插入的数据包的长度进行比对,来确定是否完成数据包的写入。
可选地,所述将指定长度的所述待插入的数据包写入第二数据寄存器后,还包括:更新第二状态寄存器的状态位。
一种处理数据包的装置,其中,包括:
发送模块,用于向芯片发送从总线和接口标准PCIE模式切换到本地总线模式的指令;
传输模块,用于通过本地总线与所述芯片进行数据包的传输。
可选地,所述传输模块,具体用于读取所述芯片上的第一状态寄存器的状态位,若所述状态位指示当前有数据包待提取,则从所述第一状态寄存器中读取待提取的数据包的长度;从所述芯片上的第一数据寄存器中读取指定长度的数据包,通过所述指定长度乘以读取次数的积与所述待提取的数据包的长度进行比对,来确定是否完成数据包的提取。
可选地,所述传输模块,从所述芯片上的第一数据寄存器中读取指定长度的数据包之后,还用于:更新所述第一状态寄存器的状态位。
可选地,所述传输模块,具体用于读取所述芯片上的第二状态寄存器的状态位,若所述状态位指示所述芯片有足够的缓存,则将待插入的数据包的长度写入所述第二状态寄存器,将指定长度的所述待插入的数据包写入第二数据寄存器;通过所述指定长度乘以写入次数的积与所述待插入的数据包的长度进行比对,来确定是否完成数据包的写入。
可选地,所述传输模块,将指定长度的所述待插入的数据包写入第二数据寄存器后,还包括:更新第二状态寄存器的状态位。
一种处理数据包的方法,包括:
芯片接收从总线和接口标准PCIE模式切换到本地总线模式的指令;
所述芯片通过本地总线进行数据包的传输。
可选地,所述芯片通过本地总线进行数据包的传输,包括:
所述芯片将待提取的数据包以指定长度写入第一数据寄存器,并配置第一状态寄存器的状态位,指示当前有数据包等待提取,将所述待提取的数据包的长度写入所述第一状态寄存器;
通过所述指定长度乘以写入次数的积与所述待提取的数据包的长度进行比对,来确定是否完成数据包的写入。
可选地,所述芯片通过本地总线进行数据包的传输,包括:
所述芯片读取第二状态寄存器的状态位,若所述状态位指示当前有数据包待插入,则从所述第二状态寄存器中读取待插入的数据包的长度;
从第二数据寄存器中读取指定长度的数据包插入本地缓存,并更新所述第二状态寄存器的状态位,通过所述指定长度乘以读取次数的积与所述待插入的数据包的长度进行比对,来确定是否完成数据包的插入。
一种芯片,包括:存储器和处理器,其中,
所述存储器,存储有以下指令:接收从总线和接口标准PCIE模式切换到本地总线模式的指令,通过本地总线进行数据包的传输;
所述处理器,用于执行所述存储器存储的指令。
可选地,所述芯片还包括:第一数据寄存器和第一状态寄存器,
所述处理器,用于将待提取的数据包以指定长度写入所述第一数据寄存器,并配置所述第一状态寄存器的状态位,指示当前有数据包等待提取,将所述待提取的数据包的长度写入所述第一状态寄存器;通过所述指定长度乘以写入次数的积与所述待提取的数据包的长度进行比对,来确定是否完成数据包的写入。
可选地,所述芯片还包括:第二数据寄存器和第二状态寄存器,
所述处理器,用于读取所述第二状态寄存器的状态位,若所述状态位指示当前有数据包待插入,则从所述第二状态寄存器中读取待插入的数据包的长度;从第二数据寄存器中读取指定长度的数据包插入本地缓存,并更新所述第二状态寄存器的状态位,通过所述指定长度乘以读取次数的积与所述待插入的数据包的长度进行比对,来确定是否完成数据包的插入。
综上,本发明实施例提供一种处理数据包的方法及装置、芯片,利用本地总线实现了提插包的功能,提供一种备用通路,当PCIE通路挂掉的时候能够完成其对数据包的传输工作。
附图说明
图1为相关技术的CPU和芯片交互的流程图;
图2为本发明实施例的CPU侧的一种处理数据包的方法的流程图;
图3为本发明实施例的一种处理数据包的装置的示意图;
图4为本发明实施例的芯片侧的一种处理数据包的方法的流程图;
图5为本发明实施例的芯片的示意图;
图6为本发明实施例的提取数据包的流程图;
图7为本发明实施例的插入数据包的流程图;
图8为典型的xPON的组网图;
图9为本发明应用示例的OLT的应用场景图。
具体实施方式
本地总线又称为CPU总线,在硬件设计中,本地总线都有着举足轻重的地位,几乎所有的CPU小系统中都有它的一席之地,当工作在同步传输模式下时,配合外部时钟信号,利用时钟信号的上升沿信号对数据进行采样;当工作在异步传输模式下时,其功能在于和其他的OE(读使能信号)、WE(写使能信号)、CS(片选信号)对数据进行采样。由于在CPU和芯片之间交互时,通常采用PCIE来对数据进行高速传输,在PCIE协议中,数据是以数据包的形式进行传输,那么CPU只要完成对数据包的提取和插入工作,那么便能达成与PCIE传输数据包相一致的功能。
因此,本发明实施例增加了通过本地总线读写数据包的功能,通过CPU对数据包的提取和插入实现与芯片的直接通信,也可以在PCIE出现问题的时候,实现PCIE的基本功能,规避由于PCIE的问题带来的系统宕机。
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
实施例一
图2为本发明实施例的CPU侧的一种处理数据包的方法的流程图,如图2所示,本实施例的方法包括:
步骤11,CPU向芯片发送从PCIE模式切换到本地总线模式的指令;
步骤12,CPU通过本地总线与芯片进行数据包的传输。
本发明实施例提出了一种处理数据包的方法,通过本地总线实现对数据包的提取和插入操作的功能。因为在实际开发中,出现过因为PCIE中断,导致软件和芯片连接出现问题的情况,因此,本发明实施例可以提供一种备用通路,当PCIE通路挂掉的时候能够完成其对数据包的传输工作。而本地总线有结合时钟或读写时序信号完成数据读写的功能,在此基础上,通过增加寄存器及逻辑,使其具有配合CPU进行对数据包的提取、插入功能。
在一实施例中,所述通过本地总线与所述芯片进行数据包的传输,包括:
读取所述芯片上的第一状态寄存器的状态位,若所述状态位指示当前有数据包待提取,则从所述第一状态寄存器中读取待提取的数据包的长度;
从所述芯片上的第一数据寄存器中读取指定长度的数据包,通过所述指定长度乘以读取次数的积与所述待提取的数据包的长度进行比对,来确定是否完成数据包的提取。
所述从所述芯片上的第一数据寄存器中读取指定长度的数据包之后,还包括:更新所述第一状态寄存器的状态位。
在一实施例中,所述通过本地总线与所述芯片进行数据包的传输,包括:
读取所述芯片上的第二状态寄存器的状态位,若所述状态位指示所述芯片有足够的缓存,则将待插入的数据包的长度写入所述第二状态寄存器,将指定长度的所述待插入的数据包写入第二数据寄存器;
通过所述指定长度乘以写入次数的积与所述待插入的数据包的长度进行比对,来确定是否完成数据包的写入。
所述将指定长度的所述待插入的数据包写入第二数据寄存器后,还包括:更新第二状态寄存器的状态位。
本发明实施例相应地提供一种处理数据包的装置,如图3所示,包括:
发送模块,用于向芯片发送从总线和接口标准PCIE模式切换到本地总线模式的指令;
传输模块,用于通过本地总线与所述芯片进行数据包的传输。
在一实施例中,所述传输模块,具体用于读取所述芯片上的第一状态寄存器的状态位,若所述状态位指示当前有数据包待提取,则从所述第一状态寄存器中读取待提取的数据包的长度;从所述芯片上的第一数据寄存器中读取指定长度的数据包,通过所述指定长度乘以读取次数的积与所述待提取的数据包的长度进行比对,来确定是否完成数据包的提取。
在一实施例中,所述传输模块,从所述芯片上的第一数据寄存器中读取指定长度的数据包之后,还用于:更新所述第一状态寄存器的状态位。
在一实施例中,所述传输模块,具体用于读取所述芯片上的第二状态寄存器的状态位,若所述状态位指示所述芯片有足够的缓存,则将待插入的数据包的长度写入所述第二状态寄存器,将指定长度的所述待插入的数据包写入第二数据寄存器;通过所述指定长度乘以写入次数的积与所述待插入的数据包的长度进行比对,来确定是否完成数据包的写入。
在一实施例中,所述传输模块,将指定长度的所述待插入的数据包写入第二数据寄存器后,还包括:更新第二状态寄存器的状态位。
实施例二
图4为本发明实施例的芯片侧的一种处理数据包的方法的流程图,如图4所示,本实施例的方法包括:
步骤21、芯片接收从总线和接口标准PCIE模式切换到本地总线模式的指令;
步骤22、所述芯片通过本地总线进行数据包的传输。
在一实施例中,所述芯片通过本地总线进行数据包的传输,包括:
所述芯片将待提取的数据包以指定长度写入第一数据寄存器,并配置第一状态寄存器的状态位,指示当前有数据包等待提取,将所述待提取的数据包的长度写入所述第一状态寄存器;
通过所述指定长度乘以写入次数的积与所述待提取的数据包的长度进行比对,来确定是否完成数据包的写入。
本实施例中的芯片适用于所有的芯片。
在一实施例中,所述芯片通过本地总线进行数据包的传输,包括:
所述芯片读取第二状态寄存器的状态位,若所述状态位指示当前有数据包待插入,则从所述第二状态寄存器中读取待插入的数据包的长度;
从第二数据寄存器中读取指定长度的数据包插入本地缓存,并更新所述第二状态寄存器的状态位,通过所述指定长度乘以读取次数的积与所述待插入的数据包的长度进行比对,来确定是否完成数据包的插入。
本发明实施例相应地提供一种芯片,如图5所示,本实施例的芯片包括:存储器和处理器,其中,
所述存储器,存储有以下指令:接收从总线和接口标准PCIE模式切换到本地总线模式的指令,通过本地总线进行数据包的传输;
所述处理器,用于执行所述存储器存储的指令。
在一实施例中,所述芯片还包括:第一数据寄存器和第一状态寄存器,
所述处理器,用于将待提取的数据包以指定长度写入所述第一数据寄存器,并配置所述第一状态寄存器的状态位,指示当前有数据包等待提取,将所述待提取的数据包的长度写入所述第一状态寄存器;通过所述指定长度乘以写入次数的积与所述待提取的数据包的长度进行比对,来确定是否完成数据包的写入。
在一实施例中,所述芯片还包括:第二数据寄存器和第二状态寄存器,
所述处理器,用于读取所述第二状态寄存器的状态位,若所述状态位指示当前有数据包待插入,则从所述第二状态寄存器中读取待插入的数据包的长度;从第二数据寄存器中读取指定长度的数据包插入本地缓存,并更新所述第二状态寄存器的状态位,通过所述指定长度乘以读取次数的积与所述待插入的数据包的长度进行比对,来确定是否完成数据包的插入。
在实现通过本地总线进行对提取、插入数据包的过程中,本发明实施例增加了读出状态寄存器和写入状态寄存器,读出数据寄存器和写入数据寄存器,通过CPU和芯片的配合完成数据包的传递。
四个寄存器可以如下设置:
数据包读出状态寄存器
数据包读出数据寄存器
数据包写入状态寄存器
数据包写入数据寄存器
在CPU提取数据包的过程中,首先追加一个输入信号,来判断是否要选用通过本地总线传输数据包的模式;之后,CPU通过读取状态寄存器判断待读取的数据包长度,通过数据寄存器完成对数据包的获取。CPU插入数据包与之类似,通过状态寄存器获取待插入数据包长度并对缓存剩余情况进行判断,利用读出数据寄存器插入数据包,硬件判断插入完毕后,更改状态寄存器状态,完成对数据包的插入工作。
在实际的IC开发过程中,由于各个模块是由多个项目组的开发人员共同设计,会造成一定程度的人员管理等待的弊端,在设计上存在一定的风险。而IC投片所需的成本很高,如果PCIE出现问题导致数据不能正常传输,那么整颗芯片都面临无法正常工作的风险,给项目带来损失。因此,本发明实施例提供的方案,目的在于避免由于PCIE发生异常的时候,整个系统的崩溃,保证系统的功能正常运行,降低开发的时间和成本。
既然要完成的工作的是对数据的传输,那么与数据在PCIE中的上下行方向相对应的,CPU配合本地总线对数据包的提取和插入的操作来替代PCIE模式的数据包传输。由此便可以通过本地总线结合读写等信号,利用上述寄存器对数据包进行提取、插入操作的实现。
如图6所示,提取数据包的实现包括以下步骤:
步骤200、芯片将待提取的数据写入寄存器;
芯片将待提取的数据包以指定长度(例如4个字节)写入第一数据寄存器,并将第一状态寄存器的状态位置1,指示当前有数据包等待提取,将所述待提取的数据包的长度写入所述第一状态寄存器;
芯片通过所述指定长度乘以写入次数的积与所述待提取的数据包的长度进行比对,来确定是否完成数据包的写入。
步骤201、CPU选择工作模式为本地总线模式;
步骤202、CPU读取读出状态寄存器(相当于上文的第一状态寄存器)的状态位;
步骤203、判断此时是否有数据包等待提取,如有,则转步骤204;如没有,则转步骤202;
步骤204、CPU从读出状态寄存器中获取待获取的数据包的长度;
步骤205、CPU读取读出数据寄存器(相当于上文的第一数据寄存器)获取数据包,每次获取长度固定,例如,每次获取4字节;
在提取包方向,状态寄存器的状态位为1,表示此时有数据包待提取,CPU每次提取4字节后,会清零一次该状态寄存器的状态位,将其置0,表示这4个字节CPU已经提取完毕,然后芯片判断包里所有的数据是否已经提取完成,如果仍有剩余数据待提取,芯片会把这个状态位再度置1,通知CPU需要继续提报,并继续向数据寄存器中传输剩下的数据包,CPU继续提4个字节,清零状态位,然后硬件再判断包里所有的数据是否已经提取完成,直到数据包提取结束。
步骤206、CPU通过获取的长度乘以获取的次数与待提取的数据包长度进行比对,判断是否将数据包提取完毕,如未提取完毕,则转步骤205;如提取完毕,则完成对数据包的提取工作,提取完成后,还可以对读出状态寄存器进行更新。
如图7所示,插入数据包的实现包括以下步骤:
步骤301、CPU选择工作模式为本地总线模式;
步骤302、CPU读取写入状态寄存器(相当于上文的第二状态寄存器)的状态位;
步骤303、CPU判断此时芯片是否有足够的缓存,如有,则转步骤304;如没有,则转步骤302;
步骤304、CPU从写入状态寄存器获取待插入的数据包的长度;
步骤305、CPU将所述待插入的数据包传入写入数据寄存器(相当于上文的第二数据寄存器),每次写入固定长度的数据,例如每次写入4字节;
目前主流的芯片或系统都是32位,32位的意思就是一个寄存器里面有32个bit位,一个字节(byte)占8个bit,所以读写的时候取4个字节。
步骤306、通过写入的长度乘以写入次数与待插入的数据包的长度进行比对,判断是否将数据包写入完毕,如完毕,则转步骤307,如未完毕,则转步骤305;
步骤307、芯片通过写入数据寄存器获取数据包,每次获取长度固定,例如,每次获取4字节;
在插入包方向,没有包要插入的时候,状态位为0,当CPU要插入包的时候,将4字节数据传入写出数据寄存器,并将状态位置1,此时,芯片逻辑通过数据寄存器获取数据,并将状态位清零,若此时CPU仍有数据未传输,则继续向写出数据寄存器中传数据,并拉高状态位,芯片写入,如此循环到数据包写出结束。
步骤308、通过获取的长度乘以获取的次数与待插入的数据包长度进行比对,判断是否将数据包插入完毕,如完毕,则转步骤309,如未完毕,则转步骤307;
步骤309、完成对数据包的插入工作后,对写入状态寄存器进行更新。
采用本实施例提供的方法,可以有效避免由于PCIE发生故障时带来的损失,相当于CPU绕过PCIE利用本地总线直接与芯片进行交互,虽然速度比不上PCIE的高速串行接口,但在牺牲一部分CPU性能的前提下能够保证CPU的数据能够顺利到达目标芯片,保证系统的正常工作。
下面结合附图及具体实施例对本发明实施例作进一步的详细描述。
图8为典型的xPON的组网形式,由局端的OLT(optical line terminal,光线路终端),用户端的ONU(optical network unit,光网络单元),和连接的ODN(opticaldistribution network,光分配网)组成。开始工作时,OLT需要配合ONU完成对ONU的激活过程,包括:OLT和ONU之间协商工作参数、测量OLT和ONU之间的逻辑距离、建立上下行通信通道。
ONU的激活过程由OLT控制,激活过程由状态和状态转移中的功能行为来规范,ONU的激活过程大致如下:
ONU通过Upstream_Overhead(上行开销)消息接收工作参数;
ONU根据接收到的工作参数调整自己的参数(如:发送光功率);
OLT通过Serial_Number(序列号)获取过程发现新ONU的序列号;
OLT给所有新ONU分配ONU-ID;
OLT测量新ONU的均衡时延;
OLT将测量的均衡时延传送给ONU;
ONU根据均衡时延调整其上行帧时钟;
在激活过程中OLT通过发送数据包的形式向ONU发送指令,并接收来自ONU的反馈信息,例如在关键的OLT的测距过程中,OLT会先产生一个安静时段,之后OLT给所有ONU发送测距请求消息。ONU接收到OLT的请求测距的消息后等待一段时间,向OLT发送序列号消息。OLT接收到序列号消息后向ONU发送指令,使ONU进入工作状态。
在这一系列过程中,信息始终是以包的形式在系统中传输,对于OLT设备而言,高效、稳定的完成对数据包的提取和插入工作是保证系统正常运行的必要条件。
图9所示为一块OLT芯片产品,CPU通过PCIE完成对芯片的寄存器配置,使其工作在特定的工作模式,读取芯片状态寄存器,数据缓存实现监控。
本发明实施例通过本地总线对数据包的提取和插入,提供了一条除了PCIE之外的备用通路,用于连接CPU和芯片。共存的意义特别重要,当PCIE通道宕机或者无法链接时,需要通过接口进行配置复位PCIE通道尝试重新连接,如果连接失败,仍可使用备用的通路,没有本地总线通路,芯片将会存在应用风险。
环境中,对接模块用于提供PCIE、备用通路通用的本地总线方式访问接口,用于和内部各模块以及子系统CPU对接;并且支持在PCIE模式和备用模式共存,并灵活切换。
以此环境为基础,下面详述本地总线完成提取及插入数据包的过程。
本实施例中,在顶层追加一个的输入信号,通过这个信号,CPU在本地总线或是PCIE之间做出工作模式的选择。
针对提取包方向,当本地总线模式使能时,芯片对应的模块将原PCIE接口的输出数据格式与本地总线模式的数据进行转化,最终将数据传送到CPU输出,增加数据包读出状态寄存器和数据包读出数据寄存器。
提取包具体实现过程:
首先,CPU完成对状态位的检查,通过状态寄存器来判断此时是否有数据包等待提取,同时在寄存器中获取数据包的长度;
然后,CPU通过读取“数据包读出数据寄存器”,完成对数据包内容的获取,每次获取4字节;
硬件逻辑监控CPU读取“数据包读出数据寄存器”的次数,通过读取的次数可以计算得到移动读取到的数据包的长度,通过计算得到的读取数据包的长度与状态寄存器中等待提取的数据包的长度进行比对,判断当前数据包是否被提取完;
最后,在当前数据包被读完之后,硬件(芯片)根据内部提取数据包缓存的情况更新状态寄存器。
针对插入包方向,当本地总线模式使能时,芯片主要实现接收CPU的插入包数据,将数据格式转换成PCIE的格式,按照PCIE的时序将数据包插入。增加数据包写入状态寄存器和数据包写入数据寄存器。
首先,CPU完成对检查状态位的检查,通过读取状态位的状态来判断内部缓存的情况,判断缓存中是否有足够的空间支持数据包的插入;
硬件通过读取“数据包写出数据寄存器”,获取数据包的内容,每次4字节;
硬件通过监控提取数据包的次数,便可以计算出提取到的数据包长度,通过计算得到的数据包的长度与状态寄存器中写入数据包的长度进行对比,判断数据包是否插入完成;
在当前数据包被读完之后,硬件根据内部提取数据包缓存的情况更新状态寄存器,为下一次数据包的插入做好准备。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上仅为本发明的优选实施例,当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (16)
1.一种处理数据包的方法,包括:
向芯片发送从总线和接口标准PCIE模式切换到本地总线模式的指令;
通过本地总线与所述芯片进行数据包的传输。
2.如权利要求1所述的方法,其特征在于:所述通过本地总线与所述芯片进行数据包的传输,包括:
读取所述芯片上的第一状态寄存器的状态位,若所述状态位指示当前有数据包待提取,则从所述第一状态寄存器中读取待提取的数据包的长度;
从所述芯片上的第一数据寄存器中读取指定长度的数据包,通过所述指定长度乘以读取次数的积与所述待提取的数据包的长度进行比对,来确定是否完成数据包的提取。
3.如权利要求2所述的方法,其特征在于:
所述从所述芯片上的第一数据寄存器中读取指定长度的数据包之后,还包括:更新所述第一状态寄存器的状态位。
4.如权利要求1所述的方法,其特征在于:所述通过本地总线与所述芯片进行数据包的传输,包括:
读取所述芯片上的第二状态寄存器的状态位,若所述状态位指示所述芯片有足够的缓存,则将待插入的数据包的长度写入所述第二状态寄存器,将指定长度的所述待插入的数据包写入第二数据寄存器;
通过所述指定长度乘以写入次数的积与所述待插入的数据包的长度进行比对,来确定是否完成数据包的写入。
5.如权利要求4所述的方法,其特征在于:
所述将指定长度的所述待插入的数据包写入第二数据寄存器后,还包括:更新第二状态寄存器的状态位。
6.一种处理数据包的装置,其特征在于,包括:
发送模块,用于向芯片发送从总线和接口标准PCIE模式切换到本地总线模式的指令;
传输模块,用于通过本地总线与所述芯片进行数据包的传输。
7.如权利要求6所述的装置,其特征在于:
所述传输模块,具体用于读取所述芯片上的第一状态寄存器的状态位,若所述状态位指示当前有数据包待提取,则从所述第一状态寄存器中读取待提取的数据包的长度;从所述芯片上的第一数据寄存器中读取指定长度的数据包,通过所述指定长度乘以读取次数的积与所述待提取的数据包的长度进行比对,来确定是否完成数据包的提取。
8.如权利要求7所述的装置,其特征在于:
所述传输模块,从所述芯片上的第一数据寄存器中读取指定长度的数据包之后,还用于:更新所述第一状态寄存器的状态位。
9.如权利要求6所述的装置,其特征在于:
所述传输模块,具体用于读取所述芯片上的第二状态寄存器的状态位,若所述状态位指示所述芯片有足够的缓存,则将待插入的数据包的长度写入所述第二状态寄存器,将指定长度的所述待插入的数据包写入第二数据寄存器;通过所述指定长度乘以写入次数的积与所述待插入的数据包的长度进行比对,来确定是否完成数据包的写入。
10.如权利要求9所述的装置,其特征在于:
所述传输模块,将指定长度的所述待插入的数据包写入第二数据寄存器后,还包括:更新第二状态寄存器的状态位。
11.一种处理数据包的方法,包括:
芯片接收从总线和接口标准PCIE模式切换到本地总线模式的指令;
所述芯片通过本地总线进行数据包的传输。
12.如权利要求11所述的方法,其特征在于:所述芯片通过本地总线进行数据包的传输,包括:
所述芯片将待提取的数据包以指定长度写入第一数据寄存器,并配置第一状态寄存器的状态位,指示当前有数据包等待提取,将所述待提取的数据包的长度写入所述第一状态寄存器;
通过所述指定长度乘以写入次数的积与所述待提取的数据包的长度进行比对,来确定是否完成数据包的写入。
13.如权利要求11所述的方法,其特征在于:所述芯片通过本地总线进行数据包的传输,包括:
所述芯片读取第二状态寄存器的状态位,若所述状态位指示当前有数据包待插入,则从所述第二状态寄存器中读取待插入的数据包的长度;
从第二数据寄存器中读取指定长度的数据包插入本地缓存,并更新所述第二状态寄存器的状态位,通过所述指定长度乘以读取次数的积与所述待插入的数据包的长度进行比对,来确定是否完成数据包的插入。
14.一种芯片,包括:存储器和处理器,其特征在于,
所述存储器,存储有以下指令:接收从总线和接口标准PCIE模式切换到本地总线模式的指令,通过本地总线进行数据包的传输;
所述处理器,用于执行所述存储器存储的指令。
15.如权利要求14所述的芯片,其特征在于:所述芯片还包括:第一数据寄存器和第一状态寄存器,
所述处理器,用于将待提取的数据包以指定长度写入所述第一数据寄存器,并配置所述第一状态寄存器的状态位,指示当前有数据包等待提取,将所述待提取的数据包的长度写入所述第一状态寄存器;通过所述指定长度乘以写入次数的积与所述待提取的数据包的长度进行比对,来确定是否完成数据包的写入。
16.如权利要求14所述的芯片,其特征在于:所述芯片还包括:第二数据寄存器和第二状态寄存器,
所述处理器,用于读取所述第二状态寄存器的状态位,若所述状态位指示当前有数据包待插入,则从所述第二状态寄存器中读取待插入的数据包的长度;从第二数据寄存器中读取指定长度的数据包插入本地缓存,并更新所述第二状态寄存器的状态位,通过所述指定长度乘以读取次数的积与所述待插入的数据包的长度进行比对,来确定是否完成数据包的插入。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710459377.7A CN109144916A (zh) | 2017-06-16 | 2017-06-16 | 一种处理数据包的方法及装置、芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710459377.7A CN109144916A (zh) | 2017-06-16 | 2017-06-16 | 一种处理数据包的方法及装置、芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109144916A true CN109144916A (zh) | 2019-01-04 |
Family
ID=64830637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710459377.7A Pending CN109144916A (zh) | 2017-06-16 | 2017-06-16 | 一种处理数据包的方法及装置、芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109144916A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506839A (zh) * | 2020-12-07 | 2021-03-16 | 天津津航计算技术研究所 | 一种一对多spi总线切换方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5907689A (en) * | 1996-12-31 | 1999-05-25 | Compaq Computer Corporation | Master-target based arbitration priority |
CN101068140A (zh) * | 2007-06-27 | 2007-11-07 | 中兴通讯股份有限公司 | 一种实现主/备pci设备切换的装置和方法 |
CN102611598A (zh) * | 2012-01-31 | 2012-07-25 | 长沙中联消防机械有限公司 | 控制器局域网络总线冗余系统及冗余切换的方法和装置 |
CN103559152A (zh) * | 2013-10-31 | 2014-02-05 | 烽火通信科技股份有限公司 | 基于pcie协议的cpu访问本地总线的装置及方法 |
CN204229213U (zh) * | 2014-11-24 | 2015-03-25 | 淮南师范学院 | 一种多轴联动伺服控制系统 |
-
2017
- 2017-06-16 CN CN201710459377.7A patent/CN109144916A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5907689A (en) * | 1996-12-31 | 1999-05-25 | Compaq Computer Corporation | Master-target based arbitration priority |
CN101068140A (zh) * | 2007-06-27 | 2007-11-07 | 中兴通讯股份有限公司 | 一种实现主/备pci设备切换的装置和方法 |
CN102611598A (zh) * | 2012-01-31 | 2012-07-25 | 长沙中联消防机械有限公司 | 控制器局域网络总线冗余系统及冗余切换的方法和装置 |
CN103559152A (zh) * | 2013-10-31 | 2014-02-05 | 烽火通信科技股份有限公司 | 基于pcie协议的cpu访问本地总线的装置及方法 |
CN204229213U (zh) * | 2014-11-24 | 2015-03-25 | 淮南师范学院 | 一种多轴联动伺服控制系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506839A (zh) * | 2020-12-07 | 2021-03-16 | 天津津航计算技术研究所 | 一种一对多spi总线切换方法及装置 |
CN112506839B (zh) * | 2020-12-07 | 2023-02-03 | 天津津航计算技术研究所 | 一种一对多spi总线切换方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100568211C (zh) | 用可编程器件实现访问多个i2c从器件的方法及装置 | |
CN105357147B (zh) | 一种高速高可靠的片上网络适配单元 | |
CN100438524C (zh) | 基于硬件支持的虚拟接口结构用户层网络通信系统 | |
CN103825696A (zh) | 一种基于fpga实现光纤高速实时通信的装置 | |
CN102761466B (zh) | 一种ieee 1394 总线数据记录处理系统和方法 | |
CN101788972A (zh) | 一种数据传输的系统与方法 | |
CN103178872B (zh) | 通过以太网延长usb系统传输距离的方法及装置 | |
CN103744811A (zh) | 一种串行数据传输系统及方法 | |
CN1938695A (zh) | 集成电路和用于事务中止的方法 | |
CN109471824A (zh) | 基于axi总线的数据传输系统及方法 | |
CN105553636B (zh) | 一种余度模式fc发送通道帧同步电路及方法 | |
CN107025203B (zh) | 第一板卡、第二板卡及一种设备 | |
CN104320317B (zh) | 一种以太网物理层芯片状态的传送方法和装置 | |
CN101873299A (zh) | 串行总线和通信方法及系统 | |
CN104798010A (zh) | 至少部分的串行存储协议兼容帧转换 | |
CN103023613B (zh) | 一种对数据帧长度进行校验的方法及装置 | |
CN108462620B (zh) | 一种吉比特级SpaceWire总线系统 | |
CN109981496A (zh) | 用于xgpon olt的omci组帧装置及组帧方法 | |
CN104486365B (zh) | 双控之间通信方法和系统 | |
CN113852533B (zh) | 一种多通道数据通信系统、方法及电子设备 | |
CN109144916A (zh) | 一种处理数据包的方法及装置、芯片 | |
EP2442500B1 (en) | Data transfer device and data transfer method | |
US20030217219A1 (en) | Using information provided through tag space | |
CN105530153A (zh) | 网络内的从设备通信方法、通信网络、主设备及从设备 | |
CN108399137A (zh) | Pon模块基于cpld的i2c切换方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190104 |
|
RJ01 | Rejection of invention patent application after publication |