CN113760795A - 一种异步fifo存储器读写控制方法、装置及设备 - Google Patents

一种异步fifo存储器读写控制方法、装置及设备 Download PDF

Info

Publication number
CN113760795A
CN113760795A CN202111004618.1A CN202111004618A CN113760795A CN 113760795 A CN113760795 A CN 113760795A CN 202111004618 A CN202111004618 A CN 202111004618A CN 113760795 A CN113760795 A CN 113760795A
Authority
CN
China
Prior art keywords
read
address
write
hot
fifo memory
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.)
Granted
Application number
CN202111004618.1A
Other languages
English (en)
Other versions
CN113760795B (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.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry 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 Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN202111004618.1A priority Critical patent/CN113760795B/zh
Publication of CN113760795A publication Critical patent/CN113760795A/zh
Application granted granted Critical
Publication of CN113760795B publication Critical patent/CN113760795B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种异步FIFO存储器读写控制方法、装置、设备及存储介质,该方法包括:获取异步FIFO存储器当前的读地址及写地址,将读地址及写地址分别同步至相同时钟域内,得到同步后读地址及同步后写地址;基于异步FIFO存储器的总容量、读地址、写地址、同步后读地址及同步后写地址,确定异步FIFO存储器的读信用积分及写信用积分;将读信用积分及写信用积分输出至读写端,以供读写端基于读信用积分及写信用积分实现对异步FIFO存储器的读写操作;读信用积分表示当前能基于异步FIFO存储器读取的数据量,写信用积分表示当前能基于异步FIFO存储器写入的数据量。可见,本申请能够有效提高异步FIFO存储器的使用效率。

Description

一种异步FIFO存储器读写控制方法、装置及设备
技术领域
本发明涉及数据处理技术领域,更具体地说,涉及一种异步FIFO存储器读写控制方法、装置、设备及存储介质。
背景技术
随着集成电路技术的发展,需要越来越多地考虑到多时钟域的情况;多时钟域的电子系统中,各模块之间的接口部分的数据无法直接传输,否则会导致亚稳态产生数据传输错误。采用异步FIFO(First Input First Output,先进先出)存储器可以方便地解决这一难题,它可以在时钟整体异步-局部同步的系统中解决在两个不同时钟域之间进行数据传输的难题,因而异步FIFO存储器常被用来存储并缓冲两个异步模块之间的数据传输,作为它们之间的可靠接口,也因此异步FIFO存储器在雷达、信号处理及多媒体技术等领域有着广泛的应用。
当前的异步FIFO存储器在正常的读写功能基础上一般只提供空满指示信号、几乎空几乎满指示信号,这在一定程度上限制了异步FIFO存储器的使用范围。例如,当使用一个异步FIFO存储器(异步FIFO存储器深度为128,数据位宽为8bit)缓存前级的DDR控制器或PCIe的数据包时,因为前级数据是连续发送的,即当数据开始发送时,不管后级FIFO是否还有空间可以存储数据,数据必须连续的从前级发送至后级;当前级数据包只发送了一部分数据时,如果此时后级FIFO已经处于满状态,则后半部分的数据无法缓存至FIFO中或者将之前的FIFO中的数据覆盖,造成数据的丢失。
目前解决此问题的通用办法是判断异步FIFO的空状态,当FIFO为空时开始写入数据,因为此时可以写入的数据空间即为FIFO本身的容量;在进行异步FIFO存储器调用时会保证其数据空间不小于前级一次连续的写的数据大小。但这种方法存在很大效率浪费问题,还是以上例中的异步FIFO存储器为例,当目前异步FIFO存储器中缓存了64个数据位宽为8bit的数据,此时空满信号均为0,而前级想要发送一组32个8Bit数据则只能等待FIFO被读空,即空状态信号为1时才可读取,因为通过空满指示信号并不能判断此FIFO中到底已经存储了多少数据;这样便降低了异步FIFO存储器的使用效率。
发明内容
本发明的目的是提供一种异步FIFO存储器读写控制方法、装置、设备及存储介质,能够提高异步FIFO存储器的使用效率。
为了实现上述目的,本发明提供如下技术方案:
一种异步FIFO存储器读写控制方法,包括:
获取异步FIFO存储器当前的读地址及写地址,并将所述读地址及所述写地址分别同步至相同的时钟域内,得到所述读地址对应的同步后读地址及所述写地址对应的同步后写地址;
基于所述异步FIFO存储器的总容量、所述读地址、所述写地址、所述同步后读地址及所述同步后写地址,确定所述异步FIFO存储器的读信用积分及写信用积分;其中,所述读信用积分表示当前能基于所述异步FIFO存储器读取的数据量,所述写信用积分表示当前能基于所述异步FIFO存储器写入的数据量;
将所述读信用积分及所述写信用积分输出至相应的读写端,以供所述读写端基于所述读信用积分及所述写信用积分实现对所述异步FIFO存储器的读写操作。
优选的,还包括:
接收所述读写端发送的读请求,确定当前的读独热码地址,将当前的读独热码地址转换为相应的读二进制编码地址,基于所述读二进制编码地址在所述异步FIFO存储器中实现所述读请求对应的读操作,并在完成所述读操作后将当前的读独热码地址左移1位作为新的当前的读独热码地址;
接收所述写写端发送的写请求,确定当前的写独热码地址,将当前的写独热码地址转换为相应的写二进制编码地址,基于所述写二进制编码地址在所述异步FIFO存储器中实现所述写请求对应的写操作,并在完成所述写操作后将当前的写独热码地址左移1位作为新的当前的写独热码地址;
相应的,获取异步FIFO存储器当前的读地址及写地址,包括:
获取所述异步FIFO存储器当前的读独热码地址及写独热码地址。
优选的,确定所述异步FIFO存储器的读信用积分及写信用积分,包括:
若Wr_addr_hot=>rd_addr_hot_wp,则按照下列公式计算单字节的写信用积分:
wr_credit_1=fifo_capa-log2Wr_addr_hot+log2rd_addr_hot_wp;
若Wr_addr_hot<rd_addr_hot_wp,则按照下列公式计算单字节的写信用积分:
wr_credit_1=log2rd_addr_hot_wp-log2Wr_addr_hot;
若Wr_addr_hot_rp=>rd_addr_hot,则按照下列公式计算单字节的读信用积分:
rd_credit_1=Wr_addr_hot_rp-rd_addr_hot;
若Wr_addr_hot_rp<rd_addr_hot,则按照下列公式计算单字节的写读信用积分:
rd_credit_1=fifo_capa+Wr_addr_hot_rp-rd_addr_hot;
其中,单字节的写信用积分wr_credit_1表示当前能基于所述异步FIFO存储器写入的单字节数量,单字节的读信用积分rd_credit_1表示当前能基于所述异步FIFO存储器读取的单字节数量,fifo_capa表示所述异步FIFO存储器的总容量,Wr_addr_hot表示所述写地址,rd_addr_hot表示所述读地址,Wr_addr_hot_rp表示所述同步后写地址,rd_addr_hot_wp表示所述同步后读地址。
优选的,计算单字节的写信用积分之后,还包括:
按照下列公式计算数据组的写信用分,并将所述写信用分向下取整得到所述数据组的写信用积分:
wr_credit_user=wr_credit_1/wr_credit_user_define;
按照下列公式计算数据组的读信用分,并将所述读信用分向下取整得到所述数据组的读信用积分:
rd_credit_user=rd_credit_1/rd_credit_user_define;
其中,数据组的写信用积分wr_credit_user表示当前能基于所述异步FIFO存储器写入的数据组数量,数据组的读信用积分rd_credit_user表示当前能基于所述异步FIFO存储器读取的数据组数量,wr_credit_user_define及rd_credit_user_define分别为数据组与单字节之间的读换算单位及写换算单位。
优选的,还包括:
获取所述异步FIFO存储器当前的读地址标志位及写地址标志位,并将所述读地址标志位及所述写地址标志位同步至与所述读地址及所述写地址相同的时钟域内,得到所述读地址标志位对应的同步后读地址标志位及所述写地址标志位对应的写同步后地址标志位;其中,所述读地址标志位及所述写地址标志位分别在所述读地址及所述写地址由最后一个地址跳转至第一个地址时取与当前的值相反的值;
基于所述异步FIFO存储器的所述读地址、所述写地址、所述同步后读地址、所述同步后写地址、所述读地址标志位、所述写地址标志位、所述同步后读地址标志位及所述同步后写地址标志位,确定所述异步FIFO存储器的空信号及满信号;其中,所述满信号表示所述异步FIFO存储器的存储空间是否已满,所述空信号表示所述异步FIFO存储器是否为空;
将所述空信号及所述满信号输出至相应的读写端,以供所述读写端基于所述空信号及所述满信号实现对所述异步FIFO存储器的读写操作。
优选的,确定所述异步FIFO存储器的空信号及满信号,包括:
若Wr_addr_hot_rp=Rd_addr_hot且wr_mark_rp=rd_mark,则空信号为1,若Wr_addr_hot_rp=Rd_addr_hot且wr_mark_rp!=rd_mark,则空信号为0,若Wr_addr_hot_rp!=Rd_addr_hot,则空信号为0;
若rd_addr_hot_wp=wr_addr_hot且rd_mark_wp=wr_mark,,则满信号为0,若rd_addr_hot_wp=wr_addr_hot且rd_mark_wp!=wr_mark,则满信号为1,若rd_addr_hot_wp!=wr_addr_hot时,则满信号为0。
优选的,将所述读地址、所述写地址、所述读地址标志位及所述写地址标志位同步至相同的时钟域中,包括:
将所述读地址、所述写地址、所述读地址标志位及所述写地址标志位分别通过两级触发器,同步至相同的时钟域中。
一种异步FIFO存储器读写控制装置,包括:
获取模块,用于:获取异步FIFO存储器当前的读地址及写地址,并将所述读地址及所述写地址分别同步至相同的时钟域内,得到所述读地址对应的同步后读地址及所述写地址对应的同步后写地址;
确定模块,用于:基于所述异步FIFO存储器的总容量、所述读地址、所述写地址、所述同步后读地址及所述同步后写地址,确定所述异步FIFO存储器的读信用积分及写信用积分;其中,所述读信用积分表示当前能基于所述异步FIFO存储器读取的数据量,所述写信用积分表示当前能基于所述异步FIFO存储器写入的数据量;
输出模块,用于:将所述读信用积分及所述写信用积分输出至相应的读写端,以供所述读写端基于所述读信用积分及所述写信用积分实现对所述异步FIFO存储器的读写操作。
一种异步FIFO存储器读写控制设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一项所述异步FIFO存储器读写控制方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述异步FIFO存储器读写控制方法的步骤。
本发明提供了一种异步FIFO存储器读写控制方法、装置、设备及存储介质,该方法包括:获取异步FIFO存储器当前的读地址及写地址,并将所述读地址及所述写地址分别同步至相同的时钟域内,得到所述读地址对应的同步后读地址及所述写地址对应的同步后写地址;基于所述异步FIFO存储器的总容量、所述读地址、所述写地址、所述同步后读地址及所述同步后写地址,确定所述异步FIFO存储器的读信用积分及写信用积分;将所述读信用积分及所述写信用积分输出至相应的读写端,以供所述读写端基于所述读信用积分及所述写信用积分实现对所述异步FIFO存储器的读写操作;其中,所述读信用积分表示当前能基于所述异步FIFO存储器读取的数据量,所述写信用积分表示当前能基于所述异步FIFO存储器写入的数据量。本申请获取到异步FIFO存储器当前的读地址及写地址后,先将读地址及写地址同步到相同的时钟域中,然后基于同步前的读写地址、同步后的读写地址及异步FIFO存储器的大小确定出读信用积分及写信用积分,并将读信用积分及写信用积分发送至读写端,以使得读写端能够基于读信用积分获知当前能够到异步FIFO存储器中读取的数据量以实现相应数据读取,基于写信用积分获知当前能够写入到异步FIFO存储器中的数据量以实现相应数据写入。可见,本申请通过信用积分实现异步FIFO存储器的读写控制,也即为实现所属系统的流量控制,进而有效提高异步FIFO存储器的使用效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的异步FIFO存储器读写控制方案的系统架构图;
图2为本发明实施例提供的一种异步FIFO存储器读写控制方法的流程图;
图3为本发明实施例提供的一种异步FIFO存储器读写控制装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种异步FIFO存储器读写控制方法、装置、设备及介质,能够提高异步FIFO存储器的使用效率。为了便于理解,下面对本申请的技术方案所适用的系统架构进行介绍,参见图1,其为本申请技术方案所使用的系统架构(本申请技术方案所使用的系统架构即为异步FIFO存储器)的结构示意图。通过图1可以看出,异步FIFO存储器在硬件实现时可包括以下模块:写独热码地址生成模块Wr_addr_one_hot、写二进制编码地址生成模块Wr_addr_binary、读独热码地址生成模块Rd_addr_one_hot、读二进制编码地址生成模块Rd_addr_binary、存储模块Memory、同步模块Sync、信用积分生成模块Credit、通过信用积分生成FIFO空信号模块Cr_empty、通过信用积分生成FIFO满信号模块Cr_full。其中,异步FIFO存储器接口信号的说明具体可以如表1所示。
表1异步FIFO存储器接口信号表
Figure BDA0003236678190000071
结合表1对图1中的各模块进行以下说明:
1、写独热码地址生成模块Wr_addr_one_hot:此模块是根据输入的写使能wr_en信号生成写Memory模块的写独热码地址;并且生成一个写地址标志位wr_mark。
2、写二进制编码地址生成模块Wr_addr_binary:此模块是根据输入的写独热码地址生成相应的写二进制编码地址。
3、读独热码地址生成模块Rd_addr_one_hot:此模块是根据输入的读使能rd_en信号生成读Memory模块的读独热码地址;并且生成一个读地址标志位rd_mark。
4、读二进制编码地址生成模块Rd_addr_binary:此模块是根据输入的读独热码地址生成相应的读二进制编码地址信号。
5、存储模块Memory:存储模块是调用或生成一个同步的双端口静态随机存储器。
6、同步模块Sync:实现独热码地址及地址标志位的同步。
7、信用积分生成模块Credit:生成写信用积分wr_credit及读信用积分rd_credit。
8、通过独热码地址生成FIFO空信号模块Cr_empty:确定空信号的值。
9、通过独热码地址生成FIFO满信号模块Cr_full:确定满信号的值。
请参阅图2,其示出了本发明实施例提供的一种异步FIFO存储器读写控制方法的流程图,可以包括:
S11:获取异步FIFO存储器当前的读地址及写地址,并将读地址及写地址分别同步至相同的时钟域内,得到读地址对应的同步后读地址及写地址对应的同步后写地址。
其中,异步FIFO存储器当前的读地址即为当前如果读异步FIFO存储器应读取的地址,异步FIFO存储器当前的写地址即为当前如果写异步FIFO存储器应写入的地址;因为读地址和写地址产生于两个不同的时钟域,地址需要“安全”地传递到对方的时钟域中去,因此需要使用同步器处理,也即本申请使用同步模块Sync将读地址及写地址同步至相同的时钟域内,以基于同步后的读地址及写地址实现相应的信用积分确定。
S12:基于异步FIFO存储器的总容量、读地址、写地址、同步后读地址及同步后写地址,确定异步FIFO存储器的读信用积分及写信用积分;其中,读信用积分表示当前能基于异步FIFO存储器读取的数据量,写信用积分表示当前能基于异步FIFO存储器写入的数据量。
信用机制是一种控制数据流量的方法,后级通过实时或定时的向上级反馈其可以接收或发送的数据个数,实现整个系统的流量控制,保证数据不溢出不阻塞;本申请实施例中信用积分即代表可以接收或发送的数据组数。其中,接收即为读取,发送即为写入,异步FIFO存储器的总容量为异步FIFO存储器的大小,单位可以为byte;本申请实施例基于异步FIFO存储器的总容量、读地址、写地址、同步后读地址及同步后写地址,可以计算出异步FIFO存储器的读信用积分及写信用积分;读信用积分表示当前能够读取到的异步FIFO存储器中数据量,而写信用积分表示当前能够写入到异步FIFO存储器中数据量。将读信用积分及写信用积分发送至读写端,读写端则可以基于读信用积分获知当前能够到异步FIFO存储器中读取到的数据量,基于写信用积分获知当前能够写入到异步FIFO存储器中的数据量,方便读写端基于此实现相应的数据读写。
S13:将读信用积分及写信用积分输出至相应的读写端,以供读写端基于读信用积分及写信用积分实现对异步FIFO存储器的读写操作。
本申请获取到异步FIFO存储器当前的读地址及写地址后,先将读地址及写地址同步到相同的时钟域中,然后基于同步前的读写地址、同步后的读写地址及异步FIFO存储器的大小确定出读信用积分及写信用积分,并将读信用积分及写信用积分发送至读写端,以使得读写端能够基于读信用积分获知当前能够到异步FIFO存储器中读取的数据量以实现相应数据读取,基于写信用积分获知当前能够写入到异步FIFO存储器中的数据量以实现相应数据写入。可见,本申请通过信用积分实现异步FIFO存储器的读写控制,也即为实现所属系统的流量控制,进而有效提高异步FIFO存储器的使用效率。
本发明实施例提供的一种异步FIFO存储器读写控制方法,还可以包括:
接收读写端发送的读请求,确定当前的读独热码地址,将当前的读独热码地址转换为相应的读二进制编码地址,基于读二进制编码地址在异步FIFO存储器中实现读请求对应的读操作,并在完成读操作后将当前的读独热码地址左移1位作为新的当前的读独热码地址;
接收写写端发送的写请求,确定当前的写独热码地址,将当前的写独热码地址转换为相应的写二进制编码地址,基于写二进制编码地址在异步FIFO存储器中实现写请求对应的写操作,并在完成写操作后将当前的写独热码地址左移1位作为新的当前的写独热码地址;
相应的,获取异步FIFO存储器当前的读地址及写地址,可以包括:
获取异步FIFO存储器当前的读独热码地址及写独热码地址。
本申请实施例中写独热码地址生成模块Wr_addr_one_hot,根据输入的写使能wr_en信号生成写存储模块Memory的写独热码地址;本申请实施例中之所以使用独热码(one-hot码)是因为其组合逻辑最少,触发器最多,工作时钟频率可以做到最高。具体来说,在异步FIFO存储器复位完成后,写独热码地址为1;当wr_en为高时,将数据写入当前的写独热码地址中,同时将当前的写独热码地址“循环左移一位”作为下一次写入的数据地址。对于一个数据位宽为N的数据,“循环左移一位”是指:A1[N-1:0]<={A1[N-2:1],A[N-1]};其中,<=代表verilog语法中的非阻塞赋值。写二进制编码地址生成模块Wr_addr_binary,根据输入的写独热码地址生成写二进制编码地址,此过程由组合逻辑实现,即写独热码地址和写二进制编码地址处于同一个时钟周期,其转换公式如下:Wr_addr_bin=log2(Wr_addr_hot);其中,Wr_addr_bin代表写二进制编码地址,Wr_addr_hot代表写独热码地址。
同理,读独热码地址生成模块Rd_addr_one_hot,根据输入的读使能rd_en信号生成读存储模块Memory的读独热码地址。具体来说,在异步FIFO存储器复位完成后,读独热码地址为1;当rd_en为高时,将当前的读独热码地址给到后级存储模块的读地址中,同时将当前的读独热码地址“循环左移一位”作为下一次读取的数据地址。读二进制编码地址生成模块Rd_addr_binary,根据输入的读独热码地址生成读二进制编码(binary)地址,此过程由组合逻辑实现,即读独热码地址和读二进制编码地址处于同一个时钟周期,其转换公式如下:rd_addr_bin=log2(rd_addr_hot);其中,rd_addr_bin代表读二进制编码地址,rd_addr_hot代表读独热码地址。
本申请中获取当前异步FIFO的读地址及写地址即为分别从读独热码地址生成模块Rd_addr_one_hot及写独热码地址生成模块Wr_addr_one_hot中获取当前的读独热码地址及写独热码地址。
本发明实施例提供的一种异步FIFO存储器读写控制方法,确定异步FIFO存储器的读信用积分及写信用积分,可以包括:
若Wr_addr_hot=>rd_addr_hot_wp,则按照下列公式计算单字节的写信用积分:
wr_credit_1=fifo_capa-log2Wr_addr_hot+log2rd_addr_hot_wp;
若Wr_addr_hot<rd_addr_hot_wp,则按照下列公式计算单字节的写信用积分:
wr_credit_1=log2rd_addr_hot_wp-log2Wr_addr_hot;
若Wr_addr_hot_rp=>rd_addr_hot,则按照下列公式计算单字节的读信用积分:
rd_credit_1=Wr_addr_hot_rp-rd_addr_hot;
若Wr_addr_hot_rp<rd_addr_hot,则按照下列公式计算单字节的写读信用积分:
rd_credit_1=fifo_capa+Wr_addr_hot_rp-rd_addr_hot;
其中,单字节的写信用积分wr_credit_1表示当前能基于异步FIFO存储器写入的单字节数量,单字节的读信用积分rd_credit_1表示当前能基于异步FIFO存储器读取的单字节数量,fifo_capa表示异步FIFO存储器的总容量,Wr_addr_hot表示写地址,rd_addr_hot表示读地址,Wr_addr_hot_rp表示同步后写地址,rd_addr_hot_wp表示同步后读地址。
计算单字节的写信用积分之后,还可以包括:
按照下列公式计算数据组的写信用分,并将写信用分向下取整得到数据组的写信用积分:
wr_credit_user=wr_credit_1/wr_credit_user_define;
按照下列公式计算数据组的读信用分,并将读信用分向下取整得到数据组的读信用积分:
rd_credit_user=rd_credit_1/rd_credit_user_define;
其中,数据组的写信用积分wr_credit_user表示当前能基于异步FIFO存储器写入的数据组数量,数据组的读信用积分rd_credit_user表示当前能基于异步FIFO存储器读取的数据组数量,wr_credit_user_define及rd_credit_user_define分别为数据组与单字节之间的读换算单位及写换算单位。
信用积分生成模块Credit
写信用积分wr_credit
写信用积分可以分为单字节的写信用积分及数据组的写信用积分,单字节的写信用积分表示当前能够写入至异步FIFO存储器的单字节数量,数据组的写信用积分表示当前能够写入至异步FIFO存储器的数据组数量;同理,读信用积分可以分为单字节的读信用积分及数据组的读信用积分,单字节的读信用积分表示当前能够读取至异步FIFO存储器的单字节数量,数据组的读信用积分表示当前能够读取至异步FIFO存储器的数据组数量。具体来说,在使用异步FIFO存储器前,一般都会定义好异步FIFO存储器的大小,记为fifo_capa,单位为byte;在计算wr_credit时需要根据当前的读写独热码地址计算,计算过程如下:
1、计算写单字节信用积分wr_credit_1:
首先比较Wr_addr_hot和rd_addr_hot_wp的地址大小,若Wr_addr_hot=>rd_addr_hot_wp:
wr_credit_1=fifo_capa-log2Wr_addr_hot+log2rd_addr_hot_wp
若Wr_addr_hot<rd_addr_hot_wp:
wr_credit_1=log2rd_addr_hot_wp-log2Wr_addr_hot;
2、计算用户自定义写信用积分(数据组的写信用积分):
wr_credit_user=wr_credit_1/wr_credit_user_define_define,向下取整。
读信用积分代表此异步FIFO存储器中可以正常读出的数据组数。在计算rd_credit时需要根据当前的读写独热码地址计算,计算过程如下:
1、计算读单字节信用积分rd_credit_1:
首先比较rd_addr_hot和Wr_addr_hot_rp的地址大小,若Wr_addr_hot_rp=>rd_addr_hot:
rd_credit_1=Wr_addr_hot_rp-rd_addr_hot
若Wr_addr_hot_rp<rd_addr_hot:
rd_credit_1=fifo_capa+Wr_addr_hot_rp-rd_addr_hot;
2、计算用户自定义读信用积分(数据组的读信用积分):
rd_credit_user=rd_credit_1/rd_credit_user_define,向下取整。
本申请实施例按照上述方式能够实现信用积分的有效准确的确定,并且由于读写端和异步FIFO存储器中数据的单位也是不同的,因此本申请实施例中使用上述方式实现不同单位之间的换算,方便读写端对数据的直接处理,提高了读写端实现数据读写的效率。
本发明实施例提供的一种异步FIFO存储器读写控制方法,还可以包括:
获取异步FIFO存储器当前的读地址标志位及写地址标志位,并将读地址标志位及写地址标志位同步至与读地址及写地址相同的时钟域内,得到读地址标志位对应的同步后读地址标志位及写地址标志位对应的写同步后地址标志位;其中,读地址标志位及写地址标志位分别在读地址及写地址由最后一个地址跳转至第一个地址时取与当前的值相反的值;
基于异步FIFO存储器的读地址、写地址、同步后读地址、同步后写地址、读地址标志位、写地址标志位、同步后读地址标志位及同步后写地址标志位,确定异步FIFO存储器的空信号及满信号;其中,满信号表示异步FIFO存储器的存储空间是否已满,空信号表示异步FIFO存储器是否为空;
将空信号及满信号输出至相应的读写端,以供读写端基于空信号及满信号实现对异步FIFO存储器的读写操作。
确定异步FIFO存储器的空信号及满信号,可以包括:
若Wr_addr_hot_rp=Rd_addr_hot且wr_mark_rp=rd_mark,则空信号为1,若Wr_addr_hot_rp=Rd_addr_hot且wr_mark_rp!=rd_mark,则空信号为0,若Wr_addr_hot_rp!=Rd_addr_hot,则空信号为0;
若rd_addr_hot_wp=wr_addr_hot且rd_mark_wp=wr_mark,,则满信号为0,若rd_addr_hot_wp=wr_addr_hot且rd_mark_wp!=wr_mark,则满信号为1,若rd_addr_hot_wp!=wr_addr_hot时,则满信号为0。
本申请实施例中写独热码地址生成模块Wr_addr_hot在生成写独热码地址的同时,还会生成一个写地址标志位wr_mark;在异步FIFO存储器复位后写地址标志位wr_mark默认值为0,当Wr_addr_hot的最高bit位(Wr_addr_hot[N-1])为1且写使能wr_en信号有效时,wr_mark信号取反。读独热码地址生成模块Rd_addr_hot在生成读独热码地址的同时,还会生成一个读地址标志位rd_mark,在异步FIFO存储器复位后读地址标志位rd_mark默认值为0,当Rd_addr_hot的最高bit位(Rd_addr_hot[N-1])为1且写使能rd_en信号有效时,rd_mark信号取反。
通过同步模块已经将写地址转为读时钟域内的同步后写地址Wr_addr_hot_rp,因此将此同步后写地址Wr_addr_hot_rp与Rd_addr_hot进行比较运算即是同一个时钟域内的处理;具体来说,当Wr_addr_hot_rp=Rd_addr_hot时进行如下判断:
若wr_mark_rp=rd_mark,此时empty信号(空信号)为1;
若wr_mark_rp!=rd_mark,此时empty信号为0;
当Wr_addr_hot_rp!=Rd_addr_hot时,此时empty信号为0(!=代表不等于)。
通过同步模块已经将读地址转为写时钟域内的同步后读地址rd_addr_hot_wp,因此将此同步后读地址rd_addr_hot_wp与wr_addr_hot进行比较运算即是同一个时钟域内的处理;具体来说,当rd_addr_hot_wp=wr_addr_hot时,进行如下判断:
若rd_mark_wp=wr_mark,此时full信号为0;
若rd_mark_wp!=wr_mark,此时full信号为1;
当rd_addr_hot_wp!=wr_addr_hot时,此时full信号为0。
另外,将读地址、写地址、读地址标志位及写地址标志位同步至相同的时钟域中,可以包括:将读地址、写地址、读地址标志位及写地址标志位分别通过两级触发器,同步至相同的时钟域中。具体来说,本申请实施例采用独热码地址同步到另一个时钟域可以确保每次只有两位位发生变化,且不会随着地址位宽的增加而改变;在这里使用两级触发器的方式完成信号同步,触发器可以根据实际需要进行选择,如D触发器、T触发器等;在实现同步后有如下信息:
Wr_addr_hot_rp为使用两级触发器同步后的写地址;
rd_addr_hot_wp为使用两级触发器同步后的读地址;
wr_mark_rp为使用两级触发器同步后的写地址标志位;
rd_mark_wp为使用两级触发器同步后的读地址标志位。
本申请使用独热码完成异步时钟域穿越,并生成读写端独立的信用积分和异步FIFO存储器的空、满信号;且使用应用本发明申请方案的异步FIFO存储器可简化外部接口信号的计算过程,直接与PCIe等支持信用机制的系统相连,提高了异步FIFO存储器的复用性和可靠性,进而提高整个SOC的开发效率,进而提高产品竞争力。
本发明实施例还提供了一种异步FIFO存储器读写控制装置,如图3所示,具体可以包括:
获取模块11,用于:获取异步FIFO存储器当前的读地址及写地址,并将读地址及写地址分别同步至相同的时钟域内,得到读地址对应的同步后读地址及写地址对应的同步后写地址;
确定模块12,用于:基于异步FIFO存储器的总容量、读地址、写地址、同步后读地址及同步后写地址,确定异步FIFO存储器的读信用积分及写信用积分;其中,读信用积分表示当前能基于异步FIFO存储器读取的数据量,写信用积分表示当前能基于异步FIFO存储器写入的数据量;
输出模块13,用于:将读信用积分及写信用积分输出至相应的读写端,以供读写端基于读信用积分及写信用积分实现对异步FIFO存储器读写操作。
本发明实施例还提供了一种异步FIFO存储器读写控制设备,可以包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上任一项异步FIFO存储器读写控制方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上任一项异步FIFO存储器读写控制方法的步骤。
需要说明的是,本发明实施例提供的一种异步FIFO存储器读写控制装置、设备及存储介质中相关部分的说明请参见本发明实施例提供的一种异步FIFO存储器读写控制方法中对应部分的详细说明,在此不再赘述。另外本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
对所公开的实施例的上述说明,使本领域技术人员能实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种异步FIFO存储器读写控制方法,其特征在于,包括:
获取异步FIFO存储器当前的读地址及写地址,并将所述读地址及所述写地址分别同步至相同的时钟域内,得到所述读地址对应的同步后读地址及所述写地址对应的同步后写地址;
基于所述异步FIFO存储器的总容量、所述读地址、所述写地址、所述同步后读地址及所述同步后写地址,确定所述异步FIFO存储器的读信用积分及写信用积分;其中,所述读信用积分表示当前能基于所述异步FIFO存储器读取的数据量,所述写信用积分表示当前能基于所述异步FIFO存储器写入的数据量;
将所述读信用积分及所述写信用积分输出至相应的读写端,以供所述读写端基于所述读信用积分及所述写信用积分实现对所述异步FIFO存储器的读写操作。
2.根据权利要求1所述的方法,其特征在于,还包括:
接收所述读写端发送的读请求,确定当前的读独热码地址,将当前的读独热码地址转换为相应的读二进制编码地址,基于所述读二进制编码地址在所述异步FIFO存储器中实现所述读请求对应的读操作,并在完成所述读操作后将当前的读独热码地址左移1位作为新的当前的读独热码地址;
接收所述写写端发送的写请求,确定当前的写独热码地址,将当前的写独热码地址转换为相应的写二进制编码地址,基于所述写二进制编码地址在所述异步FIFO存储器中实现所述写请求对应的写操作,并在完成所述写操作后将当前的写独热码地址左移1位作为新的当前的写独热码地址;
相应的,获取异步FIFO存储器当前的读地址及写地址,包括:
获取所述异步FIFO存储器当前的读独热码地址及写独热码地址。
3.根据权利要求2所述的方法,其特征在于,确定所述异步FIFO存储器的读信用积分及写信用积分,包括:
若Wr_addr_hot=>rd_addr_hot_wp,则按照下列公式计算单字节的写信用积分:
wr_credit_1=fifo_capa-log2Wr_addr_hot+log2rd_addr_hot_wp;
若Wr_addr_hot<rd_addr_hot_wp,则按照下列公式计算单字节的写信用积分:
wr_credit_1=log2rd_addr_hot_wp-log2Wr_addr_hot;
若Wr_addr_hot_rp=>rd_addr_hot,则按照下列公式计算单字节的读信用积分:
rd_credit_1=Wr_addr_hot_rp-rd_addr_hot;
若Wr_addr_hot_rp<rd_addr_hot,则按照下列公式计算单字节的写读信用积分:
rd_credit_1=fifo_capa+Wr_addr_hot_rp-rd_addr_hot;
其中,单字节的写信用积分wr_credit_1表示当前能基于所述异步FIFO存储器写入的单字节数量,单字节的读信用积分rd_credit_1表示当前能基于所述异步FIFO存储器读取的单字节数量,fifo_capa表示所述异步FIFO存储器的总容量,Wr_addr_hot表示所述写地址,rd_addr_hot表示所述读地址,Wr_addr_hot_rp表示所述同步后写地址,rd_addr_hot_wp表示所述同步后读地址。
4.根据权利要求3所述的方法,其特征在于,计算单字节的写信用积分之后,还包括:
按照下列公式计算数据组的写信用分,并将所述写信用分向下取整得到所述数据组的写信用积分:
wr_credit_user=wr_credit_1/wr_credit_user_define;
按照下列公式计算数据组的读信用分,并将所述读信用分向下取整得到所述数据组的读信用积分:
rd_credit_user=rd_credit_1/rd_credit_user;
其中,数据组的写信用积分wr_credit_user表示当前能基于所述异步FIFO存储器写入的数据组数量,数据组的读信用积分rd_credit_user表示当前能基于所述异步FIFO存储器读取的数据组数量,wr_credit_user_define及rd_credit_user_define分别为数据组与单字节之间的读换算单位及写换算单位。
5.根据权利要求4所述的方法,其特征在于,还包括:
获取所述异步FIFO存储器当前的读地址标志位及写地址标志位,并将所述读地址标志位及所述写地址标志位同步至与所述读地址及所述写地址相同的时钟域内,得到所述读地址标志位对应的同步后读地址标志位及所述写地址标志位对应的写同步后地址标志位;其中,所述读地址标志位及所述写地址标志位分别在所述读地址及所述写地址由最后一个地址跳转至第一个地址时取与当前的值相反的值;
基于所述异步FIFO存储器的所述读地址、所述写地址、所述同步后读地址、所述同步后写地址、所述读地址标志位、所述写地址标志位、所述同步后读地址标志位及所述同步后写地址标志位,确定所述异步FIFO存储器的空信号及满信号;其中,所述满信号表示所述异步FIFO存储器的存储空间是否已满,所述空信号表示所述异步FIFO存储器是否为空;
将所述空信号及所述满信号输出至相应的读写端,以供所述读写端基于所述空信号及所述满信号实现对所述异步FIFO存储器的读写操作。
6.根据权利要求5所述的方法,其特征在于,确定所述异步FIFO存储器的空信号及满信号,包括:
若Wr_addr_hot_rp=Rd_addr_hot且wr_mark_rp=rd_mark,则空信号为1,若Wr_addr_hot_rp=Rd_addr_hot且wr_mark_rp!=rd_mark,则空信号为0,若Wr_addr_hot_rp!=Rd_addr_hot,则空信号为0;
若rd_addr_hot_wp=wr_addr_hot且rd_mark_wp=wr_mark,,则满信号为0,若rd_addr_hot_wp=wr_addr_hot且rd_mark_wp!=wr_mark,则满信号为1,若rd_addr_hot_wp!=wr_addr_hot时,则满信号为0。
7.根据权利要求6所述的方法,其特征在于,将所述读地址、所述写地址、所述读地址标志位及所述写地址标志位同步至相同的时钟域中,包括:
将所述读地址、所述写地址、所述读地址标志位及所述写地址标志位分别通过两级触发器,同步至相同的时钟域中。
8.一种异步FIFO存储器读写控制装置,其特征在于,包括:
获取模块,用于:获取异步FIFO存储器当前的读地址及写地址,并将所述读地址及所述写地址分别同步至相同的时钟域内,得到所述读地址对应的同步后读地址及所述写地址对应的同步后写地址;
确定模块,用于:基于所述异步FIFO存储器的总容量、所述读地址、所述写地址、所述同步后读地址及所述同步后写地址,确定所述异步FIFO存储器的读信用积分及写信用积分;其中,所述读信用积分表示当前能基于所述异步FIFO存储器读取的数据量,所述写信用积分表示当前能基于所述异步FIFO存储器写入的数据量;
输出模块,用于:将所述读信用积分及所述写信用积分输出至相应的读写端,以供所述读写端基于所述读信用积分及所述写信用积分实现对所述异步FIFO存储器的读写操作。
9.一种异步FIFO存储器读写控制设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述异步FIFO存储器读写控制方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述异步FIFO存储器读写控制方法的步骤。
CN202111004618.1A 2021-08-30 2021-08-30 一种异步fifo存储器读写控制方法、装置及设备 Active CN113760795B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111004618.1A CN113760795B (zh) 2021-08-30 2021-08-30 一种异步fifo存储器读写控制方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111004618.1A CN113760795B (zh) 2021-08-30 2021-08-30 一种异步fifo存储器读写控制方法、装置及设备

Publications (2)

Publication Number Publication Date
CN113760795A true CN113760795A (zh) 2021-12-07
CN113760795B CN113760795B (zh) 2024-04-26

Family

ID=78791826

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111004618.1A Active CN113760795B (zh) 2021-08-30 2021-08-30 一种异步fifo存储器读写控制方法、装置及设备

Country Status (1)

Country Link
CN (1) CN113760795B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10229399A (ja) * 1997-02-13 1998-08-25 Nec Eng Ltd 蓄積データ量監視回路
CN1638287A (zh) * 2004-02-03 2005-07-13 上海奇普科技有限公司 数字传输中的一种卷积交织与去交织的方法
US7436726B1 (en) * 2005-11-21 2008-10-14 Xilinx, Inc. Circuit for and method of reading data in an asynchronous FIFO including a backup address circuit for re-reading data
CN102654827A (zh) * 2011-03-02 2012-09-05 安凯(广州)微电子技术有限公司 一种先进先出缓冲器及缓存数据的方法
CN104778025A (zh) * 2015-04-16 2015-07-15 浪潮电子信息产业股份有限公司 基于随机访问存储器的先入先出存储器的电路结构
CN106415515A (zh) * 2014-06-26 2017-02-15 英特尔公司 使用不具有sfence的优化的pio写入序列来发送分组
CN106776357A (zh) * 2016-12-28 2017-05-31 无锡芯响电子科技有限公司 一种多路读写多容量选择的fifo控制器
JP2018032129A (ja) * 2016-08-23 2018-03-01 日本電信電話株式会社 通信用入出力装置
CN109388370A (zh) * 2017-08-03 2019-02-26 深圳市中兴微电子技术有限公司 一种实现先入先出队列的方法及装置
CN111367495A (zh) * 2020-03-06 2020-07-03 电子科技大学 一种异步先入先出的数据缓存控制器
CN111399802A (zh) * 2020-03-24 2020-07-10 天津飞腾信息技术有限公司 多电源域多时钟域先进先出队列、集成电路芯片及计算机设备
CN112802534A (zh) * 2020-12-28 2021-05-14 杭州晋旗电子科技有限公司 一种电子雷管芯片自动纠错数据存储方法

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10229399A (ja) * 1997-02-13 1998-08-25 Nec Eng Ltd 蓄積データ量監視回路
CN1638287A (zh) * 2004-02-03 2005-07-13 上海奇普科技有限公司 数字传输中的一种卷积交织与去交织的方法
US7436726B1 (en) * 2005-11-21 2008-10-14 Xilinx, Inc. Circuit for and method of reading data in an asynchronous FIFO including a backup address circuit for re-reading data
CN102654827A (zh) * 2011-03-02 2012-09-05 安凯(广州)微电子技术有限公司 一种先进先出缓冲器及缓存数据的方法
CN106415515A (zh) * 2014-06-26 2017-02-15 英特尔公司 使用不具有sfence的优化的pio写入序列来发送分组
CN104778025A (zh) * 2015-04-16 2015-07-15 浪潮电子信息产业股份有限公司 基于随机访问存储器的先入先出存储器的电路结构
JP2018032129A (ja) * 2016-08-23 2018-03-01 日本電信電話株式会社 通信用入出力装置
CN106776357A (zh) * 2016-12-28 2017-05-31 无锡芯响电子科技有限公司 一种多路读写多容量选择的fifo控制器
CN109388370A (zh) * 2017-08-03 2019-02-26 深圳市中兴微电子技术有限公司 一种实现先入先出队列的方法及装置
CN111367495A (zh) * 2020-03-06 2020-07-03 电子科技大学 一种异步先入先出的数据缓存控制器
CN111399802A (zh) * 2020-03-24 2020-07-10 天津飞腾信息技术有限公司 多电源域多时钟域先进先出队列、集成电路芯片及计算机设备
CN112802534A (zh) * 2020-12-28 2021-05-14 杭州晋旗电子科技有限公司 一种电子雷管芯片自动纠错数据存储方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
ZHANG, HY等: "A FAST AND FAIR SHARED BUFFER FOR HIGH-RADIX ROUTER", 《JOURNAL OF CIRCUITS SYSTEMS AND COMPUTERS》 *
姚静;郑建勇;梅军;王飞;: "基于FPGA的合并单元数据接收及处理模块的实现", 电工电气, no. 07 *
张凡: "融合CNN推理加速器的高性能NIC的设计与实现", 《硕士电子期刊出版信息》 *
李哲;田泽;王世中;郑斐;: "基于PLB4总线的DDR3控制器的设计与优化", 计算机技术与发展, no. 03 *
缪波涛, 孙旭东, 张洋, 李发海: "基于网络的计算机与变频器的通讯及控制", 电工电能新技术, no. 02, 23 April 2003 (2003-04-23) *
赵云富;吴一帆;孙强;许娜;吴军;: "SpaceWire总线的流量控制机制研究", 微电子学与计算机, no. 01, 5 January 2016 (2016-01-05) *

Also Published As

Publication number Publication date
CN113760795B (zh) 2024-04-26

Similar Documents

Publication Publication Date Title
CN111367495B (zh) 一种异步先入先出的数据缓存控制器
CN101681249B (zh) 先进先出缓冲器
US6366530B1 (en) Synchronizing data operations across a synchronization boundary between different clock domains using two-hot encoding
CN105320490A (zh) 用于异步fifo电路的方法和设备
CN101261575B (zh) 一种实现不等宽数据传输的异步先进先出存储器及方法
CN111832240B (zh) Fifo数据传输方法及fifo存储装置
JP3645584B2 (ja) データ転送同期装置
US8001409B2 (en) Synchronization device and methods thereof
CN100524269C (zh) 一种突发机制下实现数据读写控制的方法和装置
US5138637A (en) First-in-first-out buffer
CN115794722A (zh) 一种AXI outstanding接口转换实现方法
CN101825997A (zh) 一种异步先入先出存储器
US20240020246A1 (en) Method for Generating Information Based on FIFO Memory and Apparatus, Device and Medium
CN111949582B (zh) 指针同步装置及方法、异步fifo电路、处理器系统
CN109062538B (zh) 环形先进先出缓冲器及数据传输接口、系统、方法
JP2004062630A (ja) Fifoメモリ及び半導体装置
US7966435B2 (en) Integrated circuit design structure for an asychronous data interface
US8131967B2 (en) Asynchronous data interface
CN101493759B (zh) 一种任意容量异步先入先出存储器的地址控制方法
US6546451B1 (en) Method and apparatus for decoupling processor speed from memory subsystem speed in a node controller
CN113760795A (zh) 一种异步fifo存储器读写控制方法、装置及设备
WO2008083916A1 (en) Asynchronous data interface
CN110888622A (zh) 实现任意深度异步fifo的方法及装置、设备、介质
CN209765494U (zh) 一种异步fifo装置
CN115221082A (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