CN113688074B - 先进先出数据处理装置及数据处理方法 - Google Patents
先进先出数据处理装置及数据处理方法 Download PDFInfo
- Publication number
- CN113688074B CN113688074B CN202111245590.0A CN202111245590A CN113688074B CN 113688074 B CN113688074 B CN 113688074B CN 202111245590 A CN202111245590 A CN 202111245590A CN 113688074 B CN113688074 B CN 113688074B
- Authority
- CN
- China
- Prior art keywords
- valid
- signal
- conflict
- cache
- data
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1615—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/368—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
- G06F13/376—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a contention resolving method, e.g. collision detection, collision avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开一种先进先出数据处理装置及数据处理方法。装置包括准备信号延时调整模块、先进先出读信号产生模块、第一冲突缓存处理模块、第二冲突缓存处理模块、输出缓存模块和输出成功标志产生模块。当数据准备好信号有效时,准备信号延时调整模块输出准备调整信号。当数据准备好信号有效、且输出缓存有效信号有效时,输出成功标志产生模块的输出成功标志为有效,否则,输出成功标志为无效。本发明通过将读先进先出存储器的时序转化为总线接口模块可以使用的valid和ready交互机制,使得先进先出存储器和总线接口模块的数据交互高效,且没有气泡。
Description
技术领域
本发明涉及了集成电路设计领域,具体的是一种先进先出数据处理装置及数据处理方法。
背景技术
在集成电路设计的SOC设计领域以及各种模块级设计领域中,尤其是在总线接口主设备设计中,写到总线接口模块的数据,通用的接口:如valid、 ready、data等信号交互,而data通常都是从先进先出存储器(FIFO Memory)直接输出到总线,其中的data包括但不仅限于:传输的数据wdata,以及每个数据对应的标识号wid,每一笔传输数据的最后数据标志位wlast信号,该数据对应的数据位/字节有效信号wstrb,等等。由于先进先出存储器本身的输出延时大,加上后端布局布线后电路延时更大导致时序很难收敛。而ready信号通常是由其它模块传入,经过各级模块逻辑以及布局布线后延时也很大,所述ready信号通常作为先进先出存储器的读条件的一部分,使得先进先出存储器的建立时间(setup time)很难收敛。
因此,本领域技术人员亟需研发一种低延时、高效率的先进先出数据处理装置/方法,在不影响总线接口模块的传输效率下,能够有效解决由ready信号和数据data造成先进先出存储器的时序难以收敛的问题。
应所述注意,上面对技术背景的介绍只是为了方便对本发明的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本发明的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。
发明内容
为了克服现有技术中的缺陷,本发明实施例提供了一种先进先出数据处理装置及数据处理方法。
本申请实施例公开了:一种先进先出数据处理装置,包括:准备信号延时调整模块、先进先出读信号产生模块、第一冲突缓存处理模块、第二冲突缓存处理模块、输出缓存模块和输出成功标志产生模块。准备信号延时调整模块耦接于总线接口模块,用于接收来自总线接口模块的数据准备好信号i_ready,并产生准备调整信号pipe_ready,其中当数据准备好信号i_ready为有效时,输出准备调整信号pipe_ready。先进先出读信号产生模块耦接于准备信号延时调整模块和先进先出存储器,用于接收来自准备信号延时调整模块的数据准备好信号i_ready以及来自先进先出存储器的先进先出空信号i_fifo_empty,并产生先进先出读信号o_fifo_rd,其中,当检测到先进先出空信号i_fifo_empty为无效、且准备调整信号pipe_ready为有效时,则输出先进先出读信号o_fifo_rd。第一冲突缓存处理模块耦接于先进先出存储器和总线接口模块,用于接收来自先进先出存储器的先进先出输入数据i_fifo_data以及来自总线接口模块的数据准备好信号i_ready,并产生第一冲突缓存有效信号backup1_valid。第二冲突缓存处理模块耦接于先进先出存储器和总线接口模块,用于接收来自先进先出存储器的先进先出输入数据i_fifo_data以及来自总线接口模块的数据准备好信号i_ready,并产生第二冲突缓存有效信号backup2_valid。输出缓存模块耦接于先进先出存储器、第一冲突缓存处理模块和第二冲突缓存处理模块,用于接收来自先进先出存储器的先进先出输入数据i_fifo_data,并产生输出缓存有效信号o_pipe_valid。输出成功标志产生模块耦接于第一冲突缓存处理模块、第二冲突缓存处理模块、输出缓存模块和总线接口模块,用于接收第一冲突缓存有效信号backup1_valid、第二冲突缓存有效信号backup2_valid、输出缓存有效信号o_pipe_valid和数据准备好信号i_ready,并产生输出成功标志信号o_valid给总线接口模块,其中,当数据准备好信号i_ready为有效、且输出缓存有效信号o_pipe_valid为有效时,则输出成功标志o_valid为有效,否则,输出成功标志o_valid为无效。
进一步地,先进先出读信号产生模块还用于接收一流水线允许再读先进先出信号pipe_cap_lt3,其中,当检测到先进先出空信号i_fifo_empty为无效、且准备调整信号pipe_ready为有效或者流水线允许再读先进先出信号pipe_cap_lt3为有效时,则先进先出读信号产生模块输出先进先出读信号o_fifo_rd。
进一步地,先进先出存储器在接收到先进先出读信号o_fifo_rd后,下一时钟周期输出先进先出输入数据i_fifo_data;以及当先进先出输入数据i_fifo_data为有效时,利用寄存器将先进先出读信号o_fifo_rd直接打拍作为一先进先出数据有效信号fifo_valid。
进一步地,在写端处理时,当先进先出数据有效信号fifo_valid为有效、且输出缓存有效信号o_pipe_valid为有效、且数据准备好信号i_ready为无效或者冲突缓存(backup_valid)有效且当前冲突缓存写指针等于0时,则第一冲突缓存写信号为有效,否则,第一冲突缓存写信号为无效;在写端处理时,当先出数据有效信号fifo_valid为有效、且输出缓存有效信号o_pipe_valid为有效、且数据准备好信号i_ready为无效或者冲突缓存(backup_valid)有效且当前冲突缓存写指针等于1时,则第二冲突缓存写信号为有效,否则,第二冲突缓存写信号为无效;以及当第一冲突缓存写信号及/或第二冲突缓存写信号为有效时,进行冲突缓存处理。
进一步地,当第一冲突缓存写信号backup1_wr为有效时,更新第一冲突缓存处理模块的数据,并寄存拉高第一冲突缓存有效信号backup1_valid,否则,在第一冲突缓存读信号为有效时,寄存清零第一冲突缓存有效信号backup1_valid;当第二冲突缓存写信号backup2_wr为有效时,更新第二冲突缓存处理模块的数据,并寄存拉高第二冲突缓存有效信号backup2_valid,否则,在第二冲突缓存读信号为有效时,寄存清零第二冲突缓存有效信号backup2_valid;当冲突缓存读指针backup_rd_ptr等于0时,冲突缓存有效信号backup_valid等于第一冲突缓存有效信号backup1_valid,且冲突缓存数据backup_data等于第一冲突缓存数据backup1_data,否则,冲突缓存有效信号backup_valid等于所述第二冲突缓存有效信号backup2_valid,且冲突缓存数据backup_data等于第二冲突缓存数据backup2_data。
进一步地,在读端处理时,当输出缓存有效信号o_pipe_valid为有效、且数据准备好信号i_ready为有效或者冲突缓存backup_valid等于0时,则第一冲突缓存读信号为有效,否则,第一冲突缓存读信号为无效;在读端处理时,当先进先出数据有效信号fifo_valid为有效、且输出缓存有效信号o_pipe_valid为有效、且数据准备好信号i_ready为无效或者冲突缓存backup_valid等于0且当前冲突缓存读指针等于1时,则第二冲突缓存读信号为有效,否则,第二冲突缓存读信号为无效;以及当第一冲突缓存读信号及/或第二冲突缓存读信号为有效时,进行冲突缓存处理。
进一步地,当第一冲突缓存读信号为有效、且第一冲突缓存写信号为无效时,则清零第一冲突缓存有效信号backup1_valid,否则,保持第一冲突缓存有效信号backup1_valid;以及当第二冲突缓存读信号为有效、且第二冲突缓存写信号为无效时,则清零第二冲突缓存有效信号backup2_valid,否则,保持第二冲突缓存有效信号backup2_valid。
进一步地,第一条件包括:数据准备好信号i_ready为有效、且输出缓存有效信号o_pipe_valid为有效;第二条件包括:先进先出数据有效信号fifo_valid为无效、且输出缓存有效信号o_pipe_valid为无效、且第一/第二冲突缓存有效信号backup1_valid/backup2_valid为无效;其中,当上述两个条件有一个满足时,则输出缓存写信号为有效,否则,输出缓存写信号为无效。
进一步地,当输出缓存写信号为有效、且第一/第二冲突缓存有效信号backup1_valid/backup2_valid为有效时,则寄存器更新输出缓存有效信号o_pipe_valid为有效,且寄存器更新输出缓存数据o_data等于冲突缓存数据backup_data;以及当输出缓存写信号为有效、且第一/第二冲突缓存有效信号backup1_valid/backup2_valid为无效时,则寄存器更新输出缓存有效信号o_pipe_valid等于输入数据有效信号i_valid, 且寄存器更新输出缓存数据o_data等于先进先出输入数据i_fifo_data。
本申请实施例公开了:一种数据处理方法,包括以下步骤:
接收来自总线接口模块的数据准备好信号i_ready,并产生准备调整信号pipe_ready,其中当数据准备好信号i_ready为有效时,输出准备调整信号pipe_ready;
接收数据准备好信号i_ready以及来自先进先出存储器的先进先出空信号i_fifo_empty,并产生先进先出读信号o_fifo_rd,其中,当检测到先进先出空信号i_fifo_empty为无效、且准备调整信号pipe_ready为有效时,则输出先进先出读信号o_fifo_rd;
接收来自先进先出存储器的先进先出输入数据i_fifo_data以及数据准备好信号i_ready,并产生第一冲突缓存有效信号backup1_valid;
接收先进先出输入数据i_fifo_data以及数据准备好信号i_ready,并产生第二冲突缓存有效信号backup2_valid;
接收先进先出输入数据i_fifo_data,并产生输出缓存有效信号o_pipe_valid;以及
接收第一冲突缓存有效信号backup1_valid、第二冲突缓存有效信号backup2_valid、输出缓存有效信号o_pipe_valid和数据准备好信号i_ready,并产生输出成功标志信号o_valid给总线接口模块,其中,当数据准备好信号i_ready为有效、且输出缓存有效信号o_pipe_valid为有效时,则输出成功标志o_valid为有效,否则,输出成功标志o_valid为无效。
借由以上的技术方案,本发明的有益效果如下:本发明的先进先出数据处理装置及数据处理方法,通过将读先进先出存储器的时序转化为通用的(如:总线接口模块可以使用的)valid和ready交互机制,整个数据处理装置和数据处理方法,对总线接口模块的输入准备信号寄存打拍处理,提供了输出缓冲和冲突缓冲,以及对整个控制进行无气泡流水线处理,使得先进先出存储器和总线接口模块的数据交互高效,且没有气泡。总线接口模块的i_ready和先进先出存储器之间的关键路径被切断,且先进先出存储器的数据到总线接口模块的关键路径也被切断,如此一来,时序很容易收敛。换句话说,本发明不但解决数据准备好信号i_ready作为先进先出存储器的读信号的时序难收敛的问题,还解决data作为先进先出存储器的输出时序难收敛的问题,且不影响总线接口模块的传输效率。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中的一种先进先出数据处理装置的框架图。
图2是本发明一实施例中的一种数据处理方法的流程图。
图3是本发明第一冲突缓存处理模块和第二冲突缓存处理模块在写端处理的步骤的流程图。
图4是本发明第一冲突缓存处理模块和第二冲突缓存处理模块在读端处理的步骤的流程图。
图5是本发明输出缓存模块的步骤的流程图。
图6是本发明一实施例中的时序波形图。
以上附图的附图标记:
10A、先进先出数据处理装置;20、先进先出存储器;30、总线接口模块;110、准备信号延时调整模块;120A、先进先出读信号产生模块;130、第一冲突缓存处理模块;140、第二冲突缓存处理模块;150、输出缓存模块;160、输出成功标志产生模块;i_ready、数据准备好信号;pipe_ready、准备调整信号;i_fifo_empty、先进先出空信号;o_fifo_rd、先进先出读信号;i_fifo_data、先进先出输入数据;backup1_valid、第一冲突缓存有效信号;backup2_valid、第二冲突缓存有效信号;o_pipe_valid、输出缓存有效信号;o_valid、输出成功标志信号;pipe_cap_lt3、流水线允许再读先进先出信号;fifo_valid、先进先出数据有效信号;backup_data、冲突缓存数据;o_data、输出缓存数据;i_valid、输入有效信号;S310-S360、S510-S570、S610-S680、S710-S760、步骤。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的和区别类似的对象,两者之间并不存在先后顺序,也不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
请参考图1,图1是本发明一实施例中的一种先进先出数据处理装置10A的框架图。如图1所示,先进先出数据处理装置10A耦接于先进先出存储器(FIFO Memory)20与总线接口模块30之间。先进先出数据处理装置10A包括准备信号延时调整模块110、先进先出读信号产生模块120A、第一冲突缓存处理模块130、第二冲突缓存处理模块140、输出缓存模块150和输出成功标志产生模块160。准备信号延时调整模块120A耦接于总线接口模块30,用于接收来自总线接口模块30的数据准备好信号i_ready,并产生一准备调整信号pipe_ready,其中当数据准备好信号i_ready为有效(即,等于1)时,输出准备调整信号pipe_ready。先进先出读信号产生模块120A耦接于准备信号延时调整模块110和先进先出存储器20,用于接收来自准备信号延时调整模块110的数据准备好信号i_ready以及来自先进先出存储器20的先进先出空信号i_fifo_empty,并产生先进先出读信号o_fifo_rd,其中,当检测到先进先出空信号i_fifo_empty为无效(即,等于0)、且准备调整信号pipe_ready为有效(即,等于1)时,输出先进先出读信号(o_fifo_rd)。第一冲突缓存处理模块130耦接于先进先出存储器20和总线接口模块30,用于接收来自先进先出存储器的先进先出输入数据i_fifo_data以及来自总线接口模块30的数据准备好信号i_ready,并产生第一冲突缓存有效信号backup1_valid。第二冲突缓存处理模块140耦接于先进先出存储器20和总线接口模块30,用于接收来自先进先出存储器20的先进先出输入数据i_fifo_data以及来自总线接口模块30的数据准备好信号i_ready,并产生第二冲突缓存有效信号backup2_valid。输出缓存模块150耦接于先进先出存储器20、第一冲突缓存处理模块130和第二冲突缓存处理模块140,用于接收来自先进先出存储器20的先进先出输入数据i_fifo_data,并产生缓存数据有效信号o_pipe_valid。输出成功标志产生模块160耦接于第一冲突缓存处理模块130、第二冲突缓存处理模块140、输出缓存模块150和总线接口模块30,用于接收第一冲突缓存有效信号backup1_valid、第二冲突缓存有效信号backup2_valid、缓存数据有效信号o_pipe_valid和数据准备好信号i_ready,并产生输出成功标志信号o_valid给总线接口模块30,其中,当总线接口模块30的数据准备好信号i_ready为有效、且输出缓存模块150的缓存数据有效信号o_pipe_valid为有效时,输出成功标志o_valid为有效(即,等于1),否则,输出成功标志o_valid为无效(即,等于0)。此外,先进先出读信号产生模块120A还包括一内部信号,即流水线允许再读先进先出信号pipe_cap_lt3。
其中,当检测到先进先出空信号i_fifo_empty为无效(即,等于0)、且准备调整信号(pipe_ready)为有效(即,等于1)或者流水线允许再读先进先出信号pipe_cap_lt3为有效(即,等于1)时,则先进先出读信号产生模块120B输出先进先出读信号o_fifo_rd。于本实施例中,流水线允许再读先进先出信号pipe_cap_lt3表示可用存储空间加上先进先出存储器20输出的有效数据总数量低于3,其真值表如下表一所示:
先进先出存储器20在接收到先进先出读信号o_fifo_rd后,下一时钟周期输出先进先出输入数据i_fifo_data。当先进先出输入数据i_fifo_data为有效时,利用一寄存器将先进先出读信号o_fifo_rd直接打拍作为一先进先出数据有效信号fifo_valid。
请一并参考图1和图2,图2是本发明一实施例中的一种数据处理方法的流程图。图2的数据处理方法包括以下步骤:
步骤S310:接收总线接口模块的数据准备好信号i_ready,并产生准备调整信号pipe_ready,其中当数据准备好信号为有效时,输出准备调整信号pipe_ready。
步骤S320:接收总线接口模块的数据准备好信号i_ready、先进先出存储器的先进先出空信号i_fifo_empty和流水线允许再读先进先出信号pipe_cap_lt3,并产生先进先出读信号o_fifo_rd,其中,当检测到先进先出空信号i_fifo_empty为无效、且准备调整信号pipe_ready为有效或者流水线允许再读先进先出信号pipe_cap_lt3为有效时,则输出先进先出读信号o_fifo_rd。
步骤S330:当输入第一冲突缓存数据backup1_data接收先进先出输入数据i_fifo_data以及数据准备好信号i_ready,判断第一冲突缓存有效信号backup1_valid。
步骤S340:接收先进先出存储器的先进先出输入数据i_fifo_data以及总线接口模块的数据准备好信号i_ready,并产生第二冲突缓存有效信号backup2_valid。
步骤S350:接收先进先出存储器的先进先出输入数据i_fifo_data,并产生输出缓存有效信号o_pipe_valid。
步骤S360:接收第一冲突缓存有效信号backup1_valid、第二冲突缓存有效信号backup2_valid、输出缓存有效信号o_pipe_valid和数据准备好信号i_ready,并产生输出成功标志信号o_valid给总线接口模块,其中,当数据准备好信号i_ready为有效、且输出缓存有效信号o_pipe_valid为有效时,则输出成功标志o_valid为有效,否则,输出成功标志o_valid为无效。
请注意,步骤S310是由准备信号延时调整模块110所执行,步骤S320是由先进先出读信号产生模块120A所执行,步骤S330是由第一冲突缓存处理模块130所执行,步骤S340是由第二冲突缓存处理模块140所执行,步骤S350是由输出缓存模块150所执行,步骤S360是由输出成功标志产生模块160所执行。
接下来,进一步说明第一冲突缓存处理模块130和第二冲突缓存处理模块140的功能与运作。由于这两个模块功能与运作相同,统一进行说明,并拆分成写端处理(如图5)和读端处理(如图6)。
请参考图3,图3是本发明第一冲突缓存处理模块和第二冲突缓存处理模块在写端处理的步骤的流程图。图3的写端处理包括以下步骤:
步骤S510:当先进先出数据有效信号fifo_valid为有效、且输出缓存有效信号o_pipe_valid为有效、且数据准备好信号i_ready为无效或者冲突缓存backup_valid有效且当前冲突缓存写指针等于0时,则第一/第二冲突缓存写信号为有效,否则,第一/第二冲突缓存写信号为无效。
步骤S520:判断第一/第二冲突缓存写信号是否为有效。当第一/第二冲突缓存写信号为有效时,执行步骤S530;否则,执行步骤S570。
步骤S530:判断冲突缓存写指针等于0。当冲突缓存写指针等于0,执行步骤S540;否则,执行步骤S550。
步骤S540:第一冲突缓存写信号backup1_wr等于1,更新第一冲突缓存处理模块的数据,寄存拉高第一冲突缓存有效信号backup1_valid,否则,在第一冲突缓存读信号有效时寄存清零第一冲突缓存有效信号backup1_valid。
步骤S550:第二冲突缓存写信号backup2_wr等于1,更新第二冲突缓存处理模块的数据,寄存拉高第二冲突缓存有效信号backup2_valid,否则,在第二冲突缓存读信号有效时,寄存清零第一冲突缓存有效信号backup1_valid。
步骤S560:当 “冲突缓存写信号”有效,则更新 “冲突缓存写指针”为该指针的值取反,否则,保持 “冲突缓存写指针”的值。
步骤S570:结束。
请参考图4,图4是本发明第一冲突缓存处理模块和第二冲突缓存处理模块在读端处理的步骤的流程图。图4的读端处理包括以下步骤:
步骤S610:当数据有效且输出缓存有效信号o_pipe_valid有效、且 “总线接口模块没有准备好,或者冲突缓存无效”,则第一/第二冲突缓存读信号有效,否则,第一/第二冲突缓存读信号为无效。
步骤S620:判断第一/第二冲突缓存读信号是否为有效。当第一/第二冲突缓存读信号为有效时,执行步骤S630;否则,执行步骤S680。
步骤S630:判断第一/第二冲突缓存读指针等于0。当第一/第二冲突缓存读指针等于0时,执行步骤S640;否则,执行步骤S650。
步骤S640:第一冲突缓存读信号赋值为1,如果第一冲突缓存写信号为无效,则清零第一冲突缓存有效信号backup1_valid,否则,保持第一冲突缓存有效信号backup1_valid。
步骤S650:第二冲突缓存读信号赋值为1,如果第二冲突缓存写信号为无效,则清零第二冲突缓存有效信号backup2_valid,否则,保持第二冲突缓存有效信号backup2_valid。
步骤S660:当冲突缓存读指针为0时,输出冲突缓存数据backup_data为第一冲突缓存数据,否则输出冲突缓存数据backup_data为第二冲突缓存数据。
步骤S670:当冲突缓存读信号有效,则更新冲突缓存读指针为该读指针的值取反,否则,保持冲突缓存读指针的值。
步骤S680:结束。
请参考图5,图5是本发明一实施例中输出缓存模块的步骤的流程图。图5包括以下步骤:
步骤S710:第一条件包括:数据准备好信号i_ready为有效、且输出缓存有效信号o_pipe_valid为有效;第二条件包括:先进先出数据有效信号fifo_valid为无效、且输出缓存有效信号o_pipe_valid为无效、且冲突缓存有效信号backup_valid为无效;其中,当上述两个条件有一个满足时,则输出缓存写信号为有效,否则,输出缓存写信号为无效。
步骤S720:判断输出缓存写信号是否为有效。当输出缓存写信号为有效时,执行步骤S730;否则,执行步骤S760。
步骤S730:判断冲突缓存有效信号backup_valid是否为有效。当第一/第二冲突缓存有效信号backup1_valid/backup2_valid为有效时,执行步骤S740;否则,执行步骤S750。
步骤S740:寄存器更新输出缓存有效信号o_pipe_valid为有效,且寄存器更新输出缓存数据o_data等于冲突缓存数据backup_data。
步骤S750:寄存器更新输出缓存有效信号o_pipe_valid等于输入有效信号i_valid, 且寄存器更新输出缓存数据o_data等于先进先出输入数据i_fifo_data。
步骤S760:结束。
请参考图6,图6是本发明一实施例中的时序波形图。如图6所示,在第三个时钟周期,由于先进先出存储器20不空(即,先进先出空信号i_fifo_empty等于0),则产生了先进先出读信号o_fifo_rd,持续了3个时钟周期。先进先出存储器20的先进先出输入数据i_fifo_data输入d0、d1、d2,然后填满了输出缓存模块、第一冲突缓存处理模块和第二冲突缓存处理模块,输出缓存模块的数据o_data为d0, 此后,由于先进先出存储器20一直有数据,即使总线接口模块30连续读数据,而输出缓存模块、第一冲突缓存处理模块和第二冲突缓存处理模块的数据一直是满的,且不会溢出。在第九个时钟周期,总线接口模块30发出数据准备好信号i_ready,此时输出缓存有效信号o_pipe_valid为有效,则输出成功标志信号o_valid为有效,只要总线接口模块30要数据,而先进先出存储器20一直不空,则能在当前时刻实时给出数据,没有时钟周期延时,也没有效率损失。在第十五个时钟周期,总线接口模块30将数据准备好信号i_ready拉低,导致输出成功标志信号o_valid拉低,且在第十六个时钟周期输出给先进先出存储器20的先进先出读信号o_fifo_rd拉低,后来随着总线接口模块30的数据准备好信号i_ready拉高则上述两个信号随时变化,无论总线接口模块30的数据准备好信号i_ready如何变化,只要先进先出存储器20有足够数据,本发明的先进先出数据处理装置及数据处理方法都能够高效率实时供应数据,没有气泡,且不会造成流水线数据溢出。且总线接口模块30的数据准备好信号i_ready和先进先出存储器20之间的关键路径被切断,且先进先出存储器20的先进先出输入数据i_fifo_data到总线接口模块30的关键路径也被切断,时序很容易收敛。
本发明具体实施例提供一种先进先出数据处理装置及数据处理方法,通过将读先进先出存储器20的时序转化为通用的(如:总线接口总线接口模块30可以使用的)valid和ready交互机制,且流水无气泡,效率高。
上述的本发明实施例可在各种硬件、软件编码或两者组合中进行实施。例如,本发明的实施例也可为在数据信号处理器(Digital Signal Processor,DSP)中执行上述方法的程序代码。本发明也可涉及计算机处理器、数字信号处理器、微处理器或现场可编程门阵列(Field Programmable Gate Array,FPGA)执行的多种功能。可根据本发明配置上述处理器执行特定任务,其通过执行定义了本发明揭示的特定方法的机器可读软件代码或 固件代码来完成。可将软件代码或固件代码发展为不同的程序语言与不同的格式或形式。 也可为不同的目标平台编译软件代码。然而,根据本发明执行任务的软件代码与其他类型配置代码的不同代码样式、类型与语言不脱离本发明的精神与范围。
借由以上的技术方案,本发明的有益效果如下:本发明的先进先出数据处理装置及数据处理方法,通过将读先进先出存储器20的时序转化为通用的(如:总线接口模块30可以使用的)valid和ready交互机制,整个数据处理装置和数据处理方法,对总线接口模块30的输入准备信号寄存打拍处理,提供了输出缓冲和冲突缓冲,以及对整个控制进行无气泡流水线处理,使得先进先出存储器20和总线接口模块30的数据交互高效,且没有气泡。总线接口模块30的i_ready和先进先出存储器20之间的关键路径被切断,且先进先出存储器20的数据到总线接口模块30的关键路径也被切断,如此一来,时序很容易收敛。换句话说,本发明不但解决数据准备好信号i_ready作为先进先出存储器20的读信号的时序难收敛的问题,还解决data作为先进先出存储器20的输出时序难收敛的问题,且不影响总线接口模块30的传输效率。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (16)
1.一种先进先出数据处理装置,耦接于一先进先出存储器与一总线接口模块之间,其特征在于,包括:
一准备信号延时调整模块,耦接于所述总线接口模块,用于接收来自所述总线接口模块的一数据准备,并产生一准备调整信号,其中当所述数据准备为有效时,输出所述准备调整信号;
一先进先出读信号产生模块,耦接于所述准备信号延时调整模块和所述先进先出存储器,用于接收来自所述准备信号延时调整模块的所述数据准备以及来自所述先进先出存储器的一先进先出空信号,并产生一先进先出读信号;所述先进先出读信号产生模块还包括一流水线允许再读先进先出信号,其中,当检测到所述先进先出空信号为无效、且所述准备调整信号为有效或者所述流水线允许再读先进先出信号为有效时,则所述先进先出读信号产生模块输出所述先进先出读信号;
一第一冲突缓存处理模块,耦接于所述先进先出存储器和所述总线接口模块,用于接收来自所述先进先出存储器的一先进先出输入数据以及来自所述总线接口模块的所述数据准备,并产生一第一冲突缓存有效信号;
一第二冲突缓存处理模块,耦接于所述先进先出存储器和所述总线接口模块,用于接收来自所述先进先出存储器的所述先进先出输入数据以及来自所述总线接口模块的所述数据准备,并产生一第二冲突缓存有效信号;
一输出缓存模块,耦接于所述先进先出存储器、所述第一冲突缓存处理模块和所述第二冲突缓存处理模块,用于接收来自所述先进先出存储器的所述先进先出输入数据,并产生一输出缓存有效信号;以及
一输出成功标志产生模块,耦接于所述第一冲突缓存处理模块、所述第二冲突缓存处理模块、所述输出缓存模块和所述总线接口模块,用于接收所述第一冲突缓存有效信号、所述第二冲突缓存有效信号、所述输出缓存有效信号和所述数据准备,并产生一输出成功标志信号给所述总线接口模块,其中,当所述数据准备为有效、且输出缓存有效信号为有效时,则所述输出成功标志为有效,否则,所述输出成功标志为无效。
2.如权利要求1所述的先进先出数据处理装置,其特征在于,所述先进先出存储器在接收到所述先进先出读信号后,下一时钟周期输出所述先进先出输入数据;以及当所述先进先出输入数据为有效时,利用一寄存器将所述先进先出读信号直接打拍作为一先进先出数据有效信号。
3.如权利要求2所述的先进先出数据处理装置,其特征在于:
在写端处理时,当所述先进先出数据有效信号为有效、且所述输出缓存有效信号为有效、且所述数据准备为无效或者冲突缓存有效且当前冲突缓存写指针等于0时,则第一冲突缓存写信号为有效,否则,所述第一冲突缓存写信号为无效;
在写端处理时,当先进先出数据有效信号为有效、且所述输出缓存有效信号为有效、且所述数据准备为无效或者冲突缓存有效且当前冲突缓存写指针等于1时,则第二冲突缓存写信号为有效,否则,所述第二冲突缓存写信号为无效;以及
当所述第一冲突缓存写信号及/或所述第二冲突缓存写信号为有效时,进行冲突缓存处理。
4.如权利要求3所述的先进先出数据处理装置,其特征在于:
当所述第一冲突缓存写信号为有效时,更新所述第一冲突缓存处理模块的数据,并寄存拉高所述第一冲突缓存有效信号,否则,在第一冲突缓存读信号为有效时,寄存清零所述第一冲突缓存有效信号;
当所述第二冲突缓存写信号为有效时,更新所述第二冲突缓存处理模块的数据,并寄存拉高所述第二冲突缓存有效信号,否则,在第二冲突缓存读信号为有效时,寄存清零所述第二冲突缓存有效信号;
当冲突缓存读指针等于0时,所述冲突缓存有效信号等于所述第一冲突缓存有效信号,且冲突缓存数据等于第一冲突缓存数据,否则,所述冲突缓存有效信号等于所述第二冲突缓存有效信号,且所述冲突缓存数据等于第二冲突缓存数据。
5.如权利要求2所述的先进先出数据处理装置,其特征在于:
在读端处理时,当所述输出缓存有效信号为有效、且所述数据准备为有效或者冲突缓存等于0时,则第一冲突缓存读信号为有效,否则,所述第一冲突缓存读信号为无效;
在读端处理时,当先进先出数据有效信号为有效、且所述输出缓存有效信号为有效、且所述数据准备为无效或者冲突缓存等于0且当前冲突缓存读指针等于1时,则第二冲突缓存读信号为有效,否则,所述第二冲突缓存读信号为无效;以及
当所述第一冲突缓存读信号及/或所述第二冲突缓存读信号为有效时,进行冲突缓存处理。
6. 如权利要求5所述的先进先出数据处理装置,其特征在于:
当所述第一冲突缓存读信号为有效、且所述第一冲突缓存写信号为无效时,则清零所述第一冲突缓存有效信号,否则,保持所述第一冲突缓存有效信号;以及
当所述第二冲突缓存读信号为有效、且所述第二冲突缓存写信号为无效时,则清零所述第二冲突缓存有效信号,否则,保持所述第二冲突缓存有效信号。
7.如权利要求4或6所述的先进先出数据处理装置,其特征在于:
第一条件包括:所述数据准备为有效、且所述输出缓存有效信号为有效;
第二条件包括:所述先进先出数据有效信号为无效、且所述输出缓存有效信号为无效、且所述第一/第二冲突缓存有效信号为无效;
其中,当上述两个条件有一个满足时,则输出缓存写信号为有效,否则,所述输出缓存写信号为无效。
8. 如权利要求7所述的先进先出数据处理装置,其特征在于:
当所述输出缓存写信号为有效、且所述第一/第二冲突缓存有效信号为有效时,则所述寄存器更新所述输出缓存有效信号为有效,且所述寄存器更新所述输出缓存数据等于一所述冲突缓存数据;以及
当所述输出缓存写信号为有效、且所述第一/第二冲突缓存有效信号为无效时,则所述寄存器更新所述输出缓存有效信号等于输入数据有效信号, 且所述寄存器更新所述输出缓存数据等于所述先进先出输入数据。
9.一种数据处理方法,其特征在于,所述方法包括以下步骤:
接收来自一总线接口模块的一数据准备,并产生一准备调整信号,其中当所述数据准备为有效时,输出所述准备调整信号;
接收所述数据准备以及来自一先进先出存储器的一先进先出空信号和一流水线允许再读先进先出信号,并产生一先进先出读信号,其中,当检测到所述先进先出空信号为无效、且所述准备调整信号为有效或者所述流水线允许再读先进先出信号为有效时,则输出所述先进先出读信号;
接收来自所述先进先出存储器的一先进先出输入数据以及所述数据准备,并产生一第一冲突缓存有效信号;
接收所述先进先出输入数据以及所述数据准备,并产生一第二冲突缓存有效信号;
接收所述先进先出输入数据,并产生一输出缓存有效信号;以及
接收所述第一冲突缓存有效信号、所述第二冲突缓存有效信号、所述输出缓存有效信号和所述数据准备,并产生一输出成功标志信号给所述总线接口模块,其中,当所述数据准备为有效、且输出缓存有效信号为有效时,则所述输出成功标志为有效,否则,所述输出成功标志为无效。
10. 如权利要求9所述的数据处理方法,其特征在于,还包括:
接收到所述先进先出读信号后,下一时钟周期输出所述先进先出输入数据;以及
当所述先进先出输入数据为有效时,将所述先进先出读信号直接打拍作为一先进先出数据有效信号。
11.如权利要求10所述的数据处理方法,其特征在于,还包括:
在写端处理时,当所述先进先出数据有效信号为有效、且所述输出缓存有效信号为有效、且所述数据准备为无效或者冲突缓存有效且当前冲突缓存写指针等于0时,则第一冲突缓存写信号为有效,否则,所述第一冲突缓存写信号为无效;
在写端处理时,当先进先出数据有效信号为有效、且所述输出缓存有效信号为有效、且所述数据准备为无效或者冲突缓存有效且当前冲突缓存写指针等于1时,则第二冲突缓存写信号为有效,否则,所述第二冲突缓存写信号为无效;以及
当所述第一冲突缓存写信号及/或所述第二冲突缓存写信号为有效时,进行冲突缓存处理。
12.如权利要求11所述的数据处理方法,其特征在于,还包括:
当所述第一冲突缓存写信号为有效时,更新第一冲突缓存数据,并寄存拉高所述第一冲突缓存有效信号,否则,在第一冲突缓存读信号为有效时,寄存清零所述第一冲突缓存有效信号;
当所述第二冲突缓存写信号为有效时,更新第二冲突缓存数据,并寄存拉高所述第二冲突缓存有效信号,否则,在第二冲突缓存读信号为有效时,寄存清零所述第二冲突缓存有效信号 ;
当冲突缓存读指针等于0时,所述冲突缓存有效信号等于所述第一冲突缓存有效信号,且冲突缓存数据等于第一冲突缓存数据,否则,所述冲突缓存有效信号等于所述第二冲突缓存有效信号,且所述冲突缓存数据等于第二冲突缓存数据。
13.如权利要求10所述的数据处理方法,其特征在于,还包括:
在读端处理时,当所述输出缓存有效信号为有效、且所述数据准备为有效或者冲突缓存等于0时,则第一冲突缓存读信号为有效,否则,所述第一冲突缓存读信号为无效;
在读端处理时,当先进先出数据有效信号为有效、且所述输出缓存有效信号为有效、且所述数据准备为无效或者冲突缓存等于0且当前冲突缓存读指针等于1时,则第二冲突缓存读信号为有效,否则,所述第二冲突缓存读信号为无效;以及
当所述第一冲突缓存读信号及/或所述第二冲突缓存读信号为有效时,进行冲突缓存处理。
14. 如权利要求13所述的数据处理方法,其特征在于,还包括:
当所述第一冲突缓存读信号为有效、且所述第一冲突缓存写信号为无效时,则清零所述第一冲突缓存有效信号,否则,保持所述第一冲突缓存有效信号;以及
当所述第二冲突缓存读信号为有效、且所述第二冲突缓存写信号为无效时,则清零所述第二冲突缓存有效信号,否则,保持所述第二冲突缓存有效信号。
15.如权利要求12或14所述的数据处理方法,其特征在于,还包括:
第一条件包括:所述数据准备为有效、且所述输出缓存有效信号为有效;
第二条件包括:所述先进先出数据有效信号为无效、且所述输出缓存有效信号为无效、且所述第一/第二冲突缓存有效信号为无效;
其中,当上述两个条件有一个满足时,则输出缓存写信号为有效,否则,所述输出缓存写信号为无效。
16. 如权利要求15所述的数据处理方法,其特征在于,还包括:
当所述输出缓存写信号为有效、且所述第一/第二冲突缓存有效信号为有效时,则更新所述输出缓存有效信号为有效,且更新所述输出缓存数据等于所述冲突缓存数据;以及
当所述输出缓存写信号为有效、且所述第一/第二冲突缓存有效信号为无效时,则更新所述输出缓存有效信号等于输入数据有效信号, 且更新所述输出缓存数据等于所述先进先出输入数据。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202111245590.0A CN113688074B (zh) | 2021-10-26 | 2021-10-26 | 先进先出数据处理装置及数据处理方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202111245590.0A CN113688074B (zh) | 2021-10-26 | 2021-10-26 | 先进先出数据处理装置及数据处理方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN113688074A CN113688074A (zh) | 2021-11-23 |
| CN113688074B true CN113688074B (zh) | 2022-02-01 |
Family
ID=78588019
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202111245590.0A Active CN113688074B (zh) | 2021-10-26 | 2021-10-26 | 先进先出数据处理装置及数据处理方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN113688074B (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114968909B (zh) * | 2022-05-24 | 2025-08-01 | 苏州登临科技有限公司 | 一种soc芯片、电子设备及滑动缓存器的功耗优化方法 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5406554A (en) * | 1993-10-05 | 1995-04-11 | Music Semiconductors, Corp. | Synchronous FIFO having an alterable buffer store |
| US6480942B1 (en) * | 1998-05-28 | 2002-11-12 | Sony Corporation | Synchronized FIFO memory circuit |
| US10621122B1 (en) * | 2017-05-12 | 2020-04-14 | Marvell Israel (M.I.S.L) Ltd. | Systems and methods for transferring data with a dual-line first-in-first-out (FIFO) memory array |
| CN111832240A (zh) * | 2020-07-02 | 2020-10-27 | 北京思朗科技有限责任公司 | Fifo数据传输方法及fifo存储装置 |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4888739A (en) * | 1988-06-15 | 1989-12-19 | Cypress Semiconductor Corporation | First-in first-out buffer memory with improved status flags |
| KR0151917B1 (ko) * | 1995-12-08 | 1998-11-02 | 양승택 | 제한적 공유메모리 비동기 전달모드 스위치 장치에서의 우선순위제어 장치 |
| US6072741A (en) * | 1997-04-01 | 2000-06-06 | Ramtron International Corporation | First-in, first-out integrated circuit memory device incorporating a retransmit function |
| JP2004178671A (ja) * | 2002-11-26 | 2004-06-24 | Toshiba Corp | 読み出し制御回路及びfifo制御回路 |
| JP5627330B2 (ja) * | 2010-08-02 | 2014-11-19 | キヤノン株式会社 | 情報処理装置、キャッシュ装置およびデータ処理方法 |
| CN105094743A (zh) * | 2014-05-23 | 2015-11-25 | 深圳市中兴微电子技术有限公司 | 一种先进先出数据缓存器及其进行时延控制的方法 |
| US9703526B2 (en) * | 2015-03-12 | 2017-07-11 | Altera Corporation | Self-stuffing multi-clock FIFO requiring no synchronizers |
| TWI658470B (zh) * | 2018-05-03 | 2019-05-01 | 智原科技股份有限公司 | 運用於雙倍資料率記憶體系統的先進先出電路 |
| CN111400205B (zh) * | 2020-02-29 | 2022-05-24 | 华南理工大学 | 一种先进先出地址轮询缓存读写方法、系统及装置 |
-
2021
- 2021-10-26 CN CN202111245590.0A patent/CN113688074B/zh active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5406554A (en) * | 1993-10-05 | 1995-04-11 | Music Semiconductors, Corp. | Synchronous FIFO having an alterable buffer store |
| US6480942B1 (en) * | 1998-05-28 | 2002-11-12 | Sony Corporation | Synchronized FIFO memory circuit |
| US10621122B1 (en) * | 2017-05-12 | 2020-04-14 | Marvell Israel (M.I.S.L) Ltd. | Systems and methods for transferring data with a dual-line first-in-first-out (FIFO) memory array |
| CN111832240A (zh) * | 2020-07-02 | 2020-10-27 | 北京思朗科技有限责任公司 | Fifo数据传输方法及fifo存储装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN113688074A (zh) | 2021-11-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12373364B2 (en) | Asynchronous FIFO read/write control method and system, and electronic device | |
| EP3249543A1 (en) | Interface signal remapping method based on fpga | |
| CN101727412A (zh) | 存储器接口和存储器接口的操作方法 | |
| CN113688074B (zh) | 先进先出数据处理装置及数据处理方法 | |
| CN113033087B (zh) | 一种基于fpga用于光神经网络的高速数据传输方法 | |
| CN113299326A (zh) | 基于fifo的数据先进后出型存储电路及读写方法 | |
| WO2025001771A1 (zh) | 用于芯粒互联接口的数据传输方法及芯粒互联接口 | |
| CN115237349B (zh) | 数据读写控制方法、控制装置、计算机存储介质和电子设备 | |
| CN114089946B (zh) | 一种fifo装置和数据处理系统 | |
| US20250306626A1 (en) | Source synchronous interface circuit and data transmission method | |
| US20230195674A1 (en) | Frame alignment recovery for a high-speed signaling interconnect | |
| CN115168264B (zh) | 一种跨时钟域的apb总线桥及其方法 | |
| CN117768598B (zh) | 一种接收led控制卡单端信号并转发为差分信号的装置 | |
| CN117406954A (zh) | 一种异步fifo电路 | |
| WO2024082497A1 (zh) | 异步信号处理方法及结构 | |
| CN118606233B (zh) | 基于双端口ram的寄存器输出的fifo电路、方法、芯片及设备 | |
| CN116434799A (zh) | 存储器控制器和控制方法、芯片、存储介质及电子设备 | |
| KR100734521B1 (ko) | 시스템 온 칩을 위한 ip 모듈 | |
| US12039294B2 (en) | Device and method for handling programming language function | |
| CN222748966U (zh) | 一种基于fpga与dsp的惯性器件数据通信系统 | |
| CN220020275U (zh) | 基于fpga的系统芯片原型验证调试装置 | |
| CN219958216U (zh) | 一种芯片原型验证调试板 | |
| CN121168394B (zh) | 一种基于自定义握手协议的ahb总线跨时钟域数据同步方法 | |
| KR20250141462A (ko) | 인터페이스 시스템 및 그 동작 방법 | |
| CN120165690B (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 |
