CN114153758B - 具有帧计数功能的跨时钟域数据处理方法 - Google Patents
具有帧计数功能的跨时钟域数据处理方法 Download PDFInfo
- Publication number
- CN114153758B CN114153758B CN202111374221.1A CN202111374221A CN114153758B CN 114153758 B CN114153758 B CN 114153758B CN 202111374221 A CN202111374221 A CN 202111374221A CN 114153758 B CN114153758 B CN 114153758B
- Authority
- CN
- China
- Prior art keywords
- data
- data frame
- address
- frame
- written
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
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)
- Communication Control (AREA)
Abstract
本发明公开一种具有帧计数功能的跨时钟域数据处理方法,通过开辟一大块RAM作为数据缓存模块,将数据循环的写入数据缓存模块中;采用一个地址存储模块来存储每帧数据在数据缓存模块中的开始地址和结束地址,这样就保证当有连续的多帧数据(数据帧的个数小于FIFO的深度)写入时,后面写入数据的开始地址和结束地址不会覆盖掉前面数据的开始地址和结束地址;采用帧计数功能,当一帧数据写入数据缓存模块且地址写入地址存储模块后有效帧计数器加1,当一帧从数据缓存模块中成功读出后,有效帧计数器减1,这样就能实时监测数据缓存模块中有多少帧数据没有读出。本发明能够解决跨时钟域数据处理系统容易引起亚稳态从而造成链路上的数据错误的问题。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种具有帧计数功能的跨时钟域数据处理方法。
背景技术
在利用FPGA进行系统设计时,为了提高系统的稳定性和可靠性一般都采用同步设计方法。同步设计方法是整个系统都在时钟的作用下工作。对于只有一个时钟的单时钟域数据处理系统,所有的数据都在同一个时钟的作用下工作,不存在跨时钟域处理问题。对于复杂的系统为了满足系统设计需求一般存在多个时钟域,当数据从一个时钟域产生需要传递到另外一个时钟域使用时,若数据传输不满足寄存器的时序要求就会产生亚稳态,产生亚稳态后寄存器的输出端在状态稳定之前可能出现毛刺、震荡或固定在某一个电压值等问题。当数据到达新的时钟域后,有的数据会被判断为0有的会被判断为1,造成数据在新的时钟域下逻辑混乱,从而引起系统数据传输错误。
目前跨时钟域的处理方法主要有:①增加两级寄存器:该方法主要适用于单bit的数据,而对于多bit的数据不适用。当多bit的数据都增加两级寄存器后,不同bit的数据延迟可能不同,对低速的数据传输没有问题,但对于高速的数据传输可能会引起亚稳态。此外,对于单bit增加两级寄存器的跨时钟域处理方式也不能完全消除亚稳态。②增加异步双口RAM:该方法是目前应用最广泛的跨时钟处理方式,主要适用于多bit数据的跨时钟域处理;一般采用一大块连续的RAM循环存储数据,当有一帧数据要写入到连续的RAM时,系统首先产生并记录要写入一帧数据的开始地址,当一帧数据写入完成后记录数据写入的结束地址,同时将存储这帧数据RAM的开始地址和结束地址存储在两个寄存器数组中,当系统检测到有数据需要读出时,从寄存器数组中取出数据的开始地址和结束地址,根据取到的开始和结束地址从RAM中读取相应的数据。由于采用寄存器数组来存储一帧数据的开始地址和结束地址,当系统内有连续的多包数据要存储时,后面数据的开始地址和结束地址可能会覆盖掉没有读出数据的开始地址和结束地址,从而造成链路上的数据错误。
发明内容
本发明所要解决的是的跨时钟域数据处理系统容易引起亚稳态从而造成链路上的数据错误的问题,提供一种具有帧计数功能的跨时钟域数据处理方法。
为解决上述问题,本发明是通过以下技术方案实现的:
具有帧计数功能的跨时钟域数据处理方法,包括步骤如下:
1)数据写入过程:
步骤1.1、在空闲状态下,系统判断当前是否有数据帧写入请求:
如果没有数据帧写入请求时,则保持空闲状态;
如果有数据帧写入请求时,则根据上次数据帧写入的结束地址加载本次数据帧写入的开始地址,然后将本次数据帧写入数据缓存模块中,在本次数据帧写入的过程中,数据缓存模块的地址在每个写时钟周期进行加1操作;当本次数据帧写入数据缓存模块结束后,将数据缓存模块的当前地址作为本次数据帧写入的结束地址,并执行步骤1.2;
步骤1.2、根据本次数据帧写入的开始地址和本次数据帧写入的结束地址判断本次写入的数据帧是否满足预定的数据帧长度:
如果数据帧长度不满足要求,则将本次数据帧作为不合格数据帧丢弃,并进入空闲状态;
如果数据帧长度满足要求,则先将本次数据帧写入的开始地址和数据帧写入的结束地址进行拼接,并将拼接完的地址数据写入地址存储模块;同时,将数据缓存模块的有效帧计数器进行加1操作;再将当前数据缓存模块的地址加1作为下次数据帧写入的开始地址,最后回到空闲状态;
2)数据读出过程:
步骤2.1、在空闲状态下,系统判断当前是否有数据帧读出请求:
如果没有数据帧读出请求时,则保持空闲状态;
如果有数据帧读出请求时,则进一步判断数据缓存模块的有效帧计数器的计数值是否等于0:
若数据缓存模块的有效帧计数器的值等于0,则说明数据缓存模块中没有要读取的数据帧,则保持空闲状态;
若数据缓存模块的有效帧计数器的值大于0,则从地址存储模块中读出一个地址数据,并将该地址数据拆分为本次数据帧读出的开始地址和本次数据帧读出的结束地址,并执行步骤2.2;
步骤2.2、根据本次数据帧读出的开始地址和本次数据帧读出的结束地址判断本次读出的数据帧是否满足预定的数据帧长度:
如果数据帧长度不满足要求,则放弃本次读操作,并进入空闲状态;
如果数据帧长度满足要求,则根据本次数据帧读出的开始地址从数据缓存模块中读出本次数据帧,在本次数据帧读出的过程中,数据缓存模块的地址在每个读时钟进行加1操作;当数据缓存模块的地址等于本次数据帧读出的结束地址时,停止本次数据帧的读取;同时,将数据缓存模块的有效帧计数器进行减1操作;最后进入帧间隔延时,当达到设定的帧间隔延时后,回到空闲状态。
上述方案中,地址存储模块为FIFO先进先出存储器。
与现有技术相比,本发明具有如下特点:
1、开辟一大块RAM作为数据缓存模块,将数据循环的写入数据缓存模块中;
2、采用一个地址存储模块(FIFO先进先出存储器)来存储每帧数据在数据缓存模块中的开始地址和结束地址,这样就保证当有连续的多帧数据(数据帧的个数小于FIFO的深度)写入时,后面写入数据的开始地址和结束地址不会覆盖掉前面数据的开始地址和结束地址;
3、采用帧计数功能,当一帧数据写入数据缓存模块且地址写入地址存储模块后有效帧计数器加1,当一帧从数据缓存模块中成功读出后,有效帧计数器减1,这样就能实时监测数据缓存模块中有多少帧数据没有读出。当有效帧计数器为0时,数据缓存模块中没有要读出的数据,当有效帧计数器大于0时,说明数据缓存模块中有可读出的数据。数据读取过程:系统先从地址存储模块中读取一帧数据的开始地址和结束地址,根据读出的开始地址和结束地址从数据缓存模块中读出相应的数据帧。
附图说明
图1为具有帧计数功能的跨时钟域数据处理系统的数据写入流程图。
图2为具有帧计数功能的跨时钟域数据处理系统的数据读出流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实例,对本发明进一步详细说明。
一种具有帧计数功能的跨时钟域数据处理方法,包括步骤如下:
步骤1、数据写入过程,如图1所示:
步骤1.1、在空闲状态下,系统判断当前是否有数据帧写入请求:
如果没有数据帧写入请求时,则保持空闲状态;
如果有数据帧写入请求时,则根据上次数据帧写入的结束地址加载本次数据帧写入的开始地址,然后将本次数据帧写入数据缓存模块中,在本次数据帧写入的过程中,数据缓存模块的地址在每个写时钟周期进行加1操作;当本次数据帧写入数据缓存模块结束后,将数据缓存模块的当前地址作为本次数据帧写入的结束地址,并执行步骤1.2;
步骤1.2、根据本次数据帧写入的开始地址和本次数据帧写入的结束地址判断本次写入的数据帧是否满足预定的数据帧长度,即通过将本次数据帧写入的结束地址减本次数据帧写入的开始地址,得到本次写入的数据帧的数据个数,通过判断数据个数,将不合格的数据帧丢弃;如:以太网最小要求包长为64个字节,如果写入的数据长度小于64字节,认为是一个不合格的数据帧将被丢弃:
如果数据帧长度不满足要求,则将本次数据帧作为不合格数据帧丢弃,并进入空闲状态;
如果数据帧长度满足要求,则先将本次数据帧写入的开始地址和数据帧写入的结束地址进行拼接,并将拼接完的地址数据写入地址存储模块(FIFO先进先出存储器);同时,将数据缓存模块的有效帧计数器进行加1操作;再将当前数据缓存模块的地址加1作为下次数据帧写入的开始地址,最后回到空闲状态;
步骤2、数据读出过程,如图2所示:
步骤2.1、在空闲状态下,系统判断当前是否有数据帧读出请求:
如果没有数据帧读出请求时,则保持空闲状态;
如果有数据帧读出请求时,则进一步判断数据缓存模块的有效帧计数器的计数值是否等于0:
若数据缓存模块的有效帧计数器的值等于0,则说明数据缓存模块中没有要读取的数据帧,则保持空闲状态;
若数据缓存模块的有效帧计数器的值大于0,则从地址存储模块(FIFO先进先出存储器)中读出一个地址数据,并将该地址数据拆分为本次数据帧读出的开始地址和本次数据帧读出的结束地址,并执行步骤2.2;
步骤2.2、根据本次数据帧读出的开始地址和本次数据帧读出的结束地址判断本次读出的数据帧是否满足预定的数据帧长度,即通过将本次数据帧读出的结束地址减本次数据帧读出的开始地址,得到本次读出的数据帧的数据个数,通过判断数据个数,将不合格的数据帧丢弃;如:以太网最小要求包长为64个字节,如果读出的数据长度小于64字节,认为是一个不合格的帧将放弃本次读出):
如果数据帧长度不满足要求,则放弃本次读操作,并进入空闲状态;
如果数据帧长度满足要求,则根据本次数据帧读出的开始地址从数据缓存模块中读出本次数据帧,在本次数据帧读出的过程中,数据缓存模块的地址在每个读时钟进行加1操作;当数据缓存模块的地址等于本次数据帧读出的结束地址时,停止本次数据帧的读取;同时,将数据缓存模块的有效帧计数器进行减1操作;最后进入帧间隔延时,当达到设定的帧间隔延时后,又回到空闲状态。
需要说明的是,尽管以上本发明所述的实施例是说明性的,但这并非是对本发明的限制,因此本发明并不局限于上述具体实施方式中。在不脱离本发明原理的情况下,凡是本领域技术人员在本发明的启示下获得的其它实施方式,均视为在本发明的保护之内。
Claims (2)
1.具有帧计数功能的跨时钟域数据处理方法,其特征是,包括步骤如下:
1)数据写入过程:
步骤1.1、在空闲状态下,系统判断当前是否有数据帧写入请求:
如果没有数据帧写入请求时,则保持空闲状态;
如果有数据帧写入请求时,则根据上次数据帧写入的结束地址加载本次数据帧写入的开始地址,然后将本次数据帧写入数据缓存模块中,在本次数据帧写入的过程中,数据缓存模块的地址在每个写时钟周期进行加1操作;当本次数据帧写入数据缓存模块结束后,将数据缓存模块的当前地址作为本次数据帧写入的结束地址,并执行步骤1.2;
步骤1.2、根据本次数据帧写入的开始地址和本次数据帧写入的结束地址判断本次写入的数据帧是否满足预定的数据帧长度:
如果数据帧长度不满足要求,则将本次数据帧作为不合格数据帧丢弃,并进入空闲状态;
如果数据帧长度满足要求,则先将本次数据帧写入的开始地址和数据帧写入的结束地址进行拼接,并将拼接完的地址数据写入地址存储模块;同时,将数据缓存模块的有效帧计数器进行加1操作;再将当前数据缓存模块的地址加1作为下次数据帧写入的开始地址,最后回到空闲状态;
2)数据读出过程:
步骤2.1、在空闲状态下,系统判断当前是否有数据帧读出请求:
如果没有数据帧读出请求时,则保持空闲状态;
如果有数据帧读出请求时,则进一步判断数据缓存模块的有效帧计数器的计数值是否等于0:
若数据缓存模块的有效帧计数器的值等于0,则说明数据缓存模块中没有要读取的数据帧,则保持空闲状态;
若数据缓存模块的有效帧计数器的值大于0,则从地址存储模块中读出一个地址数据,并将该地址数据拆分为本次数据帧读出的开始地址和本次数据帧读出的结束地址,并执行步骤2.2;
步骤2.2、根据本次数据帧读出的开始地址和本次数据帧读出的结束地址判断本次读出的数据帧是否满足预定的数据帧长度:
如果数据帧长度不满足要求,则放弃本次读操作,并进入空闲状态;
如果数据帧长度满足要求,则根据本次数据帧读出的开始地址从数据缓存模块中读出本次数据帧,在本次数据帧读出的过程中,数据缓存模块的地址在每个读时钟进行加1操作;当数据缓存模块的地址等于本次数据帧读出的结束地址时,停止本次数据帧的读取;同时,将数据缓存模块的有效帧计数器进行减1操作;最后进入帧间隔延时,当达到设定的帧间隔延时后,回到空闲状态。
2.根据权利要求1所述具有帧计数功能的跨时钟域数据处理方法,其特征是,地址存储模块为FIFO先进先出存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111374221.1A CN114153758B (zh) | 2021-11-19 | 2021-11-19 | 具有帧计数功能的跨时钟域数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111374221.1A CN114153758B (zh) | 2021-11-19 | 2021-11-19 | 具有帧计数功能的跨时钟域数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114153758A CN114153758A (zh) | 2022-03-08 |
CN114153758B true CN114153758B (zh) | 2022-12-20 |
Family
ID=80456679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111374221.1A Active CN114153758B (zh) | 2021-11-19 | 2021-11-19 | 具有帧计数功能的跨时钟域数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114153758B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115225880B (zh) * | 2022-07-15 | 2024-02-27 | 海宁奕斯伟集成电路设计有限公司 | 数据处理方法、装置、设备、可读存储介质及程序产品 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1282339C (zh) * | 2003-12-02 | 2006-10-25 | 烽火通信科技股份有限公司 | 一种用于以太网无源光网络的数据帧缓存设备和方法 |
CN1949695A (zh) * | 2006-10-28 | 2007-04-18 | 华为技术有限公司 | 一种帧数据传输中错帧丢弃的方法和系统 |
CN102915281B (zh) * | 2012-09-12 | 2015-07-08 | 北京空间飞行器总体设计部 | 一种高可靠的航天器帧格式数据队列缓存系统及缓存方法 |
-
2021
- 2021-11-19 CN CN202111374221.1A patent/CN114153758B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114153758A (zh) | 2022-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8225026B2 (en) | Data packet access control apparatus and method thereof | |
KR101172103B1 (ko) | 통신 시스템의 통신 링크를 통해 메시지에 데이터를전송하기 위한 전송 방법, 통신 모듈, 통신 시스템의서브스크라이버 및 상기 전송 방법을 구현하기 위한 통신시스템 | |
US7391721B1 (en) | Maintaining counters and updating a secondary counter storage | |
EP3206123B1 (en) | Data caching method and device, and storage medium | |
US11425057B2 (en) | Packet processing | |
US20060265526A1 (en) | Maintaining counters and updating a secondary counter storage | |
CN106789697B (zh) | 一种提高大批量网络流表老化效率的方法及装置 | |
EP2219114A1 (en) | Method and apparatus for allocating storage addresses | |
CN114153758B (zh) | 具有帧计数功能的跨时钟域数据处理方法 | |
CN212364988U (zh) | 先入先出存储器及存储装置 | |
CN110232029B (zh) | 一种基于索引的fpga中ddr4包缓存的实现方法 | |
CN111181874B (zh) | 一种报文处理方法、装置及存储介质 | |
CN105516023A (zh) | 一种报文转发方法和装置 | |
US8363653B2 (en) | Packet forwarding method and device | |
CN105577985A (zh) | 一种数字图像处理系统 | |
CN110597482B (zh) | 一种用于串口在fifo中查找最新有效数据包的方法 | |
US20100054272A1 (en) | Storage device capable of accommodating high-speed network using large-capacity low-speed memory | |
CN100471175C (zh) | 一种报文存储转发的方法及报文存储转发电路 | |
CN102571535B (zh) | 一种数据延迟装置、方法及通信系统 | |
CN102185767B (zh) | 一种缓存管理方法及系统 | |
CN111817724B (zh) | 一种数据压缩电路 | |
CN103220168A (zh) | 一种基于定长协议数据包长度异常的处理方法 | |
CN111126584B (zh) | 数据回写系统 | |
US10803920B2 (en) | Refresh controller for first-in first-out memories | |
CN117632258A (zh) | 一种同步读写方法、存储装置和可读存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |