CN111949582A - 指针同步装置及方法、异步fifo电路、处理器*** - Google Patents
指针同步装置及方法、异步fifo电路、处理器*** Download PDFInfo
- Publication number
- CN111949582A CN111949582A CN202010866691.9A CN202010866691A CN111949582A CN 111949582 A CN111949582 A CN 111949582A CN 202010866691 A CN202010866691 A CN 202010866691A CN 111949582 A CN111949582 A CN 111949582A
- Authority
- CN
- China
- Prior art keywords
- write
- pointer
- read
- fast
- logic module
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1689—Synchronisation and timing concerns
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本申请提供一种指针同步装置及方法、异步FIFO电路、处理器***,包括存储器、写索引逻辑模块和读索引逻辑模块,写索引逻辑模块的时钟周期为快时钟周期,读索引逻辑模块的时钟周期为慢时钟周期;写索引逻辑模块根据快时钟周期和慢时钟周期确定写入时刻,并在写入时刻向存储器写入第一指针;读索引逻辑模块根据慢时钟周期,从存储器中读取第一指针;其中,写入时刻满足:使得同一第一指针从被写入存储器到被从存储器读出的时间差为第一目标延迟时间。写入时刻的确定令同一第一指针从被写入到被读出的时间差为第一目标延迟时间,短于现有技术中的延迟时间,从而可以满足高性能处理器对数据传输的低延迟的需求。
Description
技术领域
本申请涉及计算机领域,具体而言,涉及一种指针同步装置及方法、异步FIFO电路、处理器***。
背景技术
数字集成电路中不同时钟域之间在进行数据传输时,需要经跨时钟域电路处理。跨时钟域电路通常为异步FIFO电路。
现有技术中的异步FIFO电路在进行指针的跨时钟域同步时,通常是通过多个数字触发器(Digital Flip-Flop,简称DFF)以目标时钟域的时钟周期延迟DFF数量个时钟周期的延迟时间,实现指针的同步。
现有技术进行指针的跨时钟域同步时的延迟时间较长,无法满足高性能处理器对数据传输的低延迟的需求。
发明内容
本申请实施例的目的在于提供一种指针同步装置及方法、异步FIFO电路、处理器***,用以改善现有技术中指针的跨时钟域同步时的延迟时间较长的问题。
第一方面,本申请实施例提供了一种指针同步装置,用于实现指针在不同时钟域之间的同步,所述时钟域包括快时钟域和慢时钟域,所述装置包括存储器、写索引逻辑模块和读索引逻辑模块,所述存储器分别与所述写索引逻辑模块和读索引逻辑模块连接,所述写索引逻辑模块的时钟周期与所述快时钟域的快时钟周期相同,所述读索引逻辑模块的时钟周期与所述慢时钟域的慢时钟周期相同;所述写索引逻辑模块用于根据所述快时钟周期和慢时钟周期确定写入时刻,并在所述写入时刻向所述存储器写入第一指针;所述读索引逻辑模块用于根据所述慢时钟周期,从所述存储器中读取第一指针;其中,所述写入时刻满足:使得同一第一指针从被所述写索引逻辑模块写入存储器到被所述读索引逻辑模块从存储器读出的时间差为第一目标延迟时间。
在上述的实施方式中,写索引逻辑模块所处的时钟周期与慢时钟域的慢时钟周期相同,读索引逻辑模块所处的时钟周期与快时钟域的快时钟周期相同,读索引逻辑模块根据快时钟周期与慢时钟周期确定将第一指针写入存储器的写入时刻,写索引逻辑模块根据慢时钟周期从存储器读取第一指针,写入时刻的确定可以令同一第一指针从被写入到被读出的时间差为第一目标延迟时间,该第一目标延迟时间为用户设置的延迟时间,可以短于现有技术中指针跨时钟域同步的延迟时间,例如为两个快时钟周期,从而可以满足高性能处理器对数据传输的低延迟的需求。
在一个可能的设计中,所述写索引逻辑模块用于:根据所述快时钟周期和慢时钟周期确定写入时刻,并在所述写入时刻向所述存储器写入第一指针,具体包括:每经过一个快时钟周期,便令计数值减小所述快时钟周期对应的数值,所述计数值的初始值为所述慢时钟周期对应的数值;在所述计数值小于0时,向所述存储器写入一个第一指针,并令所述计数值增加所述慢时钟周期对应的数值,所述计数值小于0时对应的时刻为所述写入时刻。
在上述的实施方式中,写索引逻辑模块可以利用快时钟周期的周期时间以及慢时钟周期的周期时间的数值来计算出向存储器写入第一指针的时刻,以慢时钟周期作为计数值的初始值,每经过一个快时钟周期,便令计数值减去快时钟周期对应的数值,直到计数值小于0,则向存储器写入第一指针,同时令当前计数值与慢时钟周期对应的数值相加,以恢复计数值大于或等于0的状态。通过上述方式,可以使得写索引逻辑模块与读索引逻辑模块在工作在各自的时钟周期的前提下,写入指针数据和读出指针数据的速度相近,在速度相近的情况下更便于计算延迟时间。
在一个可能的设计中,所述存储器包括预设数量个存储空间,每个所述存储空间用于存储一个指针;所述写索引逻辑模块具体用于根据所述写入时刻顺次向所述存储器中的预设数量个存储空间中的一个存储空间写入第一指针;所述读索引逻辑模块用于根据所述慢时钟周期,顺次从所述存储器中的预设数量个存储空间中的一个存储空间读取第一指针。
在上述的实施方式中,存储器中可以包括多个存储空间,写索引逻辑模块在写入数据时,可以按照存储空间的缓存地址的顺序顺次写入;读索引逻辑模块在从存储空间读取数据时,也可以按照存储空间的缓存地址的顺序顺次读取,多个存储空间使得存储器可以同时缓存多个第一指针,从而进一步提高了第一指针跨时钟域同步时的同步效率。
在一个可能的设计中,每个所述存储空间具有对应的缓存地址,所述装置还包括:写索引信标模块、读索引信标模块以及相位跟踪模块,所述写索引信标模块、读索引信标模块均与所述相位跟踪模块连接,所述相位跟踪模块还与所述写索引逻辑模块连接;所述写索引信标模块用于产生写信标信号,且在每当所述写索引逻辑模块向目标缓存地址对应的存储空间写入N次第一指针时,令所述写信标信号发生翻转;所述读索引信标模块用于产生读信标信号,且在每当所述读索引逻辑模块从所述目标缓存地址对应的存储空间读取N次第一指针时,令所述读信标信号发生翻转;所述相位跟踪模块用于根据所述写信标信号和读信标信号,产生写索引控制信号,并将所述写索引控制信号发送到所述写索引逻辑模块,以使所述写索引逻辑模块调整所述写入时刻。
在上述的实施方式中,写索引信标模块可以在写索引逻辑模块每向目标缓存地址写入N次第一指针时,进行一次写信标信号的翻转,从而生成翻转点在目标缓存地址的写信标信号;读索引信标模块可以在读索引逻辑模块每从同一目标缓存地址对应的存储空间读取N次第一指针时,进行一次读信标信号的翻转,从而生成翻转点在同一目标缓存地址的读信标信号。写信标信号与读信标信号均可以传递给相位跟踪模块,以便相位跟踪模块根据两者的时间差,产生写索引控制信号,该写索引控制信号可以被发送给写索引逻辑模块,以便写索引逻辑模块对写入时刻进行调整。通过读信标信号与写信标信号的反馈,调整写入时刻,从而令同一第一指针从被写入至被读出的时间差稳定维持在第一目标延迟时间,提高了第一目标延迟时间的稳定性。
在一个可能的设计中,还包括M个第一寄存器,所述M个第一寄存器顺次连接于所述读索引信标模块与所述相位跟踪模块之间,用于将所述读索引信标模块产生的读信标信号延迟M个快时钟周期后再传送给所述相位跟踪模块,以实现所述读信标信号由慢时钟域同步到快时钟域。
在上述的实施方式中,为了令读信标信号与写信标信号可以一同比较可以通过M个第一寄存器实现读信标信号的同步,令读信标信号在延迟M个快时钟周期后,由慢时钟域同步到了快时钟域。
在一个可能的设计中,所述相位跟踪模块用于根据所述写信标信号和读信标信号,产生写索引控制信号,具体包括:将所述写信标信号延迟M个快时钟周期与所述第一目标延迟时间之和,得到延迟后的写信标信号;将所述延迟后的写信标信号与所述延迟M个快时钟周期后的读信标信号进行比对;若所述延迟后的写信标信号的波形的翻转点早于所述延迟M个快时钟周期后的读信标信号的波形的翻转点,产生WrEarly信号,所述WrEarly信号为表征写入第一指针的时刻早于期望时刻的标志信号;若所述延迟后的写信标信号的波形的翻转点晚于所述延迟M个快时钟周期后的读信标信号的波形的翻转点,产生WrLate信号,所述WrEarly信号为表征写入第一指针的时刻晚于期望时刻的标志信号。
在上述的实施方式中,相位跟踪模块接收到延迟M个快时钟周期后的读信标信号之后,将写信标信号先同样延迟M个快时钟周期,再延迟第一目标延迟时间,然后再将两者进行比较,若两者的波形对齐,则说明同一第一指针从写入至读出的时间差刚好是第一目标延迟时间;若延迟后的写信标信号的波形的翻转点早于延迟后的读信标信号的波形的翻转点,则说明写入的时间较早,产生对应的写索引控制信号WrEarly信号;若延迟后的写信标信号的波形的翻转点晚于延迟后的读信标信号的波形的翻转点,则说明写入的时间较晚,产生对应的写索引控制信号WrLate信号。
在一个可能的设计中,所述写索引逻辑模块还用于:在所述计数值大于或等于0时,若接收到WrEarly信号,则在计数值本应减小所述快时钟周期对应的数值时,不进行减小所述快时钟周期对应的数值的动作;在所述计数值大于或等于0时,若接收到WrLate信号,则在计数值本应减小所述快时钟周期对应的数值时,减小两个所述快时钟周期对应的数值;在所述计数值小于0时,令所述计数值加上所述慢时钟周期对应的数值,以恢复所述计数值大于或等于0的状态。
在上述的实施方式中,写索引逻辑模块在计数值大于或等于0,且接收到WrEarly信号的情况下,在计数值本应减小快时钟周期对应的数值时,不进行减小快时钟周期对应的数值的动作,从而延长了计数值达到小于0状态的时间,进而推迟了将第一指针写入存储器的写入时刻;写索引逻辑模块在计数值大于或等于0,且接收到WrLate信号的情况下,在计数值本应减小快时钟周期对应的数值时,额外多减小一个快时钟周期对应的数值,从而缩短了计数值到达小于0状态的时间,进而提早了将第一指针写入存储器的写入时刻;在计数值小于0时,令计数值加上慢时钟周期对应的数值,从而使计数值恢复成大于或等于0的状态。写索引逻辑模块根据不同的写索引控制信号调整写入时刻,从而保持同一第一指针从被写入至被读出的时间差的稳定,维持在第一目标延迟时间。
在一个可能的设计中,所述装置还包括:第一转换模块、第二转换模块以及L个第二寄存器,所述L个第二寄存器顺次连接于所述第一转换模块以及第二转换模块之间;所述第一转换模块用于将运行于慢时钟域的第二指针由二进制码转换为格雷码;所述L个第二寄存器用于将所述表征第二指针的格雷码延迟L个快时钟周期后再发送给所述第二转换模块;所述第二转换模块用于将所述延迟L个快时钟周期的格雷码转换为二进制码,并输出由所述格雷码转换来的二进制码,完成所述第二指针的同步,其中,所述L个快时钟周期为所述第二指针同步的延迟时间。
在上述的实施方式中,对于从慢时钟域向快时钟域同步的第二指针,由于目标时钟域是快时钟域,因此可以通过L个第二寄存器来实现两者之间的同步,在保持实现结构简单的情况下,令第二指针的跨时钟域的同步依然有着较低的延迟时间。
第二方面,本申请实施例提供了一种指针同步装置,用于实现指针在不同时钟域之间的同步,所述时钟域包括快时钟域和慢时钟域,所述装置包括缓存器、慢写索引逻辑模块和快读索引逻辑模块,所述缓存器分别与所述慢写索引逻辑模块和快读索引逻辑模块连接,所述慢写索引逻辑模块的时钟周期与所述慢时钟域的慢时钟周期相同,所述快读索引逻辑模块的时钟周期与所述快时钟域的快时钟周期相同;所述慢写索引逻辑模块用于根据所述慢时钟周期,向所述缓存器写入第二指针;所述快读索引逻辑模块用于根据所述快时钟周期和慢时钟周期确定读出时刻,并在所述读出时刻从所述缓存器读取第二指针;其中,所述读出时刻满足:使得同一第二指针从被所述慢写索引逻辑模块写入缓存器到被所述快读索引逻辑模块从缓存器读出的时间差为第二目标延迟时间。
在上述的实施方式中,读出时刻的确定可以令第二指针从被写入到被读出的时间差为第二目标延迟时间,该第二目标延迟时间为用户设置的延迟时间,可以短于现有技术中指针跨时钟域同步的延迟时间,例如为两个快时钟周期,从而可以满足高性能处理器对数据传输的低延迟的需求。
在一个可能的设计中,所述快读索引逻辑模块用于根据所述快时钟周期和慢时钟周期确定读出时刻,并在所述读出时刻从所述缓存器读取第二指针,具体包括:每经过一个快时钟周期,便令累计值减小该快时钟周期对应的数值,所述累计值的初始值为所述慢时钟周期对应的数值;在所述累计值小于0时,从所述缓存器读取一个第二指针,并令所述累计值增加所述慢时钟周期对应的数值,所述累计值小于0时对应的时刻为所述读出时刻。
在上述的实施方式中,可以使得慢写索引逻辑模块与快读索引逻辑模块在工作在各自的时钟周期的前提下,写入指针和读出指针的速度相近,在速度相近的情况下更便于计算延迟时间。
在一个可能的设计中,所述缓存器包括预设数量个缓存空间,每个所述缓存空间用于存储一个指针;所述慢写索引逻辑模块具体用于根据所述慢时钟周期,顺次向所述缓存器中的预设数量个缓存空间中的一个缓存空间写入第二指针;所述读索引逻辑模块用于根据所述读出时刻,顺次从所述缓存器中的预设数量个缓存空间中的一个缓存空间读取第二指针。
在上述的实施方式中,多个缓存空间使得缓存器可以同时缓存多个第二指针,从而进一步提高了第一指针跨时钟域同步时的同步效率。
在一个可能的设计中,每个所述缓存空间具有对应的缓存地址,所述装置还包括:慢写索引信标模块、快读索引信标模块以及读相位跟踪模块,所述慢写索引信标模块、快读索引信标模块均与所述读相位跟踪模块连接,所述读相位跟踪模块还与所述快读索引逻辑模块连接;所述慢写索引信标模块用于产生慢写信标信号,且在每当所述慢写索引逻辑模块向目标缓存地址对应的缓存空间写入N次第二指针时,令所述慢写信标信号发生翻转;所述快读索引信标模块用于产生快读信标信号,且在每当所述快读索引逻辑模块从所述目标缓存地址对应的缓存空间读取N次第二指针时,令所述快读信标信号发生翻转;所述读相位跟踪模块用于根据所述慢写信标信号和快读信标信号,产生读索引控制信号,并将所述读索引控制信号发送到所述快读索引逻辑模块,以使所述快读索引逻辑模块调整所述读出时刻。
在上述的实施方式中,通过快读信标信号与慢写信标信号的反馈,调整读出时刻,从而令同一第二指针从被写入至被读出的时间差稳定维持在第二目标延迟时间,提高了第二目标延迟时间的稳定性。
在一个可能的设计中,还包括M个数字触发器,所述M个数字触发器顺次连接于所述慢写索引信标模块与所述读相位跟踪模块之间,用于将所述慢写索引信标模块产生的慢写信标信号延迟M个快时钟周期后再传送给所述读相位跟踪模块,以实现所述慢写信标信号由慢时钟域同步到快时钟域。
在上述的实施方式中,为了令慢写信标信号与快读信标信号可以一同比较,可以通过M个数字触发器实现慢写信标信号的同步,令慢写信标信号在延迟M个快时钟周期后,由慢时钟域同步到了快时钟域。
在一个可能的设计中,所述读相位跟踪模块用于根据所述慢写信标信号和快读信标信号,产生读索引控制信号,具体包括:将所述快读信标信号延迟M个快时钟周期与所述第二目标延迟时间之差,得到延迟后的快读信标信号;将所述延迟后的快读信标信号与所述延迟M个快时钟周期后的慢写信标信号进行比对;若所述延迟后的快读信标信号的波形的翻转点早于所述延迟M个快时钟周期后的慢写信标信号的波形的翻转点,产生RdEarly信号,所述RdEalry信号为表征读出第二指针的时刻早于期望时刻的标志信号;若所述延迟后的快读信标信号的波形的翻转点晚于所述延迟M个快时钟周期后的慢写信标信号的波形的翻转点,产生RdLate信号,所述RdLate信号为表征读出第二指针的时刻晚于期望时刻的标志信号。
在一个可能的设计中,所述快读索引逻辑模块还用于:在所述累计值大于或等于0时,若接收到RdEarly信号,则在累计值本应减小所述快时钟周期对应的数值时,不进行减小所述快时钟周期对应的数值的动作;在所述累计值大于或等于0时,若接收到RdLate信号,则在累计值本应减小所述快时钟周期对应的数值时,减小两个所述快时钟周期对应的数值;在所述累计值小于0时,令所述累计值加上所述慢时钟周期对应的数值,以恢复所述累计值大于或等于0的状态。
在上述的实施方式中,快读索引逻辑模块根据不同的读索引控制信号调整读出时刻,从而保持同一第二指针从被写入至被读出的时间差的稳定,维持在第二目标延迟时间。
第三方面,本申请实施例提供了一种异步FIFO电路,包括第一方面、第一方面的任一可能的设计、第二方面、第二方面的任意可能的设计中的指针同步装置、写指针逻辑模块、写满标志逻辑模块、读指针逻辑模块、读空标志逻辑模块以及双端口存储器;所述写指针逻辑模块用于将写指针发送给所述指针同步装置,以便所述指针同步装置得到同步后的写指针,并将同步后的写指针发送给所述读空标志逻辑模块;所述读空标志逻辑模块用于根据同步后的写指针以及读指针判断所述双端口存储器中的数据是否被读空;所述读指针逻辑模块用于将所述读指针发送给所述指针同步装置,以便所述指针同步装置得到同步后的读指针,并将同步后的读指针发送给所述写满标志逻辑模块;所述写满标志逻辑模块用于根据同步后的读指针以及写指针判断所述双端口存储器中是否被数据写满;所述双端口存储器用于接收所述写指针逻辑模块的写指针,并向所述写指针指向的位置写数据;还用于接收所述读指针逻辑模块的读指针,并从所述读指针指向的位置将数据读出。
在上述的实施方式中,无论是写指针向读指针所在的时钟域的同步,还是读指针向写指针所在的时钟域的同步,均可以通过第一方面以及第一方面的任一可能的设计中的指针同步装置进行,并在跨时钟域同步完成后,由写满标志逻辑模块执行是否写满的判断,由读空标志逻辑模块执行是否读空的判断。指针同步装置的存在缩短了同一指针从被写入到被读出的时间差,从而加快了写满或读空的判断,提高了硬件的工作效率。
第四方面,本申请提供了一种处理器***,包括第二方面所述的异步FIFO电路、第一电气元件以及第二电气元件,所述第一电气元件以及第二电气元件通过所述异步FIFO电路连通,所述第一电气元件工作在快时钟周期,所述第二电气元件工作在慢时钟周期。
第五方面,本申请提供一种指针同步方法,用于通过指针同步装置实现指针在不同时钟域之间的同步,所述时钟域包括快时钟域和慢时钟域,所述指针同步装置包括存储器、写索引逻辑模块和读索引逻辑模块,所述存储器分别与所述写索引逻辑模块和读索引逻辑模块连接,所述写索引逻辑模块的时钟周期与所述快时钟域的快时钟周期相同,所述读索引逻辑模块的时钟周期与所述慢时钟域的慢时钟周期相同;所述方法包括:所述写索引逻辑模块根据所述快时钟周期和慢时钟周期确定写入时刻,并在所述写入时刻向所述存储器写入第一指针;所述读索引逻辑模块根据所述慢时钟周期,从所述存储器中读取第一指针;其中,所述写入时刻满足:使得同一第一指针从被所述写索引逻辑模块写入存储器到被所述读索引逻辑模块从存储器读出的时间差为第一目标延迟时间。
在一个可能的设计中,所述写索引逻辑模块根据所述快时钟周期和慢时钟周期确定写入时刻,并在所述写入时刻向所述存储器写入第一指针,包括:每经过一个快时钟周期,便令计数值减小所述快时钟周期对应的数值,所述计数值的初始值为所述慢时钟周期对应的数值;在所述计数值小于0时,向所述存储器写入一个第一指针,并令所述计数值增加所述慢时钟周期对应的数值,所述计数值小于0时对应的时刻为所述写入时刻。
在一个可能的设计中,所述存储器包括预设数量个存储空间,每个所述存储空间用于存储一个指针;所述在所述写入时刻向所述存储器写入第一指针,包括:在所述写入时刻顺次向所述存储器中的预设数量个存储空间中的一个存储空间写入第一指针;所述根据所述慢时钟周期,从所述存储器中读取第一指针,包括:根据所述慢时钟周期,顺次从所述存储器中的预设数量个存储空间中的一个存储空间读取第一指针。
在一个可能的设计中,每个所述存储空间具有对应的缓存地址,所述指针同步装置还包括:写索引信标模块、读索引信标模块以及相位跟踪模块,所述写索引信标模块、读索引信标模块均与所述相位跟踪模块连接,所述相位跟踪模块还与所述写索引逻辑模块连接;所述方法还包括:所述写索引信标模块产生写信标信号,且在每当所述写索引逻辑模块向目标缓存地址对应的存储空间写入N次第一指针时,令所述写信标信号发生翻转;所述读索引信标模块产生读信标信号,且在每当所述读索引逻辑模块从所述目标缓存地址对应的存储空间读取N次第一指针时,令所述读信标信号发生翻转;所述相位跟踪模块根据所述写信标信号和读信标信号,产生写索引控制信号,并将所述写索引控制信号发送到所述写索引逻辑模块,以使所述写索引逻辑模块调整所述写入时刻。
在一个可能的设计中,所述指针同步装置还包括:M个第一寄存器,所述M个第一寄存器顺次连接于所述读索引信标模块与所述相位跟踪模块之间,在所述相位跟踪模块根据所述写信标信号和读信标信号,产生写索引控制信号,并将所述写索引控制信号发送到所述写索引逻辑模块之前,所述方法还包括:所述M个第一寄存器将所述读索引信标模块产生的读信标信号延迟M个快时钟周期后再传送给所述相位跟踪模块,以实现所述读信标信号由慢时钟域同步到快时钟域。
在一个可能的设计中,所述相位跟踪模块根据所述写信标信号和读信标信号,产生写索引控制信号,包括:将所述写信标信号延迟M个快时钟周期与所述第一目标延迟时间之和,得到延迟后的写信标信号;将所述延迟后的写信标信号与所述延迟M个快时钟周期后的读信标信号进行比对;若所述延迟后的写信标信号的波形的翻转点早于所述延迟M个快时钟周期后的读信标信号的波形的翻转点,产生WrEarly信号,所述WrEarly信号为表征写入第一指针的时刻早于期望时刻的标志信号;若所述延迟后的写信标信号的波形的翻转点晚于所述延迟M个快时钟周期后的读信标信号的波形的翻转点,产生WrLate信号,所述WrEarly信号为表征写入第一指针的时刻晚于期望时刻的标志信号。
在一个可能的设计中,所述方法还包括:在所述计数值大于或等于0时,若所述写索引逻辑模块接收到WrEarly信号,则在计数值本应减小所述快时钟周期对应的数值时,不进行减小所述快时钟周期对应的数值的动作;在所述计数值大于或等于0时,若所述写索引逻辑模块接收到WrLate信号,则在计数值本应减小所述快时钟周期对应的数值时,减小两个所述快时钟周期对应的数值;在所述计数值小于0时,所述写索引逻辑模块令所述计数值加上所述慢时钟周期对应的数值,以恢复所述计数值大于或等于0的状态。
在一个可能的设计中,所述指针同步装置还包括:第一转换模块、第二转换模块以及L个第二寄存器,所述L个第二寄存器顺次连接于所述第一转换模块以及第二转换模块之间;所述方法还包括:所述第一转换模块将运行于慢时钟域的第二指针由二进制码转换为格雷码;所述L个第二寄存器将所述表征第二指针的格雷码延迟L个快时钟周期后再发送给所述第二转换模块;所述第二转换模块将所述延迟L个快时钟周期的格雷码转换为二进制码,并输出由所述格雷码转换来的二进制码,完成所述第二指针的同步,其中,所述L个快时钟周期为所述第二指针同步的延迟时间。
第六方面,本申请实施例提供了一种指针同步方法,用于通过指针同步装置实现指针在不同时钟域之间的同步,所述时钟域包括快时钟域和慢时钟域,所述装置包括缓存器、慢写索引逻辑模块和快读索引逻辑模块,所述缓存器分别与所述慢写索引逻辑模块和快读索引逻辑模块连接,所述慢写索引逻辑模块的时钟周期与所述慢时钟域的慢时钟周期相同,所述快读索引逻辑模块的时钟周期与所述快时钟域的快时钟周期相同;所述方法包括:所述慢写索引逻辑模块根据所述慢时钟周期,向所述缓存器写入第二指针;所述快读索引逻辑模块根据所述快时钟周期和慢时钟周期确定读出时刻,并在所述读出时刻从所述缓存器读取第二指针;其中,所述读出时刻满足:使得同一第二指针从被所述慢写索引逻辑模块写入缓存器到被所述快读索引逻辑模块从缓存器读出的时间差为第二目标延迟时间。
在一个可能的设计中,所述快读索引逻辑模块根据所述快时钟周期和慢时钟周期确定读出时刻,并在所述读出时刻从所述缓存器读取第二指针,包括:每经过一个快时钟周期,便令累计值减小该快时钟周期对应的数值,所述累计值的初始值为所述慢时钟周期对应的数值;在所述累计值小于0时,从所述缓存器读取一个第二指针,并令所述累计值增加所述慢时钟周期对应的数值,所述累计值小于0时对应的时刻为所述读出时刻。
在一个可能的设计中,所述缓存器包括预设数量个缓存空间,每个所述缓存空间用于存储一个指针;所述慢写索引逻辑模块根据所述慢时钟周期,向所述缓存器写入第二指针,具体包括:慢写索引逻辑模块根据所述慢时钟周期,顺次向所述缓存器中的预设数量个缓存空间中的一个缓存空间写入第二指针;所述快读索引逻辑模块根据所述快时钟周期和慢时钟周期确定读出时刻,并在所述读出时刻从所述缓存器读取第二指针,具体包括:读索引逻辑模块根据所述读出时刻,顺次从所述缓存器中的预设数量个缓存空间中的一个缓存空间读取第二指针。
在一个可能的设计中,所述方法还包括:慢写索引信标模块产生慢写信标信号,且在每当所述慢写索引逻辑模块向目标缓存地址对应的缓存空间写入N次第二指针时,令所述慢写信标信号发生翻转;所述快读索引信标模块产生快读信标信号,且在每当所述快读索引逻辑模块从所述目标缓存地址对应的缓存空间读取N次第二指针时,令所述快读信标信号发生翻转;所述读相位跟踪模块根据所述慢写信标信号和快读信标信号,产生读索引控制信号,并将所述读索引控制信号发送到所述快读索引逻辑模块,以使所述快读索引逻辑模块调整所述读出时刻。
在一个可能的设计中,所述读相位跟踪模块根据所述慢写信标信号和快读信标信号,产生读索引控制信号,具体包括:将所述快读信标信号延迟M个快时钟周期与所述第二目标延迟时间之差,得到延迟后的快读信标信号;将所述延迟后的快读信标信号与所述延迟M个快时钟周期后的慢写信标信号进行比对;若所述延迟后的快读信标信号的波形的翻转点早于所述延迟M个快时钟周期后的慢写信标信号的波形的翻转点,产生RdEarly信号,所述RdEalry信号为表征读出第二指针的时刻早于期望时刻的标志信号;若所述延迟后的快读信标信号的波形的翻转点晚于所述延迟M个快时钟周期后的慢写信标信号的波形的翻转点,产生RdLate信号,所述RdLate信号为表征读出第二指针的时刻晚于期望时刻的标志信号。
在一个可能的设计中,所述方法还包括:在所述累计值大于或等于0时,若快读索引逻辑模块接收到RdEarly信号,则在累计值本应减小所述快时钟周期对应的数值时,不进行减小所述快时钟周期对应的数值的动作;在所述累计值大于或等于0时,若快读索引逻辑模块接收到RdLate信号,则在累计值本应减小所述快时钟周期对应的数值时,减小两个所述快时钟周期对应的数值;在所述累计值小于0时,快读索引逻辑模块令所述累计值加上所述慢时钟周期对应的数值,以恢复所述累计值大于或等于0的状态。
为使本申请实施例所要实现的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了现有技术中的指针同步装置的示意性结构框图;
图2示出了本申请实施例提供的指针同步装置的示意性结构框图;
图3示出了获取写信标信号的波形图;
图4示出了获取读信标信号的波形图;
图5示出了获取WrEarly信号的波形图;
图6示出了获取WrLate信号的波形图;
图7示出了指针同步装置中的写索引逻辑模块的示意性结构框图;
图8示出了本申请实施例提供的指针同步装置的一种具体实施方式的示意性结构框图;
图9示出了本申请实施例提供的异步FIFO电路的示意性结构框图;
图10示出了快握手状态机与慢握手状态机握手的时序图;
图11示出了本申请实施例提供的指针同步装置的另一种具体实施方式的示意性结构框图;
图12示出了获取慢写信标信号的波形图;
图13示出了获取快读信标信号的波形图;
图14示出了获取RdLate信号的波形图;
图15示出了获取RdEarly信号的波形图;
图16示出了指针同步装置中的快读索引逻辑模块的示意性结构框图;
图17示出了本申请实施例提供的指针同步方法的流程示意图;
图18示出了图17中步骤S110的具体步骤的流程示意图;
图19示出了本申请实施例提供的指针同步方法的部分步骤的流程示意图;
图20示出了图19中步骤S230的具体步骤的流程示意图。
具体实施方式
现有技术中,通常是通过多个DFF 11来实现指针的跨时钟域同步,请参见图1,每个DFF 11均包括输入端D、输出端Q以及CLK端,每个CLK端均连接目标时钟域的时钟信号,多个DFF 11通过输入端D和输出端Q实现串联。请参见图1,图1中最右侧的DFF 11的输入端D用于从电气元件接收指针,最右侧的DFF 11的输出端Q与图1中间位置的DFF 11的输入端D连接,中间位置的DFF 11的输出端Q与图1中最左侧的DFF 11的输入端D连接,图1中最左侧的DFF 11的输出端Q用于向另一电气元件发送指针。
输入端D接收指针,每当CLK端接收到触发信号时,输出端Q输出一个指针。其中,触发信号可以是时钟信号的波形翻转信号,例如,触发信号可以是时钟信号的上升沿,也可以是时钟信号的下降沿。
通过上述方式进行指针的跨时钟域同步时,延迟时间为DFF的数量与目标时钟域的时钟周期的乘积,若跨时钟域同步是从快时钟域向慢时钟域同步,即目标时钟域是慢时钟域,则延迟时间较长。
本申请实施例通过将指针写入存储器,并在第一目标延迟时间后将指针从存储器读出的方式来实现指针的跨时钟域同步。其中,可以按照慢时钟域的慢时钟周期将指针从存储器读出,根据快时钟域的快时钟周期与慢时钟周期确定指针的写入时刻,并令写入时刻满足同一指针从写入至读出的时间差为第一目标延迟时间,第一目标延迟时间短于DFF的数量与目标时钟域的时钟周期的乘积,从而缩短了指针跨时钟域同步的延迟时间,满足高性能处理器对数据传输的低延迟的需求。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
请参见图2,图2示出了本申请实施例提供的指针同步装置的示意性结构框图,本申请实施例提供的指针同步装置可以使指针在不同时钟域之间进行同步,时钟域包括快时钟域和慢时钟域。该指针同步装置包括存储器110、写索引逻辑模块120、读索引逻辑模块130、写索引信标模块140、读索引信标模块150以及相位跟踪模块160。写索引逻辑模块120以及读索引逻辑模块130均与存储器110连接,写索引逻辑模块120的时钟周期与快时钟域的快时钟周期相同,读索引逻辑模块130的时钟周期与慢时钟域的慢时钟周期相同。
写索引逻辑模块120用于根据快时钟周期和慢时钟周期确定写入时刻,并在写入时刻向存储器110写入第一指针。其中,第一指针是指示动作作用位置的指针,可以是指示数据写入位置的写指针,也可以是指示从一位置读取数据的读指针。第一指针的具体类型不应该理解为是对本申请的限制。
读索引逻辑模块130用于根据慢时钟周期,从存储器110中读取第一指针。
上述的写入时刻满足:使得同一第一指针从被所述写索引逻辑模块120写入存储器110到被所述读索引逻辑模块130从存储器110读出的时间差为第一目标延迟时间。第一目标延迟时间为用户期望的第一指针跨时间域同步的延迟时间,该第一目标延迟时间具体可以为两个快时钟周期所占用的时间,也可以为其他数值的延迟时间。该第一目标延迟时间在满足能将非稳态数据变为稳态数据的前提下,可以为其他数值,例如三个快时钟周期,第一目标延迟时间的具体数值不应理解为是对本申请的限制。
可选地,在一种具体实施方式中,可以通过如下方式确定上述的写入时刻:
每经过一个快时钟周期,便令计数值减小该快时钟周期对应的数值;
判断计数值是否小于0。
若计数值不小于0,则跳转到步骤:每经过一个快时钟周期,便令计数值减小该快时钟周期对应的数值;
若计数值小于0,则向存储器110写入一个第一指针,并令计数值增加慢时钟周期对应的数值,再跳转到步骤:每经过一个快时钟周期,便令计数值减小该快时钟周期对应的数值。
其中,上述的计数值小于0时对应的时刻为写入时刻,计数值的初始值为慢时钟周期对应的数值。
不妨设慢时钟周期为2.5ns,快时钟周期为1.2ns,且计数值当前值为初始值,即慢时钟周期对应的数值2.5,则在经过一个快时钟周期时,令计数值减小快时钟周期对应的数值1.2,可得当前计数值为2.5-1.2=1.3。
经判断,当前的计数值1.3不小于0,则再经过一个快时钟周期,令计数值减小快时钟周期对应的数值1.2,可得当前计数值为1.3-1.2=0.1。
经判断,当前的计数值0.1不小于0,则又经过一个快时钟周期,令计数值减小快时钟周期对应的数值1.2,可得当前计数值为0.1-1.2=-1.1。
经判断,当前的计数值-1.1小于0,则当前时刻为写入时刻,向存储器110写入一个第一指针,并令当前计数值增加慢时钟周期对应的数值,可得当前计数值为-1.1+2.5=1.4。
对当前计数值1.4,继续执行步骤:每经过一个快时钟周期,便令计数值减小该快时钟周期对应的数值。
在计数值小于0时向存储器110写入一个第一指针,是因为对于硬件来说,二进制负数较容易判断,根据二进制数的最高位即可判断某二进制数是正是负,提高了硬件执行的效率。
应当理解,可以将计数值小于0时对应的时刻作为写入时刻,也可以将计数值小于或等于0时对应的时刻作为写入时刻。
可选地,在另一种具体实施方式中,可以通过如下方式确定上述的写入时刻:若快时钟周期对应的数值为P,慢时钟周期对应的数值为i*P,则写索引逻辑模块120每间隔i个快时钟周期,向存储器110写入一个第一指针,则写入时刻为:初始时刻+k*i,其中,k为自然数。
存储器110包括预设数量个存储空间,每个存储空间用于存储一个指针,每个所述存储空间具有对应的缓存地址。
写索引逻辑模块120可以在某一写入时刻时,在预设数量个存储空间中指向一缓存地址,从而令第一指针写入该缓存地址对应的存储空间;在下一写入时刻时,顺次指向上述缓存地址的下一缓存地址,从而令第一指针写入写索引逻辑模块120当前指向的缓存地址对应的存储空间。
读索引逻辑模块130可以在经过一个慢时钟周期后,在预设数量个存储空间中指向一缓存地址,从而从该缓存地址对应的存储空间中将第一指针读出;在又经过一个慢时钟周期后,顺次指向上述缓存地址的下一缓存地址,从而从读索引逻辑模块130当前指向的缓存地址中将第一指针读出。
为了便于说明,不妨设预设数量个存储空间为6个存储空间,且6个存储空间的缓存地址分别为0、1、2、3、4、5。则:
写索引逻辑模块120可以在某一写入时刻时,在6个存储空间中指向一缓存地址,不妨设为2,从而令第一指针写入缓存地址2对应的存储空间;在下一写入时刻时,顺次指向缓存地址3,从而令第一指针写入缓存地址3对应的存储空间。
读索引逻辑模块130可以在经过一个慢时钟周期后,在6个存储空间中指向一缓存地址,不妨设为4,从而从缓存地址4对应的存储空间中将第一指针读出;在又经过一个慢时钟周期后,顺次指向缓存地址5,从而从缓存地址5中将第一指针读出。
请参见图2,写索引信标模块140、读索引信标模块150均与相位跟踪模块160连接,相位跟踪模块160还与写索引逻辑模块120连接,写索引信标模块140还与写索引逻辑模块120相通信,读索引信标模块150还与读索引逻辑模块130相通信。
写索引信标模块140用于产生写信标信号,且在每当写索引逻辑模块120向目标缓存地址对应的存储空间写入N次第一指针时,令写信标信号发生翻转。
读索引信标模块150用于产生读信标信号,且在每当读索引逻辑模块130从目标缓存地址对应的存储空间读取N次第一指针时,令读信标信号发生翻转。
上述的写索引逻辑模块120对应的目标缓存地址与读索引逻辑模块130对应的目标缓存地址相同,可以为0、1、2、3、4、5中的任意数值,不妨设为1。N可以为任意正整数,不妨设为2。
请参见图3,在写索引逻辑模块120向目标缓存地址1对应的存储空间写入第一指针时,写索引信标模块140产生的写信标信号Wbeacon发生第一次翻转;在翻转之后进行统计,在写索引逻辑模块120向目标缓存地址1对应的存储空间写入2次第一指针时,写信标信号Wbeacon发生第二次翻转。
请参见图4,在读索引逻辑模块130向目标缓存地址1对应的存储空间写入第一指针时,读索引信标模块150产生的读信标信号Rbeacon发生第一次翻转;在翻转之后进行统计,在读索引逻辑模块130向目标缓存地址1对应的存储空间写入2次第一指针时,读信标信号Rbeacon发生第二次翻转。
读索引信标模块150产生的读信标信号Rbeacon以及写索引信标模块140产生的写信标信号Wbeacon均可以发送给相位跟踪模块160。请参见图2,在读索引信标模块150与相位跟踪模块160之间还可以串联有M个第一寄存器170。M个第一寄存器170中的每个第一寄存器170均包括输入端D、输出端Q以及CLK端,每个第一寄存器170的CLK端均与快时钟周期连接。第一寄存器170可以在自身的CLK端接收到上升沿信号的时候,从自身的输出端输出接收到的数据。
因此,M个第一寄存器170可以将读索引信标模块150产生的读信标信号Rbeacon延迟M个快时钟周期后,再传送给相位跟踪模块160,以实现读信标信号由慢时钟域同步到快时钟域。
不妨设M为3,则读信标信号Rbeacon被延迟了3个快时钟周期后,得到了延迟后的读信标信号Rbeacon_Sync,相位跟踪模块160接收到的是Rbeacon_Sync,相位跟踪模块160为了将写信标信号Wbeacon与Rbeacon_Sync进行比较,将写信标信号延迟M个快时钟周期与所述第一目标延迟时间之和,得到延迟后的写信标信号Wbeacon_cmp。不妨设第一目标延迟时间为2个快时钟周期,又因为M为3,则相位跟踪模块160将写信标信号Wbeacon延迟5个快时钟周期,得到Wbeacon_cmp。
相位跟踪模块160可以比较延迟后的读信标信号Rbeacon_Sync以及延迟后的写信标信号Wbeacon_cmp,并根据比较结果,产生对应的写索引控制信号。
可选地,根据比较结果,产生对应的写索引控制信号,具体可以通过如下方式实现:
请参见图5,若延迟后的写信标信号Wbeacon_cmp的波形的翻转点早于延迟M个快时钟周期后的读信标信号Rbeacon_Sync的波形的翻转点,则产生WrEarly信号,所述WrEarly信号为表征写入第一指针的时刻早于期望时刻的标志信号,期望时刻为满足第一目标延迟时间的时刻。
请参见图6,若延迟后的写信标信号Wbeacon_cmp的波形的翻转点晚于延迟M个快时钟周期后的读信标信号Rbeacon_Sync的波形的翻转点,产生WrLate信号,所述WrEarly信号为表征写入第一指针的时刻晚于期望时刻的标志信号。
相位跟踪模块160将产生的WrEarly信号或WrLate信号发送到写索引逻辑模块120,写索引逻辑模块120根据写索引控制信号调整写入时刻。
可选地,写索引逻辑模块120根据写索引控制信号调整写入时刻,具体包括如下步骤:在所述计数值大于或等于0时,若接收到WrEarly信号,则在计数值本应减小所述快时钟周期对应的数值时,不进行减小所述快时钟周期对应的数值的动作。
在所述计数值大于或等于0时,若接收到WrLate信号,则在计数值本应减小所述快时钟周期对应的数值时,减小两个所述快时钟周期对应的数值。
在所述计数值小于0时,令所述计数值加上所述慢时钟周期对应的数值,以恢复所述计数值大于或等于0的状态。
请参见图7,图7示出了6个与门,6个与门中的AND 1、AND 2、AND 3对应计数值大于或等于0;AND 4、AND 5、AND 6对应计数值小于0。
对于AND 1,在条件:计数值大于或等于0,且接收到WrEarly信号满足时,在计数值本应减小所述快时钟周期对应的数值时,不执行动作,直接将计数值重新输入到AND 1中。
对于AND 2,在条件:计数值大于或等于0,且接收到WrLate信号满足时,在计数值本应减小所述快时钟周期对应的数值时,通过减法器123在计数值的基础上减少两个所述快时钟周期对应的数值。
对于AND 3,在条件:计数值大于或等于0,且既未接收到WrEarly信号,也未接收到WrLate信号满足时,在计数值本应减小所述快时钟周期对应的数值时,通过减法器124减少一个快时钟周期对应的数值。
对于AND 4,在条件:计数值小于0,且接收到WrEarly信号满足时,先利用加法器127令当前计数值增加一个慢时钟周期对应的数值,然后在计数值本应减小所述快时钟周期对应的数值时,不执行动作,直接将计数值重新输入到AND 4中。
对于AND 5,在条件:计数值小于0,且接收到WrLate信号满足时,先利用加法器127令当前计数值增加一个慢时钟周期对应的数值,然后在计数值本应减小所述快时钟周期对应的数值时,通过减法器125在计数值的基础上减少两个所述快时钟周期对应的数值。
对于AND 6,在条件:计数值小于0,且既未接收到WrEarly信号,也未接收到WrLate信号满足时,先利用加法器127令当前计数值增加一个慢时钟周期对应的数值,然后在计数值本应减小所述快时钟周期对应的数值时,通过减法器126减少一个快时钟周期对应的数值。
上述六个与门中的任一个的结果通过或门OR传递到第一DFF 121,由第一DFF 121在快时钟周期产生上升沿的时候输出,该输出会返回上述六个与门的输入端,也会在计数值小于0时,通过选择器MUX选择写索引逻辑模块120指向存储器110的存储空间的缓存地址+1,并通过第二DFF 122存储写索引逻辑模块120指向的缓存地址。
图2示出的指针同步装置100还包括快握手状态机180和慢握手状态机190。
本申请实施例需要由软件正确配置快时钟周期和慢时钟周期,在软件配置完成后,写索引逻辑模块120和读索引逻辑模块130可以开始工作。由于快时钟周期和慢时钟周期的寄存器都在快时钟域,因此,软件配置完成后,由快时钟域的快握手状态机180和慢握手状态机190进行握手,然后启动写索引逻辑模块120和读索引逻辑模块130。另外如果欲将写索引逻辑模块120和读索引逻辑模块130停下,可以通过软件配置Stop寄存器(图未示),具体可以通过快握手状态机180和慢握手状态机190的握手实现停止写索引逻辑模块120和读索引逻辑模块130。
请参见图10,图10示出了在一种具体实施方式中快握手状态机180和慢握手状态机190的握手过程。图10的左侧为快握手状态机180的状态,右侧为慢握手状态机190的状态,中间为两个状态机之间的握手信号。
T1时刻,快握手状态机复位,快握手状态机处于空闲状态。输出FastStopOut=1信号给慢握手状态机。
T2时刻,慢握手状态机复位,慢握手状态机处于空闲状态。输出SlowStopOut=1信号给快握手状态机。
T3时刻,SlowStopOut到达快握手状态机。快握手状态机确认慢握手状态机处于空闲状态。
T4时刻,FastStopOut到达慢握手状态机。慢握手状态机确认快握手状态机处于空闲状态。
T5时刻,软件将Stop寄存器配置为0,快握手状态机进入等待时钟周期配置状态。输出FastStopOut=0,FastActOut=1。
T6时刻,FastStopOut=0达到慢握手状态机。慢握手状态机确认快握手状态机已经进入等待时钟周期配置状态。慢握手状态机进入等待时钟周期配置状态。输出SlowStopOut=0。
T7时刻,SlowStopOut达到快握手状态机,快握手状态机确认慢握手状态机已经进入等待时钟配置状态。
T8时刻,软件配置完时钟周期,并且配置Freq_Valid=1。快握手状态机进入开始写索引逻辑状态。写索引逻辑模块120开始工作。输出FastAckOut=0给慢握手状态机。
T9时刻,慢握手状态机收到FastActOut=0,确认快握手状态机已经进入开始写索引逻辑状态,进入开始读索引逻辑状态。读索引逻辑模块120开始工作。
请参见图8,在一种具体实施方式中,本申请实施例提供的指针同步装置100还包括:第一转换模块101、第二转换模块103以及L个第二寄存器102,L个第二寄存器102顺次连接于所述第一转换模块101以及第二转换模块103之间。
第一转换模块101用于将运行于慢时钟域的第二指针由二进制码转换为格雷码。
L个第二寄存器102用于将表征第二指针的格雷码延迟L个快时钟周期后再发送给第二转换模块103。
第二转换模块103用于将所述延迟L个快时钟周期的格雷码转换为二进制码,并输出由所述格雷码转换来的二进制码,完成所述第二指针的同步,其中,所述L个快时钟周期为所述第二指针同步的延迟时间。
可选地,第二指针的跨时钟域同步可以通过上述方式进行,也可以通过如下方式进行:
参见图11,在一种具体实施方式中,该指针同步装置100可以包括缓存器104、慢写索引逻辑模块105、快读索引逻辑模块106、慢写索引信标模块107、快读索引信标模块108以及读相位跟踪模块109。慢写索引逻辑模块105以及快读索引逻辑模块106均与缓存器104连接,慢写索引逻辑模块105的时钟周期与慢时钟域的慢时钟周期相同,快读索引逻辑模块108的时钟周期与快时钟域的快时钟周期相同。
慢写索引逻辑模块105用于根据慢时钟周期,往缓存器104中写入第二指针。
快读索引逻辑模块106用于根据快时钟周期和慢时钟周期确定读出时刻,并在读出时刻从缓存器104中读出第二指针。
快读索引逻辑模块106确定读出时刻的方法与写索引逻辑模块120确定写入时刻的方法类似。每经过一个快时钟周期,便令累计值减小该快时钟周期对应的数值;
判断累计值是否小于0。
若累计值不小于0,则跳转到步骤:每经过一个快时钟周期,便令累计值减小该快时钟周期对应的数值;
若累计值小于0,则从缓存器104读出一个第二指针,并令累计值增加慢时钟周期对应的数值,再跳转到步骤:每经过一个快时钟周期,便令累计值减小该快时钟周期对应的数值。
慢写索引信标模块107产生慢写信标信号。类似于写索引模块140,每当慢写索引逻辑模块105向目标缓存地址对应的存储空间写入N次第二指针时,令慢写信标信号发生翻转。产生写信标的波形见图12.
快读索引信标模块108用于产生快读信标信号。每当快读索引逻辑模块106从目标缓存地址对应的存储空间读取N次第二指针时,令快读信标信号发生翻转。产生读信标的波形见图13.
快读索引信标模块108产生的快读信标信号FRbeacon以及慢写索引信标模块107产生的慢写信标信号SWbeacon均可以发送给读相位跟踪模块109。
慢写索引信标模块107产生的慢写信标信号SWBeacon经过M个DFF 102后再传送给读相位跟踪模块109,以实现慢写信标信号由慢时钟域同步到快时钟域。
不妨设M为3,则慢写信标信号SWbeacon被延迟了3个快时钟周期后,得到了延迟后的慢写信标信号SWbeacon_Sync,读相位跟踪模块109接收到的是SWbeacon_Sync。不妨设第二目标延迟时间为2个快时钟周期,SWbeacon_sync已经被延迟了3个快时钟周期,FRbeacon需要延迟一个快时钟周期得到FRbeacon_cmp。将SWbeacon_sync和FRbeacon_cmp在读相位跟踪模块109中进行比较。并根据比较结果,产生对应的读索引控制信号。
可选地,根据比较结果,产生对应的写索引控制信号,具体可以通过如下方式实现:
请参见图14,若延迟后的快读信标信号FRbeacon_cmp的波形的翻转点晚于延迟M个快时钟周期后的慢写信标信号SWbeacon_Sync的波形的翻转点,则产生RdLate信号,所述RdLate信号为表征读出第二指针的时刻点晚于期望时刻的标志信号,期望时刻为满足第二目标延迟时间的时刻。
请参见图15,若延迟后的快读信标信号FRbeacon_cmp的波形的翻转点早于延迟M个快时钟周期后的慢写信标信号SWbeacon_Sync的波形的翻转点,产生RdEarly信号,所述RdEalry信号为表征读出第二指针的时刻早于期望时刻的标志信号。
读相位跟踪模块109将产生的RdLate信号或RdEarly信号发送到快读索引逻辑模块106,快读索引逻辑模块106根据读索引控制信号调整读出时刻。
可选地,快读索引逻辑模块106根据读索引控制信号调整读出时刻,具体包括如下步骤:在所述累计值大于或等于0时,若接收到RdEarly信号,则在累计值本应减小所述快时钟周期对应的数值时,不进行减小所述快时钟周期对应的数值的动作。
在所述累计值大于或等于0时,若接收到RdLate信号,则在累计值本应减小所述快时钟周期对应的数值时,减小两个所述快时钟周期对应的数值。
在所述累计值小于0时,令所述累计值加上所述慢时钟周期对应的数值,以恢复所述累计值大于或等于0的状态。
请参见图16,示出了6个与门,6个与门中的AND 7、AND 8、AND 9对应累计值大于或等于0;AND 10、AND 11、AND12对应累计值小于0。
对于AND 7,在条件:累计值大于或等于0,且接收到RdEarly信号满足时,在累计值本应减小所述快时钟周期对应的数值时,不执行动作,直接将累计值重新输入到AND 1中。
对于AND 8,在条件:累计值大于或等于0,且接收到RdLate信号满足时,在累计值本应减小所述快时钟周期对应的数值时,通过减法器在累计值的基础上减少两个所述快时钟周期对应的数值。
对于AND9,在条件:累计值大于或等于0,且既未接收到RdEarly信号,也未接收到RdLate信号满足时,在累计值本应减小所述快时钟周期对应的数值时,通过减法器减少一个快时钟周期对应的数值。
对于AND10,在条件:累计值小于0,且接收到RdEarly信号满足时,先利用加法器令当前累计值增加一个慢时钟周期对应的数值,然后在累计值本应减小所述快时钟周期对应的数值时,不执行动作,直接将累计值重新输入到AND 4中。
对于AND 11,在条件:累计值小于0,且接收到RdLate信号满足时,先利用加法器令当前累计值增加一个慢时钟周期对应的数值,然后在累计值本应减小所述快时钟周期对应的数值时,通过减法器在累计值的基础上减少两个所述快时钟周期对应的数值。
对于AND 12,在条件:累计值小于0,且既未接收到RdEarly信号,也未接收到RdLate信号满足时,先利用加法器令当前累计值增加一个慢时钟周期对应的数值,然后在累计值本应减小所述快时钟周期对应的数值时,通过减法器减少一个快时钟周期对应的数值。
上述六个与门中的任一个的结果通过或门OR传递到第三DFF 123,由第三DFF123在快时钟周期产生上升沿的时候输出,该输出会返回上述六个与门的输入端,也会在累计值小于0时,通过选择器MUX选择快读索引逻辑模块106指向缓存器104的存储空间的缓存地址+1,并通过第四DFF 124存储快读索引逻辑模块106指向的缓存地址。
请参见图9,图9示出了本申请实施例提供的一种异步FIFO电路10,该异步FIFO电路10包括上述的指针同步装置100、写指针逻辑模块200、写满标志逻辑模块300、读指针逻辑模块400、读空标志逻辑模块500以及双端口存储器600。
写指针逻辑模块200用于将写指针发送给指针同步装置100,以便指针同步装置100得到同步后的写指针,并将同步后的写指针发送给读空标志逻辑模块500。
读空标志逻辑模块500用于根据同步后的写指针以及读指针判断双端口存储器600中的数据是否被读空。
可选地,读空标志逻辑模块500可以接收同步后的写指针,并判断同步后的写指针指向的地址与读指针指向的地址是否一致,若是,则表示双端口存储器600被读空,读空标志逻辑模块500可以输出空标志。
读指针逻辑模块400用于将读指针发送给指针同步装置100,以便指针同步装置100得到同步后的读指针,并将同步后的读指针发送给写满标志逻辑模块300。
写满标志逻辑模块300用于根据同步后的读指针以及写指针判断所述双端口存储器600中是否被数据写满。
可选地,写满标志逻辑模块300可以接收同步后的读指针,并判断同步后的读指针指向的地址与写指针指向的地址是否一致,若是,则表示双端口存储器600被写满,写满标志逻辑模块300可以输出满标志。
双端口存储器600用于接收所述写指针逻辑模块200的写指针,并向所述写指针指向的位置写数据;还用于接收所述读指针逻辑模块400的读指针,并从所述读指针指向的位置将数据读出。
写指针向读指针所在的时钟域的同步,以及读指针向写指针所在的时钟域的同步,均可以通过上述的指针同步装置100进行,并在跨时钟域同步完成后,由写满标志逻辑模块300执行是否写满的判断,由读空标志逻辑模块500执行是否读空的判断。指针同步装置100的存在缩短了同一指针从被写入到被读出的时间差,从而加快了写满或读空的判断,提高了硬件的工作效率。
本申请实施例还提供了一种处理器***(图未示),包括异步FIFO电路、第一电气元件(图未示)以及第二电气元件(图未示),所述第一电气元件以及第二电气元件通过所述异步FIFO电路连通,所述第一电气元件工作在快时钟周期,所述第二电气元件工作在慢时钟周期。
请参见图17,图17示出了本申请实施例提供的指针同步方法的流程示意图,该方法由上述的指针同步装置100执行,具体包括如下步骤S110至步骤S120:
步骤S110,写索引逻辑模块120根据所述快时钟周期和慢时钟周期确定写入时刻,并在所述写入时刻向所述存储器110写入第一指针。
存储器110包括预设数量个存储空间,每个所述存储空间用于存储一个指针;在向存储器110写入第一指针时,根据写入时刻顺次向存储器110中的预设数量个存储空间中的一个存储空间写入第一指针。
可选地,在一种具体实施方式中,请参见图18,图18示出了步骤S110的具体步骤,包括如下步骤S111至步骤S112。
步骤S111,每经过一个快时钟周期,便令计数值减小所述快时钟周期对应的数值,所述计数值的初始值为所述慢时钟周期对应的数值。
步骤S112,在所述计数值小于0时,向所述存储器110写入一个第一指针,并令所述计数值增加所述慢时钟周期对应的数值,所述计数值小于0时对应的时刻为所述写入时刻。
通过上述方式,可以使得写索引逻辑模块120与读索引逻辑模块130在工作在各自的时钟周期的前提下,写入指针数据和读出指针数据的速度相近,在速度相近的情况下更便于计算延迟时间。
步骤S120,读索引逻辑模块130根据所述慢时钟周期,从所述存储器110中读取第一指针,写入时刻满足:使得同一第一指针从被所述写索引逻辑模块120写入存储器110到被所述读索引逻辑模块130从存储器110读出的时间差为第一目标延迟时间。
写索引逻辑模块120所处的时钟周期与慢时钟域的慢时钟周期相同,读索引逻辑模块130所处的时钟周期与快时钟域的快时钟周期相同,读索引逻辑模块130根据快时钟周期与慢时钟周期确定将第一指针写入存储器110的写入时刻,写索引逻辑模块120根据慢时钟周期从存储器110读取第一指针,写入时刻的确定可以令同一第一指针从被写入到被读出的时间差为第一目标延迟时间,该第一目标延迟时间为用户设置的延迟时间,短于现有技术中指针跨时钟域同步的延迟时间,从而可以满足高性能处理器对数据传输的低延迟的需求。
从存储器110中读取第一指针时,可以从所述存储器110中的预设数量个存储空间顺次读取第一指针。
请参见图19,本申请实施例还包括如下步骤S210至步骤S230:
步骤S210,写索引信标模块140产生写信标信号,且在每当所述写索引逻辑模块120向目标缓存地址对应的存储空间写入N次第一指针时,令所述写信标信号发生翻转。
步骤S220,读索引信标模块150产生读信标信号,且在每当所述读索引逻辑模块130从所述目标缓存地址对应的存储空间读取N次第一指针时,令所述读信标信号发生翻转。
步骤S230,相位跟踪模块160根据所述写信标信号和读信标信号,产生写索引控制信号,并将所述写索引控制信号发送到所述写索引逻辑模块120,以使所述写索引逻辑模块120调整所述写入时刻。
写索引信标模块140可以在写索引逻辑模块120每向目标缓存地址写入N次第一指针时,进行一次写信标信号的翻转,从而生成翻转点在目标缓存地址的写信标信号;读索引信标模块150可以在读索引逻辑模块130每从同一目标缓存地址对应的存储空间读取N次第一指针时,进行一次读信标信号的翻转,从而生成翻转点在同一目标缓存地址的读信标信号。写信标信号与读信标信号均可以传递给相位跟踪模块160,以便相位跟踪模块160根据两者的时间差,产生写索引控制信号,该写索引控制信号可以被发送给写索引逻辑模块120,以便写索引逻辑模块120对写入时刻进行调整。通过读信标信号与写信标信号的反馈,调整写入时刻,从而令同一第一指针从被写入至被读出的时间差稳定维持在第一目标延迟时间,提高了第一目标延迟时间的稳定性。
可选地,在步骤S230之前,还可以包括如下步骤:M个第一寄存器170将所述读索引信标模块150产生的读信标信号延迟M个快时钟周期后再传送给所述相位跟踪模块160,以实现所述读信标信号由慢时钟域同步到快时钟域。
为了令读信标信号与写信标信号可以一同比较可以通过M个第一寄存器170实现读信标信号的同步,令读信标信号在延迟M个快时钟周期后,由慢时钟域同步到了快时钟域。
可选地,请参见图20,步骤S230具体可以包括如下步骤S231至步骤S234:
步骤S231,将所述写信标信号延迟M个快时钟周期与所述第一目标延迟时间之和,得到延迟后的写信标信号。
步骤S232,将所述延迟后的写信标信号与所述延迟M个快时钟周期后的读信标信号进行比对。
步骤S233,若所述延迟后的写信标信号的波形的翻转点早于所述延迟M个快时钟周期后的读信标信号的波形的翻转点,产生WrEarly信号,所述WrEarly信号为表征写入第一指针的时刻早于期望时刻的标志信号。
步骤S234,若所述延迟后的写信标信号的波形的翻转点晚于所述延迟M个快时钟周期后的读信标信号的波形的翻转点,产生WrLate信号,所述WrEarly信号为表征写入第一指针的时刻晚于期望时刻的标志信号。
相位跟踪模块160接收到延迟M个快时钟周期后的读信标信号之后,将写信标信号先同样延迟M个快时钟周期,再延迟第一目标延迟时间,然后再将两者进行比较,若两者的波形对齐,则说明同一第一指针从写入至读出的时间差刚好是第一目标延迟时间;若延迟后的写信标信号的波形的翻转点早于延迟后的读信标信号的波形的翻转点,则说明写入的时间较早,产生对应的写索引控制信号WrEarly信号;若延迟后的写信标信号的波形的翻转点晚于延迟后的读信标信号的波形的翻转点,则说明写入的时间较晚,产生对应的写索引控制信号WrLate信号。
写索引逻辑模块120根据接收到的写索引控制信号调整所述写入时刻,具体可以包括如下步骤:在所述计数值大于或等于0时,若所述写索引逻辑模块120接收到WrEarly信号,则在计数值本应减小所述快时钟周期对应的数值时,不进行减小所述快时钟周期对应的数值的动作;在所述计数值大于或等于0时,若所述写索引逻辑模块120接收到WrLate信号,则在计数值本应减小所述快时钟周期对应的数值时,减小两个所述快时钟周期对应的数值;在所述计数值小于0时,所述写索引逻辑模块120令所述计数值加上所述慢时钟周期对应的数值,以恢复所述计数值大于或等于0的状态。
写索引逻辑模块120在计数值大于或等于0,且接收到WrEarly信号的情况下,在计数值本应减小快时钟周期对应的数值时,不进行减小快时钟周期对应的数值的动作,从而延长了计数值达到小于0状态的时间,进而推迟了将第一指针写入存储器110的写入时刻;写索引逻辑模块120在计数值大于或等于0,且接收到WrLate信号的情况下,在计数值本应减小快时钟周期对应的数值时,额外多减小一个快时钟周期对应的数值,从而缩短了计数值到达小于0状态的时间,进而提早了将第一指针写入存储器110的写入时刻;在计数值小于0时,令计数值加上慢时钟周期对应的数值,从而使计数值恢复成大于或等于0的状态。写索引逻辑模块120根据不同的写索引控制信号调整写入时刻,从而保持同一第一指针从被写入至被读出的时间差的稳定,维持在第一目标延迟时间。
在一种具体实施方式中,本申请实施例还包括如下步骤:第一转换模块101将运行于慢时钟域的第二指针由二进制码转换为格雷码;L个第二寄存器102将所述表征第二指针的格雷码延迟L个快时钟周期后再发送给所述第二转换模块103;第二转换模块103将所述延迟L个快时钟周期的格雷码转换为二进制码,并输出由所述格雷码转换来的二进制码,完成所述第二指针的同步,其中,所述L个快时钟周期为所述第二指针同步的延迟时间。
对于从慢时钟域向快时钟域同步的第二指针,由于目标时钟域是快时钟域,因此可以通过L个第二寄存器102来实现两者之间的同步,在保持实现结构简单的情况下,令第二指针的跨时钟域的同步依然有着较低的延迟时间。
在一种具体实施方式中,本申请实施例提供的指针同步方法具体还可以包括如下步骤:
所述慢写索引逻辑模块根据所述慢时钟周期,向所述缓存器写入第二指针;所述快读索引逻辑模块根据所述快时钟周期和慢时钟周期确定读出时刻,并在所述读出时刻从所述缓存器读取第二指针;其中,所述读出时刻满足:使得同一第二指针从被所述慢写索引逻辑模块写入缓存器到被所述快读索引逻辑模块从缓存器读出的时间差为第二目标延迟时间。
读出时刻的确定可以令第二指针从被写入到被读出的时间差为第二目标延迟时间,该第二目标延迟时间为用户设置的延迟时间,可以短于现有技术中指针跨时钟域同步的延迟时间,例如为两个快时钟周期,从而可以满足高性能处理器对数据传输的低延迟的需求。
在本申请所提供的实施例中,应该理解到,所揭露设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (24)
1.一种指针同步装置,其特征在于,用于实现指针在不同时钟域之间的同步,所述时钟域包括快时钟域和慢时钟域,所述装置包括存储器、写索引逻辑模块和读索引逻辑模块,所述存储器分别与所述写索引逻辑模块和读索引逻辑模块连接,所述写索引逻辑模块的时钟周期与所述快时钟域的快时钟周期相同,所述读索引逻辑模块的时钟周期与所述慢时钟域的慢时钟周期相同;
所述写索引逻辑模块用于根据所述快时钟周期和慢时钟周期确定写入时刻,并在所述写入时刻向所述存储器写入第一指针;
所述读索引逻辑模块用于根据所述慢时钟周期,从所述存储器中读取第一指针;
其中,所述写入时刻满足:使得同一第一指针从被所述写索引逻辑模块写入存储器到被所述读索引逻辑模块从存储器读出的时间差为第一目标延迟时间。
2.根据权利要求1所述的指针同步装置,其特征在于,所述写索引逻辑模块用于:根据所述快时钟周期和慢时钟周期确定写入时刻,并在所述写入时刻向所述存储器写入第一指针,具体包括:
每经过一个快时钟周期,便令计数值减小所述快时钟周期对应的数值,所述计数值的初始值为所述慢时钟周期对应的数值;
在所述计数值小于0时,向所述存储器写入一个第一指针,并令所述计数值增加所述慢时钟周期对应的数值,所述计数值小于0时对应的时刻为所述写入时刻。
3.根据权利要求1所述的指针同步装置,其特征在于,所述存储器包括预设数量个存储空间,每个所述存储空间用于存储一个指针;
所述写索引逻辑模块具体用于根据所述写入时刻顺次向所述存储器中的预设数量个存储空间中的一个存储空间写入第一指针;
所述读索引逻辑模块用于根据所述慢时钟周期,顺次从所述存储器中的预设数量个存储空间中的一个存储空间读取第一指针。
4.根据权利要求3所述的指针同步装置,其特征在于,每个所述存储空间具有对应的缓存地址,所述装置还包括:写索引信标模块、读索引信标模块以及相位跟踪模块,所述写索引信标模块、读索引信标模块均与所述相位跟踪模块连接,所述相位跟踪模块还与所述写索引逻辑模块连接;
所述写索引信标模块用于产生写信标信号,且在每当所述写索引逻辑模块向目标缓存地址对应的存储空间写入N次第一指针时,令所述写信标信号发生翻转;
所述读索引信标模块用于产生读信标信号,且在每当所述读索引逻辑模块从所述目标缓存地址对应的存储空间读取N次第一指针时,令所述读信标信号发生翻转;
所述相位跟踪模块用于根据所述写信标信号和读信标信号,产生写索引控制信号,并将所述写索引控制信号发送到所述写索引逻辑模块,以使所述写索引逻辑模块调整所述写入时刻。
5.根据权利要求4所述的指针同步装置,其特征在于,还包括M个第一寄存器,所述M个第一寄存器顺次连接于所述读索引信标模块与所述相位跟踪模块之间,用于将所述读索引信标模块产生的读信标信号延迟M个快时钟周期后再传送给所述相位跟踪模块,以实现所述读信标信号由慢时钟域同步到快时钟域。
6.根据权利要求5所述的指针同步装置,其特征在于,所述相位跟踪模块用于根据所述写信标信号和读信标信号,产生写索引控制信号,具体包括:
将所述写信标信号延迟M个快时钟周期与所述第一目标延迟时间之和,得到延迟后的写信标信号;
将所述延迟后的写信标信号与所述延迟M个快时钟周期后的读信标信号进行比对;
若所述延迟后的写信标信号的波形的翻转点早于所述延迟M个快时钟周期后的读信标信号的波形的翻转点,产生WrEarly信号,所述WrEarly信号为表征写入第一指针的时刻早于期望时刻的标志信号;
若所述延迟后的写信标信号的波形的翻转点晚于所述延迟M个快时钟周期后的读信标信号的波形的翻转点,产生WrLate信号,所述WrEarly信号为表征写入第一指针的时刻晚于期望时刻的标志信号。
7.根据权利要求6所述的指针同步装置,其特征在于,所述写索引逻辑模块还用于:
在计数值大于或等于0时,若接收到WrEarly信号,则在计数值本应减小所述快时钟周期对应的数值时,不进行减小所述快时钟周期对应的数值的动作;
在所述计数值大于或等于0时,若接收到WrLate信号,则在计数值本应减小所述快时钟周期对应的数值时,减小两个所述快时钟周期对应的数值;
在所述计数值小于0时,令所述计数值加上所述慢时钟周期对应的数值,以恢复所述计数值大于或等于0的状态。
8.一种指针同步装置,其特征在于,用于实现指针在不同时钟域之间的同步,所述时钟域包括快时钟域和慢时钟域,所述装置包括缓存器、慢写索引逻辑模块和快读索引逻辑模块,所述缓存器分别与所述慢写索引逻辑模块和快读索引逻辑模块连接,所述慢写索引逻辑模块的时钟周期与所述慢时钟域的慢时钟周期相同,所述快读索引逻辑模块的时钟周期与所述快时钟域的快时钟周期相同;
所述慢写索引逻辑模块用于根据所述慢时钟周期,向所述缓存器写入第二指针;
所述快读索引逻辑模块用于根据所述快时钟周期和慢时钟周期确定读出时刻,并在所述读出时刻从所述缓存器读取第二指针;
其中,所述读出时刻满足:使得同一第二指针从被所述慢写索引逻辑模块写入缓存器到被所述快读索引逻辑模块从缓存器读出的时间差为第二目标延迟时间。
9.根据权利要求8所述的指针同步装置,其特征在于,所述快读索引逻辑模块用于根据所述快时钟周期和慢时钟周期确定读出时刻,并在所述读出时刻从所述缓存器读取第二指针,具体包括:
每经过一个快时钟周期,便令累计值减小该快时钟周期对应的数值,所述累计值的初始值为所述慢时钟周期对应的数值;
在所述累计值小于0时,从所述缓存器读取一个第二指针,并令所述累计值增加所述慢时钟周期对应的数值,所述累计值小于0时对应的时刻为所述读出时刻。
10.根据权利要求8所述的指针同步装置,其特征在于,所述缓存器包括预设数量个缓存空间,每个所述缓存空间用于存储一个指针;
所述慢写索引逻辑模块具体用于根据所述慢时钟周期,顺次向所述缓存器中的预设数量个缓存空间中的一个缓存空间写入第二指针;
所述读索引逻辑模块用于根据所述读出时刻,顺次从所述缓存器中的预设数量个缓存空间中的一个缓存空间读取第二指针。
11.根据权利要求10所述的指针同步装置,其特征在于,每个所述缓存空间具有对应的缓存地址,所述装置还包括:慢写索引信标模块、快读索引信标模块以及读相位跟踪模块,所述慢写索引信标模块、快读索引信标模块均与所述读相位跟踪模块连接,所述读相位跟踪模块还与所述快读索引逻辑模块连接;
所述慢写索引信标模块用于产生慢写信标信号,且在每当所述慢写索引逻辑模块向目标缓存地址对应的缓存空间写入N次第二指针时,令所述慢写信标信号发生翻转;
所述快读索引信标模块用于产生快读信标信号,且在每当所述快读索引逻辑模块从所述目标缓存地址对应的缓存空间读取N次第二指针时,令所述快读信标信号发生翻转;
所述读相位跟踪模块用于根据所述慢写信标信号和快读信标信号,产生读索引控制信号,并将所述读索引控制信号发送到所述快读索引逻辑模块,以使所述快读索引逻辑模块调整所述读出时刻。
12.根据权利要求11所述的指针同步装置,其特征在于,还包括M个数字触发器,所述M个数字触发器顺次连接于所述慢写索引信标模块与所述读相位跟踪模块之间,用于将所述慢写索引信标模块产生的慢写信标信号延迟M个快时钟周期后再传送给所述读相位跟踪模块,以实现所述慢写信标信号由慢时钟域同步到快时钟域。
13.根据权利要求12所述的指针同步装置,其特征在于,所述读相位跟踪模块用于根据所述慢写信标信号和快读信标信号,产生读索引控制信号,具体包括:
将所述快读信标信号延迟M个快时钟周期与所述第二目标延迟时间之差,得到延迟后的快读信标信号;
将所述延迟后的快读信标信号与所述延迟M个快时钟周期后的慢写信标信号进行比对;
若所述延迟后的快读信标信号的波形的翻转点早于所述延迟M个快时钟周期后的慢写信标信号的波形的翻转点,产生RdEarly信号,所述RdEalry信号为表征读出第二指针的时刻早于期望时刻的标志信号;
若所述延迟后的快读信标信号的波形的翻转点晚于所述延迟M个快时钟周期后的慢写信标信号的波形的翻转点,产生RdLate信号,所述RdLate信号为表征读出第二指针的时刻晚于期望时刻的标志信号。
14.根据权利要求13所述的指针同步装置,其特征在于,所述快读索引逻辑模块还用于:
在累计值大于或等于0时,若接收到RdEarly信号,则在累计值本应减小所述快时钟周期对应的数值时,不进行减小所述快时钟周期对应的数值的动作;
在所述累计值大于或等于0时,若接收到RdLate信号,则在累计值本应减小所述快时钟周期对应的数值时,减小两个所述快时钟周期对应的数值;
在所述累计值小于0时,令所述累计值加上所述慢时钟周期对应的数值,以恢复所述累计值大于或等于0的状态。
15.一种异步FIFO电路,其特征在于,包括权利要求1-14任一项所述的指针同步装置、写指针逻辑模块、写满标志逻辑模块、读指针逻辑模块、读空标志逻辑模块以及双端口存储器;
所述写指针逻辑模块用于将写指针发送给所述指针同步装置,以便所述指针同步装置得到同步后的写指针,并将同步后的写指针发送给所述读空标志逻辑模块;
所述读空标志逻辑模块用于根据同步后的写指针以及读指针判断所述双端口存储器中的数据是否被读空;
所述读指针逻辑模块用于将所述读指针发送给所述指针同步装置,以便所述指针同步装置得到同步后的读指针,并将同步后的读指针发送给所述写满标志逻辑模块;
所述写满标志逻辑模块用于根据同步后的读指针以及写指针判断所述双端口存储器中是否被数据写满;
所述双端口存储器用于接收所述写指针逻辑模块的写指针,并向所述写指针指向的位置写数据;还用于接收所述读指针逻辑模块的读指针,并从所述读指针指向的位置将数据读出。
16.一种处理器***,其特征在于,包括权利要求15所述的异步FIFO电路、第一电气元件以及第二电气元件,所述第一电气元件以及第二电气元件通过所述异步FIFO电路连通,所述第一电气元件工作在快时钟周期,所述第二电气元件工作在慢时钟周期。
17.一种指针同步方法,其特征在于,用于通过指针同步装置实现指针在不同时钟域之间的同步,所述时钟域包括快时钟域和慢时钟域,所述指针同步装置包括存储器、写索引逻辑模块和读索引逻辑模块,所述存储器分别与所述写索引逻辑模块和读索引逻辑模块连接,所述写索引逻辑模块的时钟周期与所述快时钟域的快时钟周期相同,所述读索引逻辑模块的时钟周期与所述慢时钟域的慢时钟周期相同;
所述方法包括:
所述写索引逻辑模块根据所述快时钟周期和慢时钟周期确定写入时刻,并在所述写入时刻向所述存储器写入第一指针;
所述读索引逻辑模块根据所述慢时钟周期,从所述存储器中读取第一指针;
其中,所述写入时刻满足:使得同一第一指针从被所述写索引逻辑模块写入存储器到被所述读索引逻辑模块从存储器读出的时间差为第一目标延迟时间。
18.根据权利要求17所述的方法,其特征在于,所述写索引逻辑模块根据所述快时钟周期和慢时钟周期确定写入时刻,并在所述写入时刻向所述存储器写入第一指针,包括:
每经过一个快时钟周期,便令计数值减小所述快时钟周期对应的数值,所述计数值的初始值为所述慢时钟周期对应的数值;
在所述计数值小于0时,向所述存储器写入一个第一指针,并令所述计数值增加所述慢时钟周期对应的数值,所述计数值小于0时对应的时刻为所述写入时刻。
19.根据权利要求17所述的方法,其特征在于,所述存储器包括预设数量个存储空间,每个所述存储空间用于存储一个指针;
所述在所述写入时刻向所述存储器写入第一指针,包括:
在所述写入时刻顺次向所述存储器中的预设数量个存储空间中的一个存储空间写入第一指针;
所述根据所述慢时钟周期,从所述存储器中读取第一指针,包括:
根据所述慢时钟周期,顺次从所述存储器中的预设数量个存储空间中的一个存储空间读取第一指针。
20.根据权利要求19所述的方法,其特征在于,每个所述存储空间具有对应的缓存地址,所述指针同步装置还包括:写索引信标模块、读索引信标模块以及相位跟踪模块,所述写索引信标模块、读索引信标模块均与所述相位跟踪模块连接,所述相位跟踪模块还与所述写索引逻辑模块连接;
所述方法还包括:
所述写索引信标模块产生写信标信号,且在每当所述写索引逻辑模块向目标缓存地址对应的存储空间写入N次第一指针时,令所述写信标信号发生翻转;
所述读索引信标模块产生读信标信号,且在每当所述读索引逻辑模块从所述目标缓存地址对应的存储空间读取N次第一指针时,令所述读信标信号发生翻转;
所述相位跟踪模块根据所述写信标信号和读信标信号,产生写索引控制信号,并将所述写索引控制信号发送到所述写索引逻辑模块,以使所述写索引逻辑模块调整所述写入时刻。
21.根据权利要求20所述的方法,其特征在于,所述指针同步装置还包括:M个第一寄存器,所述M个第一寄存器顺次连接于所述读索引信标模块与所述相位跟踪模块之间,在所述相位跟踪模块根据所述写信标信号和读信标信号,产生写索引控制信号,并将所述写索引控制信号发送到所述写索引逻辑模块之前,所述方法还包括:
所述M个第一寄存器将所述读索引信标模块产生的读信标信号延迟M个快时钟周期后再传送给所述相位跟踪模块,以实现所述读信标信号由慢时钟域同步到快时钟域。
22.根据权利要求21所述的方法,其特征在于,所述相位跟踪模块根据所述写信标信号和读信标信号,产生写索引控制信号,包括:
将所述写信标信号延迟M个快时钟周期与所述第一目标延迟时间之和,得到延迟后的写信标信号;
将所述延迟后的写信标信号与所述延迟M个快时钟周期后的读信标信号进行比对;
若所述延迟后的写信标信号的波形的翻转点早于所述延迟M个快时钟周期后的读信标信号的波形的翻转点,产生WrEarly信号,所述WrEarly信号为表征写入第一指针的时刻早于期望时刻的标志信号;
若所述延迟后的写信标信号的波形的翻转点晚于所述延迟M个快时钟周期后的读信标信号的波形的翻转点,产生WrLate信号,所述WrEarly信号为表征写入第一指针的时刻晚于期望时刻的标志信号。
23.根据权利要求22所述的方法,其特征在于,所述方法还包括:
在计数值大于或等于0时,若所述写索引逻辑模块接收到WrEarly信号,则在计数值本应减小所述快时钟周期对应的数值时,不进行减小所述快时钟周期对应的数值的动作;
在所述计数值大于或等于0时,若所述写索引逻辑模块接收到WrLate信号,则在计数值本应减小所述快时钟周期对应的数值时,减小两个所述快时钟周期对应的数值;
在所述计数值小于0时,所述写索引逻辑模块令所述计数值加上所述慢时钟周期对应的数值,以恢复所述计数值大于或等于0的状态。
24.一种指针同步方法,其特征在于,用于通过指针同步装置实现指针在不同时钟域之间的同步,所述时钟域包括快时钟域和慢时钟域,所述装置包括缓存器、慢写索引逻辑模块和快读索引逻辑模块,所述缓存器分别与所述慢写索引逻辑模块和快读索引逻辑模块连接,所述慢写索引逻辑模块的时钟周期与所述慢时钟域的慢时钟周期相同,所述快读索引逻辑模块的时钟周期与所述快时钟域的快时钟周期相同;
所述方法包括:
所述慢写索引逻辑模块根据所述慢时钟周期,向所述缓存器写入第二指针;
所述快读索引逻辑模块根据所述快时钟周期和慢时钟周期确定读出时刻,并在所述读出时刻从所述缓存器读取第二指针;
其中,所述读出时刻满足:使得同一第二指针从被所述慢写索引逻辑模块写入缓存器到被所述快读索引逻辑模块从缓存器读出的时间差为第二目标延迟时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010866691.9A CN111949582B (zh) | 2020-08-25 | 2020-08-25 | 指针同步装置及方法、异步fifo电路、处理器*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010866691.9A CN111949582B (zh) | 2020-08-25 | 2020-08-25 | 指针同步装置及方法、异步fifo电路、处理器*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111949582A true CN111949582A (zh) | 2020-11-17 |
CN111949582B CN111949582B (zh) | 2022-01-18 |
Family
ID=73366623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010866691.9A Active CN111949582B (zh) | 2020-08-25 | 2020-08-25 | 指针同步装置及方法、异步fifo电路、处理器*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111949582B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658326A (zh) * | 2022-12-07 | 2023-01-31 | 摩尔线程智能科技(北京)有限责任公司 | 用于管理存储空间的装置及方法、计算设备、芯片 |
CN117457041A (zh) * | 2023-11-03 | 2024-01-26 | 上海奎芯集成电路设计有限公司 | 一种适用于门控时钟信号的训练装置和训练方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080288805A1 (en) * | 2007-05-18 | 2008-11-20 | Advanced Micro Devices, Inc. | Synchronization device and methods thereof |
US20130121100A1 (en) * | 2011-11-11 | 2013-05-16 | Qualcomm Incorporated | Device and method to perform memory operations at a clock domain crossing |
CN111512261A (zh) * | 2017-12-11 | 2020-08-07 | 超威半导体公司 | 具有指针偏移的异步缓冲器 |
-
2020
- 2020-08-25 CN CN202010866691.9A patent/CN111949582B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080288805A1 (en) * | 2007-05-18 | 2008-11-20 | Advanced Micro Devices, Inc. | Synchronization device and methods thereof |
US20130121100A1 (en) * | 2011-11-11 | 2013-05-16 | Qualcomm Incorporated | Device and method to perform memory operations at a clock domain crossing |
CN111512261A (zh) * | 2017-12-11 | 2020-08-07 | 超威半导体公司 | 具有指针偏移的异步缓冲器 |
Non-Patent Citations (1)
Title |
---|
DIMITRIOS KONSTANTINOU等: ""The Mesochronous Dual-Clock FIFO Buffer"", 《IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658326A (zh) * | 2022-12-07 | 2023-01-31 | 摩尔线程智能科技(北京)有限责任公司 | 用于管理存储空间的装置及方法、计算设备、芯片 |
CN115658326B (zh) * | 2022-12-07 | 2024-01-30 | 摩尔线程智能科技(北京)有限责任公司 | 用于管理存储空间的装置及方法、计算设备、芯片 |
CN117457041A (zh) * | 2023-11-03 | 2024-01-26 | 上海奎芯集成电路设计有限公司 | 一种适用于门控时钟信号的训练装置和训练方法 |
CN117457041B (zh) * | 2023-11-03 | 2024-06-14 | 上海奎芯集成电路设计有限公司 | 一种适用于门控时钟信号的训练装置和训练方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111949582B (zh) | 2022-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111367495B (zh) | 一种异步先入先出的数据缓存控制器 | |
US7555590B2 (en) | Fast buffer pointer across clock domains | |
CN101681249B (zh) | 先进先出缓冲器 | |
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 | |
CN101599053B (zh) | 支持多种传输协议的串行接口控制器及控制方法 | |
US6633965B2 (en) | Memory controller with 1×/M× read capability | |
US7020757B2 (en) | Providing an arrangement of memory devices to enable high-speed data access | |
CN111949582B (zh) | 指针同步装置及方法、异步fifo电路、处理器*** | |
JP2000099193A (ja) | 同期装置および同期方法ならびにインタフェ―ス回路 | |
US9824731B2 (en) | Data reading circuit | |
US8001409B2 (en) | Synchronization device and methods thereof | |
CN111832240A (zh) | Fifo数据传输方法及fifo存储装置 | |
CN112712829B (zh) | 一种跨时钟域的寄存器读写电路及方法 | |
CN109062538B (zh) | 环形先进先出缓冲器及数据传输接口、***、方法 | |
CN115220528B (zh) | 时钟获得方法、装置、芯片、电子设备及存储介质 | |
CN113491082B (zh) | 一种数据处理装置 | |
WO2023142444A1 (zh) | 确定性现场总线网络数据转发二分频锁存缓冲电路及应用 | |
CN113726335B (zh) | 时钟控制电路、时钟电路和电子设备 | |
CN107797956B (zh) | 双沿触发环形缓冲器及通信*** | |
CN114185397B (zh) | 跨时钟域数据传输电路及方法 | |
US6377071B1 (en) | Composite flag generation for DDR FIFOs | |
US6952791B2 (en) | Method and circuit for initializing a de-skewing buffer in a clock forwarded system | |
CN116318601A (zh) | 用于高速信令互连的帧对齐恢复 | |
CN111399802A (zh) | 多电源域多时钟域先进先出队列、集成电路芯片及计算机设备 | |
CN113760795B (zh) | 一种异步fifo存储器读写控制方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information |
Address after: 300450 Tianjin Binhai New Area Huayuan Industrial Zone Haitai West Road 18 North 2-204 Industrial Incubation-3-8 Applicant after: Haiguang Information Technology Co., Ltd Address before: 300450 Tianjin Binhai New Area Huayuan Industrial Zone Haitai West Road 18 North 2-204 Industrial Incubation-3-8 Applicant before: HAIGUANG INFORMATION TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |