一种数据传输控制方法、装置及存储介质与流程

文档序号:16206877发布日期:2018-12-08 07:13阅读:220来源:国知局
一种数据传输控制方法、装置及存储介质与流程

本发明涉及通信领域中的数据传输技术,尤其涉及一种数据传输控制方法、装置及存储介质。

背景技术

随着半导体行业的不断发展,在集成电路(ic,integratedcircuit)板的芯片上集成的电路模块越来越多,当芯片处于工作状态时,各电路模块之间需要进行数据传递。由于各电路模块往往处于不同的时钟域,使得各电路模块的时钟频率不同,从而数据信号的跨时钟域问题成为很多ic板设计的难点。

目前,各种通讯协议对数据传输速率的要求,更是让ic硬件接口设计很难灵活适配各种应用场景。通常情况下,对数据传输速率进行一次修改,就需要对ic硬件接口进行一次改动。在一些复杂场景下,还需要增加异步先入先出(fifo,firstinputfirstoutput)队列。然而,异步fifo队列不是万能的,由于异步fifo队列需要在两个时钟域都有对应的接口,且利用握手机制才能保证异步fifo队列发挥作用,如果有任何一个时钟域没有办法实现握手机制,则该异步fifo队列就有数据溢出的风险。

对于如何避免数据溢出的风险,目前相关技术的做法是增加异步fifo队列的深度,即根据发送端与接收端的时钟频率的比值,适当地增大fifo队列的深度。然而,该相关技术所产生的最大问题就是增加了硬件开销。对于数据位宽比较小如1bit的异步fifo队列而言,这种设计产生的开销是在接受范围内的;但是对于数据位宽比较大如256bit的异步fifo队列而言,这种设计增加的缓存面积等开销是巨大的。因为按照上述相关技术的做法,异步fifo队列中的每个bit都是使用硬件寄存器来实现的,这样就会增大寄存器的数量,对整个产品的能耗和成本都会产生影响,而且如果应用频率发生改变,还有可能引入其他风险。

对于如何很好地解决数据信号的跨时钟域问题,以实现最有效地调节接口数据传输速率,相关技术尚无有效解决方案。



技术实现要素:

有鉴于此,本发明实施例期望提供一种数据传输控制方法、装置及存储介质,能够很好地解决数据信号的跨时钟域问题,以实现最有效地调节接口数据传输速率。

为达到上述目的,本发明实施例的技术方案是这样实现的:

本发明实施例提供一种数据传输控制方法,预先设置计数器;所述方法还包括:

确定处于不同时钟域的输入端和输出端的时钟频率比例关系;

根据所述时钟频率比例关系,确定所述计数器的计数值;

检测到所述输入端开始传输数据时,启动所述计数器,并在所述输出端输出数据,直至所述计数器到达所述计数值时,停止所述输出端的数据输出。

上述方案中,停止所述输出端的数据输出时,所述方法还包括:将所述计数器清零。

上述方案中,所述检测到所述输入端开始传输数据,包括:

检测到所述输入端输入的数据的有效信号出现高电平时,所述输入端开始传输数据。

上述方案中,所述输入端包括数据内存,所述输出端包括数据处理模块;所述方法还包括:在所述数据内存与所述数据处理模块之间设置接口控制模块;

所述数据内存与所述接口控制模块处于同一时钟域,所述数据内存的时钟频率大于所述数据处理模块的时钟频率。

上述方案中,在检测到所述输入端开始传输数据之后,所述方法还包括:检测到所述输出端输出的数据有边沿触发时,对所述输出端输出的数据进行采样;

所述边沿触发包括以下至少之一:上升沿触发、下降沿触发。

上述方案中,所述输入端在预设的时钟周期内传输数据。

本发明实施例还提供一种数据传输控制装置,所述装置包括:数据内存模块、接口控制模块;其中,

所述数据内存模块,用于预先设置计数器和速率寄存器,还用于将处于不同时钟域的输入端和输出端的时钟频率比例关系,保存至所述速率寄存器中;

所述接口控制模块,用于检测到所述输入端开始传输数据时,启动所述计数器,并在所述输出端输出数据,当所述计数器的计数值与所述速率寄存器保存的数值相同时,停止所述输出端的数据输出。

上述方案中,所述接口控制模块,还用于停止所述输出端的数据输出时,将所述计数器清零。

上述方案中,所述接口控制模块,具体用于:检测到所述输入端输入的数据的有效信号出现高电平时,所述输入端开始传输数据。

上述方案中,所述装置还包括:数据处理模块,用于在所述接口控制模块检测到所述输入端开始传输数据之后,检测到所述输出端输出的数据有边沿触发时,对所述输出端输出的数据进行采样;

所述边沿触发包括以下至少之一:上升沿触发、下降沿触发。

上述方案中,所述数据内存模块与所述接口控制模块处于同一时钟域,所述数据内存模块的时钟频率大于所述数据处理模块的时钟频率。

本发明实施例还提供一种存储介质,其上存储有可执行程序,所述可执行程序被处理器执行时实现上述任一所述方法的步骤。

本发明实施例还提供一种数据传输控制装置,包括存储器、处理器及存储在存储器上并能够由所述处理器运行的可执行程序,所述处理器运行所述可执行程序时执行上述任一所述方法的步骤。

本发明实施例提供的数据传输控制方法、装置及存储介质,预先设置计数器;确定处于不同时钟域的输入端和输出端的时钟频率比例关系;根据所述时钟频率比例关系,确定所述计数器的计数值;检测到所述输入端开始传输数据时,启动所述计数器,并在所述输出端输出数据,直至所述计数器到达所述计数值时,停止所述输出端的数据输出。如此,在逻辑上未使用异步fifo,而是使用计数器控制数据的输出速率,从而不仅避免因异步fifo队列引起的数据溢出的风险,还减小硬件开销,使得硬件结构简单,很好地解决数据信号的跨时钟域问题,以实现最有效地调节接口数据传输速率,具有很强的实用价值。

附图说明

图1为现有技术中跨时钟域数据传输的应用环境示意图;

图2为现有技术中解决跨时钟域数据传输的装置结构示意图;

图3为本发明实施例提供的数据传输控制方法的流程示意图;

图4为本发明实施例提供的数据输入输出时序状态图;

图5为本发明实施例提供的数据传输控制装置的组成结构示意图;

图6为本发明实施例提供的接口控制模块的结构示意图;

图7为本发明实施例提供的数据传输控制装置的硬件结构示意图。

具体实施方式

现有技术中,实现跨时钟域数据传输的应用环境如图1所示,在该应用环境下,首先按照数据内存11的接口协议从数据内存11中读取数据,然后将读取出的数据传输给数据处理模块12做进一步处理。其中,数据内存11与数据处理模块12处于不同的时钟域,即数据内存11属于时钟域(clockdomain)1,数据处理模块12属于clockdomain2。需要说明的是,即使数据内存11与数据处理模块12处于相同的时钟域,数据处理模块12对输入数据的速率也有一定的要求,即一般要求在一定的时钟周期内输入一个数据,且该时钟周期是由通讯协议或者数据处理模块12的处理能力决定的。要想实现数据内存与数据处理模块保持不同的时钟频率,这给ic硬件接口设计带来很大困难。

针对上述问题,现有技术中给出了相应解决方案,图2为现有技术中解决跨时钟域数据传输的装置的结构示意图,如图2所示,该装置包括:数据内存21、发送端接口模块22、异步fifo模块23、接收端接口模块24、以及数据处理模块25。其中,数据内存21与发送端接口模块22同属于clockdomain1,接收端接口模块24与数据处理模块25同属于clockdomain2,使用跨两个时钟域的异步fifo模块23连接发送端接口模块22和接收端接口模块24。该装置的实现过程主要为:发送端接口模块22一方面要按照数据内存21的接口协议从数据内存21中取出数据,另一方面要产生fifo的写信号,将数据写入异步fifo模块23中;接收端接口模块24一方面要产生fifo的读信号,将数据从异步fifo模块23中读出来,另一方面要根据数据处理模块25的要求或接口协议,将数据按照一定的速率传输给数据处理模块25。这样,利用发送端接口模块22、异步fifo模块23、接收端接口模块24就实现了数据的跨时钟域传输。

