CN109408427B - 一种跨时钟域数据处理方法及系统 - Google Patents
一种跨时钟域数据处理方法及系统 Download PDFInfo
- Publication number
- CN109408427B CN109408427B CN201710712578.3A CN201710712578A CN109408427B CN 109408427 B CN109408427 B CN 109408427B CN 201710712578 A CN201710712578 A CN 201710712578A CN 109408427 B CN109408427 B CN 109408427B
- Authority
- CN
- China
- Prior art keywords
- frequency
- low
- data
- read
- clock domain
- 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; 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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
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
本发明实施例涉及通信技术领域,特别是涉及一种跨时钟域数据处理方法及系统。所述方法包括:基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的所述数据交互;其中,所述高频数据处理模块对应所述高频数据位宽;所述低频数据处理模块对应所述低频数据位宽;所述高频时钟域的频率和所述高频数据位宽的乘积,与所述低频时钟域的频率和所述低频数据位宽的乘积具有倍比关系。本发明实施例能够降低整个跨时钟域数据处理系统的带宽损失,在同等带宽下的硬件开销也会降低。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种跨时钟域数据处理方法及系统。
背景技术
在数字电路设计领域,经常出现跨时钟域的数据传输场景,数据需要在两个或以上的时钟域进行交互。参照图1所示,普遍的处理方法是采用异步FIFO(First Input FirstOutput,先入先出存储器)缓存数据,解决亚稳态问题,防止数据传输出错的现象。
专利“跨时钟域不同位宽数据传递的方法及装置”(授权公告号:CN101166151B),利用高于数据发送模块的第一时钟域的频率的第三时钟域,将缓存的数据发送模块的发送数据位宽的各个数据,转换为数据接收模块的接收数据位宽的各个数据,并在再次缓存后发送给第二时钟域的数据接收模块。
但是,上述处理方法需要多级缓存以及一个高频的第三时钟域,硬件开销太大;而且,没有灵活运用上述第一时钟域和上述第二时钟域的频率关系,分配硬件资源过于简单,导致带宽损失较大。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种跨时钟域数据处理方法,以降低带宽损失,减少硬件开销。
为了解决上述问题,本发明实施例公开了一种跨时钟域数据处理方法,包括:
基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的所述数据交互;
其中,所述高频数据处理模块对应所述高频数据位宽;所述低频数据处理模块对应所述低频数据位宽;所述高频时钟域的频率和所述高频数据位宽的乘积,与所述低频时钟域的频率和所述低频数据位宽的乘积具有倍比关系。
可选地,所述基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的所述数据交互的步骤包括:
基于高频时钟域,将所述高频数据处理模块发送的高频数据位宽的第一数据转换为所述低频数据位宽的第一数据;
将所述转换后的高频时钟域的第一数据进行同步化处理,获得所述低频时钟域的第一数据;
基于低频时钟域,将所述同步化处理后的第一数据发送给所述低频数据处理模块。
可选地,所述基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的所述数据交互的步骤包括:
将所述低频数据处理模块发送的低频时钟域的低频数据位宽的第二数据进行同步化处理,获得所述高频时钟域的第二数据;
基于高频时钟域,将所述同步化处理后的低频数据位宽的第二数据转换为所述高频数据位宽的第二数据;
基于高频时钟域,将所述转换后的第二数据发送给所述高频数据处理模块。
可选地,所述方法还包括:
基于高频时钟域,将所述高频数据处理模块发送的第一高频读写请求转换为对应于所述低频数据位宽的第一低频读写请求;所述第一高频读写请求包括第一读写模式、第一起始地址、第一高频请求数据个数和所述高频数据位宽;所述第一低频读写请求包括所述第一读写模式、所述第一起始地址、第一低频请求数据个数和所述低频数据位宽;其中,所述第一低频请求数据个数根据所述低频数据位宽和所述第一高频读写请求确定;
将所述高频时钟域的第一低频读写请求进行同步化处理,获得所述低频时钟域的第一低频读写请求;
基于低频时钟域,将所述同步化处理后的第一低频读写请求发送给所述低频数据处理模块;供所述低频数据处理模块根据所述第一低频读写请求对与所述低频数据处理模块对应的存储器进行读写操作。
可选地,所述方法还包括:将所述低频数据处理模块发送的低频时钟域的第二低频读写请求进行同步化处理,获得所述高频时钟域的第二低频读写请求;所述第二低频读写请求包括第二读写模式、第二起始地址、第二低频请求数据个数和所述低频数据位宽;
基于高频时钟域,将所述同步化处理后的第二低频读写请求转换为对应于所述高频数据位宽的第二高频读写请求;所述第二高频读写请求包括所述第二读写模式、所述第二起始地址、第二高频请求数据个数和所述高频数据位宽;其中,所述第二高频请求数据个数根据所述高频数据位宽和所述第二低频读写请求确定;
基于高频时钟域,将所述转换后的第二高频读写请求发送给所述高频数据处理模块;供所述高频数据处理模块根据所述第二高频读写请求对与所述高频数据处理模块对应的存储器进行读写操作。
本发明实施例还公开了一种跨时钟域数据处理系统,包括:
数据处理模块,用于基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的所述数据交互;
其中,所述高频数据处理模块对应所述高频数据位宽;所述低频数据处理模块对应所述低频数据位宽;所述高频时钟域的频率和所述高频数据位宽的乘积,与所述低频时钟域的频率和所述低频数据位宽的乘积具有倍比关系。
可选地,所述数据处理模块包括:
第一数据位宽转换单元,用于基于高频时钟域,将所述高频数据处理模块发送的高频数据位宽的第一数据转换为所述低频数据位宽的第一数据;
第一数据同步化处理单元,用于将所述转换后的高频时钟域的第一数据进行同步化处理,获得所述低频时钟域的第一数据;
第一数据发送单元,用于基于低频时钟域,将所述同步化处理后的第一数据发送给所述低频数据处理模块。
可选地,所述数据处理模块包括:
第二数据同步化处理单元,用于将所述低频数据处理模块发送的低频时钟域的低频数据位宽的第二数据进行同步化处理,获得所述高频时钟域的第二数据;
第二数据位宽转换单元,用于基于高频时钟域,将所述同步化处理后的低频数据位宽的第二数据转换为所述高频数据位宽的第二数据;
第二数据发送单元,用于基于高频时钟域,将所述转换后的第二数据发送给所述高频数据处理模块。
可选地,所述系统还包括:
第一读写请求转换模块,用于基于高频时钟域,将所述高频数据处理模块发送的第一高频读写请求转换为对应于所述低频数据位宽的第一低频读写请求;所述第一高频读写请求包括第一读写模式、第一起始地址、第一高频请求数据个数和所述高频数据位宽;所述第一低频读写请求包括所述第一读写模式、所述第一起始地址、第一低频请求数据个数和所述低频数据位宽;其中,所述第一低频请求数据个数根据所述低频数据位宽和所述第一高频读写请求确定;
第一读写请求同步化处理模块,用于将所述高频时钟域的第一低频读写请求进行同步化处理,获得所述低频时钟域的第一低频读写请求;
第一读写请求发送模块,用于基于低频时钟域,将所述同步化处理后的第一低频读写请求发送给所述低频数据处理模块;供所述低频数据处理模块根据所述第一低频读写请求对与所述低频数据处理模块对应的存储器进行读写操作。
可选地,所述系统还包括:
第二读写请求同步化处理模块,用于将所述低频数据处理模块发送的低频时钟域的第二低频读写请求进行同步化处理,获得所述高频时钟域的第二低频读写请求;所述第二低频读写请求包括第二读写模式、第二起始地址、第二低频请求数据个数和所述低频数据位宽;
第二读写请求转换模块,用于基于高频时钟域,将所述同步化处理后的第二低频读写请求转换为对应于所述高频数据位宽的第二高频读写请求;所述第二高频读写请求包括所述第二读写模式、所述第二起始地址、第二高频请求数据个数和所述高频数据位宽;其中,所述第二高频请求数据个数根据所述高频数据位宽和所述第二低频读写请求确定;
第二读写请求发送模块,用于基于高频时钟域,将所述转换后的第二高频读写请求发送给所述高频数据处理模块;供所述高频数据处理模块根据所述第二高频读写请求对与所述高频数据处理模块对应的存储器进行读写操作。
本发明实施例还公开了一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述方法权利要求中一个或多个所述的跨时钟域数据处理方法。
本发明实施例包括以下优点:
当上述高频时钟域的频率和上述高频数据位宽的乘积,与上述低频时钟域的频率和上述低频数据位宽的乘积具有倍比关系时,上述高频数据处理模块的峰值带宽和上述低频数据处理模块的峰值带宽接近或相等;同时,上述数据发送过程中涉及到数据位宽的转换都是基于上述高频时钟域进行处理,因此降低了因为上述数据位宽转换带来的带宽损失;因此本发明实施例能够降低整个系统的带宽损失,在同等带宽下的硬件开销也会降低。
附图说明
图1是本发明的一种跨时钟域数据处理方法实施例的一个应用场景;
图2是本发明的一种跨时钟域数据处理方法实施例的步骤流程图;
图3是本发明的一种跨时钟域数据处理方法实施例的读写示意图之一;
图4是本发明的一种跨时钟域数据处理方法实施例的读写示意图之二;
图5是本发明的一种跨时钟域数据处理方法实施例的读写示意图之三;
图6是本发明的一种跨时钟域数据处理方法实施例的读写示意图之四;
图7是本发明的一种跨时钟域数据处理方法实施例的读写示意图之五;
图8是本发明的一种跨时钟域数据处理方法实施例的读写示意图之六;
图9是本发明的一种跨时钟域数据处理方法实施例的读写示意图之七;
图10是本发明的一种跨时钟域数据处理方法实施例的读写示意图之八;
图11是本发明的一种跨时钟域数据处理方法实施例的读写示意图之九;
图12是本发明的一种跨时钟域数据处理方法实施例的读写示意图之十;
图13是本发明的一种跨时钟域数据处理系统实施例的结构框图之一;
图14是本发明的一种跨时钟域数据处理系统实施例的结构框图之二。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1所示,本发明实施例应用于跨时钟域的数据交互的应用场景,例如工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间通过本发明实施例对应的跨时钟域数据处理系统进行数据交互;上述高频数据处理模块对应高频数据位宽;上述低频数据处理模块对应低频数据位宽。可以理解的是,上述高频数据处理模块可以作为数据发送模块,而上述低频数据处理模块作为数据接收模块;和/或上述低频数据处理模块可以作为数据发送模块,而上述高频数据处理模块作为数据接收模块。
上述高频数据处理模块可以为读写请求发送模块,例如CPU(Central ProcessingUnit,中央处理器)等处理器;上述低频数据处理模块可以为读写请求接收模块,例如内存等存储器;上述高频数据处理模块通过读写请求向上述低频数据处理模块对应的存储器写入数据,或者从上述低频数据处理模块对应的存储器读取数据;或者反之,上述低频数据处理模块通过读写请求向上述高频数据处理模块对应的存储器写入数据,或者从上述高频数据处理模块对应的存储器读取数据。
可以理解的是,在本文中,“高频时钟域”和“低频时钟域”是相对而言的,即高频时钟域的频率高于低频时钟域的频率;而高频数据处理模块是工作于高频时钟域的数据处理模块,高频数据位宽指的高频数据处理模块的数据位宽;同样地,低频数据处理模块是工作于低频时钟域的数据处理模块,低频数据位宽指的低频数据处理模块的数据位宽。
上述数据位宽可以理解为一次能传递的数据宽度,因为一般一个时钟周期内传递一次,因此可以理解为一个时钟周期内能传递的数据位数,即总线一次传输的二进制位数;因此数据位宽越大,则在一个时钟周期内传送的数据量越大;可以用bit(比特)表示,例如64bit,可以称为64位,128bit称为128位等;还可以用B(byte,字节)来表示,因为1B=8bit,所以64bit为8B或8字节。
上述时钟域为不同的模块对应的工作时钟频率,可以以若干次时钟周期每秒来度量;因为一般地,一个时钟周期内上述模块处理的指令数是固定的,因此可以用来表示上述模块的指令处理能力。
上述高频数据处理模块的峰值带宽可以用高频时钟域的频率与高频数据位宽之积来表示;同样地,低频数据处理模块的峰值带宽可以用低频时钟域的频率与低频数据位宽之积来表示。
若数据发送模块的峰值带宽远大于数据接收模块的峰值带宽,则整个系统的带宽取决于数据接收模块的峰值带宽,从而导致数据发送模块的带宽不饱和,造成性能损失;若数据发送模块的峰值带宽远小于数据接收模块的峰值带宽,则整个系统的带宽取决于数据发送模块的峰值带宽,从而导致数据接收模块的带宽冗余,硬件资源浪费。上述性能损失包括上述数据发送模块的工作时钟和/或数据位宽的性能损失;上述硬件资源浪费包括上述数据接收模块的工作时钟和/或数据位宽的资源浪费。
因此本发明实施例的核心构思之一在于,若数据发送模块的峰值带宽与数据接收模块的峰值带宽相等或接近,则整个系统的带宽损失会降低,在同等带宽下的硬件开销也会降低。
参照图2,示出了本发明实施例的一种跨时钟域数据处理方法实施例的步骤流程图,具体可以包括:
步骤201:基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的上述数据交互;其中,上述高频数据处理模块对应上述高频数据位宽;上述低频数据处理模块对应上述低频数据位宽;上述高频时钟域的频率和上述高频数据位宽的乘积,与上述低频时钟域的频率和上述低频数据位宽的乘积具有倍比关系。
可以理解的是,本发明实施例提供的上述跨时钟域数据处理方法对应的系统可以作为一种输入/输出接口,实现上述高频数据处理模块和上述低频数据处理模块之间的数据交互。当然,也可以存在另外的数据发送端和/或数据接收端,分别与上述高频数据处理模块或上述低频数据处理模块连接。
因为高频数据处理模块的高频数据位宽和低频数据处理模块的低频数据位宽不同,因此上述数据发送过程中涉及到数据位宽的转换。为了尽可能的将上述数据位宽转换带来的带宽损失降低,上述数据位宽的转换需要基于上述高频时钟域进行处理,即在上述高频时钟域和上述低频时钟域中的较高时钟域进行处理;相比于在上述较低的低频时钟域进行处理,带宽损失是降低了。
在本发明实施例中,上述高频时钟域的频率和上述高频数据位宽的乘积,与上述低频时钟域的频率和上述低频数据位宽的乘积具有倍比关系。可以理解的是,上述倍比关系并不是严格意义上的整数倍比。例如当上述倍比关系为一倍倍比关系,实际上意味着上述高频时钟域的频率和上述高频数据位宽的乘积,与上述低频时钟域的频率和上述低频数据位宽的乘积,差值小于预设阈值;即上述两个乘积接近或相等。
因为上述高频时钟域的频率和上述高频数据位宽的乘积,与上述低频时钟域的频率和上述低频数据位宽的乘积,差值小于预设阈值;所以上述高频数据处理模块的峰值带宽和上述低频数据处理模块的峰值带宽接近或相等;因此本发明实施例能够降低整个系统的带宽损失,在同等带宽下的硬件开销也会降低。
在实际应用中,可以根据上述高频数据位宽、上述高频时钟域的频率、上述低频数据位宽、上述低频时钟域的频率中的三个已知量或已知关系,确定另一未知量;使得上述高频数据处理模块的峰值带宽与上述低频数据处理模块的峰值带宽接近或相等。上述预设阈值能够表示上述接近的程度,可以为上述高频时钟域的频率和上述高频数据位宽的乘积的百分数;例如为0时,表示上述高频数据处理模块的峰值带宽与上述低频数据处理模块的峰值带宽相等;例如为10%时,表示上述高频数据处理模块的峰值带宽与上述低频数据处理模块的峰值带宽相差10%;可以根据实际需求进行调节。
可以理解的是,若上述高频时钟域的频率和上述低频时钟域的频率的频率比值,与上述位宽比值相等时;上述高频数据处理模块和上述低频数据处理模块在单位时间内能够传输的数据量相等,即二者的峰值带宽相等。
在本发明实施例的一种实施方式中,上述高频时钟域的频率为上述低频时钟域频率的N倍;上述低频数据位宽为上述高频数据位宽的N倍;其中,N为大于等于2的整数。
假设高频数据位宽为nDATA,则高频时钟域的频率为fH时,单位时间内高频数据处理模块能够传输的数据量NDATA-H为:
NDATA-H=nDATA*fH (公式1)
此时,低频数据位宽为N*nDATA,其中,N为大于等于2的正整数;若低频时钟域的频率为fL,并且具有关系:
fH=N*fL (公式2)
则单位时间内低频数据处理模块能够传输的数据量NDATA-L为:
NDATA-L=N*nDATA*fL (公式3)
由上述公式1-3,可以得到结论:NDATA-H与NDATA-L相等。
在实际应用中,上述高频数据处理模块可以为CPU,上述低频数据处理模块可以为内存、显卡等,上述高频数据位宽可以前端总线确定,例如为64bit(比特);上述高频时钟域的频率可以由前端总线的频率确定,例如266MHz、333MHz、800MHz、1333MHz等;上述低频数据位宽可以由内存总线决定,但实际上取决于内存位宽和内存数量;上述低频时钟域频率可以由内存主频及内存型号确定,例如DDR2(Double Data Rate 2,双倍速率2型)内存的内存主频为333/400MHz,等效的低频时钟域频率为667/800MHz等。本发明实施例并不限于上述示例。当上述内存为两条DDR2内存组成的双通道,DDR2内存位宽为64bit,即低频数据位宽为64×2=128bit,且低频时钟域的频率为667MHz时,上述低频数据处理模块的峰值带宽=667MHz×128bit/(8(bit/B))=10.7GB/s。
当上述高频数据位宽为64bit,上述前端总线频率为1333MHz时,上述高频数据处理模块的峰值带宽=1333MHz×64bit/(8(bit/B))=10.7GB/s。可见,上述低频数据位宽和上述高频数据位宽的位宽比值为2;上述高频时钟域的频率大于上述低频时钟域的频率;上述高频时钟域的频率和上述低频时钟域的频率的频率比值为2,与上述位宽比值相等,此时上述高频数据处理模块的峰值带宽与上述低频数据处理模块的峰值带宽相等,因此尽可能地降低了带宽损失。
相反地,若上述前端总线频率为800MHz时,上述高频数据处理模块的峰值带宽=800MHz×64bit/(8(bit/B))=6.4GB/s,则整个系统的带宽取决于上述高频数据处理模块的峰值带宽,带宽损失为4.3GB/s,从而导致上述低频数据处理模块的带宽冗余,硬件资源浪费。
若上述前端总线频率为1600MHZ,上述高频数据处理模块的峰值带宽=1600MHz×64bit/(8(bit/B))=12.8GB/s,则整个系统的带宽取决于上述低频数据处理模块的峰值带宽,带宽损失为2.1GB/s,从而导致上述高频数据处理模块的带宽不饱和,造成性能损失。
本发明实施例还提供了另一种跨时钟域数据处理方法实施例,相比于上述图2所示出的本发明实施例,
当从工作于高频时钟域的高频数据处理模块向工作于低频时钟域的低频数据处理模块发送数据时,上述步骤201可以包括:
基于高频时钟域,将上述高频数据处理模块发送的高频数据位宽的第一数据转换为上述低频数据位宽的第一数据;
将上述转换后的高频时钟域的第一数据进行同步化处理,获得上述低频时钟域的第一数据;
基于低频时钟域,将上述同步化处理后的第一数据发送给上述低频数据处理模块;
当从工作于低频时钟域的低频数据处理模块向工作于高频时钟域的高频数据处理模块发送数据时,上述步骤201可以包括:
将上述低频数据处理模块发送的低频时钟域的低频数据位宽的第二数据进行同步化处理,获得上述高频时钟域的第二数据;
基于高频时钟域,将上述同步化处理后的低频数据位宽的第二数据转换为上述高频数据位宽的第二数据;
基于高频时钟域,将上述转换后的第二数据发送给上述高频数据处理模块。
在本发明实施例中,上述高频数据处理模块可以为数据发送模块,则上述低频数据处理模块为数据接收模块,则从上述高频数据处理模块向上述低频数据处理模块发送数据。同样地,上述高频数据处理模块可以为数据接收模块,则上述低频数据处理模块为数据发送模块,则从上述低频数据处理模块向上述高频数据处理模块发送数据。
由于高频数据处理模块对应的高频时钟域和低频数据处理模块对应的低频时钟域的差别,为了尽可能地降低跨时钟域数据传输的亚稳态的问题,需要对上述高频数据处理模块和上述低频数据处理模块之间的交互数据(包括读写命令)进行同步化处理,用于将上述高频时钟域的数据转换为低频时钟域的数据,或者将低频时钟域的数据转换为高频时钟域的数据。
上述同步化处理过程可以通过两级寄存器进行,即可以通过打两拍的方式对输入的数据进行延拍;也可以通过异步双口RAM(Random-Access Memory,随机存取存储器)或异步FIFO等方式进行缓存,实现同步化处理;还可以通过握手协议模块,用于在数据传输前建立连接,或者其他方式。
当从上述高频数据处理模块向上述低频数据处理模块传输数据时,可以通过对输入的高频时钟域的数据信号进行延拍、缓存等处理方式,获得与上述低频时钟域同步的数据信号。同样地,当从上述低频数据处理模块向上述高频数据处理模块传输数据时,可以通过对输入的低频时钟域的数据信号进行延拍、缓存等处理方式,获得与上述高频时钟域同步的数据信号。
异步FIFO相当于一块数据内存,有两个端口,一个用来写数据,就是将数据存入FIFO;另一个用来读数据,也就是将数据从FIFO当中取出。读、写端口拥有两个计数器产生的确定数据位宽的互相独立的读、写地址。这些计数器可以称为“读指针”(read pointer)和“写指针”(write pointer)。写指针指向下一个将要写入的内存位置,读指针指向下一个将要读取的内存位置。每次写操作使写指针加1,读操作使读指针加1。FIFO控制器通过外部的读写信号控制这两个指针移动。对于异步FIFO而言,数据是由上述高频时钟域的控制信号写入FIFO,而由上述低频时钟域的控制信号将数据读出FIFO;或者由上述低频时钟域的控制信号写入FIFO,而由上述高频时钟域的控制信号将数据读出FIFO。
当上述低频数据位宽为上述高频数据位宽的任一大于等于2的整数倍时,例如N倍,则上述高频数据位宽的数据仅需要通过数据拼合,转换为上述低频数据位宽的数据;同样地,上述低频数据位宽的数据仅需要通过数据拆分,转换为上述低频数据位宽的数据;当然也可以先确定上述低频数据位宽和上述高频数据位宽的公约数,然后将上述低频数据位宽或高频数据位宽中一个数据位宽的数据,先拆分为与上述公约数对应的数据位宽的数据,再拼合为另一个数据位宽的数据。
可以理解的是,因为本发明实施例涉及不同数据位宽,考虑到数据位宽的转换可能涉及到的拆分、拼合等多级数据位宽转换的复杂过程,可能导致整个系统的带宽的巨大损失以及硬件开销的增大,因此在本发明实施例的一种实施方式中,低频数据位宽为高频数据位宽的整数倍,如此仅需拆分或拼合的一级数据位宽转换;避免整个系统的带宽的进一步损失以及硬件开销的增大。
在本发明实施例的一种实施方式中,上述低频数据位宽和上述高频数据位宽的位宽比值可以为任一大于等于2的整数;上述高频时钟域的频率和上述低频时钟域的频率的频率比值,与上述位宽比值的差值的绝对值小于预设频率比值。上述预设频率比值可以根据上述频率比值、位宽比值和预设阈值确定。
可选地,上述方法还可以包括:
基于高频时钟域,将上述高频数据处理模块发送的第一高频读写请求转换为对应于上述低频数据位宽的第一低频读写请求;上述第一高频读写请求包括第一读写模式、第一起始地址、第一高频请求数据个数和上述高频数据位宽;上述第一低频读写请求包括上述第一读写模式、上述第一起始地址、第一低频请求数据个数和上述低频数据位宽;其中,上述第一低频请求数据个数根据上述低频数据位宽和上述第一高频读写请求确定;
将上述高频时钟域的第一低频读写请求进行同步化处理,获得上述低频时钟域的第一低频读写请求;
基于低频时钟域,将上述同步化处理后的第一低频读写请求发送给上述低频数据处理模块;供上述低频数据处理模块根据上述第一低频读写请求对与上述低频数据处理模块对应的存储器进行读写操作。
可以理解的是,与上述低频数据处理模块对应的存储器可以位于上述低频数据处理模块中,还可以是与上述低频数据处理模块连接的存储器,便于上述低频数据处理模块根据上述第一低频读写请求进行读写操作。
在本发明实施例的一种实施方式中,参照表1,示出了第一高频读写请求。
表1
例如,上述第一高频读写请求的第一读写模式为写模式,第一起始地址为0x10,第一高频请求数据个数为4,因为上述第一读写请求是由上述高频数据处理模块发送的,因此上述第一高频读写请求的数据位宽为高频数据位宽,为128bit。上述第一高频读写请求意味着需要将上述第一高频读写请求,发送给数据位宽为256bit的低频数据处理模块;同时,需要对应于上述步骤201将4个数据位宽为128bit的数据发送给低频数据处理模块;然后上述低频数据处理模块根据接收到的第一低频读写请求,将接收到的与上述4个数据位宽为128bit的数据对应的接收数据写入对应的存储器中,因为8bit对应一个地址,即从上述第一起始地址0x10(16进制)写到0x4F。
或者上述第一高频读写请求的第一读写模式为读模式,第一起始地址为0x500,第一高频请求数据个数为6,因为上述第一读写请求是由上述高频数据处理模块发送或生成的,因此上述第一高频读写请求的数据位宽为高频数据位宽,为128bit。上述第一高频读写请求意味着需要将上述第一高频读写请求发送给上述低频数据处理模块,并通过上述低频数据处理模块从对应的存储器中读取6个数据位宽为128bit的数据,即从第一起始地址0x500读到0x52F,并需要对应于上述步骤202将上述读取的6个数据位宽为128bit的数据发送给上述高频数据处理模块。
可以理解的是,上述高频数据处理模块生成的第一高频读写请求在发送给上述低频数据处理模块之前,因为上述第一高频读写请求对应的数据位宽为高频数据位宽,与上述第一高频读写请求的发送对象的低频数据位宽不同,因此需要先将上述第一高频读写请求转换为上述第一低频读写请求;其中,第一读写模式和第一起始地址不变,请求对应的数据位宽由高频数据位宽变为上述第一高频读写请求的发送对象的数据位宽,即低频数据位宽;同时第一高频请求数据个数变为第一低频请求数据个数。
在本发明实施例中,基于高频时钟域,将上述第一高频读写请求转换为上述第二读写请求,即在上述高频时钟域和上述低频时钟域中较高的高频时钟域进行处理,相比于基于低频时钟域进行处理,降低了带宽损失。
示例性地,当上述低频数据位宽和高频数据位宽的位宽比值N为大于等于2的整数时,上述第一低频请求数据个数由上述第一高频请求数据个数K和上述位宽比值N确定;若上述第一高频请求数据个数K是N的整数倍,则明显地K个高频数据位宽的数据变为K/N个低频数据位宽的数据;若上述第一高频请求数据个数K不是N的整数倍,则对K/N取整加1,得到第一低频请求数据个数。实际上,还需要根据上述第一起始地址与上述低频数据位宽是否对齐来对上述第一低频请求数据个数进行调整。
参照图3所示,若上述第一读写模式为写模式,第一起始地址为0x10,第一高频请求数据个数为4,高频数据位宽为128bit的第一高频读写请求;对于256bit的低频数据位宽而言,对齐是以0x00、0x20、0x40等为起始地址的访问,0x10、0x30、0x50甚至0x15之类的都是不对齐地址,因此上述第一起始地址与上述低频数据位宽不对齐。因为一般需要从对齐的地址进行读取,而每次读取低频数据位宽大小的数据。因此上述第一高频读写请求对应的数据地址范围为0x00-0x1F、0x20-0x3F、0x40-0x5F,而非0x10-0x4F;而斜杠填充的位置,即0x00-0x0F地址范围和0x50-0x5F地址范围的数据为无效数据,无效数据可以通过相应的选通信号来屏蔽掉。可以看到的是,对于上述低频数据处理模块的第一低频请求数据个数由原来的第一高频请求数据个数4变为第一低频请求数据个数3。
参照图4所示,若上述第一读写模式为写模式,第一起始地址为0x00,第一高频请求数据个数为4,高频数据位宽为128bit的第一高频读写请求;对于256bit的低频数据位宽而言,上述第一起始地址与上述低频数据位宽对齐,上述第一高频读写请求对应的数据地址范围为0x00-0x1F、0x20-0x3F。可以看到的是,对于上述低频数据处理模块的请求数据个数由原来的第一请求数据个数4变为第一低频请求数据个数2。
简单而言,根据上述低频数据位宽和上述高频数据位宽的位宽比值,计算上述第一高频请求个数和上述位宽比值的商,对上述商取整作为上述第一低频请求数据个数;若上述商不是整数,则上述第一低频请求数据个数加1;若上述商是整数,上述第一读写模式为写模式,且上述第一起始地址与上述低频数据位宽不对齐,则上述第一低频请求数据个数加1。可以理解的是,若上述商是整数,上述第一读写模式为读模式,则需要判断上述第一起始地址是否与上述高频数据位宽是否对齐来确定第一低频请求数据个数,这里不再赘述。
此外,因为跨时钟域可能存在的亚稳态问题,需要将上述转换后的高频时钟域的第一低频读写请求同步化处理为上述低频时钟域的第一低频读写请求。
参照图5、6、7所示的示意图,本发明实施例中首先基于高频时钟域将读写请求接收模块(上述高频数据处理模块)发送的写命令或读命令转换为对应读写请求接收模块(上述低频数据处理模块)的新的写命令或读命令;然后将上述新的写命令或读命令通过异步FIFO进行同步化处理;最后基于上述低频时钟域,将上述同步化后的写命令或读命令并发送给上述读写请求接收模块,供上述读写请求接收模块执行上述同步化后的写命令或读命令。
上述读写请求接收模块可以根据上述写命令,接收与上述写命令对应的,从上述读写请求发送模块发送的经过高频时钟域的写数据拼合(高频数据位宽转换为低频数据位宽)、写数据异步FIFO的写数据,并写入对应的存储器中;或者可以根据上述读命令,从对应的存储器中读取与上述读命令对应的读数据,通过读数据异步FIFO、读数据拆分(低频数据位宽转换为高频数据位宽),由上述读写请求发送模块接收上述读数据。
可选地,上述方法还可以包括:
将上述低频数据处理模块发送的低频时钟域的第二低频读写请求进行同步化处理,获得上述高频时钟域的第二低频读写请求;上述第二低频读写请求包括第二读写模式、第二起始地址、第二低频请求数据个数和上述低频数据位宽;
基于高频时钟域,将上述同步化处理后的第二低频读写请求转换为对应于上述高频数据位宽的第二高频读写请求;上述第二高频读写请求包括上述第二读写模式、上述第二起始地址、第二高频请求数据个数和上述高频数据位宽;其中,上述第二高频请求数据个数根据上述高频数据位宽和上述第二低频读写请求确定;
基于高频时钟域,将上述转换后的第二高频读写请求发送给上述高频数据处理模块;供上述高频数据处理模块根据上述第二高频读写请求对与上述高频数据处理模块对应的存储器进行读写操作。
可以理解的是,上述高频数据处理模块对应的存储器可以位于上述高频数据处理模块中,还可以是与上述高频数据处理模块连接的存储器,便于上述高频数据处理模块根据上述第二高频读写请求进行读写操作。
在本发明实施例的一种实施方式中,参照表2,示出了第二低频读写请求。
表2
例如,上述第二低频读写请求的第二读写模式为读模式,第二起始地址为0x10,第二低频请求数据个数为2,因为上述第二低频读写请求是由上述低频数据处理模块发送的,因此上述第二低频读写请求的数据位宽为低频数据位宽,为128bit。
上述第二低频读写请求意味着上述低频数据处理模块需要将上述第二低频读写请求发送给上述高频数据处理模块,并通过上述高频数据处理模块从对应的存储器中读取2个数据位宽为128bit的数据,即从第二起始地址0x10读到0x2F,并需要对应于上述步骤201将上述读取的2个数据位宽为128bit的数据发送给上述低频数据处理模块。
同样地,上述第二低频读写请求也可以是写模式,意味着上述低频数据处理模块需要将上述第二低频读写请求,发送给数据位宽为高频数据位宽的高频数据处理模块;同时,需要对应于上述步骤202将第二低频请求数据个数的低频数据文宽的数据发送给高频数据处理模块;然后上述高频数据处理模块根据接收到的第二高频读写请求,将接收到的与上述第二低频请求数据个数的低频数据文宽的数据对应的接收数据写入对应的存储器中。
因为跨时钟域可能存在的亚稳态问题,需要将上述低频时钟域的第二低频读写请求同步化处理为上述高频时钟域的第二低频读写请求。
可以理解的是,因为上述第二低频读写请求对应的数据位宽为低频数据位宽,与上述第二低频读写请求的发送对象的高频数据位宽不同,因此需要将上述第二低频读写请求转换为上述第二高频读写请求;其中,第二读写模式和第二起始地址不变,请求对应的数据位宽由低频数据位宽变为上述第二低频读写请求的发送对象的数据位宽,即高频数据位宽;同时第二低频请求数据个数变为第二高频请求数据个数。
在本发明实施例中,基于高频时钟域,将上述第二低频读写请求转换为上述第二高频读写请求,即在上述高频时钟域和上述低频时钟域中较高的高频时钟域进行处理,相比于基于低频时钟域进行处理,降低了带宽损失。
示例性地,当上述低频数据位宽和高频数据位宽的位宽比值N为大于等于2的整数时,上述第二高频请求数据个数由上述第二低频请求数据个数和上述位宽比值N决定;若上述第二低频请求数据个数为L,则上述第二高频请求数据个数为LN。实际上,还需要根据上述第二起始地址与上述高频数据位宽的关系,确定上述第二高频请求数据个数是否减1。
参照图8所示,若上述第二读写模式为读模式,第二起始地址为0x10,第二低频请求数据个数为2,低频数据位宽为128bit的第二低频读写请求;对于64bit的高频数据位宽而言,因此若上述第二起始地址为0x10-0x17中的任意一个,例如为0x10,对应的都是同一个0x10-0x17的64bit的数据,但是对于128bit的低频数据位宽而言,有效数据是从上述第二起始地址-0x1F对应的数据;对应的高频数据位宽的地址范围为0x10-0x17、0x18-0x1F、0x20-0x27、0x28-0x2F,则上述第二高频请求数据个数为4个。
参照图9所示,若上述起始地址为0x18-0x1F中的任一个,则对应的都是同一个0x18-0x1F的64bit的数据,但是对于128bit的低频数据位宽而言,有效数据是从上述第二起始地址-0x1F对应的数据;对应的高频数据位宽的地址范围为0x18-0x1F、0x20-0x27、0x28-0x2F,则上述第二高频请求数据个数为3个。
参照图10、11、12所示的示意图,本发明实施例中首先将读写请求发送模块(上述低频数据处理模块)发送的写命令或读命令通过异步FIFO进行同步化处理;然后基于高频时钟域,将上述同步化处理后的写命令或读命令转换为对应读写请求接收模块(上述高频数据处理模块)的新的写命令或读命令;最后基于上述低频时钟域,将上述转换后的写命令或读命令发送给上述读写请求接收模块,供上述读写请求接收模块执行上述转换后的写命令或读命令。
上述读写请求接收模块可以根据上述写命令,接收与上述写命令对应的,从上述读写请求发送模块发送的经过写数据异步FIFO、高频时钟域的写数据拆分(低频数据位宽转换为高频数据位宽)的写数据,并写入对应的存储器中;或者可以根据上述读命令,从对应的存储器中读取与上述读命令对应的读数据,通过读数据合并(高频数据位宽转换为低频数据位宽)、读数据异步FIFO,由上述读写请求发送模块接收上述读数据。
本发明实施例包括以下优点:
一方面当上述高频时钟域的频率和上述高频数据位宽的乘积,与上述低频时钟域的频率和上述低频数据位宽的乘积具有倍比关系时,上述高频数据处理模块的峰值带宽和上述低频数据处理模块的峰值带宽接近或相等;因此本发明实施例能够降低整个系统的带宽损失,在同等带宽下的硬件开销也会降低;另一方面,上述数据发送过程中涉及到数据位宽的转换都是基于上述高频时钟域进行处理,因此降低了因为上述数据位宽转换带来的带宽损失;再一方面,上述读写请求发送过程中涉及到读写请求的转换都是基于上述高频时钟域进行处理,因此降低了因为上述读写请求转换带来的带宽损失。
参照图13所示,本发明实施例还提供了一种跨时钟域数据处理系统1300,上述系统1300可以包括:
数据处理模块1301,用于基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的上述数据交互;
其中,上述高频数据处理模块对应上述高频数据位宽;上述低频数据处理模块对应上述低频数据位宽;上述高频时钟域的频率和上述高频数据位宽的乘积,与上述低频时钟域的频率和上述低频数据位宽的乘积具有倍比关系。
参照图14所示,在上述图13的基础上,可选地,上述数据处理模块1301可以包括:
第一数据位宽转换单元13011,用于基于高频时钟域,将上述高频数据处理模块发送的高频数据位宽的第一数据转换为上述低频数据位宽的第一数据;
第一数据同步化处理单元13012,用于将上述转换后的高频时钟域的第一数据进行同步化处理,获得上述低频时钟域的第一数据;
第一数据发送单元13013,用于基于低频时钟域,将上述同步化处理后的第一数据发送给上述低频数据处理模块。
可选地,上述数据处理模块1301可以包括:
第二数据同步化处理单元13014,用于将上述低频数据处理模块发送的低频时钟域的低频数据位宽的第二数据进行同步化处理,获得上述高频时钟域的第二数据;
第二数据位宽转换单元13015,用于基于高频时钟域,将上述同步化处理后的低频数据位宽的第二数据转换为上述高频数据位宽的第二数据;
第二数据发送单元13016,用于基于高频时钟域,将上述转换后的第二数据发送给上述高频数据处理模块。
可选地,上述系统1300还可以包括:
第一读写请求转换模块1302,用于基于高频时钟域,将上述高频数据处理模块发送的第一高频读写请求转换为对应于上述低频数据位宽的第一低频读写请求;上述第一高频读写请求包括第一读写模式、第一起始地址、第一高频请求数据个数和上述高频数据位宽;上述第一低频读写请求包括上述第一读写模式、上述第一起始地址、第一低频请求数据个数和上述低频数据位宽;其中,上述第一低频请求数据个数根据上述低频数据位宽和上述第一高频读写请求确定;
第一读写请求同步化处理模块1303,用于将上述高频时钟域的第一低频读写请求进行同步化处理,获得上述低频时钟域的第一低频读写请求;
第一读写请求发送模块1304,用于基于低频时钟域,将上述同步化处理后的第一低频读写请求发送给上述低频数据处理模块;供上述低频数据处理模块根据上述第一低频读写请求对与上述低频数据处理模块对应的存储器进行读写操作。
可选地,上述系统1300还可以包括:
第二读写请求同步化处理模块1305,用于将上述低频数据处理模块发送的低频时钟域的第二低频读写请求进行同步化处理,获得上述高频时钟域的第二低频读写请求;上述第二低频读写请求包括第二读写模式、第二起始地址、第二低频请求数据个数和上述低频数据位宽;
第二读写请求转换模块1306,用于基于高频时钟域,将上述同步化处理后的第二低频读写请求转换为对应于上述高频数据位宽的第二高频读写请求;上述第二高频读写请求包括上述第二读写模式、上述第二起始地址、第二高频请求数据个数和上述高频数据位宽;其中,上述第二高频请求数据个数根据上述高频数据位宽和上述第二低频读写请求确定;
第二读写请求发送模块1307,用于基于高频时钟域,将上述转换后的第二高频读写请求发送给上述高频数据处理模块;供上述高频数据处理模块根据上述第二高频读写请求对与上述高频数据处理模块对应的存储器进行读写操作。
本发明实施例包括以下优点:
一方面当上述高频时钟域的频率和上述高频数据位宽的乘积,与上述低频时钟域的频率和上述低频数据位宽的乘积具有倍比关系时,上述高频数据处理模块的峰值带宽和上述低频数据处理模块的峰值带宽接近或相等;因此本发明实施例能够降低整个系统的带宽损失,在同等带宽下的硬件开销也会降低;另一方面,上述数据发送过程中涉及到数据位宽的转换都是基于上述高频时钟域进行处理,因此降低了因为上述数据位宽转换带来的带宽损失;再一方面,上述读写请求发送过程中涉及到读写请求的转换都是基于上述高频时钟域进行处理,因此降低了因为上述读写请求转换带来的带宽损失。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由电子设备的处理器执行以完成上述方法。例如,上述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当上述存储介质中的指令由终端的处理器执行时,使得终端能够执行一种启动应用程序的方法,上述方法具体可以包括:
基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的上述数据交互;
其中,上述高频数据处理模块对应上述高频数据位宽;上述低频数据处理模块对应上述低频数据位宽;上述高频时钟域的频率和上述高频数据位宽的乘积,与上述低频时钟域的频率和上述低频数据位宽的乘积具有倍比关系。
可选地,上述基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的上述数据交互的步骤包括:
基于高频时钟域,将上述高频数据处理模块发送的高频数据位宽的第一数据转换为上述低频数据位宽的第一数据;
将上述转换后的高频时钟域的第一数据进行同步化处理,获得上述低频时钟域的第一数据;
基于低频时钟域,将上述同步化处理后的第一数据发送给上述低频数据处理模块。
可选地,上述基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的上述数据交互的步骤包括:
将上述低频数据处理模块发送的低频时钟域的低频数据位宽的第二数据进行同步化处理,获得上述高频时钟域的第二数据;
基于高频时钟域,将上述同步化处理后的低频数据位宽的第二数据转换为上述高频数据位宽的第二数据;
基于高频时钟域,将上述转换后的第二数据发送给上述高频数据处理模块。
可选地,上述方法还包括:
基于高频时钟域,将上述高频数据处理模块发送的第一高频读写请求转换为对应于上述低频数据位宽的第一低频读写请求;上述第一高频读写请求包括第一读写模式、第一起始地址、第一高频请求数据个数和上述高频数据位宽;上述第一低频读写请求包括上述第一读写模式、上述第一起始地址、第一低频请求数据个数和上述低频数据位宽;其中,上述第一低频请求数据个数根据上述低频数据位宽和上述第一高频读写请求确定;
将上述高频时钟域的第一低频读写请求进行同步化处理,获得上述低频时钟域的第一低频读写请求;
基于低频时钟域,将上述同步化处理后的第一低频读写请求发送给上述低频数据处理模块;供上述低频数据处理模块根据上述第一低频读写请求对与上述低频数据处理模块对应的存储器进行读写操作。
可选地,上述方法还包括:将上述低频数据处理模块发送的低频时钟域的第二低频读写请求进行同步化处理,获得上述高频时钟域的第二低频读写请求;上述第二低频读写请求包括第二读写模式、第二起始地址、第二低频请求数据个数和上述低频数据位宽;
基于高频时钟域,将上述同步化处理后的第二低频读写请求转换为对应于上述高频数据位宽的第二高频读写请求;上述第二高频读写请求包括上述第二读写模式、上述第二起始地址、第二高频请求数据个数和上述高频数据位宽;其中,上述第二高频请求数据个数根据上述高频数据位宽和上述第二低频读写请求确定;
基于高频时钟域,将上述转换后的第二高频读写请求发送给上述高频数据处理模块;供上述高频数据处理模块根据上述第二高频读写请求对与上述高频数据处理模块对应的存储器进行读写操作。
本发明实施例包括以下优点:
一方面当上述高频时钟域的频率和上述高频数据位宽的乘积,与上述低频时钟域的频率和上述低频数据位宽的乘积具有倍比关系时,上述高频数据处理模块的峰值带宽和上述低频数据处理模块的峰值带宽接近或相等;因此本发明实施例能够降低整个系统的带宽损失,在同等带宽下的硬件开销也会降低;另一方面,上述数据发送过程中涉及到数据位宽的转换都是基于上述高频时钟域进行处理,因此降低了因为上述数据位宽转换带来的带宽损失;再一方面,上述读写请求发送过程中涉及到读写请求的转换都是基于上述高频时钟域进行处理,因此降低了因为上述读写请求转换带来的带宽损失。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种跨时钟域数据处理方法和系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种跨时钟域数据处理方法,其特征在于,包括:
基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的所述数据交互;
其中,所述高频数据处理模块对应所述高频数据位宽;所述低频数据处理模块对应所述低频数据位宽;所述高频时钟域的频率和所述高频数据位宽的乘积,与所述低频时钟域的频率和所述低频数据位宽的乘积具有倍比关系;
其中,所述高频时钟域的频率和所述高频数据位宽的乘积,与所述低频时钟域的频率和所述低频数据位宽的乘积之间的差值小于或等于预设阈值。
2.根据权利要求1所述的方法,其特征在于,所述基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的所述数据交互的步骤包括:
基于高频时钟域,将所述高频数据处理模块发送的高频数据位宽的第一数据转换为所述低频数据位宽的第一数据;
将所述转换后的高频时钟域的第一数据进行同步化处理,获得所述低频时钟域的第一数据;
基于低频时钟域,将所述同步化处理后的第一数据发送给所述低频数据处理模块。
3.根据权利要求1所述的方法,其特征在于,所述基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的所述数据交互的步骤包括:
将所述低频数据处理模块发送的低频时钟域的低频数据位宽的第二数据进行同步化处理,获得所述高频时钟域的第二数据;
基于高频时钟域,将所述同步化处理后的低频数据位宽的第二数据转换为所述高频数据位宽的第二数据;
基于高频时钟域,将所述转换后的第二数据发送给所述高频数据处理模块。
4.根据权利要求1至3中任一所述的方法,其特征在于,所述方法还包括:
基于高频时钟域,将所述高频数据处理模块发送的第一高频读写请求转换为对应于所述低频数据位宽的第一低频读写请求;所述第一高频读写请求包括第一读写模式、第一起始地址、第一高频请求数据个数和所述高频数据位宽;所述第一低频读写请求包括所述第一读写模式、所述第一起始地址、第一低频请求数据个数和所述低频数据位宽;其中,所述第一低频请求数据个数根据所述低频数据位宽和所述第一高频读写请求确定;
将所述高频时钟域的第一低频读写请求进行同步化处理,获得所述低频时钟域的第一低频读写请求;
基于低频时钟域,将所述同步化处理后的第一低频读写请求发送给所述低频数据处理模块;供所述低频数据处理模块根据所述第一低频读写请求对与所述低频数据处理模块对应的存储器进行读写操作。
5.根据权利要求1至3中任一所述的方法,其特征在于,所述方法还包括:
将所述低频数据处理模块发送的低频时钟域的第二低频读写请求进行同步化处理,获得所述高频时钟域的第二低频读写请求;所述第二低频读写请求包括第二读写模式、第二起始地址、第二低频请求数据个数和所述低频数据位宽;
基于高频时钟域,将所述同步化处理后的第二低频读写请求转换为对应于所述高频数据位宽的第二高频读写请求;所述第二高频读写请求包括所述第二读写模式、所述第二起始地址、第二高频请求数据个数和所述高频数据位宽;其中,所述第二高频请求数据个数根据所述高频数据位宽和所述第二低频读写请求确定;
基于高频时钟域,将所述转换后的第二高频读写请求发送给所述高频数据处理模块;供所述高频数据处理模块根据所述第二高频读写请求对与所述高频数据处理模块对应的存储器进行读写操作。
6.一种跨时钟域数据处理系统,其特征在于,包括:
数据处理模块,用于基于在高频时钟域对交互的数据所进行的高频数据位宽和低频数据位宽之间的转换,执行工作于高频时钟域的高频数据处理模块和工作于低频时钟域的低频数据处理模块之间的所述数据交互;
其中,所述高频数据处理模块对应所述高频数据位宽;所述低频数据处理模块对应所述低频数据位宽;所述高频时钟域的频率和所述高频数据位宽的乘积,与所述低频时钟域的频率和所述低频数据位宽的乘积具有倍比关系;
其中,所述高频时钟域的频率和所述高频数据位宽的乘积,与所述低频时钟域的频率和所述低频数据位宽的乘积之间的差值小于或等于预设阈值。
7.根据权利要求6所述的系统,其特征在于,所述数据处理模块包括:
第一数据位宽转换单元,用于基于高频时钟域,将所述高频数据处理模块发送的高频数据位宽的第一数据转换为所述低频数据位宽的第一数据;
第一数据同步化处理单元,用于将所述转换后的高频时钟域的第一数据进行同步化处理,获得所述低频时钟域的第一数据;
第一数据发送单元,用于基于低频时钟域,将所述同步化处理后的第一数据发送给所述低频数据处理模块。
8.根据权利要求6所述的系统,其特征在于,所述数据处理模块包括:
第二数据同步化处理单元,用于将所述低频数据处理模块发送的低频时钟域的低频数据位宽的第二数据进行同步化处理,获得所述高频时钟域的第二数据;
第二数据位宽转换单元,用于基于高频时钟域,将所述同步化处理后的低频数据位宽的第二数据转换为所述高频数据位宽的第二数据;
第二数据发送单元,用于基于高频时钟域,将所述转换后的第二数据发送给所述高频数据处理模块。
9.根据权利要求6至8中任一所述的系统,其特征在于,所述系统还包括:
第一读写请求转换模块,用于基于高频时钟域,将所述高频数据处理模块发送的第一高频读写请求转换为对应于所述低频数据位宽的第一低频读写请求;所述第一高频读写请求包括第一读写模式、第一起始地址、第一高频请求数据个数和所述高频数据位宽;所述第一低频读写请求包括所述第一读写模式、所述第一起始地址、第一低频请求数据个数和所述低频数据位宽;其中,所述第一低频请求数据个数根据所述低频数据位宽和所述第一高频读写请求确定;
第一读写请求同步化处理模块,用于将所述高频时钟域的第一低频读写请求进行同步化处理,获得所述低频时钟域的第一低频读写请求;
第一读写请求发送模块,用于基于低频时钟域,将所述同步化处理后的第一低频读写请求发送给所述低频数据处理模块;供所述低频数据处理模块根据所述第一低频读写请求对与所述低频数据处理模块对应的存储器进行读写操作。
10.根据权利要求6至8中任一所述的系统,其特征在于,所述系统还包括:
第二读写请求同步化处理模块,用于将所述低频数据处理模块发送的低频时钟域的第二低频读写请求进行同步化处理,获得所述高频时钟域的第二低频读写请求;所述第二低频读写请求包括第二读写模式、第二起始地址、第二低频请求数据个数和所述低频数据位宽;
第二读写请求转换模块,用于基于高频时钟域,将所述同步化处理后的第二低频读写请求转换为对应于所述高频数据位宽的第二高频读写请求;所述第二高频读写请求包括所述第二读写模式、所述第二起始地址、第二高频请求数据个数和所述高频数据位宽;其中,所述第二高频请求数据个数根据所述高频数据位宽和所述第二低频读写请求确定;
第二读写请求发送模块,用于基于高频时钟域,将所述转换后的第二高频读写请求发送给所述高频数据处理模块;供所述高频数据处理模块根据所述第二高频读写请求对与所述高频数据处理模块对应的存储器进行读写操作。
11.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如方法权利要求1-5中一个或多个所述的跨时钟域数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710712578.3A CN109408427B (zh) | 2017-08-18 | 2017-08-18 | 一种跨时钟域数据处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710712578.3A CN109408427B (zh) | 2017-08-18 | 2017-08-18 | 一种跨时钟域数据处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109408427A CN109408427A (zh) | 2019-03-01 |
CN109408427B true CN109408427B (zh) | 2021-01-22 |
Family
ID=65463075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710712578.3A Active CN109408427B (zh) | 2017-08-18 | 2017-08-18 | 一种跨时钟域数据处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408427B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109976704A (zh) * | 2019-03-29 | 2019-07-05 | 西安电子科技大学 | 一种基于fpga的级联fifo模块的设计方法 |
CN110308933B (zh) * | 2019-04-25 | 2021-06-01 | 龙芯中科(合肥)技术有限公司 | 访问指令确定方法、装置及存储介质 |
CN112148655B (zh) * | 2019-06-28 | 2023-11-17 | 深圳市中兴微电子技术有限公司 | 多位数据跨时钟域的处理方法及装置 |
CN112596438B (zh) * | 2020-12-14 | 2022-06-21 | 武汉第二船舶设计研究所(中国船舶重工集团公司第七一九研究所) | 一种fpga与微控制器间实时可靠的波形数据传输电路 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101166151A (zh) * | 2007-09-20 | 2008-04-23 | 北大方正集团有限公司 | 跨时钟域不同位宽数据传递的方法及装置 |
CN101510185A (zh) * | 2009-04-01 | 2009-08-19 | 北京中星微电子有限公司 | 一种高速总线向低速总线写入、读取数据的方法和装置 |
CN102012876A (zh) * | 2010-11-19 | 2011-04-13 | 中兴通讯股份有限公司 | 大位宽数据的写入、读取方法及控制器 |
CN105183423A (zh) * | 2015-09-02 | 2015-12-23 | 青岛中星微电子有限公司 | 一种跨时钟域异步数据处理方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266379B1 (en) * | 1997-06-20 | 2001-07-24 | Massachusetts Institute Of Technology | Digital transmitter with equalization |
DE10345996A1 (de) * | 2003-10-02 | 2005-04-28 | Fraunhofer Ges Forschung | Vorrichtung und Verfahren zum Verarbeiten von wenigstens zwei Eingangswerten |
JP5116438B2 (ja) * | 2007-10-25 | 2013-01-09 | 株式会社日立メディコ | 超音波撮像装置 |
CN104484011A (zh) * | 2014-11-25 | 2015-04-01 | 上海高性能集成电路设计中心 | 一种分布控制双时钟异步发送、接收模块及fifo装置 |
-
2017
- 2017-08-18 CN CN201710712578.3A patent/CN109408427B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101166151A (zh) * | 2007-09-20 | 2008-04-23 | 北大方正集团有限公司 | 跨时钟域不同位宽数据传递的方法及装置 |
CN101510185A (zh) * | 2009-04-01 | 2009-08-19 | 北京中星微电子有限公司 | 一种高速总线向低速总线写入、读取数据的方法和装置 |
CN102012876A (zh) * | 2010-11-19 | 2011-04-13 | 中兴通讯股份有限公司 | 大位宽数据的写入、读取方法及控制器 |
CN105183423A (zh) * | 2015-09-02 | 2015-12-23 | 青岛中星微电子有限公司 | 一种跨时钟域异步数据处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109408427A (zh) | 2019-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109408427B (zh) | 一种跨时钟域数据处理方法及系统 | |
CN105320490B (zh) | 用于异步fifo电路的方法和设备 | |
CN109902053B (zh) | 一种基于双控制器的spi通信方法、终端设备及存储介质 | |
WO2021129689A1 (zh) | 数据位宽转换方法和装置 | |
US20180027174A1 (en) | Signaling camera configuration changes using metadata defined for a camera command set | |
US8300699B2 (en) | System, method, and computer-readable medium for reducing required throughput in an ultra-wideband system | |
US10402354B2 (en) | Method, apparatus, communication equipment and storage media for determining link delay | |
US10331359B2 (en) | Memory subsystem with wrapped-to-continuous read | |
US9558718B2 (en) | Streaming video data in the graphics domain | |
US9588931B2 (en) | Communication bridging between devices via multiple bridge elements | |
CN112328523A (zh) | 传输双倍速率信号的方法、装置及系统 | |
CN112988647A (zh) | 一种TileLink总线到AXI4总线转换系统及方法 | |
CN107193766B (zh) | 一种PCIe设备与主机之间的多路有序数据传输方法 | |
CN106792070B (zh) | 一种音视频数据dma传输方法及装置 | |
US10002090B2 (en) | Method for improving the performance of synchronous serial interfaces | |
US20060265520A1 (en) | Method and system for high speed network application | |
CN110798269A (zh) | 基于gpio实现pcm从机功能的方法及系统 | |
CN111949582B (zh) | 指针同步装置及方法、异步fifo电路、处理器系统 | |
US11249511B2 (en) | High performance clock domain crossing FIFO | |
CN112306919A (zh) | 一种基于fpga的数据对齐方法、装置、设备及介质 | |
CN102385912B (zh) | 进行采样相位设定的主控制器、半导体装置以及方法 | |
CN102750244B (zh) | 分级缓冲的dma传送装置及传送方法 | |
CN105988959B (zh) | 一种异步数据传输方法及系统 | |
KR100779212B1 (ko) | Gpio 신호와 smi 신호의 정합 장치 및 방법, 이를이용한 홈 서버 | |
US9621467B1 (en) | Iterative frame synchronization for multiple-lane transmission |
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 | ||
CB02 | Change of applicant information |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |