CN118132005A - 先入先出存储器的数据传输处理方法、装置、设备及介质 - Google Patents

先入先出存储器的数据传输处理方法、装置、设备及介质 Download PDF

Info

Publication number
CN118132005A
CN118132005A CN202410341071.1A CN202410341071A CN118132005A CN 118132005 A CN118132005 A CN 118132005A CN 202410341071 A CN202410341071 A CN 202410341071A CN 118132005 A CN118132005 A CN 118132005A
Authority
CN
China
Prior art keywords
memory
read
pointer
write
clock domain
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
Application number
CN202410341071.1A
Other languages
English (en)
Inventor
赵政杰
刘奇浩
李鑫明
程绪龙
褚光福
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202410341071.1A priority Critical patent/CN118132005A/zh
Publication of CN118132005A publication Critical patent/CN118132005A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Communication Control (AREA)

Abstract

本发明提供先入先出存储器的数据传输处理方法、装置、设备及介质,应用于先入先出存储器,先入先出存储器至少包括存储器、补充存储器和乒乓控制器;乒乓控制器分别与存储器和补充存储器通信连接;存储器包括写时钟域和读时钟域;写时钟域包括写指针;读时钟域包括读指针。先入先出存储器进行数据突发传输时,基于写指针将待传输数据写入存储器;数据突发传输是预设时长内数据传输量大于平均数据传输量;将读指针同步至写时钟域,判断同步后读指针与写指针是否相同;若同步后读指针与写指针相同,确定存储器处于写满状态;若存储器处于写满状态,通过乒乓控制器控制待传输数据写入补充存储器,解决先入先出存储器进行数据突发传输时数据丢失问题。

Description

