CN113867681B - 数据处理方法及装置、数据处理设备和存储介质 - Google Patents

数据处理方法及装置、数据处理设备和存储介质 Download PDF

Info

Publication number
CN113867681B
CN113867681B CN202111164167.8A CN202111164167A CN113867681B CN 113867681 B CN113867681 B CN 113867681B CN 202111164167 A CN202111164167 A CN 202111164167A CN 113867681 B CN113867681 B CN 113867681B
Authority
CN
China
Prior art keywords
read
write
data
clock
pointer
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
Application number
CN202111164167.8A
Other languages
English (en)
Other versions
CN113867681A (zh
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.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology 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 Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202111164167.8A priority Critical patent/CN113867681B/zh
Publication of CN113867681A publication Critical patent/CN113867681A/zh
Application granted granted Critical
Publication of CN113867681B publication Critical patent/CN113867681B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Information Transfer Systems (AREA)

Abstract

一种数据处理方法及装置、数据处理设备和存储介质。该数据处理方法用于先进先出(FIFO)缓存器,FIFO缓存器包括依序排列的多个存储段,写时钟信号与参考时钟信号同相且在一个参考周期内对应X个写时钟周期,读时钟信号与参考时钟信号同相且在一个参考周期内对应Y个读时钟周期,X和Y为正整数。该数据处理方法包括:响应于X大于Y,在X个写时钟周期中,选择多个写中止周期,在多个写中止周期期间,使得FIFO缓存器的写指针保持不变;响应于X小于Y,在Y个读时钟周期中,选择多个读中止周期,在多个读中止周期期间,使得FIFO缓存器的读指针保持不变。该数据处理方法有效地降低异步FIFO缓存器的传输延时,减少异步FIFO缓存器需要的缓存资源,节约成本。

Description

数据处理方法及装置、数据处理设备和存储介质
技术领域
本公开的实施例涉及一种数据处理方法、数据处理装置、数据处理设备和非瞬时可读存储介质。
背景技术
随着集成电路的发展和工艺的提升,芯片的集成度在不断提升,大规模SoC(System on Chip)设计已成为主流。SoC设计在一个芯片上集成了系统中各项功能模块并实现了模块间的数据通信。各个功能模块有各自的功能和性能要求,根据各个功能模块的需求通常会设计多个时钟。在功能越复杂的SoC设计中时钟数目更多。由于SoC设计中大量采用同步时序设计,采用不同时钟的功能模块之间如果需要进行通信,则需要对交互信号进行异步时序处理以避免出现时序和逻辑错误。目前,存在多种异步时序处理技术方案,其中异步先进先出(First In First Out,FIFO)缓存是最广泛使用的一种技术方案。
发明内容
本公开至少一个实施例提供一种数据处理方法,应用于先进先出(FIFO)缓存器。所述FIFO缓存器包括依序排列的多个存储段,所述多个存储段分别具有依序的多个地址,用于所述FIFO缓存器的写时钟信号与参考时钟信号同相且在所述参考时钟信号的一个参考周期内对应X个写时钟周期,用于所述FIFO缓存器的读时钟信号与所述参考时钟信号同相且在所述参考时钟信号的一个参考周期内对应Y个读时钟周期,X和Y为正整数,所述数据处理方法包括:响应于X大于Y,在所述X个写时钟周期中,选择多个写中止周期,且在所述多个写中止周期期间,使得所述FIFO缓存器的写指针保持不变;响应于X小于Y,在所述Y个读时钟周期中,选择多个读中止周期,且在所述多个读中止周期期间,使得所述FIFO缓存器的读指针保持不变。
例如,在本公开至少一个实施例提供的方法中,所述多个写中止周期为(X-Y)个所述写时钟周期,所述多个读中止周期为(Y-X)个读时钟周期。
例如,在本公开至少一实施例提供的方法中,响应于X大于Y,在所述X个写时钟周期中,选择所述多个写中止周期,包括:基于第一等式,在所述X个写时钟周期中,选择所述多个写中止周期。所述第一等式为:i=ceil((2×Y+j×X-X)/(X-Y)),其中,ceil()为向上取整函数,X表示在所述一个参考周期内写时钟周期的个数,Y表示在所述一个参考周期内读时钟周期的个数,j表示在所述多个写中止周期中的第j个写中止周期,i表示在所述X个写时钟周期中所述第j个写中止周期的序号,0≤i≤(X-1),0≤j≤(X-Y-1),且i和j为整数。
例如,本公开至少一实施例提供的方法还包括:在X大于Y并且所述写指针指向所述多个存储段的初始写存储段,所述读指针指向所述多个存储段的初始读存储段的情况下,响应于当前要写入数据的当前写时钟周期不属于所述多个写中止周期,所述写指针指向所述初始写存储段的下一存储段,将目标写数据写入所述写指针对应的存储段;响应于所述当前写时钟周期属于所述多个写入中止周期,所述写指针保持指向所述初始写存储段,写反馈信号设置为无效;基于当前要读出数据的当前读时钟周期,所述读指针指向所述初始读存储段的下一存储段,从所述读指针对应的存储段读出目标读数据。
例如,在本公开至少一实施例提供的方法中,响应于所述初始写存储段为所述多个存储段的最后一个存储段,所述初始写存储段的下一存储段为所述多个存储段的第一个存储段。
例如,在本公开至少一实施例提供的方法中,响应于所述初始读存储段为所述多个存储段的最后一个存储段,所述初始读存储段的下一存储段为所述多个存储段的第一个存储段。
例如,在本公开至少一实施例提供的方法中,所述目标写数据包括数据标志位和目标数据中的至少一个。
例如,在本公开至少一实施例提供的方法中,将所述目标写数据写入所述写指针对应的存储段,包括:响应于所述当前写时钟周期的写使能信号有效,将所述数据标志位和所述目标数据写入所述写指针对应的存储段,所述数据标志位有效;响应于所述当前写时钟周期的写使能信号无效,将所述数据标志位写入所述写指针对应的存储段,所述数据标志位无效。
例如,在本公开至少一个实施例提供的方法中,响应于X小于Y,在所述Y个读时钟周期中,选择所述多个读中止周期,包括:基于第二等式,在所述Y个读时钟周期中,选择所述多个读中止周期。所述第二等式为:n=ceil((Y+m×X-X)/(Y-X)),其中,ceil()为向上取整函数,X表示在所述一个参考周期内写时钟周期的个数,Y表示在所述一个参考周期内读时钟周期的个数,m表示在所述多个读中止周期中的第m个读中止周期,n表示在所述Y个读时钟周期中第m个读中止周期的序号,0≤n≤(Y-1),0≤m≤(Y-X-1),且m和n为整数。
例如,本公开至少一个实施例提供的方法还包括:在X小于Y并且所述写指针指向所述多个存储段的初始写存储段,所述读指针指向所述多个存储段的初始读存储段的情况下:响应于当前要读出数据的当前读时钟周期不属于所述多个读中止周期,所述读指针指向所述初始读存储段的下一存储段,从所述读指针对应的存储段读出目标读数据;响应于所述当前读时钟周期属于所述多个读中止周期,所述读指针保持指向所述初始读存储段,数据有效信号设置为无效;基于当前要写入数据的当前写时钟周期,所述写指针指向所述初始写存储段的下一存储段,将目标写数据写入所述写指针对应的存储段。
例如,在本公开至少一个实施例提供的方法中,目标读数据包括数据标志位和目标数据中的至少一个。
例如,在本公开至少一个实施例提供的方法中,从所述读指针对应的存储段读出目标读数据,包括:响应于所述目标读数据中的数据标志位为有效,数据有效信号设置为有效,读出目标读数据中的目标数据;响应于所述目标读数据中的数据标志位为无效,数据有效信号设置为无效。
例如,在本公开至少一个实施例提供的方法中,所述FIFO缓存器中的多个存储段至少包括3个存储段。
例如,在本公开至少一个实施例提供的方法中,所述FIFO缓存器至少满足以下时序约束:所述FIFO缓存器的读控制通路逻辑基于所述读时钟信号,所述FIFO缓存器的读数据通路逻辑基于所述读时钟信号和所述写时钟信号中频率较高的时钟信号。
例如,本公开至少一个实施例提供的方法还包括:初始化所述FIFO缓存器,使得所述写时钟指向所述多个存储段中的第一个存储段,所述读时钟指向所述多个存储段中的最后一个存储段,所述写时钟周期的序号为0,所述读时钟周期的序号为0。
本公开至少一个实施例还提供一种数据处理装置,应用于先进先出(FIFO)缓存器。所述FIFO缓存器包括依序排列的多个存储段,所述多个存储段分别具有依序的多个地址,用于所述FIFO缓存器的写时钟信号与参考时钟信号同相且在所述参考时钟信号的一个参考周期内对应X个写时钟周期,用于所述FIFO缓存器的读时钟信号与所述参考时钟信号同相且在所述参考时钟信号的一个参考周期内对应Y个读时钟周期,X和Y为正整数。所述数据处理装置包括:写选择单元,配置为响应于X大于Y,在所述X个写时钟周期中,选择多个写中止周期,且在所述多个写中止周期期间,使得所述FIFO缓存器的写指针保持不变;读选择单元,配置为响应于X小于Y,在所述Y个读时钟周期中,选择多个读中止周期,且在所述多个读中止周期期间,使得所述FIFO缓存器的读指针保持不变。
本公开至少一个实施例还提供一种数据处理装置,包括处理器和存储器。存储器包括一个或多个计算机程序模块。所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,用于执行上述任一实施例提供的数据处理方法的指令。
本公开至少一个实施例还提供一种数据处理设备,包括如上述任一实施例提供的数据处理装置;以及所述先进先出缓存器,与所述数据处理装置连接。
本公开至少一个实施例还提供一种非瞬时可读存储介质,其上存储有计算机指令。所述计算机指令被处理器执行时执行上述任一实施例提供的数据处理方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为本公开至少一个实施例提供的一种FIFO缓存器的示意图;
图2为本公开至少一个实施例提供的数据处理方法的流程图;
图3为本公开至少一个实施例提供的另一种FIFO缓存器的示意图;
图4A为本公开至少一个实施例提供的参考时钟信号和工作时钟信号的示意图;
图4B为本公开至少一个实施例提供的参考时钟信号、写时钟信号和读时钟信号的示意图;
图5为本公开少一个实施例提供的一种在X大于Y的情况下数据处理方法的示意图;
图6为本公开至少一个实施例提供的另一种数据处理方法的流程图;
图7为本公开少一个实施例提供的一种在X小于Y的情况下数据处理方法的示意图;
图8为本公开至少一个实施例提供的另一种数据处理方法的流程图;
图9为本公开至少一个实施例的另一种FIFO缓存器的示意图;
图10为本公开至少一个实施例的一种数据处理装置的示意框图;
图11为本公开至少一个实施例提供的另一种数据处理装置的示意框图;
图12为本公开至少一个实施例提供的又一种数据处理装置的示意框图;
图13为本公开至少一个实施例提供的一种数据处理设备的示意框图;以及
图14为本公开至少一个实施例提供的一种非瞬时可读存储介质的示意框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
先进先出(FIFO)缓存器只能顺序写入数据,顺序读出数据,通常其数据地址由内部读写指针自动循环加l完成,以保证数据写入的数据和数据读出的顺序的一致性。FIFO缓存器依据工作时钟域,可以分同步FIFO缓存器和异步FIFO缓存器两类。同步FIFO缓存器是指读时钟和写时钟为同一个时钟,在时钟上升沿或下降沿发生读写操作。异步FIFO缓存器是指读写时钟不一致,读写时钟是互相独立的。
FIFO缓存器大量用于不同时钟域之间的数据传输。通常,异步FIFO缓存器通过采用格雷码编码读指针和写指针,采用多级同步方法分别将读指针同步到写时钟域、写指针同步到读时钟域来同步读时钟域和写时钟域的状态,控制数据的写入和读出,实现信号的跨时钟域传输。
考虑到亚稳态问题,信号采用多级同步方式同步到目的时钟域时,对最小同步级数是有要求的,该要求主要由采用的芯片设计工艺和目的时钟域的频率决定。一般来说,工艺制程越先进、目的时钟域频率越高,需要的同步级数越多。由于异步FIFO缓存器需要将写指针同步到读时钟域后才能判断缓存中是否有数据可供读出,采用异步FIFO缓存器的方案处理跨时钟域信号通常会带来较大的传输延时。
出于性能或功能方面的考虑,很多芯片设计对传输延时比较敏感。在深亚微米时代,为了避免亚稳态,处理跨时钟域信号引入的传输延时已经严重影响到系统性能。
为了克服上述技术问题,本公开至少一个实施例提供了一种数据处理方法,应用于先进先出(FIFO)缓存器。该FIFO缓存器包括依序排列的多个存储段,多个存储段分别具有依序的多个地址,用于FIFO缓存器的写时钟信号与参考时钟信号同相且在参考时钟信号的一个参考周期内对应X个写时钟周期,用于FIFO缓存器的读时钟信号与参考时钟信号同相且在参考时钟信号的一个参考周期内对应Y个读时钟周期,X和Y为正整数。该数据处理方法包括:响应于X大于Y,在X个写时钟周期中,选择多个写中止周期,且在该多个写中止周期期间,使得FIFO缓存器的写指针保持不变;响应于X小于Y,在Y个读时钟周期中,选择多个读中止周期,且在多个读中止周期期间,使得FIFO缓存器的读指针保持不变。
相应地,本公开至少一个实施例还提供了一种对应于上述数据处理方法的数据处理装置、数据处理设备和非瞬时可读存储介质。
通过本公开至少一个实施例提供的数据处理方法或装置,可以有效地降低异步FIFO缓存器的传输延时,还可以有效地减少异步FIFO缓存器需要的缓存资源,节约成本。
下面通过几个示例或实施例对根据本公开的至少一个实施例提供的数据处理方法进行非限制性的说明,如下面所描述的,在不相互抵触的情况下这些具体示例或实施例中不同特征可以相互组合,从而得到新的示例或实施例,这些新的示例或实施例也都属于本公开保护的范围。
图1为本公开至少一个实施例提供的一种FIFO缓存器的示意图。
例如,在本公开至少一个实施例中,如图1所示,一种FIFO缓存器100包括N个缓存单元、读指针和写指针,FIFO缓存器对外的信号接口可以分为写端口和读端口。例如,写端口包括写时钟信号、写使能信号、写数据信号和满标志信号,读端口包括读时钟信号、读使能信号、读数据信号、读数据有效信号和空标志信号。FIFO缓存器的写端口的所有信号均属于写时钟域,FIFO缓存器的读端口的所有信号均属于读时钟域。
例如,在一个示例中,当FIFO缓存器的满标志信号有效时,不能向FIFO缓存器写入数据,当FIFO缓存器的空标志信号有效时,无法从FIFO缓存器读出数据。FIFO缓存器内部维护写指针和读指针,写指针属于写时钟域,指向待写入数据的缓存单元,每写入一个数据写指针自动循环加1。读指针属于读时钟域,指向待读出数据的缓存单元,每读出一个数据读指针自动循环加1。通过判断写指针和读指针的相对位置,可以得到FIFO缓存器的空标志信号/满标志信号。从而,通过维护读/写指针和空/满标志,FIFO缓存器可以实现数据的先进先出。
基于上述FIFO缓存器的工作原理,本公开至少一个实施例提供一种数据处理方法。
图2为本公开至少一个实施例提供的数据处理方法的流程图,图3为本公开至少一个实施例提供的另一种FIFO缓存器的示意图。
例如,在本公开至少一个实施例中,图2所示的数据处理方法20可以应用于FIFO缓存器,例如,图3所示的FIFO缓存器300。FIFO缓存器包括依序排列的多个存储段,多个存储段分别具有依序的多个地址,用于FIFO缓存器的写时钟信号与参考时钟信号同相且在参考时钟信号的一个参考周期内对应X个写时钟周期,用于FIFO缓存器的读时钟信号与参考时钟信号同相且在参考时钟信号的一个参考周期内对应Y个读时钟周期,X和Y为正整数。数据处理方法20包括以下操作:
步骤S201:响应于X大于Y,在X个写时钟周期中,选择多个写中止周期,且在该多个写中止周期期间,使得FIFO缓存器的写指针保持不变;
步骤S202:响应于X小于Y,在Y个读时钟周期中,选择多个读中止周期,且在多个读中止周期期间,使得FIFO缓存器的读指针保持不变。
需要说明的是,在本公开的实施例中,FIFO缓存器中的存储段可以是FIFO缓存器中的一行数据位,例如,用于存储数据,本公开的实施例对存储段的长度(即,一行数据位的长度)不作限制,可以根据实际需求设置。
还需要说明的是,在本公开的实施例中,步骤S201-步骤S202可以顺序执行,也可以按调整后的其他次序执行,或者步骤S201-步骤S202择一执行,本公开的实施例对各个步骤的执行顺序不作限制,可以根据实际情况调整。
例如,在一些示例中,实施本公开至少一个实施例提供的数据处理方法可以选择地执行步骤S201-步骤S202中的部分步骤,也可以执行除了步骤S201-步骤S202以外的一些附加步骤,本公开的实施例对此不做限制。
例如,在本公开至少一个实施例中,如图3所示,FIFO缓存器300内部包括多个存储段、读指针和写指针,FIFO缓存器300的写端口包括写时钟信号、写使能信号、写数据信号和写反馈信号,FIFO缓存器300的读端口包括读时钟信号、读数据信号、读数据有效信号。用于FIFO缓存器300的写时钟信号与参考时钟信号同相,用于FIFO缓存器300的读时钟信号与参考时钟信号同相。需要说明的是,FIFO缓存器300还可以包括其他信号端口,本公开的实施例对此不作限制。
图4A为本公开至少一个实施例提供的参考时钟信号和工作时钟信号的示意图,图4B为本公开至少一个实施例提供的参考时钟信号、写时钟信号和读时钟信号的示意图。
本公开至少一个实施例提供的数据处理方法20要求FIFO缓存器的写时钟信号、读时钟信号和参考时钟信号同相。下面结合图4A和图4B来详细说明写时钟信号、读时钟信号和参考时钟信号的同相关系。
例如,如图4A所示,以一个基频时钟信号作为系统的参考时钟信号,如果工作时钟信号的频率是参考时钟信号的倍数,并且该工作时钟信号的相位和参考时钟信号的相位相同,则称工作时钟信号和参考时钟信号同相。由于工作时钟信号与参考时钟信号的相位相同,并且频率是倍数关系,因此,参考时钟信号的一个完整的参考时钟周期对应工作时钟信号的多个完整的工作时钟周期。
例如,在本公开至少一个实施例中,如果FIFO缓存器的写时钟信号和读时钟信号均与参考时钟信号的相位相同,且写时钟信号和读时钟信号的频率均是参考时钟信号的倍数,则称该写时钟信号、读时钟信号和参考时钟信号同相。例如,如图4B所示,在一个示例中,FIFO缓存器的写时钟信号的频率是参考时钟信号的7倍,FIFO缓存器的读时钟信号的频率是参考时钟信号的5倍,并且FIFO缓存器的写时钟信号的上升沿和读时钟信号的上升沿均与参考时钟信号的上升沿对齐。例如,如图4B所示,在参考时钟信号的每一个完整的参考时钟周期内,对应有写时钟信号的7个完整的写时钟周期和读时钟信号的5个完整的读时钟周期,并且写时钟信号的第一个写时钟周期和读时钟信号的第一个读时钟周期的时钟上升沿对齐。
需要说明的是,图4B中示出的是每一个参考时钟周期对应7个写时钟周期和5个读时钟周期,这仅仅是示意性的,本公开的实施例对一个参考时钟周期对应的写时钟周期的个数和读时钟周期的个数不作限制,即X和Y可以为任意正整数,根据实际需求来设置。
回到图2所示的数据处理方法20,步骤S201对应于FIFO缓存器300的写时钟信号的频率高于读时钟信号频率的情况,步骤S202对应于FIFO缓存器300的写时钟信号的频率低于读时钟信号频率的情况。
图5为本公开至少一个实施例提供的一种在X大于Y的情况下数据处理方法的示意图。
例如,在本公开的至少一个实施例中,FIFO缓存器300的写时钟信号、读时钟信号和参考时钟信号同相,并且在一个参考时钟周期内对应X个写时钟周期,一个参考周期内对应Y个读时钟周期,X大于Y,且X和Y为正整数。例如,在这种情况下,在X个写时钟周期中,选择多个写中止周期,且在多个写中止周期期间,使得FIFO缓存器300的写指针保持不变。除了该多个写中止周期以外,在其他写时钟周期,写指针基于写时钟循环加1。例如,在每个读时钟周期,读指针基于读时钟循环加1。
例如,在本公开的至少一个实施例中,多个写中止周期可以为(X-Y)个写时钟周期。
例如,在一个示例中,如图5所示,X=7,Y=5,即在每一个参考时钟周期内,写时钟周期的序号从0到6,读时钟周期的序号从0到4。响应于X大于Y,在7个写时钟周期中,选择2个写中止周期,且在该2个写中止周期期间,使得FIFO缓存器的写指针保持不变。
例如,在本公开的至少一个实施例中,响应于X大于Y,在X个写时钟周期中,选择多个写中止周期,可以通过等式(1)来执行该选择操作。例如,在一个示例中,该等式(1)如下所示:
i=ceil((2×Y+j×X-X)/(X-Y)) (1)
其中,ceil()为向上取整函数,X表示在一个参考周期内写时钟周期的个数,Y表示在一个参考周期内读时钟周期的个数,j表示在多个写中止周期中的第j个写中止周期,i表示在X个写时钟周期中第j个写中止周期的序号,其中,0≤i≤(X-1),0≤j≤(X-Y-1),且i和j为整数。
例如,在一个示例中,如图5所示,X=7,Y=5。基于上述说明可知,响应于X大于Y,在7个写时钟周期中,通过上述等式(1),选择2个写中止周期。例如,通过将X=7和Y=5代入上述等式(1)计算可得,对于j=0,i=2,对于j=1,i=5。因此,如图5所示,在写时钟周期序号0至6中,选择了序号为2和5的写时钟周期作为写中止周期(由图5中的写时钟周期序号的阴影部分表示),在写时钟周期2和写时钟周期5期间,使得写指针保持不变(由图5中的写指针的阴影部分表示)。
图6为本公开至少一个实施例提供的另一种数据处理方法60的流程图。
例如,在本公开至少一个实施例中,相比于图2中所示的数据处理方法20,数据处理方法60除了步骤S201-S202以外,还包括以下步骤S601-S603。如图6所示,在X大于Y并且写指针指向多个存储段的初始写存储段,读指针指向多个存储段的初始读存储段的情况下,数据处理方法60还可以包括如下操作:
步骤S601:响应于当前要写入数据的当前写时钟周期不属于多个写中止周期,写指针指向初始写存储段的下一存储段,将目标写数据写入写指针对应的存储段。
步骤S602:响应于当前写时钟周期属于多个写入中止周期,写指针保持指向初始写存储段,写反馈信号设置为无效。
步骤S603:基于当前要读出数据的当前读时钟周期,读指针指向初始读存储段的下一存储段,从读指针对应的存储段读出目标读数据。
例如,在本公开至少一个实施例中,如图5所示,写时钟信号与读时钟信号同相,并且写时钟信号的频率大于读时钟信号的频率,通过等式(1)已经计算得到序号为2的写时钟周期和序号为5的写时钟周期为多个写中止周期。例如,在图5所示的示例中,FIFO缓存器包括三个存储段,即存储段0、存储段1和存储段2。需要说明的是,FIFO缓存器也可以包括更多存储段,本公开的实施例对此不作限制。
例如,在一个示例中,如图5所示,假设在初始状态(例如,写时钟周期0),写指针指向存储段0,读指针指向存储段2。响应于当前要写入数据的当前写时钟周期(例如,写时钟周期1)不属于写中止周期,在写时钟周期1的上升沿时,写指针指向存储段0的下一存储段,即存储段1,并且将目标写数据写入写指针对应的存储段,也就是,将目标写数据写入存储段1。
又例如,在另一个示例中,如图5所示,响应于当前要写入数据的当前写时钟周期(例如,写时钟周期2)属于写中止周期,在写时钟周期2期间,写指针保持指向存储段1,也就是,在写时钟周期2的上升沿,写指针不发生移动,并且在写时钟周期2的上升沿时,将写反馈信号设置为无效,使得无法向FIFO缓存器写入数据。例如,在一个示例中,写反馈信号可以复用为图1中的满标志信号,以指示是否能继续向FIFO缓存器写入数据。
例如,在图5所示的示例中,基于每一个读时钟周期,读指针都会循环加1。例如,响应于每个读时钟周期的上升沿,读指针会移动到下一存储段。
需要说明的是,在本公开的实施例中,FIFO缓存器可以使用顺序队列,也可以使用循环队列,本公开的实施例对此不作限制。通常使用循环队列,可以避免溢出问题。
还需要说明的是,在本公开的实施例中,“指针循环加1”不仅包括指针地址顺序加1的情况,也包括指针从最后一个存储段移动到第一个存储段的情况。
例如,在本公开至少一个实施例中,响应于初始写存储段为多个存储段的最后一个存储段,初始写存储段的下一存储段为多个存储段的第一个存储段。例如,在本公开至少一个实施例中,响应于初始读存储段为多个存储段的最后一个存储段,初始读存储段的下一存储段为多个存储段的第一个存储段。
例如,在图5所示的示例中,FIFO缓存器使用的是循环队列。如图5所示,例如,假设此时读指针或者写指针指向存储段2,在下一个读时钟周期或者写时钟周期,如果指针移动的话,读指针或者写指针会移动到存储段0。
例如,在图5所示的示例中,写指针在一个参考时钟周期内的7个读时钟周期中选择5个写时钟周期循环加1,选择两个写时钟周期写指针不变。写指针和读指针的移动(例如,循环加1)只与写时钟和读时钟相关,不受写使能信号和读使能信号的影响。
例如,在图5所示的示例中,写时钟周期0写入的目标写数据会在读时钟周期1被读出,写时钟周期1写入的目标写数据会在读时钟周期2被读出,写时钟周期3写入的目标写数据会在读时钟周期3被读出,写时钟周期4写入的目标写数据会在读时钟周期4被读出,写时钟周期6写入的目标写数据会在下一个读时钟周期0被读出。因此,在这种情况下,数据从写入到读出的延时为t1个写时钟周期,其中,1≤t1<2。
例如,在本公开至少一个实施例中,如图5所示,当写时钟频率高于读时钟频率时,写指针总是比读指针提前1至2个写时钟周期写入数据。例如,在这种情况下,FIFO缓存器至少需要3个存储段。又例如,在这种情况下,当物理设计FIFO缓存器时,需要保证读端口数据读取逻辑满足建立时间小于1个写时钟周期。
例如,在本公开至少一个实施例中,目标写数据包括数据标志位和目标数据中的至少一个。
例如,如图3所示,FIFO缓存器300内部的存储段存储有目标数据(例如,Data_1、Data_2、……、Data_N),还存储有数据标志位(例如,Va_1、Va_2、……、Va_N)。例如,在本公开至少一个实施例中,FIFO缓存器300的读端口中的读数据有效信号可以基于读指针指向的数据标志位。例如,当读指针指向的数据标志位无效,则读数据有效信号为无效,当读指针指向的数据标志位有效,则读数据有效信号为有效。
需要说明的是,在本公开的实施例中,数据标志位可以为一位数据,也可以为多位数据,本公开的实施例对数据标志位的位数不作限制,可以根据实际需求设置。
还需要说明的是,在本公开的实施例中,数据标志位可以如图3所示存储在FIFO缓存器中相应的存储段中,也可以存储在其他存储单元中,本公开的实施例对数据标志位的存储位置不作限制,只要能被读取即可。
例如,在本公开至少一个实施例中,在FIFO缓存器初始化时,数据标志位均被初始化为无效。
例如,在本公开至少一个实施例中,对于步骤S601中的操作,将目标写数据写入写指针对应的存储段,可以包括:响应于当前写时钟周期的写使能信号有效,将数据标志位和目标数据写入写指针对应的存储段,该数据标志位有效;以及响应于当前写时钟周期的写使能信号无效,将数据标志位写入写指针对应的存储段,该数据标志位无效。
例如,在一个示例中,当没有要写入的数据时,写使能信号为无效,则单独将数据标志位写入写指针对应的存储段,并且该数据标志位为无效。当读指针指向该存储段时,由于对应的数据标志位为无效,因此,读数据有效信号为无效。
因此,在本公开的实施例中,FIFO缓存器的读指针和写指针的变化仅基于读时钟和写时钟,与数据的写入和读出无关,从而有效保证了读指针和写指针长期保持预期的时序关系。
图7为本公开至少一个实施例提供的一种在X小于Y的情况下数据处理方法的示意图。
例如,在本公开的至少一个实施例中,FIFO缓存器300的写时钟信号、读时钟信号和参考时钟信号同相,并且在一个参考时钟周期内对应X个写时钟周期,一个参考周期内对应Y个读时钟周期,X小于Y,且X和Y为正整数。例如,在这种情况下,在Y个读时钟周期中,选择多个读中止周期,且在多个读中止周期期间,使得FIFO缓存器300的读指针保持不变。除了该多个读中止周期以外,在其他读时钟周期,读指针基于读时钟循环加1。例如,在每个写时钟周期,写指针基于写时钟循环加1。
例如,在本公开的至少一个实施例中,多个读中止周期可以为(Y-X)个读时钟周期。
例如,在一个示例中,如图7所示,X=5,Y=7,即在每一个参考时钟周期内,写时钟周期的序号从0到4,读时钟周期的序号从0到6。响应于X小于Y,在7个读时钟周期中,选择2个读中止周期,且在所选择的2个读中止周期期间,使得FIFO缓存器的读指针保持不变。
例如,在本公开的至少一个实施例中,响应于X小于Y,在Y个读时钟周期中,选择多个读中止周期,可以通过等式(2)来执行该选择操作。例如,在一个示例中,该等式(2)如下所示:
n=ceil((Y+m×X-X)/(Y-X)) (2)
其中,ceil()为向上取整函数,X表示在一个参考周期内写时钟周期的个数,Y表示在一个参考周期内读时钟周期的个数,m表示在多个读中止周期中的第m个读中止周期,n表示在Y个读时钟周期中第m个读中止周期的序号,其中,0≤n≤(Y-1),0≤m≤(Y-X-1),且m和n为整数。
例如,在一个示例中,如图7所示,X=5,Y=7。基于上述说明可知,响应于X小于Y,在7个读时钟周期中,通过上述等式(2),选择2个读中止周期。例如,通过将X=5和Y=7代入上述等式(2)计算可得,对于m=0,n=1,对于m=1,n=4。因此,如图7所示,在读时钟周期序号0至6中,选择了序号为1和4的读时钟周期作为读中止周期(由图7中的读时钟周期序号的阴影部分表示)。
图8为本公开至少一个实施例提供的另一种数据处理方法80的流程图。
例如,在本公开至少一个实施例中,相比于图2中所示的数据处理方法20,数据处理方法80除了步骤S201-S202以外,还包括以下步骤S801-S803。如图8所示,在X小于Y并且写指针指向多个存储段的初始写存储段,读指针指向多个存储段的初始读存储段的情况下,数据处理方法80还可以包括如下操作:
步骤S801:响应于当前要读出数据的当前读时钟周期不属于多个读中止周期,读指针指向初始读存储段的下一存储段,从读指针对应的存储段读出目标读数据。
步骤S802:响应于当前读时钟周期属于多个读中止周期,读指针保持指向初始读存储段,读数据有效信号设置为无效。
步骤S803:基于当前要写入数据的当前写时钟周期,写指针指向初始写存储段的下一存储段,将目标写数据写入写指针对应的存储段。
例如,在本公开至少一个实施例中,如图7所示,写时钟信号与读时钟信号同相,并且写时钟信号的频率小于读时钟信号的频率,通过等式(2)已经计算得到序号为1的读时钟周期和序号为4的读时钟周期为多个读中止周期。
例如,在图7所示的示例中,FIFO缓存器包括两个存储段,即存储段0和存储段1。需要说明的是,FIFO缓存器也可以包括更多存储段,本公开的实施例对此不作限制。
例如,在一个示例中,如图7所示,假设在初始状态(例如,读时钟周期0),读指针指向存储段1,写指针指向存储段0。例如,响应于当前要读出数据的当前读时钟周期(例如,读时钟周期1)属于读中止周期,在读时钟周期1期间,读指针保持指向存储段1,也就是,在读时钟周期1的上升沿时,读指针不发生移动,在并且在读时钟周期1的上升沿时,将读数据有效信号设置为无效,使得无法从FIFO缓存器读出数据。
例如,在一个示例中,响应于当前读时钟周期(例如,读时钟周期2)不属于读中止周期,在读时钟周期2的上升沿,读指针指向存储段1的下一存储段,即存储段0。
例如,在图7所示的示例中,基于每一个写时钟周期,写指针都会循环加1。例如,响应于每个写时钟周期的上升沿,写指针移动到下一存储段。
例如,在图7所示的示例中,在一个参考时钟周期内的7个读时钟周期中,选择读时钟周期1和读时钟周期4期间,读指针保持不变(由图7中的读指针的阴影部分表示),并且在读时钟周期1和读时钟周期4期间,设置读数据有效信号为无效。例如,在其它读时钟周期,读数据有效信号可以基于读指针指向的存储段对应的数据标志位。例如,在一个示例中,读数据有效信号可以复用为图1中的空标志信号,以指示是否能继续从FIFO缓存器读取数据。
例如,在图7所示的示例中,写时钟周期0写入的数据会在读时钟周期2被读出,写时钟周期1写入的数据会在读时钟周期3被读出,写时钟周期2写入的数据会在读时钟周期5被读出,写时钟周期3写入的数据会在读时钟周期6被读出,写时钟周期4写入的数据会在下一个读时钟周期0被读出。因此,在这种情况下,数据从写入到读出的延时为t2个读时钟周期,1≤t2<2。
例如,在本公开至少一个实施例中,如图7所示,当写时钟频率低于读时钟频率时,写指针总是比读指针提前不超过1个写时钟周期写入数据,因此,在这种情况下,FIFO缓存器至少需要2个存储段。又例如,在这种情况下,当物理设计FIFO缓存器时,需要保证读端口数据读取逻辑满足建立时间小于1个读时钟周期。
例如,在本公开至少一个实施例中,目标写数据包括数据标志位和目标数据中的至少一个。
例如,在本公开至少一个实施例中,对于步骤S801中的操作,从读指针对应的存储段读出目标读数据,可以包括:响应于目标读数据中的数据标志为有效,读数据有效信号设置为有效,读出目标读数据中的目标数据,响应于目标读数据中的数据标志位为无效,读数据有效信号设置为无效。
例如,在一个示例中,当读指针指向的存储段对应的数据标志位为无效时,无法从FIFO缓存器读出数据,读数据有效信号为无效。
因此,在本公开的实施例中,FIFO缓存器的读指针和写指针的变化仅基于读时钟和写时钟,与数据的写入和读出无关,从而有效保证了读指针和写指针长期保持预期的时序关系。
例如,在本公开至少一实施例中,FIFO缓存器需要满足以下时序约束:(1)FIFO缓存器的写时钟信号与参考时钟信号同相;(2)FIFO缓存器的读时钟信号与参考时钟信号同相;(3)FIFO缓存器的写数据通路逻辑和写控制通路逻辑是基于写时钟信号;(4)FIFO缓存器的读控制通路逻辑基于读时钟信号,FIFO缓存器的读数据通路逻辑基于读时钟信号和写时钟信号中频率较高的时钟信号。
例如,在本公开的实施例中,读控制通路逻辑和写控制通路逻辑是指读/写控制信号(例如,写使能信号、写反馈信号、读数据有效信号等)和读/写指针相关的逻辑,读数据通路逻辑和写数据通路逻辑是指与数据读/写通道相关的逻辑,例如,写数据通路逻辑包括将数据写入到缓存器的路径中相关的组合逻辑和时序逻辑。又例如,读数据通路逻辑包括从缓存器读取数据的路径中相关的组合逻辑和时序逻辑。
例如,在本公开至少一实施例中,数据处理方法20还包括:初始化FIFO缓存器,使得写时钟指向多个存储段中的第一个存储段,读时钟指向多个存储段中的最后一个存储段,写时钟周期的序号为0,读时钟周期的序号为0。
例如,如图5和图7所示,FIFO缓存器初始化时,在读时钟域和写时钟域分别采样并判断参考时钟的上升沿,在参考时钟上升沿有效时,将写指针设置为0,读指针设置为s-1,其中s为FIFO缓存器中多个存储段的总数。写时钟周期序号和读时钟周期序号均设置为0。
需要说明的是,在本公开至少一个实施例中,可以采用参考时钟的下降沿来对齐写时钟周期和读时钟周期,还可以采用除了参考时钟以外的其他方式来对齐写时钟周期和读时钟周期,本公开的实施例对此不作限制,可根据实际需求来设置。
图9为本公开至少一个实施例的另一种FIFO缓存器的示意框图。
例如,在本公开至少一个实施例中,相较于图3中所示的FIFO缓存器300,图9中的FIFO缓存器900还包括写控制器和读控制器。例如,在一个示例中,分别通过写控制器和读控制器来产生写指针和读指针,可以预先根据上述等式(1)和等式(2)计算需要保持指针不变的写时钟周期(即上述写中止周期)或读时钟周期(即上述读中止周期)并存储至其他存储单元,例如寄存器等,也可以根据上述等式(1)和等式(2)动态计算下一个需要保持指针不变的写时钟周期(即上述写中止周期)或读时钟周期(即上述读中止周期)。例如,如图9所示,参考时钟信号可以用于同步写控制器和读控制器。
例如,在本公开至少一个实施例中,FIFO缓存器中的多个存储段至少包括3个存储段。如图9所示,FIFO缓存器900包括3个存储段。结合图5和图7的相关描述,当写时钟频率高于读时钟频率时,写指针总是比读指针提前1或2个写时钟周期写入数据,从而FIFO缓存器最少需要3个存储段,当写时钟频率低于读时钟频率时,写指针总是比读指针提前不超过1个写时钟周期,从而FIFO缓存器最少需要2个缓存单元。因此,根据本公开实施例的FIFO缓存器只需设计3个存储段即可,相比常规的异步FIFO缓存器所需的缓存资源有了极大的降低,有效节约成本。
因此,本公开至少一个实施例提供的上述数据处理方法20/60/80,可以有效地降低异步FIFO缓存器的传输延时,将FIFO缓存器的传输延时降低至1到2个写时钟周期或读时钟周期(取周期较小者),适用于对延时敏感的高性能设计,还可以有效地减少异步FIFO缓存器需要的缓存资源,节约成本。
图10为根据本公开至少一个实施例的一种数据处理装置的示意框图。
例如,本公开至少一个实施例提供的一种数据处理装置10,应用于FIFO缓存器,例如图3和图9所示的FIFO缓存器300/900。该FIFO缓存器包括依序排列的多个存储段,多个存储段分别具有依序的多个地址,用于FIFO缓存器的写时钟信号与参考时钟信号同相且在参考时钟信号的一个参考周期内对应X个写时钟周期,用于FIFO缓存器的读时钟信号与参考时钟信号同相且在参考时钟信号的一个参考周期内对应Y个读时钟周期,其中,X和Y为正整数。例如,如图10所示,该数据处理装置10包括写选择单元11和读选择单元12。
例如,写选择单元11被配置为响应于X大于Y,在X个写时钟周期中,选择多个写中止周期,且在多个写中止周期期间,使得FIFO缓存器的写指针保持不变。例如,写选择单元11可以实现步骤S201,其具体实现方法可以参考步骤S201的相关描述,在此不再赘述。
例如,读选择单元12被配置为响应于X小于Y,在Y个读时钟周期中,选择多个读中止周期,且在多个读中止周期期间,使得FIFO缓存器的读指针保持不变。例如,读选择单元12可以实现步骤S202,其具体实现方法可以参考步骤S202的相关描述,在此不再赘述。
例如,上述写选择单元11和读选择单元12被配置执行的具体操作均可以参见上文中本公开的至少一个实施例提供的数据处理方法20的相关描述,在此不再赘述。
需要说明的是,上述写选择单元11和读选择单元12可以通过软件、硬件、固件或它们的任意组合实现,例如,写选择单元11和读选择单元12可以分别实现为写选择电路11和读选择电路12,本公开的实施例对它们的具体实施方式不作限制。
例如,在本公开至少一个实施例中,多个写中止周期为(X-Y)个写时钟周期,多个读中止周期为(Y-X)个读时钟周期。
例如,在本公开至少一个实施例中,写选择单元11可以包括写计算单元。例如,在一个示例中,该写计算单元被配置为基于上述等式(1),在X个写时钟周期中,选择多个写中止周期。
例如,在本公开至少一个实施例中,在X大于Y并且写指针指向多个存储段的初始写存储段,读指针指向多个存储段的初始读存储段的情况下,数据处理装置10还包括写判断单元、写保持单元和读取单元。
例如,写判断单元被配置为响应于当前要写入数据的当前写时钟周期不属于多个写中止周期,写指针指向初始写存储段的下一存储段,将目标写数据写入写指针对应的存储段。例如,写判断单元可以实现步骤S601,其具体实现方法可以参考步骤S601的相关描述,在此不再赘述。
例如,写保持单元被配置为响应于当前写时钟周期属于多个写入中止周期,写指针保持指向初始写存储段,写反馈信号设置为无效。例如,写保持单元可以实现步骤S602,其具体实现方法可以参考步骤S602的相关描述,在此不再赘述。
例如,读取单元被配置为基于当前要读出数据的当前读时钟周期,读指针指向初始读存储段的下一存储段,从读指针对应的存储段读出目标读数据。例如,读取单元可以实现步骤S603,其具体实现方法可以参考步骤S603的相关描述,在此不再赘述。
例如,在本公开至少一个实施例中,写判断单元还可以包括写有效单元和写无效单元。
例如,写有效单元被配置为响应于当前写时钟周期的写使能信号有效,将数据标志位和目标数据写入写指针对应的存储段,该数据标志位有效。
例如,写无效单元被配置为响应于当前写时钟周期的写使能信号无效,将数据标志位写入写指针对应的存储段,该数据标志位无效。
例如,写有效单元和写无效单元可以实现的操作可以参考上述数据处理方法20/60/80的相关描述,在此不再赘述。
例如,在本公开至少一个实施例中,读选择单元12可以包括读计算单元。例如,在一个示例中,该读计算单元被配置为基于上述等式(2),在Y个读时钟周期中,选择多个读中止周期。
例如,在本公开至少一个实施例中,在X小于Y并且写指针指向多个存储段的初始写存储段,读指针指向多个存储段的初始读存储段的情况下,数据处理装置10还包括读判断单元、读保持单元和写入单元。
例如,读判断单元被配置为响应于当前要读出数据的当前读时钟周期不属于多个读中止周期,读指针指向初始读存储段的下一存储段,从读指针对应的存储段读出目标读数据。例如,读判断单元可以实现步骤S801,其具体实现方法可以参考步骤S801的相关描述,在此不再赘述。
例如,读保持单元被配置为响应于当前读时钟周期属于多个读中止周期,读指针保持指向初始读存储段,读数据有效信号设置为无效。例如,读保持单元可以实现步骤S802,其具体实现方法可以参考步骤S802的相关描述,在此不再赘述。
例如,写入单元被配置为基于当前要写入数据的当前写时钟周期,写指针指向初始写存储段的下一存储段,将目标写数据写入写指针对应的存储段。例如,写入单元可以实现步骤S803,其具体实现方法可以参考步骤S803的相关描述,在此不再赘述。
例如,在本公开至少一个实施例中,读判断单元还可以包括读有效单元和读无效单元。
例如,读有效单元被配置为响应于目标读数据中的数据标志位为有效,读数据有效信号设置为有效,读出目标读数据中的目标数据。
例如,读无效单元被配置为响应于目标读数据中的数据标志位为无效,读数据有效信号设置为无效。
例如,读有效单元和读无效单元可以实现的操作可以参考上述数据处理方法20/60/80的相关描述,在此不再赘述。
例如,在本公开至少一个实施例中,多个存储段至少包括3个存储段。
例如,在本公开至少一个实施例中,FIFO缓存器至少满足以下时序约束:FIFO缓存器的读控制通路逻辑基于读时钟信号,FIFO缓存器的读数据通路逻辑基于读时钟信号和写时钟信号中频率较高的时钟信号。
例如,在本公开至少一个实施例中,数据处理装置10还包括初始化单元。例如,该初始化单元被配置为初始化FIFO缓存器,使得写时钟指向多个存储段中的第一个存储段,读时钟指向多个存储段中的最后一个存储段,写时钟周期的序号为0,读时钟周期的序号为0。例如,初始化单元可以实现的操作可以参考数据处理方法20/60/80的相关描述,在此不再赘述。
例如,在本公开的实施例中,上述写计算单元、读计算单元、写有效单元、写无效单元、写判断单元、写保持单元、读取单元、读判断单元、读保持单元、写入单元、读有效单元、读无效单元和初始化单元被配置执行的具体操作均可以参见上文中本公开的至少一个实施例提供的数据处理方法20/60/80的相关描述,在此不再赘述。
需要说明的是,上述写计算单元、读计算单元、写有效单元、写无效单元、写判断单元、写保持单元、读取单元、读判断单元、读保持单元、写入单元、读有效单元、读无效单元和初始化单元可以通过软件、硬件、固件或它们的任意组合实现,例如,上述写计算单元、读计算单元、写有效单元、写无效单元、写判断单元、写保持单元、读取单元、读判断单元、读保持单元、写入单元读有效单元、读无效单元和初始化单元可以分别实现为写计算电路、读计算电路、写有效电路、写无效电路、写判断电路、写保持电路、读取电路、读判断电路、读保持电路、写入电路、读有效电路、读无效电路和初始化电路,本公开的实施例对它们的具体实施方式不作限制。
应当理解的是,本公开实施例提供的数据处理装置10可以实施前述数据处理方法20/60/80,也可以实现与前述数据处理方法20/60/80相似的技术效果,在此不作赘述。
需要注意的是,在本公开的实施例中,用于FIFO缓存器的数据处理装置10可以包括更多或更少的电路或单元,并且各个电路或单元之间的连接关系不受限制,可以根据实际需求而定。各个电路的具体构成方式不受限制,可以根据电路原理由模拟器件构成,也可以由数字芯片构成,或者以其他适用的方式构成。
图11是本公开至少一个实施例提供的另一种数据处理装置的示意框图。如图11所示,数据处理装置13包括处理器1310和存储器1320。存储器1320包括一个或多个计算机程序模块1321。一个或多个计算机程序模块1321被存储在存储器1320中并被配置为由处理器1310执行,用于执行本公开的至少一个实施例提供的数据处理方法20/60/80的指令。该一个或多个计算机程序模块1321被处理器1310执行时,可以执行本公开的至少一个实施例提供的数据处理方法20/60/80中的一个或多个步骤。存储器1320和处理器1310可以通过总线系统和/或其它形式的连接机构(未示出)互连。
例如,处理器1310可以是中央处理单元(CPU)、数字信号处理器(DSP)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元,例如现场可编程门阵列(FPGA)等;例如,中央处理单元(CPU)可以为X86或ARM架构等。处理器1310可以为通用处理器或专用处理器,可以控制数据处理装置13中的其它组件以执行期望的功能。
例如,存储器1320可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块1321,处理器1310可以运行一个或多个计算机程序模块1321,以实现数据处理装置13的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。该数据处理装置13例如可以是片上系统(SOC)或者包括该SOC的计算机、电视、显示器等。该数据处理装置13的具体功能和技术效果可以参考上文中关于数据处理方法20/60/80的描述,此处不再赘述。
图12为本公开至少一个实施例提供的又一种数据处理装置400的示意框图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图12示出的数据处理装置400仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
例如,如图12所示,在一些示例中,数据处理装置400包括处理装置(例如中央处理器、图形处理器等)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储装置308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有计算机系统操作所需的各种程序和数据。处理装置301、ROM302以及RAM303通过总线304被此相连。输入/输出(I/O)接口305也连接至总线304。
例如,以下部件可以连接至I/O接口305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括诸如液晶显示器(LCD)、扬声器、振动器等的输出装置307;包括例如磁带、硬盘等的存储装置308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信装置309。通信装置309可以允许数据处理装置400与其他设备进行无线或有线通信以交换数据,经由诸如因特网的网络执行通信处理。驱动器310也根据需要连接至I/O接口305。可拆卸介质311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器310上,以便于从其上读出的计算机程序根据需要被安装入存储装置309。虽然图12示出了包括各种装置的数据处理装置400,但是应理解的是,并不要求实施或包括所有示出的装置。可以替代地实施或包括更多或更少的装置。
例如,该数据处理装置400还可以进一步包括外设接口(图中未示出)等。该外设接口可以为各种类型的接口,例如为USB接口、闪电(lighting)接口等。该通信装置309可以通过无线通信来与网络和其他设备进行通信,该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(LAN)和/或城域网(MAN)。无线通信可以使用多种通信标准、协议和技术中的任何一种,包括但不局限于全球移动通信系统(GSM)、增强型数据GSM环境(EDGE)、宽带码分多址(W-CDMA)、码分多址(CDMA)、时分多址(TDMA)、蓝牙、Wi-Fi(例如基于IEEE 802.11a、IEEE 802.11b、IEEE 802.11g和/或IEEE 802.11n标准)、基于因特网协议的语音传输(VoIP)、Wi-MAX,用于电子邮件、即时消息传递和/或短消息服务(SMS)的协议,或任何其他合适的通信协议。
例如,数据处理装置400可以为手机、平板电脑、笔记本电脑、电子书、游戏机、电视机、数码相框、导航仪等任何设备,也可以为任意的数据处理装置及硬件的组合,本公开的实施例对此不作限制。
例如,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置309从网络上被下载和安装,或者从存储装置308被安装,或者从ROM 302被安装。在该计算机程序被处理装置301执行时,执行本公开实施例的数据处理方法中限定的上述三维展示功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述数据处理装置400中所包含的;也可以是单独存在,而未装配入该数据处理装置400中。
本公开至少一个实施例还提供一种数据处理设备。图13是根据本公开至少一个实施例的一种数据处理设备130的示意框图。如图13所示,数据处理设备130可以包括图10-图12中所示的任一数据处理装置10/13/400;以及FIFO缓存器,例如,FIFO缓存器为本公开的实施例提供的图3或图9所示的FIFO缓存器300/900,也可以为其他类似的FIFO缓存器,本公开的实施例对此不作限制。该FIFO缓存器与上述数据处理装置10/13/400连接。应当理解的是,本公开实施例提供的数据处理设备130可以实施前述数据处理方法20/60/80,也可以实现与前述数据处理方法20/60/80相似的技术效果,在此不作赘述。
本公开至少一个实施例还提供一种非瞬时可读存储介质。图14是本公开至少一个实施例提供的一种非瞬时可读存储介质的示意框图。如图14所示,非瞬时可读存储介质140上存储有计算机指令111,该计算机指令111被处理器执行时执行如上所述的用于FIFO缓存器的数据处理方法20/60/80中的一个或多个步骤。
例如,该非瞬时可读存储介质140可以是一个或多个计算机可读存储介质的任意组合,例如,一个计算机可读存储介质包含用于响应于X大于Y,在X个写时钟周期中,选择多个写中止周期,且在多个写中止周期期间,使得FIFO缓存器的写指针保持不变的计算机可读的程序代码,另一个计算机可读存储介质包含用于响应于X小于Y,在Y个读时钟周期中,选择多个读中止周期,且在多个读中止周期期间,使得FIFO缓存器的读指针保持不变的计算机可读的程序代码。当然,上述各个程序代码也可以存储在同一个计算机可读介质中,本公开的实施例对此不作限制。
例如,当该程序代码由计算机读取时,计算机可以执行该计算机存储介质中存储的程序代码,执行例如本公开任一个实施例提供的数据处理方法20/60/80。
例如,存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。例如,该可读存储介质也可以为图11中的存储器1320,相关描述可以参考前述内容,此处不再赘述。
在本公开中,术语“多个”指两个或两个以上,除非另有明确的限定。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (19)

1.一种数据处理方法,应用于先进先出缓存器,其中,所述先进先出缓存器包括依序排列的多个存储段,所述多个存储段分别具有依序的多个地址,用于写入数据到所述先进先出缓存器的写时钟信号与参考时钟信号同相且在所述参考时钟信号的一个参考周期内对应X个写时钟周期,用于从所述先进先出缓存器读出数据的读时钟信号与所述参考时钟信号同相且在所述参考时钟信号的一个参考周期内对应Y个读时钟周期,其中,X和Y为正整数,
所述数据处理方法包括:
响应于X大于Y,在所述X个写时钟周期中,选择多个写中止周期,且在所述多个写中止周期期间,使得所述先进先出缓存器的写指针保持不变;
响应于X小于Y,在所述Y个读时钟周期中,选择多个读中止周期,且在所述多个读中止周期期间,使得所述先进先出缓存器的读指针保持不变。
2.如权利要求1所述的方法,其中,所述多个写中止周期为(X-Y)个所述写时钟周期;
所述多个读中止周期为(Y-X)个读时钟周期。
3.如权利要求1所述的方法,其中,响应于X大于Y,在所述X个写时钟周期中,选择所述多个写中止周期,包括:
基于第一等式,在所述X个写时钟周期中,选择所述多个写中止周期,其中,所述第一等式为:
i=ceil((2×Y+j×X-X)/(X-Y))
其中,ceil()为向上取整函数,X表示在所述一个参考周期内写时钟周期的个数,Y表示在所述一个参考周期内读时钟周期的个数,j表示在所述多个写中止周期中的第j个写中止周期,i表示在所述X个写时钟周期中所述第j个写中止周期的序号,其中,0≤i≤(X-1),0≤j≤(X-Y-1),且i和j为整数。
4.如权利要求1所述的方法,还包括:在X大于Y并且所述写指针指向所述多个存储段的初始写存储段,所述读指针指向所述多个存储段的初始读存储段的情况下,
响应于当前要写入数据的当前写时钟周期不属于所述多个写中止周期,所述写指针指向所述初始写存储段的下一存储段,将目标写数据写入所述写指针对应的存储段;
响应于所述当前写时钟周期属于所述多个写中止周期,所述写指针保持指向所述初始写存储段,写反馈信号设置为无效;
基于当前要读出数据的当前读时钟周期,所述读指针指向所述初始读存储段的下一存储段,从所述读指针对应的存储段读出目标读数据。
5.如权利要求4所述的方法,其中,响应于所述初始写存储段为所述多个存储段的最后一个存储段,所述初始写存储段的下一存储段为所述多个存储段的第一个存储段。
6.如权利要求4所述的方法,其中,响应于所述初始读存储段为所述多个存储段的最后一个存储段,所述初始读存储段的下一存储段为所述多个存储段的第一个存储段。
7.如权利要求4所述的方法,其中,所述目标写数据包括数据标志位和目标数据中的至少一个。
8.如权利要求7所述的方法,其中,将所述目标写数据写入所述写指针对应的存储段,包括:
响应于所述当前写时钟周期的写使能信号有效,将所述数据标志位和所述目标数据写入所述写指针对应的存储段,其中,所述数据标志位有效;
响应于所述当前写时钟周期的写使能信号无效,将所述数据标志位写入所述写指针对应的存储段,其中,所述数据标志位无效。
9.如权利要求1所述的方法,其中,响应于X小于Y,在所述Y个读时钟周期中,选择所述多个读中止周期,包括:
基于第二等式,在所述Y个读时钟周期中,选择所述多个读中止周期,其中,所述第二等式为:
n=ceil((Y+m×X-X)/(Y-X))
其中,ceil()为向上取整函数,X表示在所述一个参考周期内写时钟周期的个数,Y表示在所述一个参考周期内读时钟周期的个数,m表示在所述多个读中止周期中的第m个读中止周期,n表示在所述Y个读时钟周期中第m个读中止周期的序号,其中,0≤n≤(Y-1),0≤m≤(Y-X-1),且m和n为整数。
10.如权利要求1所述的方法,还包括:在X小于Y并且所述写指针指向所述多个存储段的初始写存储段,所述读指针指向所述多个存储段的初始读存储段的情况下:
响应于当前要读出数据的当前读时钟周期不属于所述多个读中止周期,所述读指针指向所述初始读存储段的下一存储段,从所述读指针对应的存储段读出目标读数据;
响应于所述当前读时钟周期属于所述多个读中止周期,所述读指针保持指向所述初始读存储段,读数据有效信号设置为无效;
基于当前要写入数据的当前写时钟周期,所述写指针指向所述初始写存储段的下一存储段,将目标写数据写入所述写指针对应的存储段。
11.如权利要求10所述的方法,其中,目标读数据包括数据标志位和目标数据中的至少一个。
12.如权利要求11所述的方法,其中,从所述读指针对应的存储段读出目标读数据,包括:
响应于所述目标读数据中的数据标志位为有效,读数据有效信号设置为有效,读出目标读数据中的目标数据;
响应于所述目标读数据中的数据标志位为无效,读数据有效信号设置为无效。
13.如权利要求1所述的方法,其中,所述多个存储段至少包括3个存储段。
14.如权利要求1所述的方法,其中,所述先进先出缓存器至少满足以下时序约束:所述先进先出缓存器的读控制通路逻辑基于所述读时钟信号,所述先进先出缓存器的读数据通路逻辑基于所述读时钟信号和所述写时钟信号中频率较高的时钟信号。
15.如权利要求1-14中任一项所述的方法,还包括:
初始化所述先进先出缓存器,使得所述写时钟指向所述多个存储段中的第一个存储段,所述读时钟指向所述多个存储段中的最后一个存储段,所述写时钟周期的序号为0,所述读时钟周期的序号为0。
16.一种数据处理装置,应用于先进先出缓存器,其中,所述先进先出缓存器包括依序排列的多个存储段,所述多个存储段分别具有依序的多个地址,用于写入数据到所述先进先出缓存器的写时钟信号与参考时钟信号同相且在所述参考时钟信号的一个参考周期内对应X个写时钟周期,用于从所述先进先出缓存器读出数据的读时钟信号与所述参考时钟信号同相且在所述参考时钟信号的一个参考周期内对应Y个读时钟周期,其中,X和Y为正整数,
所述数据处理装置包括:
写选择单元,配置为响应于X大于Y,在所述X个写时钟周期中,选择多个写中止周期,且在所述多个写中止周期期间,使得所述先进先出缓存器的写指针保持不变;
读选择单元,配置为响应于X小于Y,在所述Y个读时钟周期中,选择多个读中止周期,且在所述多个读中止周期期间,使得所述先进先出缓存器的读指针保持不变。
17.一种数据处理装置,包括
处理器;
存储器,包括一个或多个计算机程序模块;
其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,用于执行如权利要求1-15中任一项所述的数据处理方法的指令。
18.一种数据处理设备,包括
如权利要求16或17所述的数据处理装置;以及
先进先出缓存器,与所述数据处理装置连接。
19.一种非瞬时可读存储介质,其上存储有计算机指令,其中,所述计算机指令被处理器执行时执行如权利要求1-15中任一项所述的数据处理方法。
CN202111164167.8A 2021-09-30 2021-09-30 数据处理方法及装置、数据处理设备和存储介质 Active CN113867681B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111164167.8A CN113867681B (zh) 2021-09-30 2021-09-30 数据处理方法及装置、数据处理设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111164167.8A CN113867681B (zh) 2021-09-30 2021-09-30 数据处理方法及装置、数据处理设备和存储介质

Publications (2)

Publication Number Publication Date
CN113867681A CN113867681A (zh) 2021-12-31
CN113867681B true CN113867681B (zh) 2024-03-08

Family

ID=79001396

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111164167.8A Active CN113867681B (zh) 2021-09-30 2021-09-30 数据处理方法及装置、数据处理设备和存储介质

Country Status (1)

Country Link
CN (1) CN113867681B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1571951A (zh) * 2001-08-23 2005-01-26 集成装置技术公司 具有单倍数据率和双倍数据率功能的先入先出存储装置
CN1893388A (zh) * 2005-07-01 2007-01-10 中兴通讯股份有限公司 一种异步fifo实现系统及实现方法
CN105320490A (zh) * 2014-07-31 2016-02-10 德克萨斯仪器股份有限公司 用于异步fifo电路的方法和设备
CN107943738A (zh) * 2017-11-28 2018-04-20 珠海全志科技股份有限公司 时钟数据恢复电路及实现方法
CN111367495A (zh) * 2020-03-06 2020-07-03 电子科技大学 一种异步先入先出的数据缓存控制器
CN112199071A (zh) * 2020-10-26 2021-01-08 中国兵器工业集团第二一四研究所苏州研发中心 一种地址可控异步缓存器及异步缓存方法
CN112965689A (zh) * 2021-02-26 2021-06-15 西安微电子技术研究所 一种基于源同步的分布式异步fifo数据交互方法及fifo结构
CN113110821A (zh) * 2021-04-19 2021-07-13 中国电子科技集团公司第五十八研究所 一种延迟可配置的异步fifo电路

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004062630A (ja) * 2002-07-30 2004-02-26 Fujitsu Ltd Fifoメモリ及び半導体装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1571951A (zh) * 2001-08-23 2005-01-26 集成装置技术公司 具有单倍数据率和双倍数据率功能的先入先出存储装置
CN1893388A (zh) * 2005-07-01 2007-01-10 中兴通讯股份有限公司 一种异步fifo实现系统及实现方法
CN105320490A (zh) * 2014-07-31 2016-02-10 德克萨斯仪器股份有限公司 用于异步fifo电路的方法和设备
CN107943738A (zh) * 2017-11-28 2018-04-20 珠海全志科技股份有限公司 时钟数据恢复电路及实现方法
CN111367495A (zh) * 2020-03-06 2020-07-03 电子科技大学 一种异步先入先出的数据缓存控制器
CN112199071A (zh) * 2020-10-26 2021-01-08 中国兵器工业集团第二一四研究所苏州研发中心 一种地址可控异步缓存器及异步缓存方法
CN112965689A (zh) * 2021-02-26 2021-06-15 西安微电子技术研究所 一种基于源同步的分布式异步fifo数据交互方法及fifo结构
CN113110821A (zh) * 2021-04-19 2021-07-13 中国电子科技集团公司第五十八研究所 一种延迟可配置的异步fifo电路

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
FIFO可靠性设计与研究;张莹;阳璞琼;;微处理机(06);全文 *
Low latency high throughout circular asynchronous FIFO;Yong Xiao;《 Tsinghua Science and Technology》;第13卷(第6期);全文 *
基于FPGA异步FIFO的研究与实现;于海;樊晓桠;;微电子学与计算机(03);全文 *
基于FPGA的异步FIFO的设计;王小娟;;中国新通信(23);全文 *

Also Published As

Publication number Publication date
CN113867681A (zh) 2021-12-31

Similar Documents

Publication Publication Date Title
US9582463B2 (en) Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message
US7900078B1 (en) Asynchronous conversion circuitry apparatus, systems, and methods
US8516170B2 (en) Control flow in a ring buffer
US9142268B2 (en) Dual-voltage domain memory buffers, and related systems and methods
CN110495100B (zh) 存储接口、时序控制方法及存储系统
JP2017519427A (ja) 奇数比並列データバスのためのシリアライザおよびデシリアライザ
CN107423291B (zh) 一种数据翻译方法以及客户端设备
CN106062814B (zh) 由图形处理器改进的成组存储器存取效率
CN110928574A (zh) 微控制器、中断处理芯片、设备及中断处理方法
US8631265B2 (en) Synchronization circuit that facilitates multiple parallel reads and writes
WO2017112341A1 (en) Reliable out-of-order end-to-end protocol with robust window state overflow management and a multi-node system using same
CN108572812B (zh) 存储器加载和算术加载单元(alu)融合
CN113867681B (zh) 数据处理方法及装置、数据处理设备和存储介质
US10044496B2 (en) Bandwidth amplification using pre-clocking
US20200081713A1 (en) Implementing Write Ports in Register-File Array Cell
CN112580278B (zh) 逻辑电路的优化方法、优化装置以及存储介质
CN113163483B (zh) 时间戳更新方法、装置和电子设备
CN111459893B (zh) 文件处理方法、装置和电子设备
CN114651237A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
CN107636611B (zh) 用于临时加载指令的系统、设备和方法
CN114579812B (zh) 链表队列的管理方法及装置、任务管理方法和存储介质
CN111338827A (zh) 表格数据的粘贴方法、装置以及电子设备
US11432303B2 (en) Method and apparatus for maximizing a number of connections that can be executed from a mobile application
WO2023102682A1 (zh) 通信装置及报文传输方法
CN111913735B (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