CN101183303A - Fifo控制电路及控制方法 - Google Patents

Fifo控制电路及控制方法 Download PDF

Info

Publication number
CN101183303A
CN101183303A CNA2007101783070A CN200710178307A CN101183303A CN 101183303 A CN101183303 A CN 101183303A CN A2007101783070 A CNA2007101783070 A CN A2007101783070A CN 200710178307 A CN200710178307 A CN 200710178307A CN 101183303 A CN101183303 A CN 101183303A
Authority
CN
China
Prior art keywords
fifo
address
reading
gray code
read
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
CNA2007101783070A
Other languages
English (en)
Other versions
CN100549938C (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.)
Haimen Jiang Yong Investment & Development Co Ltd
Original Assignee
Vimicro Corp
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 Vimicro Corp filed Critical Vimicro Corp
Priority to CNB2007101783070A priority Critical patent/CN100549938C/zh
Publication of CN101183303A publication Critical patent/CN101183303A/zh
Application granted granted Critical
Publication of CN100549938C publication Critical patent/CN100549938C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Communication Control (AREA)

Abstract

本发明公开了一种FIFO控制电路和一种FIFO控制方法。本发明允许每次写入FIFO的数据长度不同,并直接根据每次写入FIFO的数据长度来计算下一次写入的写地址;由于每次写入FIFO的数据长度可能不同,从而无法预先获知每次写入数据的长度,因此,本发明在FIFO控制电路中增加了读数据调整单元,如果FIFO中存储的数据不足以一次读取,则读数据调整单元降低读取数据单位长度,并输出至读地址单元,由读地址单元根据读数据调整单元输出的读取数据单位长度来计算下一次读取的读地址,以保证能够将FIFO中存储的数据读空。

Description

FIFO控制电路及控制方法
技术领域
本发明涉及存储器技术,特别涉及一种先进先出存储器(FIFO)控制电路和一种FIFO的控制方法。
背景技术
FIFO是一种常用于数据缓冲和时钟隔离的电路器件,可应用于包括高速数据采集,多处理器接口和通信中的高速缓冲等各种领域。
通常情况下,需要为FIFO设置一控制电路,以实现根据写地址在FIFO中写入数据、根据读地址读取FIFO中的数据。
图1为现有FIFO控制电路的结构示意图。如图1所示,现有的FIFO控制电路通常包括:连接至FIFO的写地址单元和读地址单元。
写地址单元,在写时钟信号的控制下,根据预设的每次写入数据的固定长度,计算(例如累加得到)下一次写入的写地址并输出至FIFO,以保证每次写入至FIFO的数据能够存储于当前写入地址对应的存储空间。
读地址单元,在读时钟信号的控制下,根据预设的每次读取数据的固定长度,计算下一次读取的读地址并输出至FIFO,以保证每次从FIFO中读取的数据为当前读地址所对应的数据。
其中,上述的写时钟信号和读时钟信号,可以分别来自FIFO所在数据总线中写入数据和读取数据的功能单元;跨时钟域的写入数据固定长度与读取数据固定长度需匹配,例如二者相等或互为倍数,以保证能够读空FIFO中存储的数据。
同时,为了产生表示FIFO已空的空(empty)信号,写地址单元在计算得到下一次写入的写地址之后,将该写地址转换为长度与FIFO深度相匹配的格雷码并输出至读地址单元,在写地址格雷码和读地址格雷码相同时,由读地址单元输出空信号;而为了产生表示FIFO已满的满(full)信号,读地址单元在计算得到下一次读取的读地址之后,也将该读地址转换为长度与FIFO深度相匹配的格雷码并输出至写地址单元,在写地址格雷码和读地址格雷码的最高两位不同、且其余所有低位均相同时,由写地址单元输出满信号。
上述FIFO控制电路虽然能够支持对FIFO的读写操作,但仅限于固定长度的数据写入、以及固定长度的数据读取,且需要跨时钟域的写入数据固定长度与读取数据固定长度相匹配。
而在实际应用中,FIFO所在的数据总线中,每次写入的数据长度可能会动态变化,即跨时钟域的写入数据长度与读取数据长度不固定、且不匹配。在这种情况下,就无法预先获知每次写入的数据长度,因而无法预先设置每次读取的数据长度,从而无法保证写入的数据长度与读取的数据长度相匹配,使得无法保证FIFO中存储的数据被读空。
可见,在跨时钟域的写入数据长度与读取数据长度不固定、且不匹配的环境下,现有FIFO控制电路无法保证将FIFO中存储的数据读空,从而无法支持对FIFO的读写操作。
发明内容
有鉴于此,本发明提供了一种FIFO控制电路和一种FIFO的控制方法,能够在跨时钟域的写入数据长度与读取数据长度不固定、且不匹配的环境下,支持对FIFO的读写操作。
本发明提供的一种FIFO控制电路,包括:连接至所述FIFO的写地址单元和读地址单元,
该控制电路还包括:读数据调整单元,其中,
所述读数据调整单元在FIFO中存储的数据不足以一次读取时,降低读取数据单位长度,并输出至所述读地址单元;
所述写地址单元,根据当前写入至所述FIFO的数据长度,计算下一次写入的写地址并输出给所述FIFO;
所述读地址单元,根据接收到的读取数据单位长度,计算下一次读取的读地址并输出给所述FIFO。
所述写地址单元,进一步将计算得到的写地址转换为与所述读取数据单位长度相匹配的写地址格雷码有效位,将该写地址格雷码有效位转换为长度与所述FIFO深度相匹配的写地址格雷码,并输出至所述读地址单元;
所述读地址单元,进一步将计算得到的读地址转换为与所述读数据单位长度相匹配的读地址格雷码有效位,将该读地址格雷码有效位转换为长度与所述FIFO深度相匹配的读地址格雷码,并将转换得到的读地址格雷码与接收自所述写地址单元的写地址格雷码进行比较,如果二者相同,则向所述FIFO输出表示FIFO已空的空信号。
在进行比较之前,所述读地址单元进一步在所述读时钟信号的控制下,将接收自所述写地址单元的写地址格雷码锁存两拍。
读地址单元进一步将表示FIFO已空的空信号输出给读数据调整单元,通知所述读数据调整单元停止所述读数据单位长度的调整。
所述读地址单元,进一步将计算得到的读地址转换为与当前写入至所述FIFO的数据长度相匹配的读地址格雷码有效位,将该读地址格雷码有效位转换为长度与所述FIFO深度相匹配的读地址格雷码,并输出至所述写地址单元;
所述写地址单元,进一步将计算得到的写地址转换为与当前写入至所述FIFO的数据长度相匹配的写地址格雷码有效位,将该写地址格雷码有效位转换为长度与所述FIFO深度相匹配的写地址格雷码,并将转换得到的写地址格雷码与接收自所述读地址单元的读地址格雷码进行比较,如果二者有效位的最高两位不同、且其余所有低位均相同时,向所述FIFO输出表示FIFO已满的满信号。
在进行比较之前,所述写地址单元进一步在所述写时钟信号的控制下,将接收自所述读地址单元的读地址格雷码锁存两拍。
所述读地址单元进一步将所述表示FIFO已满的满信号输出给所述读数据调整单元;
所述读数据调整单元根据接收到的所述表示FIFO已满的满信号,提高读数据单位长度并输出至所述读地址单元。
本发明提供的一种FIFO的控制方法,包括:
根据当前写入至所述FIFO的数据长度,计算下一次写入的写地址并输出给所述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控制电路的读数据调整单元的状态机结构示意图。
图4为本发明中FIFO的控制方法的流程示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明中允许每次写入FIFO的数据长度不同,并直接根据每次写入FIFO的数据长度来计算下一次写入的写地址;由于每次写入FIFO的数据长度可能不同,从而无法预先获知每次写入数据的长度,因此,对于每次从FIFO中读取的数据长度需要进行动态调整,以保证能够将FIFO中存储的数据读空。为了实现每次从FIFO中读取的数据长度的动态调整,本发明在FIFO控制电路中增加了读数据调整单元,如果FIFO中存储的数据不足以一次读取,则读数据调整单元降低读取数据单位长度,并输出至读地址单元,由读地址单元根据读数据调整单元输出的读取数据单位长度来计算下一次读取的读地址。
图2为本发明中FIFO控制电路的结构示意图。如图2所示,本发明中的FIFO控制电路包括:连接至FIFO的写地址单元和读地址单元,与如图1所示的已有FIFO控制电路相比,本发明中的FIFO控制电路还包括:读数据调整单元。
其中,读数据调整单元在FIFO中存储的数据(此时的FIFO为非空状态)不足以一次读取(例如接收到FIFO所在数据总线中读取该FIFO的功能单元所输出的读失败信号)时,降低读取数据单位长度,并输出至读地址单元。
如果基于调整后的读取数据单位长度,FIFO中存储的数据仍不足以一次读取,则读数据调整单元继续降低读取数据单位长度,如此反复,直至将FIFO中存储的数据读空。
写地址单元,在写时钟信号的控制下,根据当前写入至FIFO的数据长度,计算下一次写入的写地址并输出给FIFO,以保证每次写入至FIFO的数据能够存储于当前写入地址对应的存储空间。
读地址单元,在读时钟信号的控制下,根据接收到的读取数据单位长度,计算下一次读取的读地址并输出给FIFO,以保证每次从FIFO中读取的数据为当前读地址所对应的数据。
其中,上述的写时钟信号和读时钟信号,可以分别来自FIFO所在数据总线中写入数据和读取数据的功能单元。
可见,在跨时钟域的写入数据长度与读取数据长度不固定、且不匹配的环境下,上述FIFO控制电路能够保证FIFO中存储的数据被读空,因而能够支持对FIFO的读写操作。
同时,为了产生表示FIFO已满的满信号和表示FIFO已空的空信号,写地址单元和读地址单元需要分别将其计算得到下一次写入的写地址、和下一次读取的读地址转换为格雷码,并输出给对方,用以比较判断。
但由于本发明中跨时钟域的写入数据长度与读取数据长度不固定、且不匹配,因此,如果按照现有方式进行写地址和读地址的格雷码转换,则得到的格雷码中,实际表示写地址和读地址的有效位的位数将会不同,从而无法通过比较判断出FIFO是否已满或已空。
为了在跨时钟域的写入数据长度与读取数据长度不固定、且不匹配的情况下,仍能够通过比较写地址和读地址准确判断FIFO是否已空,本发明可按照如下方式进行写地址和读地址的格雷码转换:
读数据调整单元,将读取数据单位长度也输出给写地址单元。这样,写地址单元,将计算得到的写地址转换为与读取数据单位长度相匹配的写地址格雷码有效位,将该写地址格雷码有效位转换(例如在欠位的情况下在该有效位之前补零)为长度与FIFO深度相匹配的写地址格雷码并输出至读地址单元,用于读地址单元在比较判断后输出空信号。
按照上述方式实现了写地址的格雷码转换后,读地址单元则可以按照如下方式进行比较判断:
读地址单元将计算得到的读地址转换为与读数据单位长度相匹配的读地址格雷码有效位,将该读地址格雷码有效位转换(例如在欠位的情况下在该有效位之前补零)为长度与所述FIFO深度相匹配的读地址格雷码,并将其与接收自写地址单元的写地址格雷码进行比较(在写地址单元中进行比较的写地址格雷码与读地址格雷码的有效位的位数均与读数据单位长度相匹配),如果二者相同,则向FIFO输出表示FIFO已空的空信号。
实际应用中,读地址单元还可以将表示FIFO已空的空信号输出给读数据调整单元,用于读数据调整单元获知FIFO已空,停止调整读数据单位长度。
为了在跨时钟域的写入数据长度与读取数据长度不固定、且不匹配的情况下,仍能够通过比较写地址和读地址准确判断FIFO是否已满,本发明可按照如下方式进行写地址和读地址的格雷码转换:
读地址单元,将计算得到的读地址转换为与当前写入至FIFO的数据长度相匹配的读地址格雷码有效位,将该读地址格雷码有效位转换(例如在欠位的情况下在该有效位之前补零)为长度与FIFO深度相匹配的读地址格雷码并输出至写地址单元,用于写地址单元在比较判断后输出满信号。
按照上述方式实现了读地址的格雷码转换后,写地址单元则可以按照如下方式进行比较判断:
写地址单元,将计算得到的写地址转换为与当前写入至FIFO的数据长度相匹配的写地址格雷码有效位,将该写地址格雷码有效位转换(例如在欠位的情况下在该有效位之前补零)为长度与FIFO深度相匹配的写地址格雷码,并将其与接收自读地址单元的读地址格雷码进行比较(在写地址单元中进行比较的写地址格雷码与读地址格雷码的有效位的位数均与当前写入至FIFO的数据长度相匹配),如果二者有效位的最高两位不同、且其余所有低位均相同时,向所述FIFO输出表示FIFO已满的满信号。
由于写地址单元和读地址单元间的交互是跨时钟域的交互,因此,为了消除二者交互的写地址格雷码与读地址格雷码的亚稳态,在进行比较之前,写地址单元可以在写时钟信号的控制下,将接收自读地址单元的读地址格雷码锁存两拍;同理,在进行比较之前,读地址单元可以在读时钟信号的控制下,也将接收自写地址单元的写地址格雷码锁存两拍。
实际应用中,如果写地址单元产生了表示FIFO已满的满信号,则也可以同时输出给读数据调整单元,由读数据调整单元根据接收到的表示FIFO已满的满信号,提高读数据单位长度并输出至读地址单元,以使得FIFO中的数据能够尽快被读出,从而防止溢出。
下面,以FIFO为双口随机存储器(RAM)为例,对上述FIFO控制电路进行举例说明。
假设,作为FIFO的双口RAM的深度为2N、写入数据的长度为2N1、读取数据的长度为2N2、大于等于零的正整数N=7。其中,N1和N2均小于等于N。
本实施例中,为读数据单位长度设置一初始值26,即读数据单位长度的N2=6。
每次写入至FIFO的数据长度为2N1,N1可以动态变化。
这样,写地址单元则在写时钟信号的控制下,根据当前写入至FIFO的数据长度2N1,计算下一次写入的写地址并输出给FIFO,以保证每次写入至FIFO的数据能够存储于当前写入地址对应的存储空间。
初始状态下,读地址单元在读时钟信号的控制下,根据接收到的读取数据单位长度初始值26,计算下一次读取的读地址并输出给FIFO,以保证每次从FIFO中读取的数据为当前读地址所对应的数据。
如果未接收到表示FIFO为空的空信号(empty=0)、且FIFO中存储的数据不足以长度为26的一次读取,则读数据调整单元降低将当前的N2降低为5,以实现利用预设步长来降低读取数据单位长度,并输出至读地址单元。
此时,读地址单元在读时钟信号的控制下,根据接收到的读取数据单位长度25,计算下一次读取的读地址并输出给FIFO。如果基于调整后的读取数据单位长度25,FIFO中存储的数据仍不足以一次读取、且FIFO并未从写地址单元接收到表示该FIFO为空的空信号(empty=0),则读数据调整单元继续降低读取数据单位长度,直至FIFO中存储的数据能够一次读取、或读取数据单位长度等于FIFO中的最小数据长度20后接收到表示该FIFO为空的空信号(empty=1)。
如果接收到表示FIFO为空的空信号(empty=1),则读数据调整单元保持当前的读数据单位长度不变,FIFO控制电路回复到空闲状态。
图3为本发明实施例中FIFO控制电路的读数据调整单元的状态机结构示意图。本实施例中,读数据调整单元的上述处理过程可以由如图3所示的状态机来实现。
下面,对本实施例中通过比较和判断写地址和读地址的格雷码以生成空信号的过程进行举例说明。
写地址单元,将计算得到的写地址转换为与读取数据单位长度相匹配的N2位写地址格雷码有效位,将该N2位写地址格雷码有效位转换为长度与FIFO深度相匹配的N位写地址格雷码,并输出至读地址单元,用于读地址单元进行比较和判断以生成空信号。
具体来说,写地址单元转换得到用以读地址单元生成空信号的写地址格雷码的过程包括:
写地址单元先判断读数据单位长度的N2大小;
如果N2=6,则将写地址与其右移1位后的结果进行异或运算,得到8位写地址格雷码有效位,8位写地址格雷码有效位即可直接作为与FIFO深度相匹配的8位写地址格雷码;
如果N2=5,则将写地址与其右移1位后的结果进行异或运算,得到7位写地址格雷码有效位,并在该有效位的最高位前补1个零,得到8位的写地址格雷码;
依此类推,如果N2=0,则将写地址与其右移1位后的结果进行异或运算,得到2位写地址格雷码有效位,并在该有效位的最高位前补6个零,得到8位的写地址格雷码。
读地址单元将计算得到的读地址转换为与读数据单位长度相匹配的N2位读地址格雷码有效位,将该读地址格雷码有效位转换为长度与所述FIFO深度相匹配的N位读地址格雷码,并将其与接收自写地址单元的写地址格雷码进行比较(该写地址格雷码的有效位也为N2位),如果二者相同,则向FIFO输出表示FIFO已空的空信号。
具体来说,读地址单元转换得到用以自身生成空信号的读地址格雷码的过程包括:
读地址单元先判断读数据单位长度的N2大小;
如果N2=6,则将读地址与其右移1位后的结果进行异或运算,得到8位读地址格雷码有效位,8位读地址格雷码有效位即可直接作为与FIFO深度相匹配的8位读地址格雷码;
如果N2=5,则将读地址与其右移1位后的结果进行异或运算,得到7位读地址格雷码有效位,并在该有效位的最高位前补1个零,得到8位的读地址格雷码;
依此类推,如果N2=0,则将读地址与其右移1位后的结果进行异或运算,得到2位读地址格雷码有效位,并在该有效位的最高位前补6个零,得到8位的读地址格雷码。
按照上述方式实现了写地址和读地址的格雷码转换后,写地址单元和读地址单元则可以按照如下方式进行比较判断:
下面,再对本实施例中通过比较和判断写地址和读地址的格雷码以生成满信号的过程进行举例说明。
读地址单元,将计算得到的读地址转换为与当前写入至FIFO的数据长度相匹配的N1位读地址格雷码有效位,将该读地址格雷码有效位转换为长度与FIFO深度相匹配的N位读地址格雷码,并输出至写地址单元,用于写地址单元进行比较和判断以生成满信号。
具体来说,读地址单元转换得到用以写地址单元生成满信号的读地址格雷码的过程包括:
读地址单元先判断当前写入数据的长度N1大小;
如果N1=6,则将读地址与其右移1位后的结果进行异或运算,得到8位读地址格雷码有效位,8位读地址格雷码有效位即可直接作为与FIFO深度相匹配的8位读地址格雷码;
如果N1=5,则将读地址与其右移1位后的结果进行异或运算,得到7位读地址格雷码有效位,并在该有效位的最高位前补1个零,得到8位的读地址格雷码;
依此类推,如果N1=0,则将读地址与其右移1位后的结果进行异或运算,得到2位读地址格雷码有效位,并在该有效位的最高位前补6个零,得到8位的读地址格雷码。
按照上述方式实现了读地址的格雷码转换后,写地址单元则可以按照如下方式进行比较判断:
写地址单元,将计算得到的写地址转换为与当前写入至FIFO的数据长度相匹配的N1位写地址格雷码有效位,将该写地址格雷码有效位转换为长度与FIFO深度相匹配的N位写地址格雷码,并将其与接收自读地址单元的读地址格雷码进行比较(该读地址格雷码的有效位也为N1位),如果二者有效位的最高两位不同、且其余所有低位均相同时,向所述FIFO输出表示FIFO已满的满信号。
具体来说,写地址单元转换得到用以自身生成满信号的写地址格雷码的过程包括:
写地址单元先判断当前写入数据的长度N1大小;
如果N1=6,则将写地址与其右移1位后的结果进行异或运算,得到8位写地址格雷码有效位,8位写地址格雷码有效位即可直接作为与FIFO深度相匹配的8位写地址格雷码;
如果N1=5,则将写地址与其右移1位后的结果进行异或运算,得到7位写地址格雷码有效位,并在该有效位的最高位前补1个零,得到8位的写地址格雷码;
依此类推,如果N1=0,则将写地址与其右移1位后的结果进行异或运算,得到2位写地址格雷码有效位,并在该有效位的最高位前补6个零,得到8位的写地址格雷码。
在产生表示FIFO已满的满信号后,读数据调整单元则可以按照预设的步长提高读取数据单位长度,例如将N2加1。
当然,在实际应用中,如上所述的计算、转换、比较、判断过程,不限于如上所述的执行主体,也可以均由同一个功能单元来实现。
以上是对本发明中FIFO控制电路的说明,下面,再对本发明中FIFO的控制方法进行详细说明。
图4为本发明中FIFO的控制方法的流程示意图。如图4所示,本发明中FIFO的控制方法包括:
步骤401,根据当前写入至所述FIFO的数据长度,计算下一次写入的写地址并输出给所述FIFO。
步骤402,如果FIFO中存储的数据不足以一次读取,则降低读取数据单位长度,并根据接收到的读取数据单位长度,计算下一次读取的读地址并输出给所述FIFO。
至此,本流程结束。
需要说明的是,上述流程中的步骤401和步骤402并非一定按照步骤序号的先后顺序来执行,而是分别在写时钟信号和读时钟信号的控制下执行,当然也可以同时执行。
可见,在跨时钟域的写入数据长度与读取数据长度不固定、且不匹配的环境下,上述FIFO的控制方法能够保证FIFO中存储的数据被读空,因而能够支持对FIFO的读写操作。
在执行上述流程的同时,该方法还包括生成表示FIFO已满的满信号、以及生成表示FIFO已空的空信号的过程。
具体来说,生成空信号的过程包括:
a1、将计算得到的写地址转换为与读取数据单位长度相匹配的写地址格雷码有效位,将该写地址格雷码有效位转换为长度与FIFO深度相匹配的写地址格雷码;并将计算得到的读地址转换为与读数据单位长度相匹配的读地址格雷码有效位,将该读地址格雷码有效位转换为长度与FIFO深度相匹配的读地址格雷码;
a2、将步骤a1得到的写地址格雷码与读地址格雷码进行比较,如果二者相同,则向FIFO输出表示FIFO已空的空信号。
实际应用中,如果产生了表示FIFO已空的空信号,则可以停止调整读数据单位长度。
具体来说,生成满信号的过程包括:
b1、将计算得到的读地址转换为与当前写入至FIFO的数据长度相匹配的读地址格雷码有效位,将该读地址格雷码有效位转换为长度与FIFO深度相匹配的读地址格雷码;并将计算得到的写地址转换为与当前写入至FIFO的数据长度相匹配的写地址格雷码有效位,将该写地址格雷码有效位转换为长度与FIFO深度相匹配的写地址格雷码;
b2、将步骤b1得到的读地址格雷码与写地址格雷码进行比较,如果二者有效位的最高两位不同、且其余所有低位均相同时,向FIFO输出表示FIFO已满的满信号。
实际应用中,如果产生了表示FIFO已满的满信号,则也可以提高读数据单位长度,以使得FIFO中的数据能够尽快被读出,从而防止FIFO的溢出。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种先进先出存储器FIFO控制电路,包括:连接至所述FIFO的写地址单元和读地址单元,
其特征在于,该控制电路还包括:读数据调整单元,其中,
所述读数据调整单元在FIFO中存储的数据不足以一次读取时,降低读取数据单位长度,并输出至所述读地址单元;
所述写地址单元,根据当前写入至所述FIFO的数据长度,计算下一次写入的写地址并输出给所述FIFO;
所述读地址单元,根据接收到的读取数据单位长度,计算下一次读取的读地址并输出给所述FIFO。
2.如权利要求1所述的控制电路,其特征在于,
所述写地址单元,进一步将计算得到的写地址转换为与所述读取数据单位长度相匹配的写地址格雷码有效位,将该写地址格雷码有效位转换为长度与所述FIFO深度相匹配的写地址格雷码,并输出至所述读地址单元;
所述读地址单元,进一步将计算得到的读地址转换为与所述读数据单位长度相匹配的读地址格雷码有效位,将该读地址格雷码有效位转换为长度与所述FIFO深度相匹配的读地址格雷码,并将转换得到的读地址格雷码与接收自所述写地址单元的写地址格雷码进行比较,如果二者相同,则向所述FIFO输出表示FIFO已空的空信号。
3.如权利要求2所述的控制电路,其特征在于,
在进行比较之前,所述读地址单元进一步在所述读时钟信号的控制下,将接收自所述写地址单元的写地址格雷码锁存两拍。
4.如权利要求2或3所述的控制电路,其特征在于,读地址单元进一步将表示FIFO已空的空信号输出给读数据调整单元,通知所述读数据调整单元停止所述读数据单位长度的调整。
5.如权利要求1所述的控制电路,其特征在于,
所述读地址单元,进一步将计算得到的读地址转换为与当前写入至所述FIFO的数据长度相匹配的读地址格雷码有效位,将该读地址格雷码有效位转换为长度与所述FIFO深度相匹配的读地址格雷码,并输出至所述写地址单元;
所述写地址单元,进一步将计算得到的写地址转换为与当前写入至所述FIFO的数据长度相匹配的写地址格雷码有效位,将该写地址格雷码有效位转换为长度与所述FIFO深度相匹配的写地址格雷码,并将转换得到的写地址格雷码与接收自所述读地址单元的读地址格雷码进行比较,如果二者有效位的最高两位不同、且其余所有低位均相同时,向所述FIFO输出表示FIFO已满的满信号。
6.如权利要求5所述的控制电路,其特征在于,
在进行比较之前,所述写地址单元进一步在所述写时钟信号的控制下,将接收自所述读地址单元的读地址格雷码锁存两拍。
7.如权利要求5或6所述的控制电路,其特征在于,
所述读地址单元进一步将所述表示FIFO已满的满信号输出给所述读数据调整单元;
所述读数据调整单元根据接收到的所述表示FIFO已满的满信号,提高读数据单位长度并输出至所述读地址单元。
8.一种先进先出存储器FIFO的控制方法,其特征在于,该方法包括:
根据当前写入至所述FIFO的数据长度,计算下一次写入的写地址并输出给所述FIFO;
如果FIFO中存储的数据不足以一次读取,则降低读取数据单位长度,并根据接收到的读取数据单位长度,计算下一次读取的读地址并输出给所述FIFO。
9.如权利要求8所述的控制方法,其特征在于,在计算得到所述写地址和所述读地址之后,该方法进一步包括:
将计算得到的写地址转换为与所述读取数据单位长度相匹配的写地址格雷码有效位,将该写地址格雷码有效位转换为长度与所述FIFO深度相匹配的写地址格雷码;
并将计算得到的读地址转换为与所述读数据单位长度相匹配的读地址格雷码有效位,将该读地址格雷码有效位转换为长度与所述FIFO深度相匹配的读地址格雷码;
将所述写地址格雷码与所述读地址格雷码进行比较,如果二者相同,则向所述FIFO输出表示FIFO已空的空信号。
10.如权利要求9所述的控制方法,其特征在于,在向所述FIFO输出表示FIFO已空的空信号的同时,该方法进一步包括:
停止降低所述读取数据单位长度。
11.如权利要求8所述的控制方法,其特征在于,在计算得到所述写地址和所述读地址之后,该方法进一步包括:
将计算得到的读地址转换为与当前写入至所述FIFO的数据长度相匹配的读地址格雷码有效位,将该读地址格雷码有效位转换为长度与所述FIFO深度相匹配的读地址格雷码;
并将计算得到的写地址转换为与当前写入至所述FIFO的数据长度相匹配的写地址格雷码有效位,将该写地址格雷码有效位转换为长度与所述FIFO深度相匹配的写地址格雷码;
将所述读地址格雷码与所述写地址格雷码进行比较,如果二者有效位的最高两位不同、且其余所有低位均相同时,向所述FIFO输出表示FIFO已满的满信号。
12.如权利要求11所述的控制方法,其特征在于,在向所述FIFO输出表示FIFO已满的满信号的同时,该方法进一步包括:
提高所述读数据单位长度。
CNB2007101783070A 2007-11-28 2007-11-28 Fifo控制电路及控制方法 Expired - Fee Related CN100549938C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101783070A CN100549938C (zh) 2007-11-28 2007-11-28 Fifo控制电路及控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101783070A CN100549938C (zh) 2007-11-28 2007-11-28 Fifo控制电路及控制方法

