CN102375720B - 异步先入先出存储器fifo的读写控制处理方法、电路及系统 - Google Patents

异步先入先出存储器fifo的读写控制处理方法、电路及系统 Download PDF

Info

Publication number
CN102375720B
CN102375720B CN201010259624.7A CN201010259624A CN102375720B CN 102375720 B CN102375720 B CN 102375720B CN 201010259624 A CN201010259624 A CN 201010259624A CN 102375720 B CN102375720 B CN 102375720B
Authority
CN
China
Prior art keywords
gray code
pointer
value
circuit
data width
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
CN201010259624.7A
Other languages
English (en)
Other versions
CN102375720A (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.)
Renesas Integrated Circuit Design Beijing Co Ltd
Original Assignee
Renesas Integrated Circuit Design Beijing 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 Renesas Integrated Circuit Design Beijing Co Ltd filed Critical Renesas Integrated Circuit Design Beijing Co Ltd
Priority to CN201010259624.7A priority Critical patent/CN102375720B/zh
Publication of CN102375720A publication Critical patent/CN102375720A/zh
Application granted granted Critical
Publication of CN102375720B publication Critical patent/CN102375720B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Synchronisation In Digital Transmission Systems (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种异步先入先出存储器FIFO的读写控制处理方法、电路及系统,其中包括:采用至少两个格雷码计数器对异步FIFO的数据读写次数进行计数,其中,对不同的数据宽度,采用不同的格雷码计数器对数据读写次数进行计数;将各格雷码计数器计数所得格雷码值作为编码输出,以产生指针供同步逻辑电路进行同步处理。采用本发明可以支持不同数据宽度的读写,并在保证正确同步的同时大大提高总线的利用率。

Description

异步先入先出存储器FIFO的读写控制处理方法、电路及系统
技术领域
本发明涉及专用集成电路设计中的数字电路设计领域,尤其涉及异步FI FO的读写控制处理方法、电路及系统。 
背景技术
格雷码是一种无权码,采用绝对编码方式;它是一种数字排序系统,在任意两个相邻的数之间转换时,只有一个数位发生变化。在异步FIFO(Firs t In First Out,先入先出存储器)设计中常常采用格雷码作为异步FIFO指针编码,格雷码计数器用于产生指针。基于格雷码的异步FIFO设计如图1所示,其中指针和FIFO地址产生电路实现如图2所示,图2中部分信号解释如表1: 
表1指针和FIFO地址产生电路信号解释 
由于格雷码是一种在相邻数值之间只有1bit发生变化的编码,因此采用此种编码设计的异步FIFO,为了正确同步(保证用于同步的指针每次只有1bit发生变化),格雷码计数器每次只能加“1”,不能加“2”、“4”等值; 从而要求每次对FIFO的读写数据宽度保持一致,所以采用格雷码作为指针的异步FIFO不支持不同数据宽度的读写。 
目前支持复杂协议的SOC(System on Chip,系统级芯片)高速数字接口(如EMMC:Embedded MultiMedia Card,嵌入式多媒体卡)IP core(IP核)设计中。通常SOC片内总线支持多种数据宽度(如byte、half word、word)读写,而大部分的总线协议桢格式是以byte为单位,为了更高效、高速的完成数据传输,要求作为数据buffer(缓存)的异步FIFO支持不同数据宽度的读写。 
现有技术提供一种采用格雷码作为指针的异步FIFO加上FIFO wrapper(包装)电路。该电路可以实现对不同数据宽度的读写的支持,如图3所示(以AMBA APB BUS写为例;AMBA:Advanced Microcontroller Bus Architectur e,高级微控制器总线架构;APB:Advanced Peripheral Bus,外围总线),其中FIFO wrapper电路能够将总线对异步FIFO不同数据宽度的读写,转换成同一数据宽度的读写。例如当支持byte、half word和word读写时,FIF O wrapper电路能够将half word或word读写转成多个byte读写。其中AMB A APB BUS进行word写时序如图4所示,从图4中可以看到,FIFO WRAPPER电路将word写转成4次byte的写;如果是half word写,则FIFO WRAPPER电路将其转换成2次byte的写。 
发明人在实现本发明的过程中,发现上述现有技术存在如下不足: 
从图4可以看到,完成一次word写,需要将word转成4次byte的写,这样需要4个时钟周期。当有大量数据通过异步FIFO传输时,这种转换将占用大量的AMBA总线时间,降低总线的利用率。 
发明内容
本发明实施例提供一种异步FIFO的读写控制处理方法,用以支持不同数 据宽度的读写,并在保证正确同步的同时大大提高总线的利用率,该方法包括: 
将每一数据宽度对应的同步处理后的指针进行寄存,将寄存后的指针与寄存前的指针转换为二进制值,所述同步处理后的指针由同步逻辑电路输出,所述同步逻辑电路同步处理的指针由至少两个格雷码计数器对异步FIFO的数据读写次数进行计数所得格雷码值作为编码输出而产生,其中对不同的数据宽度,采用不同的格雷码计数器对数据读写次数进行计数; 
将每一数据宽度对应的所述寄存后的指针转换的二进制值减去所述寄存前的指针转换的二进制值,获得该数据宽度对应增量的二进制值; 
将各数据宽度对应增量的二进制值分别乘以对应的增量系数,获得各数据宽度对应的增加值,所述增量系数=数据宽度/最小的数据宽度; 
将各数据宽度对应的增加值相加,获得总的增加值作为译码值输出,供标志产生电路确定异步FIFO是否写满或读空并产生相应的标志。 
本发明实施例还提供一种异步FIFO的读写控制处理电路,用以支持不同数据宽度的读写,并在保证正确同步的同时大大提高总线的利用率,该电路包括: 
格雷码转二进制码逻辑电路,用于将每一数据宽度对应的同步处理后的指针进行寄存,并将寄存后的指针与寄存前的指针转换为二进制值,所述同步处理后的指针由同步逻辑电路输出,所述同步逻辑电路同步处理的指针由至少两个格雷码计数器对异步FIFO的数据读写次数进行计数所得格雷码值作为编码输出而产生,其中对不同的数据宽度,采用不同的格雷码计数器对数据读写次数进行计数; 
增量计算逻辑电路,用于将每一数据宽度对应的所述寄存后的指针转换的二进制值减去所述寄存前的指针转换的二进制值,获得该数据宽度对应增量的二进制值; 
乘法器,用于将各数据宽度对应增量的二进制值分别乘以对应的增量系 数,获得各数据宽度对应的增加值,所述增量系数=数据宽度/最小的数据宽度; 
加法器,用于将各数据宽度对应的增加值相加,获得总的增加值作为译码值输出,供标志产生电路确定异步FIFO是否写满或读空并产生相应的标志。 
本发明实施例还提供一种异步FIFO的读写控制处理系统,用以支持不同数据宽度的读写,并在保证正确同步的同时大大提高总线的利用率,该系统包括: 
编码电路,包括: 
至少两个格雷码计数器,用于对异步FIFO的数据读写次数进行计数,其中,对不同的数据宽度,由不同的格雷码计数器对数据读写次数进行计数;各格雷码计数器分别与同步逻辑电路相连,用于将计数所得格雷码值作为编码输出,以产生指针供同步逻辑电路进行同步处理; 
译码电路,包括: 
格雷码转二进制码逻辑电路,用于将每一数据宽度对应的所述同步处理后的指针进行寄存,并将寄存后的指针与寄存前的指针转换为二进制值;增量计算逻辑电路,用于将每一数据宽度对应的所述寄存后的指针转换的二进制值减去所述寄存前的指针转换的二进制值,获得该数据宽度对应增量的二进制值;乘法器,用于将各数据宽度对应增量的二进制值分别乘以对应的增量系数,获得各数据宽度对应的增加值,所述增量系数=数据宽度/最小的数据宽度;加法器,用于将各数据宽度对应的增加值相加,获得总的增加值作为译码值输出,供标志产生电路确定异步FIFO是否写满或读空并产生相应的标志。 
本发明实施例中,采用至少两个格雷码计数器对异步FIFO的数据读写次数进行计数,其中,对不同的数据宽度,采用不同的格雷码计数器对数据读写次数进行计数;将各格雷码计数器计数所得格雷码值作为编码输出,以产生指针供同步逻辑电路进行同步处理;与现有技术相比,对不同的数据宽度 读写无需进行数据宽度的转换,可以实现单周期完成所有数据宽度的读写,在保证正确同步的同时大大提高总线的利用率。 
本发明实施例中,将每一数据宽度对应的所述同步处理后的指针进行寄存,并将寄存后的指针与所述寄存前的指针转换为二进制值;将每一数据宽度对应的所述寄存后的指针转换的二进制值减去所述寄存前的指针转换的二进制值,获得该数据宽度对应增量的二进制值;将各数据宽度对应增量的二进制值分别乘以对应的增量系数,获得各数据宽度对应的增加值;将各数据宽度对应的增加值相加,获得总的增加值作为译码值输出,供标志产生电路确定异步FIFO是否写满或读空并产生相应的标志;与现有技术相比,对不同的数据宽度读写无需进行数据宽度的转换,可以实现单周期完成所有数据宽度的读写,在保证正确同步的同时大大提高总线的利用率。 
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中: 
图1为现有技术中基于格雷码的异步FIFO设计示意图; 
图2为现有技术中指针和FIFO地址产生电路示意图; 
图3为现有技术中采用格雷码作为指针的异步FIFO加上FIFO wrapper电路的示意图; 
图4为现有技术中AMBA APB BUS进行word写时序示意图; 
图5为本发明实施例中异步先入先出FIFO的读写处理方法的处理流程图; 
图6为本发明实施例中另一异步先入先出FIFO的读写处理方法的处理流程图; 
图7为本发明实施例中异步先入先出存储器FIFO的读写处理系统的具体实施示意图; 
图8为本发明实施例中写指针增量格雷编码电路的示意图; 
图9为本发明实施例中读指针增量格雷编码电路的示意图; 
图10为本发明实施例中FIFO写地址产生电路的示意图; 
图11为本发明实施例中FIFO读地址产生电路的示意图; 
图12为本发明实施例中写指针同步逻辑电路的示意图; 
图13为本发明实施例中读指针同步逻辑电路的示意图; 
图14为本发明实施例中写指针增量格雷译码电路的示意图; 
图15为本发明实施例中读指针增量格雷译码电路的示意图; 
图16为本发明实施例中AMBA APB BUS word写异步FIFO的时序示意图; 
图17为本发明实施例中采用增量格雷码异步FIFO实现的写buffer电路示意图; 
图18为本发明实施例中写指针生成电路的示意图; 
图19为本发明实施例中写地址生成电路及满标志产生电路的示意图; 
图20为本发明实施例中写指针同步逻辑电路的示意图; 
图21为本发明实施例中读指针同步逻辑电路的示意图; 
图22为本发明实施例中FIFO memory电路的示意图; 
图23为本发明实施例中写增量生成电路的示意图; 
图24为本发明实施例中读地址生成电路及空标志产生电路的示意图。 
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附 图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。 
如图5所示,本发明实施例中,异步先入先出存储器FIFO的读写处理方法,其处理流程可以包括: 
步骤501、采用至少两个格雷码计数器对异步FIFO的数据读写次数进行计数,其中,对不同的数据宽度,采用不同的格雷码计数器对数据读写次数进行计数; 
步骤502、将各格雷码计数器计数所得格雷码值作为编码输出,以产生指针供同步逻辑电路进行同步处理。 
由图5所示流程可以得知,本发明实施例中,采用至少两个格雷码计数器对异步FIFO的数据读写次数进行计数,其中,对不同的数据宽度,采用不同的格雷码计数器对数据读写次数进行计数;将各格雷码计数器计数所得格雷码值作为编码输出,以产生指针供同步逻辑电路进行同步处理;与现有技术相比,对不同的数据宽度读写无需进行数据宽度的转换,可以实现单周期完成所有数据宽度的读写,在保证正确同步的同时大大提高总线的利用率。 
具体实施时,每一数据宽度都对应一个格雷码计数器编码输出的格雷码值,则每次的读写计数都是加“1”,并且由于不同数据宽度的读写不可能同时来到,所以所有格雷码计数据输出的指针都能够保证每次不同数据宽度的读写都仅有1bit发生变化,从而可以保证正确的同步;为形象说明本发明实施例中格雷码应用的特点,可以将格雷码计数器计数所得格雷码值称为增量格雷码编码。 
具体实施时,在产生指针时,还可以包括产生地址的步骤,即产生读写FIFO的地址,例如可以包括:采用一格雷码计数器对异步FIFO的数据读写次数进行计数,其中,对不同宽度的数据,该格雷码计数器的计数长度不同;采用地址产生逻辑电路将该格雷码计数器计数所得格雷码的最高比特(第AD DRSIZE位)和次高比特(第ADDRSIZE-1位)异或以产生地址的最高比特,用 其余比特(第ADDRSIZE-2位到0位)产生地址的其余比特。 
前述对不同宽度的数据,该格雷码计数器的计数长度不同,例如可以是该格雷码计数器采用如下的计数方法:当byte写(winc=1同时HSIZE=0)计数器加1;当half word写(winc=1同时HSIZE=1)计数器加2;当word写(winc=1同时HSIZE=2)计数器加4。 
具体实施时,还可以根据前述同步处理后的指针或前述同步处理后指针的转换值和前述产生地址时采用的计数器相应的计数值进行相应的判断,以确定异步FIFO是否写满或读空并产生相应的标志,这样可以发出读写的警报。 
前述同步逻辑电路进行同步处理时,可采用多种同步处理方式,例如可采用两级寄存器对产生的指针进行异步时钟域的指针同步处理。 
基于同一发明构思,本发明实施例还提供一种异步FIFO的读写处理方法,如图6所示,其处理流程可以包括: 
步骤601、将每一数据宽度对应的图5所述同步处理后的指针进行寄存,并将寄存后的指针与寄存前的的指针转换为二进制值; 
步骤602、将每一数据宽度对应的所述寄存后的指针转换的二进制值减去所述寄存前的指针转换的二进制值,获得该数据宽度对应增量的二进制值; 
步骤603、将各数据宽度对应增量的二进制值分别乘以对应的增量系数,获得各数据宽度对应的增加值; 
步骤604、将各数据宽度对应的增加值相加,获得总的增加值作为译码值输出,供标志产生电路确定异步FIFO是否写满或读空并产生相应的标志。 
由图6所示流程可以得知,本发明实施例中,将每一数据宽度对应的所述同步处理后的指针进行寄存,并将寄存后的指针与寄存前的指针转换为二进制值;将每一数据宽度对应的所述寄存后的指针转换的二进制值减去所述寄存前的指针转换的二进制值,获得该数据宽度对应增量的二进制值;将各数据宽度对应增量的二进制值分别乘以对应的增量系数,获得各数据宽度对应的增加值;将各数据宽度对应的增加值相加,获得总的增加值作为译码值 输出,供标志产生电路确定异步FIFO是否写满或读空并产生相应的标志;与现有技术相比,对不同的数据宽度读写无需进行数据宽度的转换,可以实现单周期完成所有数据宽度的读写,在保证正确同步的同时大大提高总线的利用率。 
具体实施时,前述增量系数可以根据数据宽度进行配置或计算得出,例如增量系数=数据宽度/最小的数据宽度。为形象说明本发明实施例中格雷码应用的特点,可以将总的增加值称为增量格雷码译码。 
具体实施时,在产生指针时,还可以包括产生地址的步骤,即产生读写FIFO地址,例如可以包括:采用一格雷码计数器对异步FIFO的数据读写次数进行计数,其中,对不同宽度的数据,该格雷码计数器的计数长度不同;采用地址产生逻辑电路将该格雷码计数器计数所得格雷码的最高比特(第ADDRSIZE位)和次高比特(第ADDRSIZE-1位)异或以产生地址的最高比特,用其余比特(第ADDRSIZE-2位到0位)产生地址的其余比特。 
前述对不同宽度的数据,该格雷码计数器的计数长度不同,例如可以是该格雷码计数器采用如下的计数方法:当byte写(winc=1同时HSIZE=0)计数器加1;当half word写(winc=1同时HSIZE=1)计数器加2;当word写(winc=1同时HSIZE=2)计数器加4。 
具体实施时,前述标志产生电路确定异步FIFO是否写满或读空并产生相应的标志例如可以是标志产生电路根据产生地址时采用的计数器相应的计数值和译码值或译码值的转换值进行相应的判断,以确定异步FIFO是否写满或读空并产生相应的标志,这样可以发出读写的警报。 
前述同步处理可采用多种同步处理方式,例如可采用两级寄存器对产生的指针进行异步时钟域的指针同步处理。 
基于同一发明构思,本发明实施还提供一种异步FIFO的读写控制处理电路,由于该电路解决问题的原理与异步FIFO的读写控制处理方法相似,因此该电路的实施可以参见方法的实施,重复之处不再赘述。实施时该电路可以 包括: 
至少两个格雷码计数器,用于对异步FIFO的数据读写次数进行计数,其中,对不同的数据宽度,由不同的格雷码计数器对数据读写次数进行计数; 
各格雷码计数器分别与同步逻辑电路相连,用于将计数所得格雷码值作为编码输出,以产生指针供同步逻辑电路进行同步处理。 
上述电路也可称之为增量格雷码编码电路,如图7中所示。举一例,本例中分别用格雷码计数器对byte、half word、word写使能计数产生各自增量格雷码的编码输出指针(byte写:wbptr_inc,half word写:whptr_inc,word写:wwptr_inc)用于同步。图8为写指针增量格雷编码电路的示意图,图8中写指针增量格雷编码电路中部分信号解释如表2: 
表2写指针增量格雷编码电路信号解释 
Figure DEST_PATH_BDF0000000072170000111
图9为读指针增量格雷编码电路的示意图,图9中读指针增量格雷编码电路中部分信号解释如表3: 
表3读指针增量格雷编码电路信号解释 
Figure DEST_PATH_BDF0000000072170000112
具体实施时,上述增量格雷码编码电路还可以包括: 
一格雷码计数器,与地址产生逻辑电路相连,用于对异步FIFO的数据读 写次数进行计数,其中,对不同宽度的数据,该格雷码计数器的计数长度不同; 
地址产生逻辑电路,与该格雷码计数器相连和异步FIFO相连,用于将该格雷码计数器计数所得格雷码的最高比特和次高比特异或以产生地址的最高比特,用其余比特产生地址的其余比特。 
该格雷码计数器和地址产生逻辑电路也可称之为FIFO地址产生电路。前述对不同宽度的数据,该格雷码计数器的计数长度不同,例如可以是该格雷码计数器采用如下的计数方法:当byte写(winc=1同时HSIZE=0)计数器加1;当half word写(winc=1同时HSIZE=1)计数器加2;当word写(winc=1同时HSIZE=2)计数器加4。 
举一例,图10为FIFO写地址产生电路的示意图,图10的FIFO写地址产生电路中部分信号解释如表4: 
表4FIFO写地址产生电路信号解释 
Figure DEST_PATH_BDF0000000072170000131
举一例,图11为FIFO读地址产生电路示意图,图11的FIFO读地址产生电路中部分信号解释如表5: 
表5FIFO读地址产生电路信号解释 
Figure DEST_PATH_BDF0000000072170000132
具体实施时,上述增量格雷码编码电路还可以包括: 
标志产生电路,分别与产生地址时采用的格雷码计数器和同步逻辑电路相连,用于根据该格雷码计数器的相应计数值和所述同步处理后的指针或所述同步处理后指针的转换值,确定异步FIFO是否写满或读空并产生相应的标志。 
具体实施时,上述增量格雷码编码电路还可以包括: 
所述同步逻辑电路,与产生指针的格雷码计数器相连,用于采用两级寄存器对产生的指针进行同步处理。 
举一例见图12所示的写指针同步逻辑电路示意图和图13所示的读指针同步逻辑电路示意图。 
基于同一发明构思,本发明还提供一种异步FIFO的读写控制处理电路,由于该电路解决问题的原理与异步FIFO的读写控制处理方法相似,因此该电路的实施可以参见方法的实施,重复之处不再赘述。实施时该电路可以包括: 
格雷码转二进制码逻辑电路,用于将每一数据宽度对应的上述同步处理后的指针进行寄存,例如可以采用一级寄存器寄存;并将寄存后的指针与寄存前指针转换为二进制值; 
增量计算逻辑电路,用于将每一数据宽度对应的所述寄存后的指针转换的二进制值减去所述寄存前的指针转换的二进制值,获得该数据宽度对应增量的二进制值; 
乘法器,用于将各数据宽度对应增量的二进制值分别乘以对应的增量系数,获得各数据宽度对应的增加值; 
加法器,用于将各数据宽度对应的增加值相加,获得总的增加值作为译码值输出,供标志产生电路确定异步FIFO是否写满或读空并产生相应的标志。 
上述电路也可称之为增量格雷码译码电路,如图7中所示。举一例,本例中,增量格雷码译码电路将同步后各数据宽度对应的增量格雷码指针采用一寄存器寄存;同时将寄存后和寄存前对应数据宽度的指针一起转换为二进制值,将转换后的两值相减得到该数据宽度对应增量的二进制值;然后根据 将各数据宽度对应增量的二进制值乘以对应的增量系数(例如增量系数=数据宽度/最小的数据宽度),得到各数据宽度对应的增加值;最后将这些增加值和原有的增加值相加得到总的增加值,总的增加值采用另一寄存器寄存,这个寄存总的增加值用来进行空/满标志的判断。 
举一例,图14为写指针增量格雷译码电路的示意图,图14中写指针增量格雷译码电路中部分信号解释如表6: 
表6写指针增量格雷译码电路信号解释 
Figure DEST_PATH_BDF0000000072170000151
举一例,图15为读指针增量格雷译码电路的示意图,图15中读指针增量格雷译码电路中部分信号解释如表7: 
表7读指针增量格雷译码电路信号解释 
Figure DEST_PATH_BDF0000000072170000152
Figure DEST_PATH_BDF0000000072170000161
具体实施时,上述增量格雷码译码电路还可以包括: 
一格雷码计数器,与地址产生逻辑电路相连,用于对异步FIFO的数据读写次数进行计数,其中,对不同宽度的数据,该格雷码计数器的计数长度不同; 
地址产生逻辑电路,与该格雷码计数器和异步FIFO相连,用于将该格雷码计数器计数所得格雷码的最高比特和次高比特异或以产生地址的最高比特,用其余比特产生地址的其余比特。 
该格雷码计数器和地址产生逻辑电路也可称之为FIFO地址产生电路。其结构可以如图10和图11所示。 
具体实施时,上述增量格雷码译码电路还可以包括: 
标志产生电路,分别与产生指针的加法器和产生地址时的采用的格雷码计数器相连,用于根据该格雷码计数器的相应计数值和译码值或译码值的转换值,确定异步FIFO是否写满或读空并产生相应的标志。 
具体实施时,上述增量格雷码译码电路还可以包括: 
同步逻辑电路,分别与编码输出产生指针的格雷码计数器和格雷码转二进制码逻辑电路相连,用于采用两级寄存器对编码输出产生的指针进行同步处理,并将同步处理后的指针提供给格雷码转二进制码逻辑电路。其结构可以如图12和图13所示。 
基于同一发明构思,本发明实施例还提供一种异步FIFO的读写控制处理系统,由于该系统解决问题的原理与异步FIFO的读写控制处理方法相似,因此该系统的实施可以参见方法的实施,重复之处不再赘述。实施时该系统可 以包括: 
编码电路,包括: 
至少两个格雷码计数器,用于对异步FIFO的数据读写次数进行计数,其中,对不同的数据宽度,由不同的格雷码计数器对数据读写次数进行计数;各格雷码计数器分别与同步逻辑电路相连,用于将计数所得格雷码值作为编码输出,以产生指针供同步逻辑电路进行同步处理; 
译码电路,包括: 
格雷码转二进制码逻辑电路,用于将每一数据宽度对应的所述同步处理后的指针进行寄存,并将寄存后的指针与寄存前的指针转换为二进制值;增量计算逻辑电路,用于将每一数据宽度对应的所述寄存后的指针转换的二进制值减去所述寄存前的指针转换的二进制值,获得该数据宽度对应增量的二进制值;乘法器,用于将各数据宽度对应增量的二进制值分别乘以对应的增量系数,获得各数据宽度对应的增加值;加法器,用于将各数据宽度对应的增加值相加,获得总的增加值作为译码值输出,供标志产生电路确定异步FIFO是否写满或读空并产生相应的标志。 
具体实施时,上述系统还可以包括: 
地址产生电路,包括: 
一格雷码计数器,与地址产生逻辑电路相连,用于对异步FIFO的数据读写次数进行计数,其中,对不同宽度的数据,该格雷码计数器的计数长度不同; 
地址产生逻辑电路,与该格雷码计数器和异步FIFO相连,用于将该格雷码计数器计数所得格雷码的最高比特和次高比特异或以产生地址的最高比特,用其余比特产生地址的其余比特。 
具体实施时,上述系统还可以包括: 
标志产生电路,分别与产生地址时采用的格雷码计数器和所述加法器相连,用于根据该格雷码计数器相应的计数值和译码值或译码值的转换值,确 定异步FIFO是否写满或读空并产生相应的标志。 
具体实施时,上述系统还可以包括: 
同步逻辑电路,与产生指针的格雷码计数器相连,用于采用两级寄存器对产生的指针进行同步处理。 
举一例如图7所示,图7中是以同时支持byte、half word、word三种数据宽度读写异步FIFO为例说明本发明实施例的异步FIFO的读写处理系统。图7所示异步FIFO的读写处理系统中包括4个部分:增量格雷码编码电路(即前述编码电路)、增量格雷码译码电路(即前述译码电路)、读写FIFO地址产生电路(即前述地址产生电路)、同步逻辑电路。 
采用前述增量格雷编码后,AMBA APB BUS word写异步FIFO的时序如图16所示,从图16中可以看到,完成一次AMBA APB BUS word写动作,只需要1个时钟周期,比现有技术中图4中节约了3个时钟周期。 
下面举一具体实例来说明本发明上述技术方案。 
图17为本例中采用增量格雷码异步FIFO实现的写buffer电路,主要的功能是在SOC中实现主器件(如处理器、DMA等)对接口控制器写的数据缓冲。该写buffer支持word、half word和byte三种数据宽度写和byte数据宽度读;Buffer的存储深度为512byte。该写buffer电路写接口与SOC BUS总线连接,读接口与SOC外围的接口相连。图17中写buffer电路中分部信号解释如表8: 
表8写buffer电路信号解释 
Figure DEST_PATH_BDF0000000072170000181
图17中写buffer电路主要包括4个部分:写控制电路(包含前述增量格雷码编码电路)、读控制电路(包含前述增量格雷码译码电路)、同步逻辑电路、FIFO memory(存储器)。其中: 
写控制电路主要完成数据写入buffer的控制,主要包含buffer写指针生成电路、写地址生成电路、FIFO满标志生成电路(即前述标志生成电路)。 
写指针生成电路就是一个10位的增量格雷码编码电路,电路中分别用格雷码计数器对byte、half word、word写使能计数产生各自增量格雷码指针(byte写:wbptr_inc,half word写:whptr_inc,word写:wwptr_inc)用于同步。图18为本例中写指针生成电路的示意图,图18中写指针生成电路中部分信号解释如表9: 
表9写指针生成电路信号解释 
Figure DEST_PATH_BDF0000000072170000201
写地址生成电路由一个格雷码计数器和相关的地址产生逻辑电路组成。格雷码计数器采用如下的计数方法:当byte写(winc=1同时HSIZE=0)计数器加1;当half word写(winc=1同时HSIZE=1)计数器加2;当word写(w inc=1同时HSIZE=2)计数器加4。格雷码计数器生成的格类码的最高比特(第ADDRSIZE位)和次高比特(第ADDRSIZE-1位)异或产生地址的最高比特,其余比特(第ADDRSIZE-2位到0位)产生地址的其余比特。 
FIFO满标志生成电路按如下方式确定异步FIFO是否写满并产生相应的标 志: 
当写指针与同步后的读指针最高位不同、而写指针与同步后的读指针转换的读写地址相同时,产生写满标志wfull; 
当写指针在格雷码计数器加1后的指针与同步后的读指针最高位不同、而写指针与同步后的读指针转换的读写地址相同时,产生写满标志wfull或hwfull; 
当写指针在格雷码计数器加2或3后的指针与同步后的读指针最高位不同、而写指针与同步后的读指针转换的读写地址相同时,产生写满标志hwfull或wwfull。 
图19为写地址生成电路及满标志产生电路的示意图,图19中写地址生成电路及满标志产生电路中部分信号解释如表10: 
表10写地址生成及满标志产生电路信号解释 
Figure DEST_PATH_BDF0000000072170000211
Figure DEST_PATH_BDF0000000072170000221
同步逻辑电路采用两级寄存器,如图20所示的写指针同步逻辑电路和图21所示的读指针同步逻辑电路。 
本例中,FIFO memory由一个512byte的双口存储器组成,如图22所示,图22中FIFO memory电路中部分信号解释如表11: 
表11FIFO memory电路信号解释 
Figure DEST_PATH_BDF0000000072170000222
本例中读控制电路主要完成读buffer数据的控制。读控制电路包含写增量生成电路、读地址生成电路及空标志产生电路。 
写增量生成电路就是一个9位增量格雷码译码电路,如图23所示,该电路将同步后各数据宽度对应的增量格雷码指针采用寄存器寄存;同时将寄存后和寄存前对应数据宽度的指针一起转换为二进制值,将转换后的两值相减得到该数据宽度对应增量的二进制值;然后根据将各数据宽度对应增量的二进制值乘以对应的增量系数(例如增量系数=数据宽度/最小的数据宽度),得到各数据宽度对应的增加值;最后将这些增加值和原有的增加值相加得到总的增加值,总的增加值采用寄存器寄存,这个寄存的总的增加值用来进行空/满标志的判断。图23中写增量生成电路中部分信号解释如表12: 
表12写增量生成电路信号解释 
Figure DEST_PATH_BDF0000000072170000232
读地址生成电路由一个格雷码计数器和相关的地址产生逻辑电路组成。格雷码计数器采用如下的计数方法: 
当每次读(byte读)(rinc=1)计数器加1。 
格雷码计数器生成的格类码的最高比特(第ADDRSIZE位)和次高比特(第ADDRSIZE-1位)异或产生地址的最高比特,其余比特(第ADDRSIZE-2位到0位)产生地址的其余比特。 
空标志生成电路按如下方式确定异步FIFO是否读空并产生相应的标志: 
总的增加值rwbin和格雷码计数器中的二进制计数值如果相等,则断为空。读地址生成电路及空标志产生电路如图24所示,其中读地址生成及空标志产生电路信号解释如表13: 
表13读地址生成及空标志产生电路信号解释 
Figure DEST_PATH_BDF0000000072170000241
综上所述,本发明实施例中在编码时:采用至少两个格雷码计数器对异步FIFO的数据读写次数进行计数,其中,对不同的数据宽度,采用不同的格雷码计数器对数据读写次数进行计数;将各格雷码计数器计数所得格雷码值作为编码输出,以产生指针供同步逻辑电路进行同步处理;在译码时:将每一数据宽度对应的所述同步处理后的指针进行寄存,并将寄存后的指针与寄 存前的指针转换为二进制值;将每一数据宽度对应的所述寄存后的指针转换的二进制值减去所述寄存前的指针转换的二进制值,获得该数据宽度对应增量的二进制值;将各数据宽度对应增量的二进制值分别乘以对应的增量系数,获得各数据宽度对应的增加值;将各数据宽度对应的增加值相加,获得总的增加值作为译码值输出,供标志产生电路确定异步FIFO是否写满或读空并产生相应的标志;与现有技术相比,通过采用增量格雷码异步FIFO设计,不但能够实现支持不同数据宽度的读写,而且通过图4和图16的对比可以看出此技术方案对不同的数据宽度读写不需要数据宽度的转换,从而可以实现单周期完成所有数据宽度的读写,大大提高总线的利用率。 
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。 

Claims (12)

1.一种异步FIFO的读写控制处理方法,其特征在于,该方法包括: 
将每一数据宽度对应的同步处理后的指针进行寄存,并将寄存后的指针与寄存前的指针转换为二进制值,所述同步处理后的指针由同步逻辑电路输出,所述同步逻辑电路同步处理的指针由至少两个格雷码计数器对异步FIFO的数据读写次数进行计数所得格雷码值作为编码输出而产生,其中对不同的数据宽度,采用不同的格雷码计数器对数据读写次数进行计数; 
将每一数据宽度对应的所述寄存后的指针转换的二进制值减去所述寄存前的指针转换的二进制值,获得该数据宽度对应增量的二进制值; 
将各数据宽度对应增量的二进制值分别乘以对应的增量系数,获得各数据宽度对应的增加值,所述增量系数=数据宽度/最小的数据宽度; 
将各数据宽度对应的增加值相加,获得总的增加值作为译码值输出,供标志产生电路确定异步FIFO是否写满或读空并产生相应的标志。 
2.如权利要求1所述的方法,其特征在于,还包括: 
采用一格雷码计数器对异步FIFO的数据读写次数进行计数,其中,对不同宽度的数据,该格雷码计数器的计数长度不同; 
采用地址产生逻辑电路将该格雷码计数器计数所得格雷码的最高比特和次高比特异或以产生地址的最高比特,用其余比特产生地址的其余比特。 
3.如权利要求2所述的方法,其特征在于,还包括: 
所述标志产生电路根据所述格雷码计数器的相应计数值和所述译码值或所述译码值的转换值,确定异步FIFO是否写满或读空并产生相应的标志。 
4.如权利要求1所述的方法,其特征在于,所述同步处理,包括:由同步逻辑电路采用两级寄存器进行同步处理。 
5.一种异步FIFO的读写控制处理电路,其特征在于,包括: 
格雷码转二进制码逻辑电路,用于将每一数据宽度对应的同步处理后的指针进行寄存,并将寄存后的指针与寄存前的指针转换为二进制值,所述同 步处理后的指针由同步逻辑电路输出,所述同步逻辑电路同步处理的指针由至少两个格雷码计数器对异步FIFO的数据读写次数进行计数所得格雷码值作为编码输出而产生,其中对不同的数据宽度,采用不同的格雷码计数器对数据读写次数进行计数; 
增量计算逻辑电路,用于将每一数据宽度对应的所述寄存后的指针转换的二进制值减去所述寄存前的指针转换的二进制值,获得该数据宽度对应增量的二进制值; 
乘法器,用于将各数据宽度对应增量的二进制值分别乘以对应的增量系数,获得各数据宽度对应的增加值,所述增量系数=数据宽度/最小的数据宽度; 
加法器,用于将各数据宽度对应的增加值相加,获得总的增加值作为译码值输出,供标志产生电路确定异步FIFO是否写满或读空并产生相应的标志。 
6.如权利要求5所述的电路,其特征在于,还包括: 
一格雷码计数器,与地址产生逻辑电路相连,用于对异步FIFO的数据读写次数进行计数,其中,对不同宽度的数据,该格雷码计数器的计数长度不同; 
所述地址产生逻辑电路,与该格雷码计数器和异步FIFO相连,用于将该格雷码计数器计数所得格雷码的最高比特和次高比特异或以产生地址的最高比特,用其余比特产生地址的其余比特。 
7.如权利要求6所述的电路,其特征在于,还包括: 
所述标志产生电路,分别与所述格雷码计数器和所述加法器相连,用于根据所述格雷码计数器的相应计数值和所述译码值或所述译码值的转换值,确定异步FIFO是否写满或读空并产生相应的标志。 
8.如权利要求5所述的电路,其特征在于,还包括: 
同步逻辑电路,分别与编码输出产生指针的格雷码计数器和所述格雷码转二进制码逻辑电路相连,用于采用两级寄存器对编码输出产生的指针进行 同步处理,并将同步处理后的指针提供给所述格雷码转二进制码逻辑电路。 
9.一种异步FIFO的读写控制处理系统,其特征在于,包括: 
编码电路,包括: 
至少两个格雷码计数器,用于对异步FIFO的数据读写次数进行计数,其中,对不同的数据宽度,由不同的格雷码计数器对数据读写次数进行计数;各格雷码计数器分别与同步逻辑电路相连,用于将计数所得格雷码值作为编码输出,以产生指针供同步逻辑电路进行同步处理; 
译码电路,包括: 
格雷码转二进制码逻辑电路,用于将每一数据宽度对应的所述同步处理后的指针进行寄存,并将寄存后的指针与寄存前的指针转换为二进制值;增量计算逻辑电路,用于将每一数据宽度对应的所述寄存后的指针转换的二进制值减去所述寄存前的指针转换的二进制值,获得该数据宽度对应增量的二进制值;乘法器,用于将各数据宽度对应增量的二进制值分别乘以对应的增量系数,获得各数据宽度对应的增加值,所述增量系数=数据宽度/最小的数据宽度;加法器,用于将各数据宽度对应的增加值相加,获得总的增加值作为译码值输出,供标志产生电路确定异步FIFO是否写满或读空并产生相应的标志。 
10.如权利要求9所述的系统,其特征在于,还包括: 
地址产生电路,包括: 
一格雷码计数器,与地址产生逻辑电路相连,用于对异步FIFO的数据读写次数进行计数,其中,对不同宽度的数据,该格雷码计数器的计数长度不同; 
所述地址产生逻辑电路,与该格雷码计数器和异步FIFO相连,用于将该格雷码计数器计数所得格雷码的最高比特和次高比特异或以产生地址的最高比特,用其余比特产生地址的其余比特。 
11.如权利要求10所述的系统,其特征在于,还包括: 
标志产生电路,分别与权利要求10中格雷码计数器和所述加法器相连,用于根据权利要求10中格雷码计数器的相应计数值和所述译码值或所述译码值的转换值,确定异步FIFO是否写满或读空并产生相应的标志。 
12.如权利要求9所述的系统,其特征在于,还包括: 
同步逻辑电路,与产生指针的格雷码计数器相连,用于采用两级寄存器对产生的指针进行同步处理。 
CN201010259624.7A 2010-08-20 2010-08-20 异步先入先出存储器fifo的读写控制处理方法、电路及系统 Active CN102375720B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010259624.7A CN102375720B (zh) 2010-08-20 2010-08-20 异步先入先出存储器fifo的读写控制处理方法、电路及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010259624.7A CN102375720B (zh) 2010-08-20 2010-08-20 异步先入先出存储器fifo的读写控制处理方法、电路及系统

Publications (2)

Publication Number Publication Date
CN102375720A CN102375720A (zh) 2012-03-14
CN102375720B true CN102375720B (zh) 2014-03-12

Family

ID=45794369

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010259624.7A Active CN102375720B (zh) 2010-08-20 2010-08-20 异步先入先出存储器fifo的读写控制处理方法、电路及系统

Country Status (1)

Country Link
CN (1) CN102375720B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102799410B (zh) * 2012-06-19 2015-03-04 东南大学 基于李氏制约竞争计数编码的异步fifo地址转换电路
CN103747253B (zh) * 2013-12-27 2017-04-05 高新兴科技集团股份有限公司 一种基于fifo的视频编码数据传输方法
CN110888622B (zh) * 2018-09-11 2024-07-02 上海肇观电子科技有限公司 实现任意深度异步fifo的方法及装置、设备、介质
CN109525511B (zh) * 2018-11-07 2022-04-01 西安微电子技术研究所 一种基于速率匹配的万兆以太网pcs系统及控制方法
CN109669664A (zh) * 2019-03-15 2019-04-23 南京芯视界微电子科技有限公司 异步fifo读写两端数据数量的实现方法
CN110704021B (zh) * 2019-09-29 2022-03-15 Oppo广东移动通信有限公司 异步先进先出数据处理方法、装置、电子装置及计算机可读存储介质
CN111367495B (zh) * 2020-03-06 2023-03-28 电子科技大学 一种异步先入先出的数据缓存控制器
CN112486453B (zh) * 2020-12-10 2023-12-08 上海金卓科技有限公司 一种异步先入先出寄存器以及芯片
CN114422801B (zh) * 2021-12-31 2024-04-26 山东云海国创云计算装备产业创新中心有限公司 优化视频压缩控制逻辑的方法、系统、设备和存储介质
CN116153362B (zh) * 2023-04-20 2023-08-25 浙江力积存储科技有限公司 读取等待时间计数器延迟反馈方法、延迟反馈存储结构

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1963796A (zh) * 2006-12-11 2007-05-16 北京中星微电子有限公司 一种异步先入先出方法、系统及发送装置
CN1963551A (zh) * 2005-11-09 2007-05-16 安捷伦科技有限公司 用于周期性采样的高分辨率时间戳

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3308912B2 (ja) * 1998-09-08 2002-07-29 エヌイーシーマイクロシステム株式会社 Fifoメモリ装置とその制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1963551A (zh) * 2005-11-09 2007-05-16 安捷伦科技有限公司 用于周期性采样的高分辨率时间戳
CN1963796A (zh) * 2006-12-11 2007-05-16 北京中星微电子有限公司 一种异步先入先出方法、系统及发送装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
JP特开2000-89932A 2000.03.31
基于多时钟域的异步FIFO设计;杨青山 等;《中国集成电路》;20070930;36-39、62 *
杨青山 等.基于多时钟域的异步FIFO设计.《中国集成电路》.2007,36-39、62.
苏进.异步FIFO存储器的设计.《中国优秀硕士学位论文全文数据库(电子期刊)-信息科技辑》.2007, *

Also Published As

Publication number Publication date
CN102375720A (zh) 2012-03-14

Similar Documents

Publication Publication Date Title
CN102375720B (zh) 异步先入先出存储器fifo的读写控制处理方法、电路及系统
CN101681249B (zh) 先进先出缓冲器
EP1410509B1 (en) Non-power-of-two gray-code counter system having binary incrementer with counts distributed with bilateral symmetry
TWI224790B (en) Apparatus and method of asynchronous FIFO control
TW201202938A (en) Reducing simultaneous switching outputs using data bus inversion signaling
JPH01150940A (ja) Crc演算方式
CN102761389A (zh) 非同步主从式串行通信系统、数据传输方法与控制模块
CN101776988B (zh) 一种块大小可变的可重构矩阵寄存器文件
US6745265B1 (en) Method and apparatus for generating status flags in a memory device
CN102799410A (zh) 基于李氏制约竞争计数编码的异步fifo地址转换电路
TW498626B (en) Chien's searching apparatus
CN104182360A (zh) 多核环境的跟踪日志输出处理方法及系统
CN101534125B (zh) 一种超长数据变长编码合成系统
US9311975B1 (en) Bi-synchronous electronic device and FIFO memory circuit with jump candidates and related methods
WO1991009362A1 (en) Pulse count type communication system
CN103559161A (zh) 一种用于fpga配置的总线多宽度转换电路
CN103488597A (zh) 一种先进先出缓存器及其读写数据的方法
CN103377029B (zh) 参数化的通用fifo控制方法
CN110888622A (zh) 实现任意深度异步fifo的方法及装置、设备、介质
US6480912B1 (en) Method and apparatus for determining the number of empty memory locations in a FIFO memory device
US7251759B2 (en) Method and apparatus to compare pointers associated with asynchronous clock domains
CN209417720U (zh) 二进制至格雷转换电路和fifo存储器
CN105550134B (zh) 高速数据接口主机端控制器
CN115905038B (zh) 缓存数据读取方法、装置、计算机设备和存储介质
JP2001308832A (ja) 速度変換装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: RENESAS INTEGRATED CIRCUIT DESIGN (BEIJING) CO., L

Free format text: FORMER OWNER: RENESAS ELECTRONICS (CHINA) CO., LTD.

Effective date: 20130521

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20130521

Address after: 100191 Haidian District, Zhichun Road, No. 27 quantum core, layer 7, layer

Applicant after: RENESAS IC DESIGN (BEIJING) CO., LTD.

Address before: 100191, Haidian District, Zhichun Road, No. 27, No. 11, building 7, 8,, 9

Applicant before: Renesas Electronics (China) Co., Ltd.

GR01 Patent grant
GR01 Patent grant