上述现有的跨时钟域数据传输解决方案中,有可能会出现数据溢出的风险,而对于如何避免数据溢出的风险,在解决数据信号的跨时钟域问题的基础上,能够有效控制数据的传输速率,现有技术尚未给出有效的解决方案。因此,本发明实施例在逻辑上未使用异步fifo,而是使用计数器控制数据的输出速率,进一步详细说明数据传输控制方法的具体流程。

为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明。

如图3所示,本发明实施例中数据传输控制方法的实现流程,包括以下步骤:

步骤301:预先设置计数器;

这里,与现有技术增加异步fifo模块相比,设置计数器更加简单、方便,使得实现数据传输控制方法的硬件结构变得更加简单,同时也带来了硬件面积上的极大节省和功耗上的降低。

步骤302:确定处于不同时钟域的输入端和输出端的时钟频率比例关系;

这里,所述输入端包括数据内存,所述输出端包括数据处理模块;所述方法还包括:在所述数据内存与所述数据处理模块之间设置接口控制模块;

其中,所述数据内存与所述接口控制模块处于同一时钟域,所述数据内存、接口控制模块分别与所述数据处理模块处于不同时钟域。需要强调的是,必须保证所述数据内存的时钟频率大于所述数据处理模块的时钟频率。

步骤303:根据所述时钟频率比例关系,确定所述计数器的计数值;

这里,还可以根据确定的处于不同时钟域的输入端和输出端的时钟频率比例关系,或者数据处理模块对传输速率的要求,来配置速率寄存器;也就是说,所述速率寄存器中存储的数值与所述计数器的计数值保持一致。

举例来说,假如输入端的数据内存的时钟频率为200mhz,输出端的数据处理模块的时钟频率为100mhz,则此时可以将速率寄存器的值配置为2或者更大的数据,这样就能保证数据处理模块采样到正确的数据。

步骤304:检测到所述输入端开始传输数据时,启动所述计数器,并在所述输出端输出数据,直至所述计数器到达所述计数值时,停止所述输出端的数据输出。

这里,所述到达所述计数值,具体为计数可以是计数器设置计数初始值为0,那么,计数就是从0加到确定的计数值;也可以是计数器设置计数初始值为确定的计数值,此时计数就是一直减到0,在此不做限定。

这里,停止所述输出端的数据输出时,所述方法还包括:将所述计数器清零。

这里,所述检测到所述输入端开始传输数据,包括:

检测到所述输入端输入的数据的有效信号出现高电平时,所述输入端开始传输数据。

这里,在检测到所述输入端输入的数据的有效信号出现高电平时,基于数据处理的延时,因此在一小段延时之后,输出端即数据处理模块开始对数据进行采样,此时输出数据的有效信号出现高电平。

这里,在检测到所述输入端开始传输数据之后,所述方法还包括:检测到所述输出端输出的数据有边沿触发时,对所述输出端输出的数据进行采样;

所述边沿触发包括以下至少之一:上升沿触发、下降沿触发。

这里,所述输入端在预设的时钟周期内传输数据。

需要说明的是,在停止所述输出端的数据输出之前,所述输入端已经停止数据传输,由于所述输入端在预设的时钟周期内传输数据,因此,对于输入端而言,只要在预设的时钟周期内将输入端的数据传输完毕之后,就可以停止数据的传输。

在上述数据处理过程中,需要将输入数据存入缓存器中进行缓存,以便在停止所述输出端的数据输出之前,保持输出数据与输入数据的数值相同,而输出数据与输入数据传输的时间不同。

