一种跨时钟域异步数据处理方法和装置的制造方法
【技术领域】
[0001]本发明涉及数据处理技术领域,特别是涉及一种跨时钟域异步数据处理方法和一种跨时钟域异步数据处理装置。
【背景技术】
[0002]在复杂的数字电路系统中,整个系统往往由多个单元或多个印刷电路板组成,因此在专用集成电路(Applicat1n Specific Integrated Circuit,ASIC)和现场可编程门阵列(Field-Programmable Gate Array,FPGA)的逻辑设计中,往往会设计两个时钟域或者多个时钟域之间信号的交互。
[0003]通常在对跨时钟域的异步存储器进行读写时,可以执行以下过程:对每个所接收到的数据信号,首先对该数据信号进行采样,得到第一时钟域的数据信号;然后对该第一时钟域的数据信号进行同步化处理,得到第二时钟域的数据信号;再用同步后的第二时钟域上的数据信号对第二时钟域的存储器进行读写访问,并再将访问结果反馈输出。该读写过程中由于需要每一笔存储操作都等待异步时钟域的数据信号转换,消耗了大量的时钟周期,尤其在对异步存储器中大段连续地址空间进行读写时,上述处理方法会导致数据处理效率降低。
[0004]因此,目前需要本领域技术人员迫切解决的一个技术问题就是:能够在对异步存储器中大段连续地址空间进行读写时,提高数据处理效率。
【发明内容】
[0005]本发明实施例的目的在于提供一种跨时钟域异步数据处理方法,能够对异步存储器中大段连续地址空间进行读写时,提高数据处理效率。
[0006]相应的,本发明实施例还提供了一种跨时钟域异步数据处理装置,用以保证上述方法的实现及应用。
[0007]为了解决上述问题,本发明公开了一种跨时钟域异步数据处理方法,包括:
[0008]在第一时钟域生成连续读写命令,所述连续读写命令中包括连续数据的起止地址信息及读写模式;
[0009]将所述第一时钟域的连续读写命令进行同步化处理,获得第二时钟域的连续读写命令;
[0010]通过异步先入先出队列FIFO与所述第二时钟域的存储器进行所述连续数据的读写,其中,所述连续数据在所述存储器中的存储器地址根据所述第二时钟域的连续读写命令确定。
[0011]进一步,所述通过异步先入先出队列FIFO与所述第二时钟域的存储器进行所述连续数据的读写,包括:
[0012]当进行所述连续数据的写入时,将所述第一时钟域的所述连续数据写入所述异步FIFO,以使所述第二时钟域的存储器从所述异步FIFO读取所述连续数据并存储在所述存储器中;和/或,
[0013]当进行所述连续数据的读取时,从所述异步FIFO中读取由所述第二时钟域的存储器存储的所述连续数据。
[0014]进一步,所述方法还包括:
[0015]接收所述第二时钟域的存储器反馈的对所述连续数据写入完成的报告。
[0016]进一步,所述方法还包括:
[0017]向所述第二时钟域的存储器反馈对所述连续数据读取完成的报告。
[0018]进一步,在所述在第一时钟域生成连续读写命令之前,还包括:
[0019]对待读写数据的地址空间进行整合,获得所述连续数据的所述起止地址信息。
[0020]本发明实施例还提供了一种跨时钟域异步数据处理装置,包括:
[0021]命令生成模块,用于在第一时钟域生成连续读写命令,所述连续读写命令中包括连续数据的起止地址信息及读写模式;
[0022]同步逻辑模块,用于将所述第一时钟域的连续读写命令进行同步化处理,获得第二时钟域的连续读写命令;
[0023]数据读写模块,用于通过异步先入先出队列FIFO与所述第二时钟域的存储器进行所述连续数据的读写,其中,所述连续数据在所述存储器中的存储器地址根据所述第二时钟域的连续读写命令确定。
[0024]进一步,所述数据读写模块,用于当进行所述连续数据的写入时,将所述第一时钟域的所述连续数据写入所述异步FIFO,以使所述第二时钟域的存储器从所述异步FIFO读取所述连续数据并存储在所述存储器中;和/或,
[0025]所述数据读写模块,用于当进行所述连续数据的读取时,从所述异步FIFO中读取由所述第二时钟域的存储器存储的所述连续数据。
[0026]进一步,所述装置还包括:
[0027]反馈接收模块,用于接收所述第二时钟域的存储器反馈的对所述连续数据写入完成的报告。
[0028]进一步,所述装置还包括:
[0029]反馈模块,用于向所述第二时钟域的存储器反馈对所述连续数据读取完成的报生口 ο
[0030]进一步,所述装置还包括:
[0031]整合模块,用于在所述在第一时钟域生成连续读写命令之前,对待读写数据的地址空间进行整合,获得所述连续数据的所述起止地址信息。
[0032]与现有技术相比,本发明实施例包括以下优点:
[0033]本发明实施例在对一段连续地址空间的数据进行读写操作时,通过生成连续读写命令,并在连续读写命令中包含数据的起止地址信息,使得在第一时钟域与第二时钟域之间只对该命令进行一次同步化处理即可,在数据读写过程中,通过利用异步FIFO即可实现数据的连续读写。该方法对于大段连续地址的数据读写不需要每一笔存储操作都等待异步时钟域的数据信号转换,提高了数据处理效率。
【附图说明】
[0034]图1是本发明的一种跨时钟域异步数据处理方法实施例的步骤流程图;
[0035]图2是本发明的另一种跨时钟域异步数据处理方法实施例的步骤流程图;
[0036]图3是本发明中一种跨时钟域异步数据处理的系统架构示意图;
[0037]图4是本发明的另一种跨时钟域异步数据处理方法实施例的步骤流程图;
[0038]图5是本发明的另一种跨时钟域异步数据处理方法实施例的步骤流程图;
[0039]图6是本发明的一种跨时钟域异步数据处理装置实施例的结构框图。
【具体实施方式】
[0040]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0041 ] 参照图1,示出了本发明的一种跨时钟域异步数据处理方法实施例的步骤流程图,具体可以包括如下步骤:
[0042]步骤101,在第一时钟域生成连续读写命令,该连续读写命令中包括连续数据的起止地址信息及读写模式。
[0043]本实施例中,跨时钟域异步数据处理的装置(以下简称该装置)可以设置在第一时钟域。
[0044]当该装置需要对一段连续地址空间对应的数据(记为连续数据)进行读写操作时,例如将第一时钟域内该连续地址空间内对应存储的连续数据写入第二时钟域的存储器中,或者从第二时钟域的存储器中读取出与连续地址空间对应的连续数据等,该装置首先根据该连续数据的起止地址信息及读写模式生成一个连续的读写命令。其中该起止地址信息具体可以包括起始地址及读写长度。
[0045]在另一实施例中,在生成该连续读写命令之前,该装置还可以首先对多个待读写数据的地址空间进行整合,获得由这些待读写数据组成的连续数据的起止地址信息。
[0046]步骤102,将第一时钟域的连续读写命令进行同步化处理,获得第二时钟域的连续读写命令。
[0047]该装置将生成的连续读写命令进行同步化处理,获得第二时钟域的连续读写命令。该同步处理方法可采用现有技术中的诸多方法,譬如申请号为CN200710002653.3,发明名称为“跨时钟域异步数据处理、异步数据跨时钟域的方法及装置”的专利申请中所公开的同步方法亦可用于本发明中,此处不再赘述。
[0048]步骤103,通过异步FIFO与第二时钟域的存储器进行连续数据的读写。其中,连续数据在存储器中的存储器地址根据第二时钟域的连续读写命令确定。
[0049]第二时钟域中可以在存储器内部或者外部设置有内部逻辑模块,该内部逻辑模块在接收到第二时钟域的连续读写命令后,即可根据该命令中包含的读写模式确定当前模式是进行数据写入还是数据读取,同时根据连续数据的起止地址信息计算获得该存储器中对应的存储地址。其中,根据第一时钟域的起止地址信息计算第二时钟域的存储器的存储地址的方法可以采用现有方法。
[0050]第一时钟域与第二时钟域之间设置有异步FIF0(First Input First Output,先进先出队列)。FIFO从硬件来看是一块数据内存,它有两个端口,一个用来写数据,就是将数据存入FIFO ;另一个用来读数据,也就是将数据从FIFO当中取出。与FIFO操作相关的有两个指针,写指针指向要写的内存部分,读指针指向要读的内存部分。FIFO控制器通过外部的读写信号控制这两个指针移动。对于异步FIFO而言,数据是由某一个时钟域的控制信号写入FIFO,而由另一个时钟域的控制信号将数据读出FIFO,也就是说,读写指针的变化动作是由不同的时钟产生的。