Publications (2)

Publication Number Publication Date
CN101183303A true CN101183303A (zh) 2008-05-21
CN100549938C CN100549938C (zh) 2009-10-14

Family

ID=39448595

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101783070A Expired - Fee Related CN100549938C (zh) 2007-11-28 2007-11-28 Fifo控制电路及控制方法

Country Status (1)

Country Link
CN (1) CN100549938C (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102169425A (zh) * 2010-02-26 2011-08-31 上海华虹集成电路有限责任公司 一种具有四种工作模式的fifo缓存电路
CN101788903B (zh) * 2008-11-05 2014-10-29 英特尔公司 基于序列检测或与指令相关联的信息来优化指令的性能
CN104394346A (zh) * 2014-11-24 2015-03-04 龙迅半导体科技(合肥)有限公司 一种时钟信号控制方法及装置
WO2016045288A1 (zh) * 2014-09-24 2016-03-31 深圳市中兴微电子技术有限公司 一种异步fifo控制器及防止异步fifo缓存数据溢出的方法
CN105487836A (zh) * 2014-10-07 2016-04-13 意法半导体股份有限公司 带跳转候选的双同步电子设备和fifo存储器电路及相关方法
CN107220023A (zh) * 2017-06-29 2017-09-29 中国电子科技集团公司第五十八研究所 一种嵌入式可配置fifo存储器
CN107577623A (zh) * 2017-07-19 2018-01-12 成都华微电子科技有限公司 跨时钟域异步fifo及数据处理方法
CN109669664A (zh) * 2019-03-15 2019-04-23 南京芯视界微电子科技有限公司 异步fifo读写两端数据数量的实现方法
WO2020020142A1 (zh) * 2018-07-23 2020-01-30 华为技术有限公司 处理地址的方法和网络设备

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101788903B (zh) * 2008-11-05 2014-10-29 英特尔公司 基于序列检测或与指令相关联的信息来优化指令的性能
CN102169425A (zh) * 2010-02-26 2011-08-31 上海华虹集成电路有限责任公司 一种具有四种工作模式的fifo缓存电路
CN102169425B (zh) * 2010-02-26 2013-07-03 上海华虹集成电路有限责任公司 一种具有四种工作模式的fifo缓存电路
WO2016045288A1 (zh) * 2014-09-24 2016-03-31 深圳市中兴微电子技术有限公司 一种异步fifo控制器及防止异步fifo缓存数据溢出的方法
CN105487836A (zh) * 2014-10-07 2016-04-13 意法半导体股份有限公司 带跳转候选的双同步电子设备和fifo存储器电路及相关方法
CN104394346A (zh) * 2014-11-24 2015-03-04 龙迅半导体科技(合肥)有限公司 一种时钟信号控制方法及装置
CN107220023A (zh) * 2017-06-29 2017-09-29 中国电子科技集团公司第五十八研究所 一种嵌入式可配置fifo存储器
CN107577623A (zh) * 2017-07-19 2018-01-12 成都华微电子科技有限公司 跨时钟域异步fifo及数据处理方法
WO2020020142A1 (zh) * 2018-07-23 2020-01-30 华为技术有限公司 处理地址的方法和网络设备
US11570106B2 (en) 2018-07-23 2023-01-31 Huawei Technologies Co., Ltd. Address processing method and network device
CN109669664A (zh) * 2019-03-15 2019-04-23 南京芯视界微电子科技有限公司 异步fifo读写两端数据数量的实现方法

Also Published As

Publication number Publication date
CN100549938C (zh) 2009-10-14

Similar Documents

Publication Publication Date Title
CN100549938C (zh) Fifo控制电路及控制方法
CN110800056B (zh) 用于使用共享地址路径在存取存储器排组的同时刷新另一存储器排组的系统和方法
CN101599053B (zh) 支持多种传输协议的串行接口控制器及控制方法
KR100819061B1 (ko) 쓰기 전력 계산 및 데이터 반전 기능을 통한 상 변화메모리에서의 데이터 쓰기 장치 및 방법
CN1929025B (zh) 接口电路
USRE44064E1 (en) Semiconductor memory device and module for high frequency operation
CN1941196B (zh) 半导体存储装置
CN105406842A (zh) 半导体器件的输出时序控制电路及其方法
WO2003079662A2 (en) System and method for translation of sdram and ddr signals
CN103514960A (zh) 存储器件
CN101131864A (zh) 用于传送存储器时钟信号的方法和电路
US9111645B2 (en) Request-command encoding for reduced-data-rate testing
KR20120095221A (ko) 메모리 소자 및 메모리 컨트롤 유닛
CN107171960B (zh) 一种分布式动态二层转发表的维护方法
CN100392619C (zh) 控制闪存存取时间的方法、闪存的存取系统及闪存控制器
US7971116B2 (en) Semiconductor storage device and test method therefor
CN101493759B (zh) 一种任意容量异步先入先出存储器的地址控制方法
CN105095122A (zh) 控制内存芯片的方法、芯片控制器和内存控制器
US7782707B2 (en) Semiconductor memory device
US20090006687A1 (en) Semiconductor memory device
KR20020002658A (ko) 고속 인터페이스용 장치
CN111105825A (zh) 移位寄存器电路、动态随机存储器和电路控制方法
CN114155903B (zh) 测试系统以及测试方法
WO2004036430A1 (ja) 動作周波数可変の情報処理装置
US20040230715A1 (en) Method and system for optimized FIFO full condition control

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: WUXI VIMICRO CO., LTD.

Free format text: FORMER OWNER: VIMICRO CORPORATION

Effective date: 20110127

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100083 15/F, SHINING BUILDING, NO. 35, XUEYUAN ROAD, HAIDIAN DISTRICT, BEIJING TO: 214028 610, NATIONAL IC DESIGN PARK (CHUANGYUAN BUILDING), NO. 21-1, CHANGJIANG ROAD, WUXI NEW DISTRICT, JIANGSU PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20110127

Address after: 214028 national integrated circuit design (21-1), Changjiang Road, New District, Jiangsu, Wuxi, China, China (610)

Patentee after: Wuxi Vimicro Co., Ltd.

Address before: 100083, Haidian District, Xueyuan Road, Beijing No. 35, Nanjing Ning building, 15 Floor

Patentee before: Beijing Vimicro Corporation

ASS Succession or assignment of patent right

Owner name: HAIMEN JIANGYONG INVESTMENT AND DEVELOPMENT CO., L

Free format text: FORMER OWNER: WUXI VIMICRO CO., LTD.

Effective date: 20140306

COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 214028 WUXI, JIANGSU PROVINCE TO: 226133 NANTONG, JIANGSU PROVINCE

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20140306

Address after: 226133, No. 118, Renmin East Road, Linjiang Town, Haimen, Jiangsu, Nantong

Patentee after: Haimen Jiang Yong Investment & Development Co., Ltd.

Address before: 214028 national integrated circuit design (21-1), Changjiang Road, New District, Jiangsu, Wuxi, China, China (610)

Patentee before: Wuxi Vimicro Co., Ltd.

EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20080521

Assignee: Wuxi Vimicro Co., Ltd.

Assignor: Haimen Jiang Yong Investment & Development Co., Ltd.

Contract record no.: 2014320010046

Denomination of invention: FIFO control circuit and control method

Granted publication date: 20091014

License type: Common License

Record date: 20140415

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091014

Termination date: 20181128