图4给出了本发明实施例数据输入输出时序状态图,如图4所示,在某时钟状态下,当输入数据的有效信号input_valid出现高电平,且检测到输出端输出的数据有边沿触发时(图4为上升沿触发),数据处理模块开始对输出端输出数据的有效信号output_valid进行采样,假设计数器根据时钟进行计数所得到的计数值为5,当计数器的计数值与预先存储在速率寄存器中的数值相同时,output_valid由高电平变为低电平,所述低电平表示此时停止输出端的数据输出。可见,input_valid经过计数器的控制,变为占多个时钟周期的output_valid。其中,所占用的周期数目由配置的速率寄存器控制。

为实现上述方法,本发明实施例还提供了一种数据传输控制装置,如图5所示,该装置包括数据内存模块51、接口控制模块52;其中,

所述数据内存模块51,用于预先设置计数器和速率寄存器,还用于将处于不同时钟域的输入端和输出端的时钟频率比例关系,保存至所述速率寄存器中;

所述接口控制模块52,用于检测到所述输入端开始传输数据时,启动所述计数器,并在所述输出端输出数据,当所述计数器的计数值与所述速率寄存器保存的数值相同时,停止所述输出端的数据输出。

这里,所述装置还包括:数据处理模块53,用于在所述接口控制模块52检测到所述输入端开始传输数据之后,检测到所述输出端输出的数据有边沿触发时,对所述输出端输出的数据进行采样;

所述边沿触发包括以下至少之一:上升沿触发、下降沿触发。

这里,所述接口控制模块52,还用于停止所述输出端的数据输出时,将所述计数器清零。

所述接口控制模块52,具体用于:检测到所述输入端输入的数据的有效信号出现高电平时,所述输入端开始传输数据。

其中,所述数据内存模块51与所述接口控制模块52处于同一时钟域,所述数据内存模块51、接口控制模块52分别与所述数据处理模块53处于不同时钟域。需要强调的是,必须保证所述数据内存模块51的时钟频率大于所述数据处理模块53的时钟频率;所述输入端在预设的时钟周期内传输数据。

在实际应用中,所述数据内存模块51、接口控制模块52、数据处理模块53均可由位于ic板上的中央处理器(cpu,centralprocessingunit)、微处理器(mpu,microprocessorunit)、数字信号处理器(dsp,digitalsignalprocessor)、或现场可编程门阵列(fpga,fieldprogrammablegatearray)等实现。

需要说明的是:上述实施例提供的数据传输控制装置在进行数据传输控制时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的数据传输控制装置与数据传输控制方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图6给出了本发明实施例接口控制模块的结构示意图,如图6所示,该结构包括:速率寄存器61、计数器62、比较器63;其中,

所述速率寄存器61,用于保存处于不同时钟域的输入端和输出端的时钟频率比例关系;

所述计数器62,用于根据时钟进行计数;

所述比较器63,用于比较所述计数器62的计数值与所述速率寄存器61保存的数值,当两者相同时,停止输出端的数据输出。

为实现上述方法,本发明实施例还提供了另一种数据传输控制装置,该装置包括存储器、处理器及存储在存储器上并能够由所述处理器运行的可执行程序,所述处理器运行所述可执行程序时,执行以下操作:

预先设置计数器;

确定处于不同时钟域的输入端和输出端的时钟频率比例关系;

根据所述时钟频率比例关系,确定所述计数器的计数值;

检测到所述输入端开始传输数据时,启动所述计数器,并在所述输出端输出数据,直至所述计数器到达所述计数值时,停止所述输出端的数据输出。

所述处理器还用于运行所述可执行程序时,执行以下操作:

停止所述输出端的数据输出时,将所述计数器清零。

所述处理器还用于运行所述可执行程序时,执行以下操作:

检测到所述输入端输入的数据的有效信号出现高电平时,所述输入端开始传输数据。

所述处理器还用于运行所述可执行程序时,执行以下操作:

所述输入端包括数据内存,所述输出端包括数据处理模块;在所述数据内存与所述数据处理模块之间设置接口控制模块;

所述数据内存与所述接口控制模块处于同一时钟域,所述数据内存的时钟频率大于所述数据处理模块的时钟频率。

所述处理器还用于运行所述可执行程序时,执行以下操作:

在检测到所述输入端开始传输数据之后,检测到所述输出端输出的数据有边沿触发时,对所述输出端输出的数据进行采样;