先入先出存储器的数据传输处理方法、装置、设备及介质
技术领域
本发明涉及存储器技术领域,特别是涉及一种先入先出存储器的数据传输处理方法、一种先入先出存储器的数据传输处理装置、一种电子设备以及一种计算机可读介质。
背景技术
FIFO(First In First Out,先入先出)存储器是一种支持数据先入先出的双口缓冲器。FIFO存储器中包括读指针和写指针,读指针属于读时钟域,写指针属于写时钟域。当FIFO存储器未处于写满状态时,可以基于写指针写入数据。当FIFO存储器未处于读空状态时,可以基于读指针读出数据。读空状态可以理解为读指针追上写指针,写入的内容已被全部读出;写满状态可以理解为写指针追上读指针,数据已经写满存储地址。因此,需要将读指针和写指针进行比较以判断FIFO存储器是否处于写满状态或读空状态。
由于FIFO存储器中的读写时钟域不同,需要进行同步处理后,再将读指针和写指针进行比较。同步过程包括:(1)将写时钟域的写指针同步到读时钟域,将同步后的写指针与读时钟域的读指针进行比较判断是否为读空状态;(2)将读时钟域的读指针同步到写时钟域,将同步后的读指针与写时钟域的写指针进行比较判断是否为写满状态。
数据突发传输是在短时间内进行相对高带宽的数据传输。在数据突发传输过程中,写满状态判断时,FIFO存储器一直在读取数据。若在写满状态判断结束后,FIFO存储器接收到写满信号,会停止写入数据;但在写满状态判断过程中,FIFO存储器可以读出部分数据,致使FIFO存储器并非处于写满状态,造成FIFO存储器接收到写满信号时,FIFO存储器并非处于写满状态,在FIFO存储器仍可以写入数据时,停止写入数据,导致在数据突发传输的短时间内不能将全部数据写入FIFO存储器中,造成数据丢失。
发明内容
本发明实施例提供一种先入先出存储器的数据传输处理方法、装置、电子设备以及计算机可读存储介质,以解决FIFO存储器在进行数据突发传输的过程中,FIFO存储器接收到写满信号时,FIFO存储器并非处于写满状态,在FIFO存储器仍可以写入数据时,停止写入数据,导致在数据突发传输的短时间内不能将全部数据写入FIFO存储器中,造成数据丢失的问题。
本发明实施例公开了一种先入先出存储器的数据传输处理方法,应用于先入先出存储器,所述先入先出存储器至少包括存储器、补充存储器和乒乓控制器;所述乒乓控制器分别与所述存储器和所述补充存储器通信连接;所述存储器包括写指针、读指针、写时钟域和读时钟域;所述写指针位于所述写时钟域;所述读指针位于所述读时钟域;所述方法包括:
在所述先入先出存储器进行数据突发传输时,基于所述写指针将待传输数据写入所述存储器中;所述数据突发传输是指预设时长内的数据传输量大于平均数据传输量;
将所述读时钟域的所述读指针同步至所述写时钟域,并判断同步后的所述读指针与所述写指针是否相同;
在所述同步后的所述读指针与所述写指针相同的情况下,确定所述存储器处于写满状态;
在所述存储器处于写满状态时,通过所述乒乓控制器控制所述待传输数据写入所述补充存储器中。
可选地,所述方法还包括:
基于所述读指针,按照所述写指针写入所述待传输数据的顺序读取所述存储器中的所述待传输数据;
将所述写时钟域的所述写指针同步至所述读时钟域,并判断同步后的所述写指针与所述读时钟域的所述读指针是否相同;
在所述同步后的所述写指针与所述读时钟域的所述读指针相同的情况下,确定所述存储器处于读空状态;
在所述存储器处于读空状态时,通过所述乒乓控制器控制按照所述待传输数据写入所述补充存储器的顺序读取所述补充存储器中的所述待传输数据。
可选地,所述方法还包括:
采用第一存储深度计算公式计算所述存储器的第一目标存储深度;
所述第一存储深度计算公式为:
N=burst_len-(burst_len)/wclk*rclk
其中,N为所述存储器的第一目标存储深度,burst_len为所述待传输数据的长度,wclk为所述读指针的读时钟频率,rclk为所述写指针的写时钟频率;
调整所述存储器的存储深度为所述存储器的第一目标存储深度;
采用第二存储深度计算公式计算所述补充存储器的第二目标存储深度;
所述第二存储深度计算公式为:
n=|wclk-rclk|+4
其中,n为所述补充存储器的第二目标存储深度;
调整所述补充存储器的存储深度为所述补充存储器的第二目标存储深度。
可选地,所述写指针为二进制写指针;所述读指针为二进制读指针;所述将所述读时钟域的所述读指针同步至所述写时钟域,并判断同步后的所述读指针与所述写指针是否相同的步骤包括:
分别将所述二进制读指针和所述二进制写指针转换为格雷码读指针和格雷码写指针;
将所述格雷码读指针同步至所述写时钟域;
判断同步后的所述格雷码读指针与所述格雷码写指针是否相同;
所述将所述写时钟域的所述写指针同步至所述读时钟域,并判断同步后的所述写指针与所述读时钟域的所述读指针是否相同的步骤包括:
将所述格雷码写指针同步至所述读时钟域;
判断同步后的所述格雷码写指针与所述读时钟域的所述格雷码读指针是否相同。
可选地,所述补充存储器包括补充读指针、补充写指针、补充读时钟域和补充写时钟域;所述补充写指针位于所述补充写时钟域,所述补充读指针位于所述补充读时钟域;所述方法还包括:
将所述补充读时钟域的所述补充读指针同步至所述补充写时钟域,并判断同步后的所述补充读指针与所述补充写指针是否相同;
在所述同步后的所述补充读指针与所述补充写指针相同的情况下,确定所述补充存储器处于写满状态;
在所述补充存储器处于写满状态时,通过所述乒乓控制器控制所述待传输数据写入所述存储器中。
可选地,所述方法还包括:
将所述补充写时钟域的所述补充写指针同步至所述补充读时钟域,并判断同步后的所述补充写指针与所述补充读时钟域的所述补充读指针是否相同;
在所述同步后的所述补充写指针与所述补充读时钟域的所述补充读指针相同的情况下,确定所述补充存储器处于读空状态;
在所述补充存储器处于读空状态时,通过所述乒乓控制器控制按照所述待传输数据写入所述存储器的顺序读取所述存储器中的所述待传输数据。
本发明实施例还公开了一种先入先出存储器,所述先入先出存储器至少包括存储器、补充存储器和乒乓控制器;所述乒乓控制器分别与所述存储器和所述补充存储器通信连接;所述存储器包括写指针、读指针、写时钟域和读时钟域;所述写指针位于所述写时钟域;所述读指针位于所述读时钟域;
在所述先入先出存储器进行数据突发传输时,所述先入先出存储器基于所述写指针将待传输数据写入所述存储器中;所述数据突发传输是指预设时长内的数据传输量大于平均数据传输量;
所述先入先出存储器将所述读时钟域的所述读指针同步至所述写时钟域,并判断同步后的所述读指针与所述写指针是否相同;
在所述同步后的所述读指针与所述写指针相同的情况下,所述先入先出存储器确定所述存储器处于写满状态;
在所述存储器处于写满状态时,所述先入先出存储器通过所述乒乓控制器控制所述待传输数据写入所述补充存储器中。
可选地,基于所述读指针,所述先入先出存储器按照所述写指针写入所述待传输数据的顺序读取所述存储器中的所述待传输数据;
所述先入先出存储器将所述写时钟域的所述写指针同步至所述读时钟域,并判断同步后的所述写指针与所述读时钟域的所述读指针是否相同;
在所述同步后的所述写指针与所述读时钟域的所述读指针相同的情况下,所述先入先出存储器确定所述存储器处于读空状态;
在所述存储器处于读空状态时,所述先入先出存储器通过所述乒乓控制器控制按照所述待传输数据写入所述补充存储器的顺序读取所述补充存储器中的所述待传输数据。
可选地,所述先入先出存储器采用第一存储深度计算公式计算所述存储器的第一目标存储深度;
所述第一存储深度计算公式为:
N=burst_len-(burst_len)/wclk*rclk
其中,N为所述存储器的第一目标存储深度,burst_len为所述待传输数据的长度,wclk为所述读指针的读时钟频率,rclk为所述写指针的写时钟频率;
所述先入先出存储器调整所述存储器的存储深度为所述存储器的第一目标存储深度;
采用第二存储深度计算公式计算所述补充存储器的第二目标存储深度;
所述第二存储深度计算公式为:
n=|wclk-rclk|+4
其中,n为所述补充存储器的第二目标存储深度;
所述先入先出存储器调整所述补充存储器的存储深度为所述补充存储器的第二目标存储深度。
可选地,所述写指针为二进制写指针;所述读指针为二进制读指针;所述先入先出存储器分别将所述二进制读指针和所述二进制写指针转换为格雷码读指针和格雷码写指针;
所述先入先出存储器将所述格雷码读指针同步至所述写时钟域;
所述先入先出存储器判断同步后的所述格雷码读指针与所述格雷码写指针是否相同;
所述先入先出存储器将所述格雷码写指针同步至所述读时钟域;
所述先入先出存储器判断同步后的所述格雷码写指针与所述读时钟域的所述格雷码读指针是否相同。
可选地,所述补充存储器包括补充读指针、补充写指针、补充读时钟域和补充写时钟域;所述补充写指针位于所述补充写时钟域,所述补充读指针位于所述补充读时钟域;
所述先入先出存储器将所述补充读时钟域的所述补充读指针同步至所述补充写时钟域,并判断同步后的所述补充读指针与所述补充写指针是否相同;
在所述同步后的所述补充读指针与所述补充写指针相同的情况下,所述先入先出存储器确定所述补充存储器处于写满状态;
在所述补充存储器处于写满状态时,所述先入先出存储器通过所述乒乓控制器控制所述待传输数据写入所述存储器中。
可选地,所述先入先出存储器将所述补充写时钟域的所述补充写指针同步至所述补充读时钟域,并判断同步后的所述补充写指针与所述补充读时钟域的所述补充读指针是否相同;
在所述同步后的所述补充写指针与所述补充读时钟域的所述补充读指针相同的情况下,所述先入先出存储器确定所述补充存储器处于读空状态;
在所述补充存储器处于读空状态时,所述先入先出存储器通过所述乒乓控制器控制按照所述待传输数据写入所述存储器的顺序读取所述存储器中的所述待传输数据。
本发明实施例还公开了一种先入先出存储器的数据传输处理装置,应用于先入先出存储器,所述先入先出存储器至少包括存储器、补充存储器和乒乓控制器;所述乒乓控制器分别与所述存储器和所述补充存储器通信连接;所述存储器包括写指针、读指针、写时钟域和读时钟域;所述写指针位于所述写时钟域;所述读指针位于所述读时钟域;所述装置包括:
写入模块,用于在所述先入先出存储器进行数据突发传输时,基于所述写指针将待传输数据写入所述存储器中;所述数据突发传输是指预设时长内的数据传输量大于平均数据传输量;
同步模块,用于将所述读时钟域的所述读指针同步至所述写时钟域,并判断同步后的所述读指针与所述写指针是否相同;
确定模块,用于在所述同步后的所述读指针与所述写指针相同的情况下,确定所述存储器处于写满状态;
控制模块,用于在所述存储器处于写满状态时,通过所述乒乓控制器控制所述待传输数据写入所述补充存储器中。
可选地,所述装置还包括:
读取模块,用于基于所述读指针,按照所述写指针写入所述待传输数据的顺序读取所述存储器中的所述待传输数据;
写指针同步模块,用于将所述写时钟域的所述写指针同步至所述读时钟域,并判断同步后的所述写指针与所述读时钟域的所述读指针是否相同;
第一读空状态确定模块,用于在所述同步后的所述写指针与所述读时钟域的所述读指针相同的情况下,确定所述存储器处于读空状态;
第一读取控制模块,用于在所述存储器处于读空状态时,通过所述乒乓控制器控制按照所述待传输数据写入所述补充存储器的顺序读取所述补充存储器中的所述待传输数据。
可选地,所述装置还包括:
第一计算模块,用于采用第一存储深度计算公式计算所述存储器的第一目标存储深度;
所述第一存储深度计算公式为:
N=burst_len-(burst_len)/wclk*rclk
其中,N为所述存储器的第一目标存储深度,burst_len为所述待传输数据的长度,wclk为所述读指针的读时钟频率,rclk为所述写指针的写时钟频率;
第一调整模块,用于调整所述存储器的存储深度为所述存储器的第一目标存储深度;
第二计算模块,用于采用第二存储深度计算公式计算所述补充存储器的第二目标存储深度;
所述第二存储深度计算公式为:
n=|wclk-rclk|+4
其中,n为所述补充存储器的第二目标存储深度;
第二调整模块,用于调整所述补充存储器的存储深度为所述补充存储器的第二目标存储深度。
可选地,所述写指针为二进制写指针;所述读指针为二进制读指针;所述同步模块包括:
转换子模块,用于分别将所述二进制读指针和所述二进制写指针转换为格雷码读指针和格雷码写指针;
读指针同步子模块,用于将所述格雷码读指针同步至所述写时钟域;
第一判断子模块,用于判断同步后的所述格雷码读指针与所述格雷码写指针是否相同;
所述写指针同步模块包括:
写指针同步子模块,用于将所述格雷码写指针同步至所述读时钟域;
第二判断子模块,用于判断同步后的所述格雷码写指针与所述读时钟域的所述格雷码读指针是否相同。
可选地,所述补充存储器包括补充读指针、补充写指针、补充读时钟域和补充写时钟域;所述补充写指针位于所述补充写时钟域,所述补充读指针位于所述补充读时钟域;所述装置还包括:
补充读指针同步模块,用于将所述补充读时钟域的所述补充读指针同步至所述补充写时钟域,并判断同步后的所述补充读指针与所述补充写指针是否相同;
写满状态确定模块,用于在所述同步后的所述补充读指针与所述补充写指针相同的情况下,确定所述补充存储器处于写满状态;
写入控制模块,用于在所述补充存储器处于写满状态时,通过所述乒乓控制器控制所述待传输数据写入所述存储器中。
可选地,所述装置还包括:
补充写指针同步模块,用于将所述补充写时钟域的所述补充写指针同步至所述补充读时钟域,并判断同步后的所述补充写指针与所述补充读时钟域的所述补充读指针是否相同;
第二读空状态确定模块,用于在所述同步后的所述补充写指针与所述补充读时钟域的所述补充读指针相同的情况下,确定所述补充存储器处于读空状态;
第二读取控制模块,用于在所述补充存储器处于读空状态时,通过所述乒乓控制器控制按照所述待传输数据写入所述存储器的顺序读取所述存储器中的所述待传输数据。
本发明实施例还公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行存储器上所存放的程序时,实现如本发明实施例所述的方法。
本发明实施例还公开了一个或多个计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的方法。
本发明实施例包括以下优点:
在本发明实施例中,先入先出存储器至少包括存储器、补充存储器和乒乓控制器;乒乓控制器分别与存储器和补充存储器通信连接;存储器包括写指针、读指针、写时钟域和读时钟域;写指针位于写时钟域;读指针位于读时钟域;在先入先出存储器进行数据突发传输时,基于写指针将待传输数据写入存储器中;数据突发传输是指预设时长内的数据传输量大于平均数据传输量;将读时钟域的读指针同步至写时钟域,并判断同步后的读指针与写指针是否相同;在同步后的读指针与写指针相同的情况下,确定存储器处于写满状态;在存储器处于写满状态时,通过乒乓控制器控制待传输数据写入补充存储器中,解决了先入先出存储器接收到写满信号时,先入先出存储器并非处于写满状态,在先入先出存储器仍可以写入数据时,停止基于写指针写入数据,导致在数据突发传输的短时间内不能将全部数据写入先入先出存储器中,造成数据丢失的问题。
附图说明
图1是本发明实施例中提供的一种先入先出存储器的数据传输处理方法的步骤流程图;
图2是本发明实施例提供的一种先入先出存储器的结构框图;
图3是本发明实施例提供的又一种先入先出存储器的结构框图;
图4是本发明实施例提供的又一种先入先出存储器的结构框图;
图5是本发明实施例中提供的一种先入先出存储器的数据传输处理装置的结构框图;
图6是本发明实施例中提供的一种电子设备的框图;
图7是本发明实施例中提供的一种计算机可读介质的示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
为便于理解本发明实施例的技术方案和技术效果,下面将对本发明的现有技术进行简要说明。
FIFO(First In First Out,先入先出)存储器是一种支持数据先入先出的双口缓冲器。FIFO存储器是一种读/写存储器阵列,FIFO存储器没有外部读写地址线,因此FIFO存储器不能由外部读写地址线决定读取或写入某个指定的地址,FIFO存储器只能自动跟踪数据写入存储地址的顺序,并按照相同的顺序读出存储地址中的数据。
FIFO存储器中包括读指针和写指针。读时针和写时针可以重复利用存储器中存储地址,进行先写后读,从而实现数据的无限传输。也可以说是读指针不断追加写指针,每次写指针将存储地址写满就会停下来等待读指针读数据,使得FIFO存储器未写满时继续写。FIFO存储器中会存在读空状态和写满状态,读空状态可以理解为读指针追上写指针,写入的内容已被全部读出;写满状态可以理解为写指针追上读指针,数据已经写满存储地址,如果再次写入数据,会覆盖掉还没读出的写入数据,造成数据丢失。
FIFO存储中可以有两个时钟域,包括写时钟域和读时钟域。写指针属于写时钟域,读指针属于读时钟域。比较读指针与写指针,以判断FIFO存储器是否处于读空状态或写满状态。当接收到写信号且FIFO存储器不是写满状态时,则基于写指针写入数据。当接收到读信号且FIFO存储器不是读空状态时,则基于读指针读出数据。
FIFO存储器的读写时钟域不同,将读时钟域的读指针与写时钟域的写指针不做任何处理直接比较肯定是错误的,需要进行同步处理以后再进行比较。同步过程包括:(1)将写时钟域的写指针同步到读时钟域,将同步后的写指针与读时钟域的读指针进行比较,以判断是否产生读空信号;(2)将读时钟域的读指针同步到写时钟域,将同步后的读指针与写时钟域的写指针进行比较,以判断是否产生写满信号。
若读写指针为二进制字符串,则读写指针在同步过程中容易出现二进制字符串变化的字符位数不确定的亚稳态问题。为解决此问题,应将二进制字符串转换为格雷码,利用格雷码进行同步过程。由于格雷码的局限性,FIFO存储器中只能设置2的幂次深度的存储空间。在同步过程中,读空状态判断时,FIFO存储器一直在写入数据,可能会导致FIFO存储器提前出现写满状态;写满状态判断时,FIFO存储器也一直在读取数据,会导致FIFO存储器提前出现读空状态。
数据突发传输是在短时间内进行相对高带宽的数据传输。在数据突发传输过程中,写满状态判断时,FIFO存储器也一直在读取数据。若在写满状态判断结束后,FIFO存储器接收到写满信号,FIFO存储器会停止写入数据;但在写满状态判断过程中,FIFO存储器可以读出部分数据,致使FIFO存储器并非处于写满状态,造成FIFO存储器接收到写满信号时,FIFO存储器并非处于写满状态,在FIFO存储器仍可以写入数据时,停止写入数据,导致在数据突发传输的短时间内不能将全部数据写入FIFO存储器中,造成数据丢失。
同样地,在数据传输过程中,当读空状态判断时,FIFO存储器也一直在写入数据。若在读空状态判断完成后,FIFO存储器接收到读空信号,便会暂停读取数据。然而,在读空状态判断过程中,FIFO存储器可写入数据使得FIFO存储器实际并未被读空,导致在数据突发传输的短时间内,无法读取所有数据。
参照图1,示出了本发明实施例中提供的一种先入先出存储器的数据传输处理方法的步骤流程图,应用于先入先出存储器,所述先入先出存储器至少包括存储器、补充存储器和乒乓控制器;所述乒乓控制器分别与所述存储器和所述补充存储器通信连接;所述存储器包括写指针、读指针、写时钟域和读时钟域;所述写指针位于所述写时钟域,所述读指针位于所述读时钟域;具体可以包括如下步骤:
步骤101,在所述先入先出存储器进行数据突发传输时,基于所述写指针将待传输数据写入所述存储器中;所述数据突发传输是指预设时长内的数据传输量大于平均数据传输量;
在本发明实施例中,先入先出存储器至少包括存储器、补充存储器和乒乓控制器,乒乓控制器分别与存储器和补充存储器通信连接。存储器中可以包括读时钟域和写时钟域,其中读时钟域包括读指针,写时钟域包括写指针。补充存储器中可以包括补充读时钟域和补充写时钟域,补充读时钟域包括补充读指针,补充写时钟域包括补充写指针。
在本发明实施例中,先入先出存储器可以进行数据突发传输,数据突发传输是在短时间内进行相对高带宽的数据传输。在先入先出存储器进行数据突发传输时,先入先出存储器可以基于写指针将待传输数据写入存储器中。
步骤102,将所述读时钟域的所述读指针同步至所述写时钟域,并判断同步后的所述读指针与所述写指针是否相同;
在本发明实施例中,在存储器处于写满状态时,先入先出存储器不能继续将待传输数据写入存储器中。因此需要将读指针和写指针进行比较,以判断存储器是否处于写满状态。由于读时钟域和写时钟域不同,将读时钟域的读指针与写时钟域的写指针不做任何处理直接比较肯定是错误的,需要进行同步处理以后再进行比较。在本发明实施例中,将读时钟域的读指针同步至写时钟域,然后判断同步后的读指针与写时钟域的写指针是否相同。
步骤103,在所述同步后的所述读指针与所述写指针相同的情况下,确定所述存储器处于写满状态;
在本发明实施例中,若同步后的读指针与写时钟域的写指针相同,则存储器处于写满状态,先入先出存储器不能继续将待传输数据写入存储器中。先入先出存储器通过乒乓控制器控制暂停将待传输数据写入存储器中。
步骤104,在所述存储器处于写满状态时,通过所述乒乓控制器控制所述待传输数据写入所述补充存储器中。
在本发明实施例中,在先入先出存储器进行数据突发传输时,先入先出存储器基于写指针将数据写入存储器中。在将存储器写满时,先入先出存储器收到写满信号,先入先出存储器并不会停止写入数据。先入先出存储器通过乒乓控制器控制将待传输数据写入存储器中的操作暂停,以避免覆盖掉还没读出的写入数据,造成数据丢失。先入先出存储器通过乒乓控制器控制基于补充写指针将待传输数据写入补充存储器中。
在本发明实施例中,先入先出存储器至少包括存储器、补充存储器和乒乓控制器;乒乓控制器分别与存储器和补充存储器通信连接;存储器包括写指针、读指针、写时钟域和读时钟域;写指针位于写时钟域;读指针位于读时钟域;在先入先出存储器进行数据突发传输时,基于写指针将待传输数据写入存储器中;数据突发传输是指预设时长内的数据传输量大于平均数据传输量;将读时钟域的读指针同步至写时钟域,并判断同步后的读指针与写指针是否相同;在同步后的读指针与写指针相同的情况下,确定存储器处于写满状态;在存储器处于写满状态时,通过乒乓控制器控制待传输数据写入补充存储器中,解决了先入先出存储器接收到写满信号时,先入先出存储器并非处于写满状态,在先入先出存储器仍可以写入数据时,停止基于写指针写入数据,导致在数据突发传输的短时间内不能将全部数据写入先入先出存储器中,造成数据丢失的问题。
进一步地,在上述任一实施例中,所述方法还包括:
子步骤S11,基于所述读指针,按照所述写指针写入所述待传输数据的顺序读取所述存储器中的所述待传输数据;
子步骤S12,将所述写时钟域的所述写指针同步至所述读时钟域,并判断同步后的所述写指针与所述读时钟域的所述读指针是否相同;
子步骤S13,在所述同步后的所述写指针与所述读时钟域的所述读指针相同的情况下,确定所述存储器处于读空状态;
子步骤S14,在所述存储器处于读空状态时,通过所述乒乓控制器控制按照所述待传输数据写入所述补充存储器的顺序读取所述补充存储器中的所述待传输数据。
在本发明实施例中,在先入先出存储器进行数据突发传输时,先入先出存储器可以基于写指针将待传输数据写入存储器中,基于读指针按照写指针写入数据的顺序读取存储器中的待传输数据,以实现数据的传输。
在读指针将存储器中的数据全部读出,存储器处于读空状态时,先入先出存储器不能继续读取存储器中的数据。因此需要将读指针和写指针进行比较,以判断存储器是否处于读空状态。由于读时钟域和写时钟域不同,将读时钟域的读指针与写时钟域的写指针不做任何处理直接比较肯定是错误的,需要进行同步处理以后再进行比较。在本发明实施例中,将写时钟域的写指针同步至读时钟域,然后判断同步后的写指针与读时钟域的读指针是否相同。
在本发明实施例中,若同步后的写指针与读时钟域的读指针相同,则存储器处于读空状态,先入先出存储器不能继续读取存储器中的数据。先入先出存储器通过乒乓控制器控制暂停读取存储器中的数据,并控制基于补充读指针读取补充存储器中的数据。
在本发明实施例中,先入先出存储器基于读指针,按照写指针写入待传输数据的顺序读取存储器中的待传输数据。在存储器处于读空状态时,先入先出存储器通过乒乓控制器控制按照将待传输数据写入补充存储器的顺序读取补充存储器中的待传输数据,解决了先入先出存储器接收到读空信号时,先入先出存储器并非处于读空状态,在先入先出存储器仍可以读取数据时,停止基于读指针读取数据,导致在数据突发传输的短时间内不能将全部数据读出的问题。
进一步地,在上述任一实施例中,所述方法还包括:
子步骤S21,采用第一存储深度计算公式计算所述存储器的第一目标存储深度;
所述第一存储深度计算公式为:
N=burst_len-(burst_len)/wclk*rclk
其中,N为所述存储器的第一目标存储深度,burst_len为所述待传输数据的长度,wclk为所述读指针的读时钟频率,rclk为所述写指针的写时钟频率;
子步骤S22,调整所述存储器的存储深度为所述存储器的第一目标存储深度;
子步骤S23,采用第二存储深度计算公式计算所述补充存储器的第二目标存储深度;
所述第二存储深度计算公式为:
n=|wclk-rclk|+4
其中,n为所述补充存储器的第二目标存储深度;
子步骤S24,调整所述补充存储器的存储深度为所述补充存储器的第二目标存储深度。
在本发明实施例中,可以采用第一存储深度计算公式计算存储器的第一目标存储深度,采用第二存储深度计算公式计算补充存储器的第二目标存储深度。存储器的第一目标存储深度为将数据突发传输的待传输数据全部写入存储器中所需要的最小存储深度。
其中,第一存储深度计算公式为:
N=burst_len-(burst_len)/wclk*rclk
其中,N为第一目标存储深度,burst_len为待传输数据的长度,wclk为读指针的读时钟频率,rclk为写指针的写时钟频率。
第二存储深度计算公式为:
n=|wclk-rclk|+4
其中,n为第二目标存储深度。
具体地,可通过如下方式确定第二目标存储深度:在先入先出存储器进行数据突发传输时,存储器需要进行读空状态和写满状态的判断。在进行读空状态的判断时,需要将写时钟域的写指针同步到读时钟域,将同步后的写指针与读时钟域的读指针进行比较判断是否为读空状态。若写时钟频率小于读时钟频率,则在将写时钟域的写指针同步至读时钟域的过程中,在一个周期内,读时钟域读取的数据所占据的存储深度与写时钟域写入的数据所占据的存储深度之间的差为写读时钟频率与写时钟频率之间的差。在本发明实施例中,可以将读时钟频率与写时钟频率之间的差作为第二目标存储深度。为了避免读取数据的误差导致的一个周期内读取数据所占据的存储深度的偏差,或者写入数据的误差导致的一个周期内写入数据所占据的存储深度的偏差对第二目标存储深度的影响,可以将读时钟频率与写时钟频率之差加上2-6中任意一个数值作为第二目标存储深度,解决了先入先出存储器读取数据或写入数据的误差对先入先出存储器进行突发数据传输的影响。
在一具体示例中,数据突发传输中待传输的数据长度为1024bit(比特),读指针的读时钟频率为2MHZ(兆赫兹),写指针的写时钟频率为1MHZ(兆赫兹),则存储器的第一目标存储深度为512bit,补充存储器的第二目标存储深度为5bit。
在本发明实施例中,在先入先出存储器进行数据突发传输时,可以将存储器的存储深度调整为第一目标存储深度,也可以直接使用与第一目标存储深度对应的存储器。同样的,可以将补充存储器的存储深度调整为第二目标存储深度,或者直接使用与第二目标存储深度对应的存储器作为补充存储器。
在本发明实施例中,先入先出存储器会将存储深度调整至满足数据突发传输全部待传输数据写入所需的最小深度,并将读时钟频率与写时钟频率之差的绝对值与2至6中任意一个数值之和作为补充存储器的存储深度,确保数据突发传输的待传输数据能够全部写入先入先出存储器并完成传输。在写满状态判断过程中,先入先出存储器持续读取数据;在读空状态判断时,先入先出存储器则持续写入数据。通过将读时钟频率与写时钟频率之差的绝对值与2至6中任意一个数值作为补充存储器的存储深度,有效解决了由于读写时钟频率差异导致的存储器提前出现读空或写满状态的问题,从而确保在数据突发传输的短时间内能够将全部待传输数据写入先入先出存储器并读出,避免数据丢失或无法全部读取的问题。
进一步地,在上述任一实施例中,所述写指针为二进制写指针;所述读指针为二进制读指针;步骤102包括:
子步骤S31,分别将所述二进制读指针和所述二进制写指针转换为格雷码读指针和格雷码写指针;
子步骤S32,将所述格雷码读指针同步至所述写时钟域;
子步骤S33,判断同步后的所述格雷码读指针与所述格雷码写指针是否相同;
子步骤S12包括:
子步骤S41,将所述格雷码写指针同步至所述读时钟域;
子步骤S42,判断同步后的所述格雷码写指针与所述读时钟域的所述格雷码读指针是否相同。
在本发明实施例中,存储器包括写时钟域和读时钟域,写指针位于时钟域中,读指针位于读时钟域中。读指针和写指针均为二进制字符串,读指针为二进制读指针,写指针为二进制写指针。在读指针和写指针进行工作时,读指针对应的读地址和写指针对应的写地址采用二进制进行递增。
在本发明实施例中,为了判断存储器是否处于读空状态或写满状态,需要将读指针和写指针进行比较。由于读时钟域和写时钟域不同,将读时钟域的读指针与写时钟域的写指针不做任何处理直接比较肯定是错误的,需要进行同步处理以后再进行比较。由于读写指针为二进制字符串,读写指针在同步过程中容易出现二进制字符串变化的字符位数不确定的亚稳态问题。为解决此问题,应首先将二进制读指针和二进制写指针分别转换为格雷码读指针和格雷码写指针,然后利用格雷码读指针和格雷码写指针进行同步过程。
在一具体示例中,二进制写指针为-0x1f9,二进制读指针为-0x1fa。将二进制写指针进行转换得到的格雷码写指针为-0x205,格雷码读指针为-0x107。将格雷码读指针同步至写时钟域得到的格雷码读指针为0x105。
在将格雷码写指针同步至读时钟域后,将同步后的格雷码写指针与读时钟域的格雷码读指针进行比较,以判断二者是否相同。若同步后的格雷码写指针与读时钟域的格雷码读指针相同时,存储器处于读空状态。
将同步后的格雷码读指针与写时钟域的格雷码写指针进行比较,以判断二者是否相同。若同步后的格雷码读指针与写时钟域的格雷码写指针相同时,存储器处于写满状态。
在本发明实施例中,在将写指针与读指针进行比较以判断存储器是否处于读空状态或写满状态时,将二进制写指针与二进制读指针分别转换为格雷码写指针和格雷码读指针,解决了读写指针在同步过程中容易出现的二进制字符串变化的字符位数不确定的亚稳态问题。
进一步地,在上述任一实施例中,所述补充存储器包括补充读指针、补充写指针、补充读时钟域和补充写时钟域;所述补充写指针位于所述补充写时钟域,所述补充读指针位于所述补充读时钟域;所述方法还包括:
子步骤S51,将所述补充读时钟域的所述补充读指针同步至所述补充写时钟域,并判断同步后的所述补充读指针与所述补充写指针是否相同;
子步骤S52,在所述同步后的所述补充读指针与所述补充写指针相同的情况下,确定所述补充存储器处于写满状态;
子步骤S53,在所述补充存储器处于写满状态时,通过所述乒乓控制器控制所述待传输数据写入所述存储器中。
在本发明实施例中,补充存储器中可以包括补充读时钟域和补充写时钟域,补充读时钟域包括补充读指针,补充写时钟域包括补充写指针。补充读指针为补充二进制读指针,补充写指针为补充二进制写指针。在补充读指针和补充写指针进行工作时,补充读指针对应的读地址和补充写指针对应的写地址采用二进制进行递增。
在将存储器写满时,先入先出存储器收到写满信号,先入先出存储器通过乒乓控制器控制将待传输数据写入存储器中的操作暂停,并基于补充写指针将待传输数据写入补充存储器中。
在补充存储器处于写满状态时,先入先出存储器不能继续将待传输数据写入补充存储器中。为了判断补充存储器是否处于写满状态,需要将补充读指针和补充写指针进行比较。首先将补充二进制读指针和补充二进制写指针分别转换为补充格雷读指针和补充格雷码写指针。然后将补充格雷码读指针同步至补充写时钟域,将同步后的补充格雷码读指针与补充写时钟域的补充格雷码写指针进行比较,以判断二者是否相同。若同步后的补充格雷码读指针与补充写时钟域的补充格雷码写指针相同,补充存储器处于写满状态。
在补充存储器处于写满状态时,先入先出存储器通过乒乓控制器控制将待传输数据写入补充存储器中的操作暂停,并基于写指针将待传输数据写入存储器中。
在一具体示例中,分别对读指针和写指针的最高位进行扩展,即将读指针和写指针加宽一位。当存储器的存储深度被写满时,写指针扩展的一位就会发生改变。当读指针和写指针完全相同时,此时存储器为读空状态;当读指针和写指针最高位不同,其余位宽相同时,存储器处于写满状态。
在本发明实施例中,先入先出存储器基于补充写指针将待传输数据写入补充存储器中。在先入先出存储器将补充存储器写满后,可以再次通过乒乓控制器控制将待传输数据写入存储器中,进一步确保了数据突发传输的待传输数据能够全部写入先入先出存储器中。
进一步地,在上述任一实施例中,所述方法还包括:
子步骤S61,将所述补充写时钟域的所述补充写指针同步至所述补充读时钟域,并判断同步后的所述补充写指针与所述补充读时钟域的所述补充读指针是否相同;
子步骤S62,在所述同步后的所述补充写指针与所述补充读时钟域的所述补充读指针相同的情况下,确定所述补充存储器处于读空状态;
子步骤S63,在所述补充存储器处于读空状态时,通过所述乒乓控制器控制按照所述待传输数据写入所述存储器的顺序读取所述存储器中的所述待传输数据。
在本发明实施例中,在将存储器读空时,先入先出存储器收到存储器的读空信号,先入先出存储器通过乒乓控制器控制读取存储器中数据的操作暂停,并基于补充读指针读取补充存储器中的数据。
在补充存储器处于读空状态时,先入先出存储器不能继续读取补充存储器中的数据。为了判断补充存储器是否处于读空状态,需要将补充读指针和补充写指针进行比较。首先将补充二进制读指针和补充二进制写指针分别转换为补充格雷读指针和补充格雷码写指针。然后将补充格雷码写指针同步至补充读时钟域,将同步后的补充格雷码写指针与补充读时钟域的补充格雷码读指针进行比较,以判断二者是否相同。若同步后的补充格雷码写指针与补充读时钟域的补充格雷码读指针相同,补充存储器处于读空状态。
在补充存储器处于读空状态时,先入先出存储器通过乒乓控制器控制读取补充存储器中数据的操作暂停,并基于读指针读取存储器中的数据。
在本发明实施例中,先入先出存储器基于补充读指针读取补充存储器中的待传输数据。在先入先出存储器将补充存储器读空后,可以再次通过乒乓控制器控制读取存储器中的待传输数据,进一步确保了将先入先出存储器中的待传输数据全部读出。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图2,示出了本发明实施例提供的一种先入先出存储器的结构框图,所述先入先出存储器200至少包括存储器201、补充存储器202和乒乓控制器203;所述乒乓控制器203分别与所述存储器201和所述补充存储器202通信连接;所述存储器201包括写指针、读指针、写时钟域和读时钟域;所述写指针位于所述写时钟域;所述读指针位于所述读时钟域;
在所述先入先出存储器200进行数据突发传输时,所述先入先出存储器200基于所述写指针将待传输数据写入所述存储器201中;所述数据突发传输是指预设时长内的数据传输量大于平均数据传输量;
所述先入先出存储器200将所述读时钟域的所述读指针同步至所述写时钟域,并判断同步后的所述读指针与所述写指针是否相同;
在所述同步后的所述读指针与所述写指针相同的情况下,所述先入先出存储器200确定所述存储器201处于写满状态;
在所述存储器201处于写满状态时,所述先入先出存储器200通过所述乒乓控制器203控制所述待传输数据写入所述补充存储器202中。
在本发明的一种可选实施例中,基于所述读指针,所述先入先出存储器按照所述写指针写入所述待传输数据的顺序读取所述存储器中的所述待传输数据;
所述先入先出存储器将所述写时钟域的所述写指针同步至所述读时钟域,并判断同步后的所述写指针与所述读时钟域的所述读指针是否相同;
在所述同步后的所述写指针与所述读时钟域的所述读指针相同的情况下,所述先入先出存储器确定所述存储器处于读空状态;
在所述存储器处于读空状态时,所述先入先出存储器通过所述乒乓控制器控制按照所述待传输数据写入所述补充存储器的顺序读取所述补充存储器中的所述待传输数据。
在本发明的一种可选实施例中,所述先入先出存储器采用第一存储深度计算公式计算所述存储器的第一目标存储深度;
所述第一存储深度计算公式为:
N=burst_len-(burst_len)/wclk*rclk
其中,N为所述存储器的第一目标存储深度,burst_len为所述待传输数据的长度,wclk为所述读指针的读时钟频率,rclk为所述写指针的写时钟频率;
所述先入先出存储器调整所述存储器的存储深度为所述存储器的第一目标存储深度;
采用第二存储深度计算公式计算所述补充存储器的第二目标存储深度;
所述第二存储深度计算公式为:
n=|wclk-rclk|+4
其中,n为所述补充存储器的第二目标存储深度;
所述先入先出存储器调整所述补充存储器的存储深度为所述补充存储器的第二目标存储深度。
在本发明的一种可选实施例中,所述写指针为二进制写指针;所述读指针为二进制读指针;所述先入先出存储器分别将所述二进制读指针和所述二进制写指针转换为格雷码读指针和格雷码写指针;
所述先入先出存储器将所述格雷码读指针同步至所述写时钟域;
所述先入先出存储器判断同步后的所述格雷码读指针与所述格雷码写指针是否相同;
所述先入先出存储器将所述格雷码写指针同步至所述读时钟域;
所述先入先出存储器判断同步后的所述格雷码写指针与所述读时钟域的所述格雷码读指针是否相同。
在本发明的一种可选实施例中,所述补充存储器包括补充读指针、补充写指针、补充读时钟域和补充写时钟域;所述补充写指针位于所述补充写时钟域,所述补充读指针位于所述补充读时钟域;
所述先入先出存储器将所述补充读时钟域的所述补充读指针同步至所述补充写时钟域,并判断同步后的所述补充读指针与所述补充写指针是否相同;
在所述同步后的所述补充读指针与所述补充写指针相同的情况下,所述先入先出存储器确定所述补充存储器处于写满状态;
在所述补充存储器处于写满状态时,所述先入先出存储器通过所述乒乓控制器控制所述待传输数据写入所述存储器中。
在本发明的一种可选实施例中,所述先入先出存储器将所述补充写时钟域的所述补充写指针同步至所述补充读时钟域,并判断同步后的所述补充写指针与所述补充读时钟域的所述补充读指针是否相同;
在所述同步后的所述补充写指针与所述补充读时钟域的所述补充读指针相同的情况下,所述先入先出存储器确定所述补充存储器处于读空状态;
在所述补充存储器处于读空状态时,所述先入先出存储器通过所述乒乓控制器控制按照所述待传输数据写入所述存储器的顺序读取所述存储器中的所述待传输数据。
参照图3,示出了本发明实施例提供的又一种先入先出存储器的结构框图。先入先出存储器包括存储器、补充存储器和乒乓控制器。RAM1表示存储器,RAM2表示补充存储器。乒乓控制器分别与存储器和补充存储器通信连接。图3中din表示输入数据,winc为先入先出存储器的写控制信号,full表示写满信号,dout表示输出数据,rinc表示先入先出存储器的读控制信号,RAM1中的wen表示存储器的写控制信号,RAM1中的ren表示存储器的读控制信号,RAM1中的waddr表示存储器的写地址,RAM1中的raddr表示存储器的读地址。RAM2中的wen表示补充存储器的写控制信号,RAM2中的ren表示补充存储器的读控制信号,RAM2中的waddr表示补充存储器的写地址,RAM2中的raddr表示补充存储器的读地址。图3中的三角形结构与圆形结构相连形成的结构表示反相器。
其中,存储器的存储深度N为:
N=burst_len-(burst_len)/wclk*rclk
补充存储器的存储深度n的计算公式为:
n=|wclk-rclk|+4
其中,n为补充存储器的存储深度,N为存储器的存储深度,burst_len为待传输数据的长度,wclk为读指针的读时钟频率,rclk为写指针的写时钟频率。
在先入先出存储器进行数据突发传输时,先入先出存储器收到写控制信号,基于写指针将待传输数据写入存储器中。每完成一次数据写入,存储器中的写地址自动加1。将读时钟域的读指针同步至写时钟域,并同步后的读指针与写指针是否相同。在同步后的读指针与写指针相同的情况下,确定存储器处于写满状态,通过乒乓控制器输出控制信号,控制基于补充写指针将待传输数据写入补充存储器中,每完成一次数据写入,补充存储器中的写地址自动加1。将补充读时钟域的补充读指针同步至补充写时钟域,并判断同步后的补充读指针与补充写指针是否相同。在同步后的补充读指针与补充写指针相同的情况下,确定补充存储器处于写满状态,通过乒乓控制器输出控制信号,控制基于写指针将待传输数据写入存储器中。
先入先出存储器收到读控制信号,先入先出存储器基于读指针按照写指针写入待传输数据的顺序读取存储器中的待传输数据。每完成一次数据读取,存储器中的读地址自动加1。将写时钟域的写指针同步至读时钟域,并判断同步后的写指针与读时钟域的读指针是否相同。在同步后的写指针与读时钟域的读指针相同的情况下,确定存储器处于读空状态,通过乒乓控制器输出控制信号,控制基于补充读指针按照将待传输数据写入补充存储器的顺序读取补充存储器中的待传输数据。每完成一次数据读取,补充存储器中的读地址自动加1。将补充写时钟域的补充写指针同步至补充读时钟域,并判断同步后的补充写指针与补充读时钟域的补充读指针是否相同。在同步后的补充写指针与补充读时钟域的补充读指针相同的情况下,确定补充存储器处于读空状态,通过乒乓控制器输出控制信号,控制基于读指针按照将待传输数据写入存储器的顺序读取存储器中的待传输数据。
参照图4,示出了本发明实施例提供的又一种先入先出存储器的结构框图。先入先出存储器包括存储器、补充存储器和乒乓控制器。其中,存储器和补充存储器的两个数据输入口例化到先入先出存储器的数据输入,两个数据输出口例化到先入先出存储器的数据输出。RAM1表示存储器,RAM2表示补充存储器。乒乓控制器分别与存储器和补充存储器通信连接。图4中din表示输入数据,winc为先入先出存储器的写控制信号,full表示写满信号,wclk表示写时钟频率,rclk表示读时钟频率,dout表示输出数据,rinc表示先入先出存储器的读控制信号,RAM1中的wen表示存储器的写控制信号,RAM1中的ren表示存储器的读控制信号,RAM1中的waddr表示存储器的写地址,RAM1中的raddr表示存储器的读地址。RAM2中的wen表示补充存储器的写控制信号,RAM2中的ren表示补充存储器的读控制信号,RAM2中的waddr表示补充存储器的写地址,RAM2中的raddr表示补充存储器的读地址。B To G表示格雷码转换器,full module表示先入先出存储器中的写满状态判断器,empty module表示先入先出存储器中的读空状态判断器。图4中的三角形结构与圆形结构相连形成的结构表示反相器,与读空状态判断器相连的两个内部有三角形结构的长方形结构表示写指针同步器,与写满状态判断器相连的两个内部有三角形结构的长方形结构表示读指针同步器,每个内部有三角形结构的长方形结构表明同步过程中的一次打拍。
其中,存储器的存储深度N为:
N=burst_len-(burst_len)/wclk*rclk
补充存储器的存储深度n的计算公式为:
n=|wclk-rclk|+4
其中,n为补充存储器的存储深度,N为存储器的存储深度,burst_len为待传输数据的长度,wclk为读指针的读时钟频率,rclk为写指针的写时钟频率。
在先入先出存储器进行数据突发传输时,先入先出存储器收到写控制信号,基于写指针将待传输数据写入存储器中。每完成一次数据写入,存储器中的写地址自动加1。
写指针为二进制写指针,读指针为二进制读指针。通过格雷码转换器分别将所述二进制读指针和所述二进制写指针转换为格雷码读指针和格雷码写指针。通过读指针同步器将读时钟域的格雷码读指针同步至写时钟域,并通过写满状态判断器判断同步后的格雷码读指针与格雷码写指针是否相同。在同步后的格雷码读指针与格雷码写指针相同的情况下,确定存储器处于写满状态,通过乒乓控制器控制基于补充写指针将待传输数据写入补充存储器中。每完成一次数据写入,补充存储器中的写地址自动加1。补充写指针为补充二进制写指针,补充读指针为补充二进制读指针。通过格雷码转换器分别将所述补充二进制读指针和所述补充二进制写指针转换为补充格雷码读指针和补充格雷码写指针。通过读指针同步器将补充读时钟域的补充格雷码读指针同步至补充写时钟域,并通过写满状态判断器判断同步后的补充格雷码读指针与补充格雷码写指针是否相同。在同步后的补充格雷码读指针与补充格雷码写指针相同的情况下,确定补充存储器处于写满状态,通过乒乓控制器控制基于写指针将待传输数据写入存储器中。
先入先出存储器收到读控制信号,先入先出存储器基于读指针按照写指针写入待传输数据的顺序读取存储器中的待传输数据。每完成一次数据读取,存储器中的读地址自动加1。通过写指针同步器将写时钟域的格雷码写指针同步至读时钟域,并通过读空状态判断器判断同步后的格雷码写指针与读时钟域的格雷码读指针是否相同。在同步后的格雷码写指针与读时钟域的格雷码读指针相同的情况下,确定存储器处于读空状态,通过乒乓控制器控制基于补充读指针按照将待传输数据写入补充存储器的顺序读取补充存储器中的待传输数据。每完成一次数据读取,补充存储器中的读地址自动加1。通过写指针同步器将补充写时钟域的补充格雷码写指针同步至补充读时钟域,并通过读空状态判断器判断同步后的补充格雷码写指针与补充读时钟域的补充格雷码读指针是否相同。在同步后的补充格雷码写指针与补充读时钟域的补充格雷码读指针相同的情况下,确定补充存储器处于读空状态,通过乒乓控制器控制基于读指针按照将待传输数据写入存储器的顺序读取存储器中的待传输数据。
参照图5,示出了本发明实施例中提供的一种先入先出存储器的数据传输处理装置的结构框图,应用于先入先出存储器,所述先入先出存储器至少包括存储器、补充存储器和乒乓控制器;所述乒乓控制器分别与所述存储器和所述补充存储器通信连接;所述存储器包括写指针、读指针、写时钟域和读时钟域;所述写指针位于所述写时钟域;所述读指针位于所述读时钟域;具体可以包括如下模块:
写入模块501,用于在所述先入先出存储器进行数据突发传输时,基于所述写指针将待传输数据写入所述存储器中;所述数据突发传输是指预设时长内的数据传输量大于平均数据传输量;
同步模块502,用于将所述读时钟域的所述读指针同步至所述写时钟域,并判断同步后的所述读指针与所述写指针是否相同;
确定模块503,用于在所述同步后的所述读指针与所述写指针相同的情况下,确定所述存储器处于写满状态;
控制模块504,用于在所述存储器处于写满状态时,通过所述乒乓控制器控制所述待传输数据写入所述补充存储器中。
在本发明的一种可选实施例中,所述装置还包括:
读取模块,用于基于所述读指针,按照所述写指针写入所述待传输数据的顺序读取所述存储器中的所述待传输数据;
写指针同步模块,用于将所述写时钟域的所述写指针同步至所述读时钟域,并判断同步后的所述写指针与所述读时钟域的所述读指针是否相同;
第一读空状态确定模块,用于在所述同步后的所述写指针与所述读时钟域的所述读指针相同的情况下,确定所述存储器处于读空状态;
第一读取控制模块,用于在所述存储器处于读空状态时,通过所述乒乓控制器控制按照所述待传输数据写入所述补充存储器的顺序读取所述补充存储器中的所述待传输数据。
在本发明的一种可选实施例中,所述装置还包括:
第一计算模块,用于采用第一存储深度计算公式计算所述存储器的第一目标存储深度;
所述第一存储深度计算公式为:
N=burst_len-(burst_len)/wclk*rclk
其中,N为所述存储器的第一目标存储深度,burst_len为所述待传输数据的长度,wclk为所述读指针的读时钟频率,rclk为所述写指针的写时钟频率;
第一调整模块,用于调整所述存储器的存储深度为所述存储器的第一目标存储深度;
第二计算模块,用于采用第二存储深度计算公式计算所述补充存储器的第二目标存储深度;
所述第二存储深度计算公式为:
n=|wclk-rclk|+4
其中,n为所述补充存储器的第二目标存储深度;
第二调整模块,用于调整所述补充存储器的存储深度为所述补充存储器的第二目标存储深度。
在本发明的一种可选实施例中,所述写指针为二进制写指针;所述读指针为二进制读指针;所述同步模块包括:
转换子模块,用于分别将所述二进制读指针和所述二进制写指针转换为格雷码读指针和格雷码写指针;
读指针同步子模块,用于将所述格雷码读指针同步至所述写时钟域;
第一判断子模块,用于判断同步后的所述格雷码读指针与所述格雷码写指针是否相同;
所述写指针同步模块包括:
写指针同步子模块,用于将所述格雷码写指针同步至所述读时钟域;
第二判断子模块,用于判断同步后的所述格雷码写指针与所述读时钟域的所述格雷码读指针是否相同。
在本发明的一种可选实施例中,所述补充存储器包括补充读指针、补充写指针、补充读时钟域和补充写时钟域;所述补充写指针位于所述补充写时钟域,所述补充读指针位于所述补充读时钟域;所述装置还包括:
补充读指针同步模块,用于将所述补充读时钟域的所述补充读指针同步至所述补充写时钟域,并判断同步后的所述补充读指针与所述补充写指针是否相同;
写满状态确定模块,用于在所述同步后的所述补充读指针与所述补充写指针相同的情况下,确定所述补充存储器处于写满状态;
写入控制模块,用于在所述补充存储器处于写满状态时,通过所述乒乓控制器控制所述待传输数据写入所述存储器中。
在本发明的一种可选实施例中,所述装置还包括:
补充写指针同步模块,用于将所述补充写时钟域的所述补充写指针同步至所述补充读时钟域,并判断同步后的所述补充写指针与所述补充读时钟域的所述补充读指针是否相同;
第二读空状态确定模块,用于在所述同步后的所述补充写指针与所述补充读时钟域的所述补充读指针相同的情况下,确定所述补充存储器处于读空状态;
第二读取控制模块,用于在所述补充存储器处于读空状态时,通过所述乒乓控制器控制按照所述待传输数据写入所述存储器的顺序读取所述存储器中的所述待传输数据。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
另外,本发明实施例还提供一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现如下步骤:
在所述先入先出存储器进行数据突发传输时,基于所述写指针将待传输数据写入所述存储器中;所述数据突发传输是指预设时长内的数据传输量大于平均数据传输量;
将所述读时钟域的所述读指针同步至所述写时钟域,并判断同步后的所述读指针与所述写指针是否相同;
在所述同步后的所述读指针与所述写指针相同的情况下,确定所述存储器处于写满状态;
在所述存储器处于写满状态时,通过所述乒乓控制器控制所述待传输数据写入所述补充存储器中。
在本发明的一种可选实施例中,所述方法还包括:
基于所述读指针,按照所述写指针写入所述待传输数据的顺序读取所述存储器中的所述待传输数据;
将所述写时钟域的所述写指针同步至所述读时钟域,并判断同步后的所述写指针与所述读时钟域的所述读指针是否相同;
在所述同步后的所述写指针与所述读时钟域的所述读指针相同的情况下,确定所述存储器处于读空状态;
在所述存储器处于读空状态时,通过所述乒乓控制器控制按照所述待传输数据写入所述补充存储器的顺序读取所述补充存储器中的所述待传输数据。
在本发明的一种可选实施例中,所述方法还包括:
采用第一存储深度计算公式计算所述存储器的第一目标存储深度;
所述第一存储深度计算公式为:
N=burst_len-(burst_len)/wclk*rclk
其中,N为所述存储器的第一目标存储深度,burst_len为所述待传输数据的长度,wclk为所述读指针的读时钟频率,rclk为所述写指针的写时钟频率;
调整所述存储器的存储深度为所述存储器的第一目标存储深度;
采用第二存储深度计算公式计算所述补充存储器的第二目标存储深度;
所述第二存储深度计算公式为:
n=|wclk-rclk|+4
其中,n为所述补充存储器的第二目标存储深度;
调整所述补充存储器的存储深度为所述补充存储器的第二目标存储深度。
在本发明的一种可选实施例中,所述写指针为二进制写指针;所述读指针为二进制读指针;所述将所述读时钟域的所述读指针同步至所述写时钟域,并判断同步后的所述读指针与所述写指针是否相同的步骤包括:
分别将所述二进制读指针和所述二进制写指针转换为格雷码读指针和格雷码写指针;
将所述格雷码读指针同步至所述写时钟域;
判断同步后的所述格雷码读指针与所述格雷码写指针是否相同;
所述将所述写时钟域的所述写指针同步至所述读时钟域,并判断同步后的所述写指针与所述读时钟域的所述读指针是否相同的步骤包括:
将所述格雷码写指针同步至所述读时钟域;
判断同步后的所述格雷码写指针与所述读时钟域的所述格雷码读指针是否相同。
在本发明的一种可选实施例中,所述补充存储器包括补充读指针、补充写指针、补充读时钟域和补充写时钟域;所述补充写指针位于所述补充写时钟域,所述补充读指针位于所述补充读时钟域;所述方法还包括:
将所述补充读时钟域的所述补充读指针同步至所述补充写时钟域,并判断同步后的所述补充读指针与所述补充写指针是否相同;
在所述同步后的所述补充读指针与所述补充写指针相同的情况下,确定所述补充存储器处于写满状态;
在所述补充存储器处于写满状态时,通过所述乒乓控制器控制所述待传输数据写入所述存储器中。
在本发明的一种可选实施例中,所述方法还包括:
将所述补充写时钟域的所述补充写指针同步至所述补充读时钟域,并判断同步后的所述补充写指针与所述补充读时钟域的所述补充读指针是否相同;
在所述同步后的所述补充写指针与所述补充读时钟域的所述补充读指针相同的情况下,确定所述补充存储器处于读空状态;
在所述补充存储器处于读空状态时,通过所述乒乓控制器控制按照所述待传输数据写入所述存储器的顺序读取所述存储器中的所述待传输数据。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(RandomAccess Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable GateArray,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
如图7所示,在本发明提供的又一实施例中,还提供了一种计算机可读存储介质701,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中所述的一种先入先出存储器的数据传输处理方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中所述的一种先入先出存储器的数据传输处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种先入先出存储器的数据传输处理方法,其特征在于,应用于先入先出存储器,所述先入先出存储器至少包括存储器、补充存储器和乒乓控制器;所述乒乓控制器分别与所述存储器和所述补充存储器通信连接;所述存储器包括写指针、读指针、写时钟域和读时钟域;所述写指针位于所述写时钟域;所述读指针位于所述读时钟域;所述方法包括:
在所述先入先出存储器进行数据突发传输时,基于所述写指针将待传输数据写入所述存储器中;所述数据突发传输是指预设时长内的数据传输量大于平均数据传输量;
将所述读时钟域的所述读指针同步至所述写时钟域,并判断同步后的所述读指针与所述写指针是否相同;
在所述同步后的所述读指针与所述写指针相同的情况下,确定所述存储器处于写满状态;
在所述存储器处于写满状态时,通过所述乒乓控制器控制所述待传输数据写入所述补充存储器中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于所述读指针,按照所述写指针写入所述待传输数据的顺序读取所述存储器中的所述待传输数据;
将所述写时钟域的所述写指针同步至所述读时钟域,并判断同步后的所述写指针与所述读时钟域的所述读指针是否相同;
在所述同步后的所述写指针与所述读时钟域的所述读指针相同的情况下,确定所述存储器处于读空状态;
在所述存储器处于读空状态时,通过所述乒乓控制器控制按照所述待传输数据写入所述补充存储器的顺序读取所述补充存储器中的所述待传输数据。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
采用第一存储深度计算公式计算所述存储器的第一目标存储深度;
所述第一存储深度计算公式为:
N=burst_len-(burst_len)/wclk*rclk
其中,N为所述存储器的第一目标存储深度,burst_len为所述待传输数据的长度,wclk为所述读指针的读时钟频率,rclk为所述写指针的写时钟频率;
调整所述存储器的存储深度为所述存储器的第一目标存储深度;
采用第二存储深度计算公式计算所述补充存储器的第二目标存储深度;
所述第二存储深度计算公式为:
n=|wclk-rclk|+4
其中,n为所述补充存储器的第二目标存储深度;
调整所述补充存储器的存储深度为所述补充存储器的第二目标存储深度。
4.根据权利要求2所述的方法,其特征在于,所述写指针为二进制写指针;所述读指针为二进制读指针;所述将所述读时钟域的所述读指针同步至所述写时钟域,并判断同步后的所述读指针与所述写指针是否相同的步骤包括:
分别将所述二进制读指针和所述二进制写指针转换为格雷码读指针和格雷码写指针;
将所述格雷码读指针同步至所述写时钟域;
判断同步后的所述格雷码读指针与所述格雷码写指针是否相同;
所述将所述写时钟域的所述写指针同步至所述读时钟域,并判断同步后的所述写指针与所述读时钟域的所述读指针是否相同的步骤包括:
将所述格雷码写指针同步至所述读时钟域;
判断同步后的所述格雷码写指针与所述读时钟域的所述格雷码读指针是否相同。
5.根据权利要求2所述的方法,其特征在于,所述补充存储器包括补充读指针、补充写指针、补充读时钟域和补充写时钟域;所述补充写指针位于所述补充写时钟域,所述补充读指针位于所述补充读时钟域;所述方法还包括:
将所述补充读时钟域的所述补充读指针同步至所述补充写时钟域,并判断同步后的所述补充读指针与所述补充写指针是否相同;
在所述同步后的所述补充读指针与所述补充写指针相同的情况下,确定所述补充存储器处于写满状态;
在所述补充存储器处于写满状态时,通过所述乒乓控制器控制所述待传输数据写入所述存储器中。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
将所述补充写时钟域的所述补充写指针同步至所述补充读时钟域,并判断同步后的所述补充写指针与所述补充读时钟域的所述补充读指针是否相同;
在所述同步后的所述补充写指针与所述补充读时钟域的所述补充读指针相同的情况下,确定所述补充存储器处于读空状态;
在所述补充存储器处于读空状态时,通过所述乒乓控制器控制按照所述待传输数据写入所述存储器的顺序读取所述存储器中的所述待传输数据。
7.一种先入先出存储器,其特征在于,所述先入先出存储器至少包括存储器、补充存储器和乒乓控制器;所述乒乓控制器分别与所述存储器和所述补充存储器通信连接;所述存储器包括写指针、读指针、写时钟域和读时钟域;所述写指针位于所述写时钟域;所述读指针位于所述读时钟域;
在所述先入先出存储器进行数据突发传输时,所述先入先出存储器基于所述写指针将待传输数据写入所述存储器中;所述数据突发传输是指预设时长内的数据传输量大于平均数据传输量;
所述先入先出存储器将所述读时钟域的所述读指针同步至所述写时钟域,并判断同步后的所述读指针与所述写指针是否相同;
在所述同步后的所述读指针与所述写指针相同的情况下,所述先入先出存储器确定所述存储器处于写满状态;
在所述存储器处于写满状态时,所述先入先出存储器通过所述乒乓控制器控制所述待传输数据写入所述补充存储器中。
8.一种先入先出存储器的数据传输处理装置,其特征在于,应用于先入先出存储器,所述先入先出存储器至少包括存储器、补充存储器和乒乓控制器;所述乒乓控制器分别与所述存储器和所述补充存储器通信连接;所述存储器包括写指针、读指针、写时钟域和读时钟域;所述写指针位于所述写时钟域;所述读指针位于所述读时钟域;所述装置包括:
写入模块,用于在所述先入先出存储器进行数据突发传输时,基于所述写指针将待传输数据写入所述存储器中;所述数据突发传输是指预设时长内的数据传输量大于平均数据传输量;
同步模块,用于将所述读时钟域的所述读指针同步至所述写时钟域,并判断同步后的所述读指针与所述写指针是否相同;
确定模块,用于在所述同步后的所述读指针与所述写指针相同的情况下,确定所述存储器处于写满状态;
控制模块,用于在所述存储器处于写满状态时,通过所述乒乓控制器控制所述待传输数据写入所述补充存储器中。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行存储器上所存放的程序时,实现如权利要求1-6任一项所述的方法。
10.一个或多个计算机可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-6任一项所述的方法。
CN202410341071.1A 2024-03-22 2024-03-22 先入先出存储器的数据传输处理方法、装置、设备及介质 Pending CN118132005A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410341071.1A CN118132005A (zh) 2024-03-22 2024-03-22 先入先出存储器的数据传输处理方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410341071.1A CN118132005A (zh) 2024-03-22 2024-03-22 先入先出存储器的数据传输处理方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN118132005A true CN118132005A (zh) 2024-06-04

Family

ID=91240297

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410341071.1A Pending CN118132005A (zh) 2024-03-22 2024-03-22 先入先出存储器的数据传输处理方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN118132005A (zh)

Similar Documents

Publication Publication Date Title
JP4998519B2 (ja) 非同期インタフェース回路及び非同期データ転送方法
US20090323728A1 (en) Asynchronous data fifo that provides uninterrupted data flow
WO2019165954A1 (zh) 一种数据位宽转换的方法及装置、计算机可读存储介质
EP3200089B1 (en) Method, apparatus, communication equipment and storage media for determining link delay
US11762017B2 (en) Performing scan data transfer inside multi-die package with SERDES functionality
WO2011065354A1 (ja) バスモニタ回路及びバスモニタ方法
CN109408427B (zh) 一种跨时钟域数据处理方法及系统
CN118132005A (zh) 先入先出存储器的数据传输处理方法、装置、设备及介质
CN112306919A (zh) 一种基于fpga的数据对齐方法、装置、设备及介质
US8213558B2 (en) Digital timing correction system, method and apparatus
US7496728B2 (en) Asynchronous jitter reduction technique
CN108462655B (zh) Fc链路弹性缓冲区电路
JPWO2004088851A1 (ja) 信号伝送方法
US20100277204A1 (en) For externally clocked digital audio input, determining a valid clock and muting audio during synchronization
CN110601784B (zh) Tdm接口扩展方法及装置、设备、可读存储介质
JPS6325737B2 (zh)
JP2000031947A (ja) 標本化周波数変換装置およびこれを具備した電子機器
KR100460994B1 (ko) 직접 메모리 액세스 기능을 구비한 광대역 입출력 장치 및그 방법
KR100586585B1 (ko) 병렬 처리 선입선출을 이용한 직접 메모리 액세스 방법
CN116069528A (zh) 数据处理方法、装置、电子设备及存储介质
CN117708005A (zh) 一种存储器访问方法、装置、设备及介质
CN116578516A (zh) 基于emmc的数据和命令的传输方法和装置
CN113204503A (zh) 一种数据同步输出方法及电路
KR200297335Y1 (ko) 전송시스템의 테스트보드 인터페이스장치
CN117856957A (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