CN116561027A - 异步先进先出内存的控制方法及对应的数据传输系统 - Google Patents

异步先进先出内存的控制方法及对应的数据传输系统 Download PDF

Info

Publication number
CN116561027A
CN116561027A CN202210097466.2A CN202210097466A CN116561027A CN 116561027 A CN116561027 A CN 116561027A CN 202210097466 A CN202210097466 A CN 202210097466A CN 116561027 A CN116561027 A CN 116561027A
Authority
CN
China
Prior art keywords
pointer
frequency
current depth
fifo memory
asynchronous
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210097466.2A
Other languages
English (en)
Inventor
陈月峰
顾惠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Realtek Semiconductor Corp
Original Assignee
Realtek Semiconductor 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 Realtek Semiconductor Corp filed Critical Realtek Semiconductor Corp
Priority to CN202210097466.2A priority Critical patent/CN116561027A/zh
Priority to TW111113427A priority patent/TWI792972B/zh
Priority to US17/881,634 priority patent/US11880311B2/en
Publication of CN116561027A publication Critical patent/CN116561027A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
    • 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
    • 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
    • G06F13/1673Details of memory controller using buffers
    • 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
    • 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
    • G06F13/1689Synchronisation and timing concerns
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

一种异步先进先出(FIFO)内存的控制方法,用以控制异步FIFO内存的操作,包括:根据一频率比例、一突发长度与一连续传输长度中的至少一者决定异步FIFO内存的一当前深度,其中频率比例为主装置所使用的一第一频率信号的一频率与从装置所使用的一第二频率信号的一频率的一比例;根据当前深度配置异步FIFO内存被使用的一或多个入口;以及根据当前深度控制提供给异步FIFO内存的多个FIFO频率信号,其中一个FIFO频率信号对应于一个入口,并且根据当前深度而未被配置的一或多个入口所对应的一或多个FIFO频率信号不被致能。

Description