所述边沿触发包括以下至少之一:上升沿触发、下降沿触发。

所述处理器还用于运行所述可执行程序时,执行以下操作:

所述输入端在预设的时钟周期内传输数据。

下面对本发明实施例中所述数据传输控制装置的硬件结构做进一步说明。

图7给出了本发明实施例的数据传输控制装置的硬件结构示意图,图7所示的数据传输控制装置700包括:至少一个处理器701、存储器702、用户接口703和至少一个网络接口704。所述数据传输控制装置700中的各个组件通过总线系统705耦合在一起。可理解,总线系统705用于实现这些组件之间的连接通信。总线系统705除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为总线系统705。

其中,用户接口703可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。

可以理解,存储器702可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。

本发明实施例中的存储器702用于存储各种类型的数据以支持数据传输控制装置700的操作。这些数据的示例包括:用于在数据传输控制装置700上操作的任何计算机程序,如可执行程序7021,实现本发明实施例方法的程序可以包含在可执行程序7021中。

上述本发明实施例揭示的方法可以应用于处理器701中,或者由处理器701实现。处理器701可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器701中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器701可以是通用处理器、dsp,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器701可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器702,处理器701读取存储器702中的信息,结合其硬件完成前述方法的步骤。

在示例性实施例中,本发明实施例还提供了一种存储介质,其上存储有可执行程序,所述可执行程序被数据传输控制装置700的处理器701运行时,执行以下操作:

预先设置计数器;

确定处于不同时钟域的输入端和输出端的时钟频率比例关系;

根据所述时钟频率比例关系,确定所述计数器的计数值;

检测到所述输入端开始传输数据时,启动所述计数器,并在所述输出端输出数据,直至所述计数器到达所述计数值时,停止所述输出端的数据输出。

所述可执行程序被数据传输控制装置700的处理器701运行时,还执行以下操作:

停止所述输出端的数据输出时,将所述计数器清零。

所述可执行程序被数据传输控制装置700的处理器701运行时,还执行以下操作:

检测到所述输入端输入的数据的有效信号出现高电平时,所述输入端开始传输数据。

所述可执行程序被数据传输控制装置700的处理器701运行时,还执行以下操作:

所述输入端包括数据内存,所述输出端包括数据处理模块;在所述数据内存与所述数据处理模块之间设置接口控制模块;

所述数据内存与所述接口控制模块处于同一时钟域,所述数据内存的时钟频率大于所述数据处理模块的时钟频率。

所述可执行程序被数据传输控制装置700的处理器701运行时,还执行以下操作:

在检测到所述输入端开始传输数据之后,检测到所述输出端输出的数据有边沿触发时,对所述输出端输出的数据进行采样;

所述边沿触发包括以下至少之一:上升沿触发、下降沿触发。

所述可执行程序被数据传输控制装置700的处理器701运行时,还执行以下操作:

所述输入端在预设的时钟周期内传输数据。

本发明实施例预先设置计数器;确定处于不同时钟域的输入端和输出端的时钟频率比例关系;根据所述时钟频率比例关系,确定所述计数器的计数值;检测到所述输入端开始传输数据时,启动所述计数器,并在所述输出端输出数据,直至所述计数器到达所述计数值时,停止所述输出端的数据输出。如此,在逻辑上未使用异步fifo,而是使用计数器控制数据的输出速率,从而不仅避免因异步fifo队列引起的数据溢出的风险,还减小硬件开销,使得硬件结构简单,很好地解决数据信号的跨时钟域问题,以实现最有效地调节接口数据传输速率,具有很强的实用价值。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或可执行程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的可执行程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和可执行程序产品的流程图和/或方框图来描述的。应理解可由可执行程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些可执行程序指令到通用计算机、专用计算机、嵌入式处理机或参考可编程数据处理设备的处理器以产生一个机器,使得通过计算机或参考可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些可执行程序指令也可存储在能引导计算机或参考可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些可执行程序指令也可装载到计算机或参考可编程数据处理设备上,使得在计算机或参考可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或参考可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1