异步先进先出内存的控制方法及对应的数据传输系统
技术领域
本发明申请是关于一种异步先进先出内存的控制方法及对应的数据传输系统,以实现异步先进先出内存深度的动态调整。
背景技术
异步(Asynchronous)先进先出(First In First Out,缩写为FIFO)内存被广泛应用于跨时钟域的传输。为了解决异步FIFO读写指针跨时钟域同步时的亚稳态问题,通常会将二进制编码的读写指针先转换成格雷码编码形式,再进行取样。然而,这样的操作需要将FIFO深度限定为2的幂次方,如此将大幅限制FIFO的应用范围,并且浪费电路面积,同时也增加额外的功率耗损。
鉴于此,需要一种新的深度调整方法,通过修改FIFO指针判断的方法使得FIFO深度可弹性地依需求被设定,而无需被限定为2的幂次方,并实现异步FIFO深度的动态调整。
发明内容
本发明的一目的在于提供一种异步先进先出内存的控制方法以实现其深度的动态调整,以及动态调整各入口的频率信号,从而在保证数据连续传输的基础上,有效降低功率耗损。
根据本发明的一实施例,一种异步先进先出(FIFO)内存的控制方法,用以控制一异步FIFO内存的操作,其中异步FIFO内存耦接于一主装置与一从装置之间,用以缓存由主装置写入的数据,控制方法包括:根据一频率比例、一突发长度与一连续传输长度中的至少一者决定异步FIFO内存的一当前深度,其中频率比例为主装置所使用的一第一频率信号的一频率与从装置所使用的一第二频率信号的一频率的一比例;根据当前深度配置异步FIFO内存被使用的一或多个入口,其中异步FIFO内存包含多个入口,当前深度小于或等于入口的一总数;以及根据当前深度控制提供给异步FIFO内存的多个FIFO频率信号,其中一FIFO频率信号对应于一入口,并且根据当前深度而未被配置的一或多个入口所对应的一或多个FIFO频率信号不被致能。
根据本发明的另一实施例,一种数据传输系统,包括一主装置与一异步先进先出(FIFO)内存。异步FIFO内存耦接于主装置与一从装置之间,并且包含多个入口,用以缓存由主装置写入的数据。主装置与异步FIFO内存中的至少一者根据一频率比例、一突发长度与一连续传输长度中的至少一者决定异步FIFO内存的一当前深度,其中当前深度小于或等于入口的一总数,并且频率比例主装置所使用的一第一频率信号的一频率与从装置所使用的一第二频率信号的一频率的一比例。异步FIFO内存根据当前深度配置异步FIFO内存被使用的一或多个入口,并且根据当前深度控制多个FIFO频率信号,其中一FIFO频率信号对应于一入口,并且根据当前深度而未被配置的一或多个入口所对应的一或多个FIFO频率信号不被致能。
附图说明
图1是显示根据本发明的一实施例所述的一数据传输系统。
图2是显示根据本发明的一实施例所述的一异步FIFO内存示意图。
图3是显示根据本发明的一实施例所述的异步FIFO内存示意图。
图4是显示根据本发明的一实施例所述的一异步FIFO内存的控制方法流程图。
图5是显示根据本发明的一实施例所述的异步FIFO内存内部的部分逻辑电路示意图。
图6是显示根据本发明的一实施例所述的异步FIFO内存内部的另一部分逻辑电路示意图。
图7是显示根据本发明的一实施例所述的隔离时钟门控电路示意图。
图8是显示根据本发明的一实施例所述的异步FIFO内存内部的另一部分逻辑电路示意图。
符号说明:
100:数据传输系统
110:主装置
120、220、Async_FIFO:异步先进先出内存
130:从装置
505、510、515:多任务器
506、507:加法器
508、509、604、605:处理电路
601、801:同步电路
602、603:减法器
607、608、807、808:比较器
615、815:二进制码转格雷码电路
625:格雷码转二进制码电路
700:隔离时钟门控电路
Clk_en:频率致能信号
Clk_FIFO、Clk_FIFO’:FIFO频率信号
Data[0]~Data[7]、payload_in、payload_out:数据
depth_select:深度选择信号
Entry[0]-Entry[7]:入口
in_accept:输入接受信号
in_valid:有效输入数据信号
input_back_to_back_length:连续传输长度
input_burst_length:突发长度
input_clk_ratio:频率比例
min_fifo_depth:最小深度
out_accept:输出接受信号
out_valid:有效输出数据信号
pop_empty:空指标
pop_gray_p、pop_gray_r:格雷码编码的辅助的读指针
pop_gray_sync_b:格雷码编码的同步的读指针
pop_pt:读指针
pop_pt_p、pop_pt_r:辅助的读指针
pop_pt_p_temp:暂时的读指针
pop_req_n、push_req_n:选择信号
pop_sync_b:同步的读指针
push_full:满指标
push_gray_p、push_gray_r:格雷码编码的辅助的写指针
push_gray_sync_b:格雷码编码的同步的写指针
push_pt:写指针
push_pt_p、push_pt_r:辅助的写指针
push_pt_p_temp:暂时的写指针
push_sync_b:同步的写指针
具体实施方式
图1是显示根据本发明的一实施例所述的一数据传输系统。数据传输系统100可包括一主装置110、一异步先进先出(Asynchronous FIFO)内存120、与一从装置130。异步先进先出内存(以下简称异步FIFO内存)120耦接于主装置110与从装置130之间,用以缓存由主装置110写入的数据,并且从装置130可读取由异步FIFO内存120所缓存的数据。
异步FIFO内存120包含多个入口(entry),各入口为可单独地被寻址的储存位置,即,各入口为对应于一储存空间的入口,并且各入口可分别由主装置110的时钟域与从装置130的时钟域存取。异步FIFO内存120所包含的入口总数即为异步FIFO内存120的深度(或称最大深度)。例如,异步FIFO内存120可包含8个入口,因此异步FIFO内存120的深度为8,即异步FIFO内存120可包含8个可被寻址的储存空间,用以缓存由主装置110写入的数据。
在主装置110需对异步FIFO内存120执行一写入操作时,主装置110可将数据payload_in推至主装置110与异步FIFO内存120之间的传输接口,例如,耦接于主装置110与异步FIFO内存120之间的一总线(或称总线,Bus),并且发出一有效输入数据信号in_valid给异步FIFO内存120,此时,有效输入数据信号in_valid会被设为一既定值,例如,有效输入数据信号in_valid的数值等于1,以通知异步FIFO内存120目前总线上的数据为有效数据。若异步FIFO内存120目前尚未被写满,会回复一输入接受信号in_accept给主装置110,其中输入接受信号in_accept会被设为一既定值,例如,输入接受信号in_accept的数值等于1,并且自总线收下数据payload_in。
此外,异步FIFO内存120可判断目前FIFO状态是否为空。若判断目前FIFO非空,则可将数据payload_out推至从装置130与异步FIFO内存120之间的传输接口,例如,耦接于从装置130与异步FIFO内存120之间的一总线,并且发出一有效输出数据信号out_valid给从装置130,此时,有效输出数据信号out_valid会被设为一既定值,例如,有效输出数据信号out_valid的数值等于1,以通知从装置130目前总线上的数据为有效数据。在需对异步FIFO内存120执行一读取操作时,从装置130会回复一输出接受信号out_accept给异步FIFO内存120,其中输出接受信号out_accept会被设为一既定值,例如,输出接受信号out_accept的数值等于1,并且自总线提出数据payload_out。
图2是显示根据本发明的一实施例所述的一深度为8的异步FIFO内存示意图。异步FIFO内存120/220会利用一个写指针push_pt指出次一个可被写入的地址,以及利用一个读指针pop_pt指出次一个读出的地址。每写入一笔数据,异步FIFO内存120/220会将写指针push_pt自动加1。同理,每读出一笔数据,异步FIFO内存120/220会将读指针pop_pt自动加1。在图2所示范例中,异步FIFO内存220的入口总数为8,因此深度为8,但当前仅其中的6个入口被配置,例如,入口Entry[0]-Entry[5]。因此,目前未被配置的入口Entry[6]-Entry[7]不会被写入数据。
如图2所示,假设数据Data[0]~Data[7]已依序被写入异步FIFO内存220,由于目前仅6个入口被配置,即,当前深度被设定为6,因此在数据Data[0]被读出后,数据Data[6]会被写入入口Entry[0]而非被写入入口Entry[6]。同理,在数据Data[1]被读出后,数据Data[7]会被写入入口Entry[1]而非被写入入口Entry[7]。在最新的数据Data[7]被写入入口Entry[1]后,写指针push_pt会指向入口Entry[2],在数据Data[1]被读出后,读指针pop_pt会指向入口Entry[2]。在图2的范例中,异步FIFO内存220目前FIFO状态为满。
根据本发明的一实施例,主装置110与异步FIFO内存120/220中的至少一者可根据一频率比例、一突发(burst)长度与一连续传输长度中的至少一者动态地决定异步FIFO内存120/220的当前深度,其中的频率比例为主装置110所使用的第一频率信号的一频率与从装置130所使用的第二频率信号的一频率的一比例。例如,主装置110与从装置130的频率比例可以是4:1、3:1、2:1、1:1、1:2、1:3、1:4等。突发长度为主装置110发出一个写入指令后,可响应于此写入指令发出几笔数据。假设主装置110将突发长度设定为4,而每笔数据的位宽度为8位,则主装置110发出一个写入指令后,可响应于此写入指令连续发出4笔8位的数据。连续传输长度也可称为背靠背(back to back)长度,连续传输长度为主装置110可一个接着一个或紧接着连续发出的写入指令数量。一般而言,连续传输长度可由主装置110的能力预测或统计而得。假设主装置110的数据速度快,或者具备杰出的(outstanding)能力,则可预测连续传输长度可能大于一临界值,或者可经由一段时间的统计得出主装置110的连续传输长度,其中杰出的能力在此系指主装置110在发出一个指令但数据尚未完全传输完成前,可以立刻发出下一个指令的能力。
如上述,主装置110或异步FIFO内存120/220可根据一频率比例、一突发长度与一连续传输长度中的至少一者动态地决定异步FIFO内存120/220的当前深度,其中当前深度小于或等于异步FIFO内存120/220所包含的入口总数。根据本发明的一实施例,若主装置110或异步FIFO内存120/220根据频率比例判断第一频率信号的频率与第二频率信号的频率的差异较大时,主装置110或异步FIFO内存120/220可选择较小的当前深度。因此,若频率比例显示出频率差异越大,所决定的当前深度可越小。根据本发明的另一实施例,若主装置110或异步FIFO内存120/220判断突发长度较长,主装置110或异步FIFO内存120/220可选择较大的当前深度。因此,当设定的突发长度越长,所决定的当前深度可越大。根据本发明的又另一实施例,若主装置110或异步FIFO内存120/220判断连续传输长度较长,主装置110或异步FIFO内存120/220可选择较大的当前深度。因此,当连续传输长度越长,所决定的当前深度可越大。根据本发明的一实施例,主装置110或异步FIFO内存120/220可储存或内建一对照表,对照表可记录异步FIFO内存的深度分别与频率比例、突发长度以及连续传输长度等参数的对应关系,主装置110或异步FIFO内存120/220可参照此对照表根据频率比例、突发长度与连续传输长度中的至少一者动态地决定当前深度。
图3是显示根据本发明的一实施例所述的异步FIFO内存示意图。除前述的有效输入数据信号in_valid、输入接受信号in_accept、有效输出数据信号out_valid、输出接受信号out_accept以及输入与输出数据payload_in与payload_out等之外,异步FIFO内存Async_FIFO可更接收一深度选择信号depth_select。在本发明的一实施例中,深度选择信号depth_select可以是由主装置发出的一信号,并且承载频率比例、突发长度或连续传输长度的信息。异步FIFO内存Async_FIFO可根据频率比例、突发长度与连续传输长度中的至少一者动态地决定当前深度。在本发明的另一实施例中,主装置可根据频率比例、突发长度与连续传输长度中的至少一者动态地决定异步FIFO内存Async_FIFO的当前深度,并将此信息透过深度选择信号depth_select传送给异步FIFO内存Async_FIFO。
在决定当前深度或取得当前深度的信息后,异步FIFO内存可根据当前深度配置当前可被使用的入口数量,并且对应地根据当前深度控制多个FIFO频率信号,其中一个FIFO频率信号可对应于异步FIFO内存的一个入口。在本发明的实施例中,根据当前深度而未被配置的一或多个入口所对应的一或多个FIFO频率信号可不被致能,藉此可有效降低异步FIFO内存的功率耗损。
需注意的是,图3是显示一简化的异步FIFO内存示意图,其中仅显示出异步FIFO内存的部分输入/输出信号。熟悉此技艺者当可理解异步FIFO内存更包括其他未绘示的输入/输出信号。
图4是显示根据本发明的一实施例所述的一异步FIFO内存的控制方法流程图。本发明所提出的异步FIFO内存的控制方法包含以下步骤:
步骤S402:根据一频率比例、一突发长度与一连续传输长度中的至少一者决定异步FIFO内存的一当前深度。
步骤S404:根据当前深度配置异步FIFO内存当前会被使用的一或多个入口。
步骤S406:根据当前深度控制提供给异步FIFO内存的FIFO频率信号。
在本发明的实施例中,当前深度的选择无需如先前技术被限定为2的幂次方。即,在步骤S402中,当前深度可被设定为2~N之间的任一正整数,其中N为异步FIFO内存的最大深度。
根据本发明的一实施例,异步FIFO内存的读指针pop_pt与写指针push_pt可由多个字元表示,其中读指针pop_pt与写指针push_pt的位宽度可被设定为表示异步FIFO内存的最大深度所需的位宽度,而为了判断目前FIFO的空/满状态,在本发明的实施例中,在读指针pop_pt与写指针push_pt中添加一个额外的标记位,标示为辅助的读指针pop_pt_p与辅助的写指针push_pt_p。更具体的说,假设异步FIFO内存的深度或最大深度为8,则由于数值8在由二进制表示时需要3个位,因此表示异步FIFO内存的最大深度所需的位宽度为3。在本发明的实施例中,基于表示异步FIFO内存的最大深度所需的位宽度,异步FIFO内存的读指针pop_pt与写指针push_pt的位宽度可被设定为3。
此外,在本发明的实施例中,基于表示异步FIFO内存的最大深度所需的位宽度,可为辅助的读指针pop_pt_p与辅助的写指针push_pt_p额外增加一个位的宽度。即,当异步FIFO内存的最大深度需要3个位来表示,则辅助的读指针pop_pt_p与辅助的写指针push_pt_p的位宽度可被设定为(3+1)=4,藉此设定,即便当前深度被设定为2的幂次方以外的其他数值,也可利用辅助的读指针pop_pt_p与辅助的写指针push_pt_p有效判断目前FIFO的空/满状态。
如上所述,异步FIFO内存会响应于主装置的一写入操作更新写指针push_pt,以及响应于从装置的一读取操作更新读指针pop_pt。以下将介绍读指针pop_pt与写指针push_pt的更新操作。
图5是显示根据本发明的一实施例所述的异步FIFO内存内部的部分逻辑电路示意图,用以说明更新写指针push_pt与更新读指针pop_pt的操作。在此实施例中,频率比例input_clk_ratio、突发长度input_burst_length与连续传输长度input_back_to_back_length这三个参数的设定值可被输入至多任务器505。多任务器505可将其中一者输出作为决定异步FIFO内存当前深度的参考。例如,多任务器505可将当前这三个设定值之中有被改变的(即,与先前所设定的数值相异者)输出作为决定异步FIFO内存当前深度的参考。在此实施例中,决定出的当前深度可被视为异步FIFO内存的最小深度min_fifo_depth。
除前述辅助的写指针push_pt_p与辅助的读指针pop_pt_p之外,异步FIFO内存内部也会产生另一个辅助的写指针push_pt_r与另一个辅助的读指针pop_pt_r。
加法器506会将另一个辅助的写指针push_pt_r的位值加1(标记为1’b1)后输出,加法器507会将另一个辅助的读指针pop_pt_r的位值加1(标记为1’b1)后输出,其中另一个辅助的写指针push_pt_r为前述辅助的写指针push_pt_p的延迟版本,并且两者的变化会相差一个频率周期。即,当写指针的数值发生变化时,前述辅助的写指针push_pt_p的数值会先改变,并且在下一个频率周期另一个辅助的写指针push_pt_r的数值会被改变。同理,另一个辅助的读指针pop_pt_r为前述辅助的读指针pop_pt_p的延迟版本,并且两者的变化会相差一个频率周期。当读指针的数值发生变化时,前述辅助的读指针pop_pt_p的数值会先改变,并且在下一个频率周期另一个辅助的读指针pop_pt_r的数值会被改变。
在数据被写入异步FIFO内存时,选择信号push_req_n会被设为另一既定值,例如,push_req_n的数值等于0,此时,多任务器510选择将位值被加1的辅助的写指针push_pt_r输出作为暂时的写指针push_pt_p_temp,其中选择信号push_req_n为输入接受信号in_accept与有效输入数据信号in_valid的逻辑及(AND)运算结果再取反(NOT),即,push_req_n=!(in_accept&in_valid)。另一方面,当选择信号push_req_n未被设为另一既定值时,多任务器510选择将位值未被加1的辅助的写指针push_pt_r输出作为暂时的写指针push_pt_p_temp。
同理,在数据被读取时,选择信号pop_req_n会被设为另一既定值,例如,pop_req_n的数值等于0,此时,多任务器515选择将位值被加1的辅助的读指针pop_pt_r输出作为暂时的读指针pop_pt_p_temp,其中选择信号pop_req_n为输出接受信号out_accept与有效输出数据信号out_valid的逻辑及(AND)运算结果再取反,即,pop_req_n=!(out_accept&out_valid)。另一方面,当选择信号pop_req_n未被设为另一既定值时,多任务器515选择将位值未被加1的辅助的读指针pop_pt_r输出作为暂时的读指针pop_pt_p_temp。
处理电路509接收暂时的写指针push_pt_p_temp、暂时的读指针pop_pt_p_temp与两倍的最小深度min_fifo_depth(标示为min_fifo_depth*2)的数值,并分别将暂时的写指针push_pt_p_temp与暂时的读指针pop_pt_p_temp的数值与两倍的最小深度min_fifo_depth的数值做比较。若暂时的写指针push_pt_p_temp目前所对应的数值等于两倍的最小深度min_fifo_depth的数值,则处理电路509将辅助的写指针push_pt_p重置为0后输出。若暂时的写指针push_pt_p_temp目前所对应的数值不等于两倍的最小深度min_fifo_depth的数值,则处理电路509将暂时的写指针push_pt_p_temp输出作为辅助的写指针push_pt_p。
同理,若暂时的读指针pop_pt_p_temp目前所对应的数值等于两倍的最小深度min_fifo_depth的数值,则处理电路509将辅助的读指针pop_pt_p重置为0后输出。若暂时的读指针pop_pt_p_temp目前所对应的数值不等于两倍的最小深度min_fifo_depth的数值,则处理电路509将暂时的读指针pop_pt_p_temp输出作为辅助的读指针pop_pt_p。
若辅助的写指针push_pt_p/辅助的读指针pop_pt_p的数值发生变化,另一个辅助的写指针push_pt_r/另一个辅助的读指针pop_pt_r的数值在下一个频率周期会相应地被改变。处理电路508接收辅助的写指针push_pt_r、辅助的读指针pop_pt_r与最小深度min_fifo_depth的数值,并分别将辅助的写指针push_pt_r与辅助的读指针pop_pt_r的数值与目前所设定的最小深度min_fifo_depth的数值做比较。若辅助的写指针push_pt_r目前所对应的数值小于最小深度min_fifo_depth的数值,则处理电路508将辅助的写指针push_pt_r舍弃最高有效位(Most Significant Bit,缩写MSB)后输出作为写指针push_pt。若辅助的写指针push_pt_r目前所对应的数值不小于最小深度min_fifo_depth的数值,则处理电路509将辅助的写指针push_pt_r目前所对应的数值减去最小深度min_fifo_depth的数值后所得的结果再舍弃最高有效位后输出作为写指针push_pt。
同理,若辅助的读指针pop_pt_r目前所对应的数值小于最小深度min_fifo_depth的数值,则处理电路508将辅助的读指针pop_pt_r舍弃最高有效位后输出作为读指针pop_pt。若辅助的读指针pop_pt_r目前所对应的数值不小于最小深度min_fifo_depth的数值,则处理电路508将辅助的读指针pop_pt_r目前所对应的数值减去最小深度min_fifo_depth的数值后所得的结果再舍弃最高有效位后输出作为读指针pop_pt。
图6是显示根据本发明的一实施例所述的异步FIFO内存内部的另一部分逻辑电路示意图,用以说明利用辅助的读指针pop_pt_p与辅助的写指针push_pt_p有效判断目前FIFO的空/满状态的操作。二进制码转格雷码电路615将二进制编码的辅助的读指针pop_pt_p转换成格雷码编码的辅助的读指针pop_gray_p,以及将二进制编码的辅助的写指针push_pt_p转换成格雷码编码的辅助的写指针push_gray_p。同步电路601用以在写指针信号的频率下重新取样格雷码编码的辅助的读指针pop_gray_p,以产生格雷码编码的同步的读指针pop_gray_sync_b,以及在读指针信号的频率下重新取样格雷码编码的辅助的写指针push_gray_p,以产生格雷码编码的同步的写指针push_gray_sync_b。格雷码转二进制码电路625将重新取样后的读/写指针由格雷码编码形式转换成二进制编码形式后产生同步的读指针pop_sync_b与同步的写指针push_sync_b。
在此操作后,同步的读指针pop_sync_b与辅助的写指针push_pt_r会在相同的时钟域,且同步的写指针push_sync_b与辅助的读指针pop_pt_r会在相同的时钟域。减法器602将辅助的写指针push_pt_r的数值减去同步的读指针pop_sync_b的数值后输出。减法器603将同步的写指针push_sync_b的数值减去辅助的读指针pop_pt_r的数值后输出。
处理电路604接收减法器602的输出与两倍的最小深度min_fifo_depth的数值,并用以将减法器602的输出结果取绝对值。例如,若辅助的写指针push_pt_r的数值减去同步的读指针pop_sync_b的数值后所得的结果为正整数,处理电路604直接将所得的结果输出。若辅助的写指针push_pt_r的数值减去同步的读指针pop_sync_b的数值后所得的结果为负数,处理电路604将所得的结果取绝对值后输出。例如,处理电路604可以两倍的最小深度min_fifo_depth的数值减去同步的读指针pop_sync_b与辅助的写指针push_pt_r的差值后输出。
同理,处理电路605接收减法器603的输出与两倍的最小深度min_fifo_depth的数值,并用以将减法器603的输出结果取绝对值。例如,若同步的写指针push_sync_b的数值减去辅助的读指针pop_pt_r的数值后所得的结果为正整数,处理电路605直接将所得的结果输出。若同步的写指针push_sync_b的数值减去辅助的读指针pop_pt_r的数值后所得的结果为负数,处理电路605将所得的结果取绝对值后输出。例如,处理电路605可以两倍的最小深度min_fifo_depth的数值减去辅助的读指针pop_pt_r与同步的写指针push_sync_b的差值后输出。
比较器607接收最小深度min_fifo_depth的数值与处理电路604的输出并进行比较,以产生满指标push_full。若处理电路604的输出与最小深度min_fifo_depth的数值相等,则满指标push_full会被设为既定值(例如,满指标push_full会被设为1)。若处理电路604的输出与最小深度min_fifo_depth的数值不相等,则满指标push_full不会被设为既定值(例如,满指标push_full会被设为0)。
比较器608接收数值0与处理电路605的输出并进行比较,以产生空指标pop_empty。若处理电路605的输出与数值0相等,则空指标pop_empty会被设为既定值(例如,空指标pop_empty会被设为1)。若处理电路605的输出与数值0不相等,则空指标pop_empty不会被设为既定值(例如,空指标pop_empty会被设为0)。
因此,根据本发明的一实施例,当写指针(例如,辅助的写指针push_pt_r)所对应的一数值与读指针(例如,同步的读指针pop_sync_b)所对应的一数值的一差值的绝对值相等于当前深度时,异步FIFO内存可将满指针push_full设为既定值,而当写指针(例如,同步的写指针push_sync_b)所对应的一数值与读指针(例如,辅助的读指针pop_pt_r)所对应的一数值的一差值为0时,异步FIFO内存可将空指针pop_empty设为既定值。
在本发明的实施例中,图6所示的逻辑电路适用各种当前深度的设定值。即,无论当前深度(其可被视为异步FIFO内存的最小深度min_fifo_depth)是否被设定为2的幂次方,皆可透过图6所示的逻辑电路产生正确的满指针push_full与空指标pop_empty。
根据本发明的另一实施例,当当前深度被设定为2的幂次方时,由于在读指针pop_pt与写指针push_pt中添加一个额外的标记位,成为辅助的读指针pop_pt_r与辅助的写指针push_pt_r,用以产生满指标push_full与空指针pop_empty的逻辑电路可更加简化。
图8是显示根据本发明的一实施例所述的异步FIFO内存内部的另一部分逻辑电路示意图,用以说明当当前深度被设定为2的幂次方时,利用辅助的读指针pop_pt_r、pop_pt_p与辅助的写指针push_pt_r、push_pt_p有效判断目前FIFO的空/满状态的操作。二进制码转格雷码电路815将二进制编码的辅助的读指针pop_pt_r与pop_pt_p分别转换成格雷码编码的辅助的读指针pop_gray_r与pop_gray_p,以及将二进制编码的辅助的写指针push_pt_r与push_pt_p转换成格雷码编码的辅助的写指针push_gray_r与push_gray_p。同步电路801用以在写指针信号的频率下重新取样格雷码编码的辅助的读指针pop_gray_p,以产生格雷码编码的同步的读指针pop_gray_sync_b,以及在读指针信号的频率下重新取样格雷码编码的辅助的写指针push_gray_p,以产生格雷码编码的同步的写指针push_gray_sync_b。
比较器807接收格雷码编码的辅助的写指针push_gray_r与格雷码编码的同步的读指针pop_gray_sync_b并进行比较,当格雷码编码的辅助的写指针push_gray_r与格雷码编码的同步的读指针pop_gray_sync_b除最高以及次高有效位以外的其余位都相同时,异步FIFO内存可将满指针push_full设为既定值(例如,满指标push_full会被设为1),若格雷码编码的辅助的写指针push_gray_r与格雷码编码的同步的读指针pop_gray_sync_b并非除最高以及次高有效位以外的其余位都相同时,则满指标push_full不会被设为既定值(例如,满指标push_full会被设为0)。
比较器808接收格雷码编码的辅助的读指针pop_gray_r与格雷码编码的同步的写指针push_gray_sync_b并进行比较,当格雷码编码的辅助的读指针pop_gray_r与格雷码编码的同步的写指针push_gray_sync_b的所有位都相同时,异步FIFO内存可将空指针pop_empty设为既定值(例如,空指标pop_empty会被设为1)。若格雷码编码的辅助的读指针pop_gray_r与格雷码编码的同步的写指针push_gray_sync_b并非所有位都相同时,则空指标pop_empty不会被设为既定值(例如,空指标pop_empty会被设为0)。
除上述判断目前FIFO的空/满状态之外,在本发明的实施例中,根据当前深度而未被配置的一或多个入口所对应的一或多个FIFO频率信号可不被致能,藉此可有效降低异步FIFO内存的功率耗损。以最大深度为8的异步FIFO内存为例,假设当前深度被设定为6,可利用至少7个独立的隔离时钟门控(Isolation Clock Gating,缩写为ICG)电路控制FIFO频率信号,其中的一个ICG电路用于关闭2个未被配置的入口所对应的FIFO频率信号,其余6个ICG电路用于控制6个被配置的入口所对应的FIFO频率信号。
图7是显示根据本发明的一实施例所述的隔离时钟门控电路示意图。假设隔离时钟门控电路(以下简称ICG电路)700为第一个FIFO入口所对应的ICG电路。
ICG电路700可接收频率致能信号Clk_en与FIFO频率信号Clk_FIFO,根据频率致能信号Clk_en致能或不致能FIFO频率信号Clk_FIFO,以产生受控制的FIFO频率信号Clk_FIFO’。当第一笔数据被推至主装置与异步FIFO内存之间的传输接口时,有效输入数据信号in_valid被设为一既定值,且此时写指针push_pt指向第一个FIFO入口。异步FIFO内存可根据写指针push_pt与有效输入数据信号in_valid产生频率致能信号Clk_en,例如,将写指针push_pt与有效输入数据信号in_valid输入一及(AND)逻辑门,以产生频率致能信号Clk_en,此时频率致能信号Clk_en会被设为一既定值(例如,频率致能信号Clk_en会被设为1)。频率致能信号Clk_en会被提供至ICG电路700,用以打开第一个FIFO入口所对应的FIFO频率信号Clk_FIFO,因此受控制的FIFO频率信号Clk_FIFO’会被致能,而此时其他FIFO入口所对应的FIFO频率信号会被关闭。响应于被致能的FIFO频率信号Clk_FIFO’,数据payload_in会被储存到写指针push_pt所指向的第一个FIFO入口。在数据写入第一个FIFO入口后,频率致能信号Clk_en转为不被设为一既定值(例如,频率致能信号Clk_en被设为0),用以关闭第一个FIFO入口所对应的FIFO频率信号Clk_FIFO,因此受控制的FIFO频率信号Clk_FIFO’不被致能。
同理,当第二笔数据被推至主装置与异步FIFO内存之间的传输接口时,由于此时写指针push_pt指向第二个FIFO入口,第二个FIFO入口所对应的ICG电路可打开(致能)第二个FIFO入口所对应的FIFO频率信号,响应于此数据payload_in会被储存到写指针push_pt所指向的第二个FIFO入口,而此时其他FIFO入口所对应的FIFO频率信号会被关闭。其余操作以此类推。通过上述独立的隔离时钟门控操作,可有效降低异步FIFO内存的功率耗损。
以上所述仅为本发明的较佳实施例,凡依本发明申请权利要求所做的均等变化与修饰,都应属于本发明的涵盖范围。

Claims (10)

1.一种异步先进先出(FIFO)内存的控制方法,用以控制一异步FIFO内存的操作,其特征在于,所述异步FIFO内存耦接于一主装置与一从装置之间,用以缓存由所述主装置写入的数据,所述方法包括:
根据一频率比例、一突发长度与一连续传输长度中的至少一者决定所述异步FIFO内存的一当前深度,其中所述频率比例为所述主装置所使用的一第一频率信号的一频率与所述从装置所使用的一第二频率信号的一频率的一比例;
根据所述当前深度配置所述异步FIFO内存被使用的一或多个入口,其中所述异步FIFO内存包含多个入口,所述当前深度小于或等于所述多个入口的一总数;以及
根据所述当前深度控制提供给所述异步FIFO内存的多个FIFO频率信号,其中一个FIFO频率信号对应于一个入口,并且根据所述当前深度而未被配置的一或多个入口所对应的一或多个FIFO频率信号不被致能。
2.如权利要求1所述的异步FIFO内存的控制方法,其特征在于,所述第一频率信号的所述频率与所述第二频率信号的所述频率的差异越大,所述当前深度越小。
3.如权利要求1所述的异步FIFO内存的控制方法,其特征在于,所述突发长度越长或所述连续传输长度越长,所述当前深度越大。
4.如权利要求1所述的异步FIFO内存的控制方法,其特征在于,所述控制方法还包括:
响应于所述主装置的一写入操作更新一写指针,其中所述写指针由多个字元表示;
响应于所述从装置的一读取操作更新一读指针,其中所述读指针由多个字元表示;以及
根据所述写指针与所述读指针产生一满指标或一空指标,
其中当所述写指针与所述读指针除一最高有效位以外的其余位都相同时,所述满指标被设为一第一既定值,
其中当所述写指针的所述等位与所述读指针的所述等位都相同时,所述空指标被设为一第二既定值。
5.如权利要求1所述的异步FIFO内存的控制方法,其特征在于,所述控制方法还包括:
响应于所述主装置的一写入操作更新一写指针;
响应于所述从装置的一读取操作更新一读指针;以及
根据所述当前深度、所述写指针与所述读指针产生一满指标,
其中当所述写指针所对应的一数值与所述读指针所对应的一数值的一差值的绝对值相等于所述当前深度时,所述满指标被设为一既定值。
6.一种数据传输系统,其特征在于,所述数据传输系统包括:
一主装置;以及
一异步先进先出(FIFO)内存,耦接于所述主装置与一从装置之间,并且包含多个入口,用以缓存由所述主装置写入的数据,
所述主装置与所述异步FIFO内存中的至少一者根据一频率比例、一突发长度与一连续传输长度中的至少一者决定所述异步FIFO内存的一当前深度,其中所述当前深度小于或等于所述多个入口的一总数,并且所述频率比例为所述主装置所使用的一第一频率信号的一频率与所述从装置所使用的一第二频率信号的一频率的一比例,
所述异步FIFO内存根据所述当前深度配置所述异步FIFO内存被使用的一或多个入口,并且根据所述当前深度控制多个FIFO频率信号,其中一个FIFO频率信号对应于一个入口,并且根据所述当前深度而未被配置的一或多个入口所对应的一或多个FIFO频率信号不被致能。
7.如权利要求6所述的数据传输系统,其特征在于,所述第一频率信号的所述频率与所述第二频率信号的所述频率的差异越大,所述当前深度越小。
8.如权利要求6所述的数据传输系统,其特征在于,所述突发长度越长或所述连续传输长度越长,所述当前深度越大。
9.如权利要求6所述的数据传输系统,其特征在于,所述异步FIFO内存响应于所述主装置的一写入操作更新由多个字元表示的一写指针,响应于所述从装置的一读取操作更新由多个字元表示的一读指针,以及根据所述写指针与所述读指针产生一满指标或一空指标,其中当所述写指针与所述读指针除一最高有效位以外的其余位都相同时,所述满指标被设为一第一既定值,其中当所述写指针的所述等位与所述读指针的所述等位都相同时,所述空指标被设为一第二既定值。
10.如权利要求6所述的数据传输系统,其特征在于,所述异步FIFO内存响应于所述主装置的一写入操作更新的由多个字元表示一写指针,响应于所述从装置的一读取操作更新由多个字元表示的一读指针,以及根据所述写指针与所述读指针产生一满指标,其中当所述写指针所对应的一数值与所述读指针所对应的一数值的一差值的绝对值相等于所述当前深度时,所述满指标被设为一既定值。
CN202210097466.2A 2022-01-27 2022-01-27 异步先进先出内存的控制方法及对应的数据传输系统 Pending CN116561027A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202210097466.2A CN116561027A (zh) 2022-01-27 2022-01-27 异步先进先出内存的控制方法及对应的数据传输系统
TW111113427A TWI792972B (zh) 2022-01-27 2022-04-08 非同步先進先出記憶體的控制方法與對應的資料傳輸系統
US17/881,634 US11880311B2 (en) 2022-01-27 2022-08-05 Methods for controlling asynchronous FIFO memory and data transmission system utilizing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210097466.2A CN116561027A (zh) 2022-01-27 2022-01-27 异步先进先出内存的控制方法及对应的数据传输系统

Publications (1)

Publication Number Publication Date
CN116561027A true CN116561027A (zh) 2023-08-08

Family

ID=86689198

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210097466.2A Pending CN116561027A (zh) 2022-01-27 2022-01-27 异步先进先出内存的控制方法及对应的数据传输系统

Country Status (3)

Country Link
US (1) US11880311B2 (zh)
CN (1) CN116561027A (zh)
TW (1) TWI792972B (zh)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3490131B2 (ja) * 1994-01-21 2004-01-26 株式会社ルネサステクノロジ データ転送制御方法、データプロセッサ及びデータ処理システム
US6388464B1 (en) * 1999-12-30 2002-05-14 Cypress Semiconductor Corp. Configurable memory for programmable logic circuits
US6509851B1 (en) * 2000-03-30 2003-01-21 Cypress Semiconductor Corp. Method for using a recovered data-encoded clock to convert high-frequency serial data to lower frequency parallel data
TW507209B (en) * 2001-05-25 2002-10-21 Acer Labs Inc Asynchronous FIFO controller
US6845414B2 (en) * 2002-03-15 2005-01-18 Silicon Integrated Systems Corp. Apparatus and method of asynchronous FIFO control
US7082504B2 (en) * 2002-07-19 2006-07-25 Edmundo Rojas Method and apparatus for asynchronous read control
CN101373424B (zh) * 2008-09-19 2011-10-12 北京中星微电子有限公司 一种异步先进先出存储器的数据读写方法、装置及系统
US9021280B1 (en) 2013-03-12 2015-04-28 Pmc-Sierra Us, Inc. Power saving for FIFO buffer without performance degradation
US10048893B2 (en) * 2015-05-07 2018-08-14 Apple Inc. Clock/power-domain crossing circuit with asynchronous FIFO and independent transmitter and receiver sides
CN105183423B (zh) * 2015-09-02 2019-01-25 青岛中星微电子有限公司 一种跨时钟域异步数据处理方法和装置
US10579331B2 (en) 2017-06-23 2020-03-03 Adva Optical Networking Se Method and apparatus for controlling an average fill level of an asynchronous first-in-first-out, FIFO
US10592442B2 (en) 2017-12-11 2020-03-17 Advanced Micro Devices, Inc. Asynchronous buffer with pointer offsets
CN111258533A (zh) * 2020-01-14 2020-06-09 厦门鑫忆讯科技有限公司 任意深度异步fifo存储器

Also Published As

Publication number Publication date
US20230236989A1 (en) 2023-07-27
TWI792972B (zh) 2023-02-11
US11880311B2 (en) 2024-01-23
TW202331518A (zh) 2023-08-01

Similar Documents

Publication Publication Date Title
US5884099A (en) Control circuit for a buffer memory to transfer data between systems operating at different speeds
US5524270A (en) System for transferring data between asynchronous data buses with a data buffer interposed in between the buses for synchronization of devices timed by different clocks
US4873703A (en) Synchronizing system
US6055285A (en) Synchronization circuit for transferring pointer between two asynchronous circuits
US4543652A (en) Time-division switching unit
US7352836B1 (en) System and method of cross-clock domain rate matching
US6128715A (en) Asynchronous transmit packet buffer
US7042911B2 (en) Synchronization control device
JPH11339464A (ja) Fifo記憶回路
JPH04220829A (ja) セル位相乗換回路
CN116561027A (zh) 异步先进先出内存的控制方法及对应的数据传输系统
KR100498233B1 (ko) 선입선출 메모리 회로 및 그 구현 방법
EP0514866B1 (en) Stuff bit synchronization system
US6349101B1 (en) Cell buffer circuit for an ATM cells to SDH-based data conversion system
US6546451B1 (en) Method and apparatus for decoupling processor speed from memory subsystem speed in a node controller
CN110705195A (zh) 一种基于fpga的跨时钟域深度自行配置fifo系统
WO2008083916A1 (en) Asynchronous data interface
US20020163363A1 (en) Source synchronous I/O using temporal delay queues
EP3531560B1 (en) A binary-to-gray conversion circuit, related fifo memory, integrated circuit and method
US7668983B2 (en) System for designing data structures
KR0152396B1 (ko) 피씨엠 데이타 지연회로
US20240013818A1 (en) Semiconductor device
CA2104070C (en) Synchronous communication system having multiplexed information transferand transition phases
JP4328223B2 (ja) データ送信装置およびデータ受信装置
JP2597041B2 (ja) Fifoメモリ装置

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