一种数据存储、读取的方法及装置与流程

文档序号:15517315发布日期:2018-09-25 18:41阅读:145来源:国知局

本发明涉及系统级芯片设计(soc,systemonchip)技术,具体涉及一种数据存储、读取的方法及装置。



背景技术:

soc是信息系统核心的芯片集成,是一个微小型系统。soc由处理器(包括cpu、dsp等)、存储器、各种接口控制模块、各种互联总线等组成,与传统的电子系统相比,soc不仅具有集成度高,体积小的优点,而且在性能、功耗、成本、可靠性、生命周期等方面也有明显的优势,因此是集成电路未来发展的趋势。

近年来,soc技术有了长足的发展,已经应用到各种不同的领域,有的应用领域常常会有大量的数据需要存入存储器中以备使用。应用领域中使用的数据是通过soc系统总线存入存储器中的,soc系统总线具有预设的位宽,soc系统总线的位宽是一次存储动作能存储的最大数据位数,也决定了存储器的位宽。但是,soc系统总线的位宽常常与需要存储的数据的位数并不一致,因为soc系统总线一般设置为32位(bit)、64位、128位等固定位宽,而需要存储的数据的位数则没有规律,这样,既会浪费soc系统总线的位宽,也会造成存储器的存储空间的浪费。举例来说,假设有大量的6位的数据需要存储到存储器中,而soc系统总线的位宽是16位,那么,这时存储器中数据的排列方式如图1所示,实际中一般没有系统总线的位宽是16位的soc,但为了附图表达方便,假设soc系统总线的位宽是16位。

在图1中,将6位的数据依次存放在每行宽度为16位的存储空间内,可以看到,每行的存储空间上会有4位没有得到利用,存储利用率只有75%;如果数据是5位,则利用率只有62.5%,这样,如果数据量比较多的情况下,会造成很大的存储资源浪费,使芯片的设计体积增大,成本上升。



技术实现要素:

为解决现有存在的技术问题,本发明实施例期望提供一种数据存储、读取的方法及装置,能更好的利用soc的存储器空间,减少芯片的体积,降低成本。

本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种数据存储的方法,所述方法包括:

获取待存储数据中包含的各原始数据的位数;

在所述原始数据的位数与存储器的位宽不是整数倍关系时,对所述原始数据按预设数据重组策略重组为与所述存储器的位宽一致的重组数据,并将所述重组数据存储于所述存储器。

优选地,所述对所述原始数据按预设数据重组策略重组为与所述存储器的位宽一致的重组数据,包括:

将所述原始数据按原有顺序首尾拼接,获得与所述存储器的位宽一致的重组数据。

优选地,所述对所述原始数据按预设数据重组策略重组为与所述存储器的位宽一致的重组数据,包括:

将所述原始数据基于原有顺序进行拆分、组合,获得与所述存储器的位宽一致且满足预设规则的重组数据;

所述预设规则为:每读取所述存储器的一个存储位,获得的重组数据中包括预设个数或零个存储前的原始数据。

优选地,在对所述原始数据按预设数据重组策略重组为与所述存储器的位宽一致的重组数据之前,所述方法还包括:

在所述原始数据位数为奇数时,在所述原始数据的预设位置添加一位,将奇数位的原始数据变换为偶数位的原始数据,并在添加位置进行标记。

本发明实施例还提供了一种数据读取的方法,所述方法包括:

读取存储器中的重组数据,对读取的重组数据按所述原始数据存储时所用的数据重组策略进行数据恢复操作,获得存储前的各原始数据。

优选地,所述对读取的重组数据按所述原始数据存储时所用的数据重组策略进行数据恢复操作,包括:

读取重组数据后,按所述原始数据存储时所用的数据重组策略对读取后的重组数据进行逆向操作。

本发明实施例还提供了一种数据存储的装置,所述装置包括获取模块和重组模块;其中,

所述获取模块,用于获取待存储数据中包含的各原始数据的位数;

所述重组模块,用于在所述原始数据的位数与存储器的位宽不是整数倍关系时,对所述原始数据按预设数据重组策略重组为与所述存储器的位宽一致的重组数据,并将所述重组数据存储于所述存储器。

优选地,所述重组模块具体用于:

将所述原始数据按原有顺序首尾拼接,获得与所述存储器的位宽一致的重组数据。

优选地,所述重组模块具体用于:

将所述原始数据基于原有顺序进行拆分、组合,获得与所述存储器的位宽一致且满足预设规则的重组数据;

所述预设规则为:每读取所述存储器的一个存储位,获得的重组数据中包括预设个数或零个存储前的原始数据。

优选地,所述重组模块还用于:

在所述原始数据位数为奇数时,在所述原始数据的预设位置添加一位,将奇数位的原始数据变换为偶数位的原始数据,并在添加位置进行标记。

本发明实施例还提供了一种数据读取的装置,所述装置包括读取模块和恢复模块;其中,

所述读取模块,用于读取存储器中的重组数据;

所述恢复模块,用于对读取的重组数据按所述原始数据存储时所用的数据重组策略进行数据恢复操作,获得存储前的各原始数据。

优选地,所述恢复模块具体用于:

读取重组数据后,按所述原始数据存储时所用的数据重组策略对读取后的重组数据进行逆向操作。

本发明实施例所提供的数据存储、读取的方法及装置,获取原始数据中包含的各原始数据的位数;在所述原始数据的位数与存储器的位宽不是整数倍关系时,对所述原始数据按预设数据重组策略重组为与所述存储器的位宽一致的重组数据,并将所述重组数据存储于所述存储器;相应的,在读取所述存储器的重组数据时,可以对读取的重组数据按原始数据存储时所用的数据重组策略进行数据恢复操作,获得存储前的各原始数据;可见,本发明实施例将位数与存储器的位宽不是整数倍关系的原始数据,按预设数据重组策略重组为与所述存储器的位宽一致的数据,能够更好、更充分地利用soc的存储器空间,减少芯片体积,降低成本。

附图说明

图1为现有技术中soc存储器存储数据的示意图;

图2为本发明实施例一数据存储的方法的实现流程示意图;

图3为本发明实施例一中soc存储器存储数据的示意图一;

图4为本发明实施例一中soc存储器存储数据的示意图二;

图5为本发明实施例二数据读取的方法的实现流程示意图;

图6为本发明实施例三数据存储的装置的结构组成示意图;

图7为本发明实施例四数据读取的装置的结构组成示意图;

图8为本发明实施例五soc功能模块存储、读取数据装置的一种可选结构示意图;

图9为本发明实施例六soc功能模块存储、读取数据装置的另一种可选结构示意图。

具体实施方式

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

实施例一

图2为本发明实施例一数据存储的方法的实现流程示意图,本发明实施例中,需要存储与读取数据的主体是soc,所述方法可以由soc实现,如图2所示,所述方法包括:

步骤101:获取待存储数据中包含的各原始数据的位数;

实际使用中,有的应用领域常常会有大量的数据需要存入soc的存储器中以备使用,且所述数据常常具有相同的位数;为了更好的利用存储器的存储空间,需要先获取待存储数据中各原始数据的位数。

如果原始数据的位数与存储器的位宽是整数倍关系时,soc直接进行存储;

所述原始数据的位数与存储器的位宽是整数倍关系,可以是原始数据的位数是所述存储器的整数倍,也可以是所述存储器的位宽是原始数据的位数的整数倍;

在原始数据的位数与存储器的位宽不是整数倍关系时,soc需要对原始数据进行重组,也就是步骤102的内容。

soc获取待存储数据中包含的各原始数据的位数是通过接收数据采集部件的相关信号实现的,所述数据采集部件可以是soc中的功能部件,如视频输入接口等。

步骤102:在所述原始数据的位数与存储器的位宽不是整数倍关系时,对所述原始数据按预设数据重组策略重组为与所述存储器的位宽一致的重组数据,并将所述重组数据存储于所述存储器。

这里,所述soc对所述原始数据按预设数据重组策略重组为与所述存储器的位宽一致的重组数据包括两种方式:

第一种,soc将所述原始数据按原有顺序首尾拼接,获得与所述存储器的位宽一致的重组数据;

具体地,如果原始数据位数大于所述存储器的位宽,则soc将当前的第一数据分拆;第一数据的前一部分的位数与所述存储器的位宽相同,直接存储;将第一数据之后的第二数据也进行分拆,所述第一数据的后一部分与第二数据的前一部分组合成与所述存储器的位宽相同的数据,存储到所述存储器;依此类推,所述第二数据的后一部分继续与第三数据重新组合,不再赘述;

如果原始数据位数小于所述存储器的位宽,则soc将当前第一数据之后的第二数据分拆;所述第二数据的前一部分与第一数据组合成与所述存储器的位宽相同的数据,存储到所述存储器;将第二数据之后的第三数据也进行分拆,所述第三数据的前一部分与第二数据的后一部分组合成与所述存储器的位宽相同的数据,存储到所述存储器;依此类推,所述第三数据的后一部分继续与后续数据重新组合,不再赘述;

如果两个原始数据的位数相加,还是小于所述存储器的位宽,则soc将两个数据之后的数据分拆后与前面的数据组合,如果两个以上的原始数据位数相加,还是小于所述存储器的位宽,则继续分拆后续的数据进行组合,不再赘述。

举例说明,图3为本发明实施例一中soc存储器存储数据的示意图一,如图3所示,原始数据为a、b、c、d、e、f、g、h,其位数均为6位,soc系统总线的位宽是16位;由于a、b两个数据的位数相加,还是小于所述存储器的位宽,因此将数据c进行拆分,数据c的前一部分与数据a、b组合后存储在第一行,也就是存储器的一个存储位;依此类推,数据c的后一部分与数据d、e及数据f的前一部分组合后存储在第二行,数据f的后一部分与数据g、h组合后存储在第三行。

第二种,soc将所述原始数据基于原有顺序进行拆分、组合,获得与所述存储器的位宽一致且满足预设规则的重组数据;

所述预设规则为:每读取所述存储器的一个存储位,获得的重组数据中包括预设个数或零个存储前的原始数据。

所述重组数据满足预设规则,是为了在读取所述存储器的数据后传输给数据需求部件时的速率保持一致,且不增加额外的处理部件。

这里,需求数据部件可以是soc的功能部件,例如可以是soc的视频信号处理部件。

举例说明,图4为本发明实施例一中soc存储器存储数据的示意图二;如图4所示,原始数据为a、b、c、d、e、f、g、h,其位数均为6位,soc系统总线的位宽是16位;其中,第一行为数据a、b、c、d的前一部分,读取一次,不能得到任何一个完整的数据,比如:读取第一个存储位,读出a5、a4、a3、a2、b5、b4、b3、b2、c5、c4、c3、c2、d5、d4、d3、d2,但对于原始数据a、b、c、d而言,均不完整,所以,相当于获得零个原始数据;也就不会传输数据给数据需求部件,不会有速率的问题;第二行为数据a、b、c、d的后一部分和数据e、f的前一部分,继续读出a1、a0、b1、b0、c1、c0、d1、d0,加上之前的a5、a4、a3、a2、b5、b4、b3、b2、c5、c4、c3、c2、d5、d4、d3、d2,能得到a、b、c、d四个完整的原始数据;依次类推,第三行为数据e、f的后一部分和数据g、h,能得到e、f、g、h四个完整的原始数据;这样读取第二行和第三行后,由于第二行和第三行均获得四个完整的原始数据,传输给数据需求部件时的速率保持一致;

具体地,为了保证soc每读取所述存储器的一个存储位的数据后获得的原始数据个数为预设值或零,soc可以按如下步骤获得一个原始数据在存储器的存储位分布的方案,其它的原始数据按此方案反复循环即可:

1)计算原始数据位数和存储器位宽的公倍数;

2)将计算得到的公倍数除以原始数据位数,得到原始数据的个数,因为是公倍数,所以一定能整除;

3)将计算得到的公倍数除以存储器位宽,得到存储位个数,可以理解为图3或图4中的行数,同理,也能整除;

4)将可以存储的原始数据个数平均分配到存储位,即可以存储的原始数据个数除以存储位,得到读取后能获得的原始数据个数为预设值的存储位,如不能整除,则存储器的一个或一个以上的存储位读取后不能获得原始数据;

5)将读取后不能获得原始数据的存储位放在前面,存储原始数据的前一部分数据,在其余存储位中存储原始数据的后一部分数据或原始数据的全部,保证soc每读取所述存储器的一个存储位的数据后获得的原始数据个数为预设值或零。

为了说明的更清楚,下面以图4为例进行说明:

1)原始数据为a、b、c、d、e、f、g、h,其位数均为6位,soc系统总线的位宽是16位,原始数据位数和存储器位宽的公倍数为48;

2)将计算得到的公倍数48除以原始数据位数6,得到原始数据个数8;

3)将计算得到的公倍数48除以存储器位宽16,得到存储位个数3,也就是图4中的3行;

4)将8个原始数据平均分配到3个存储位,得到读取后能获得的原始数据个数为4的存储位有两个,另一个存储位读取后不能获得原始数据;

5)图4中,将第一行存储位设置为读取后不能获得原始数据,仅存储原始数据的前一部分数据,将后两行存储位中存储原始数据的后一部分数据或原始数据的全部,保证soc每读取所述存储器一个存储位的数据后获得的原始数据个数为预设值或零;具体地,将原始数据a、b、c、d的前4位存储到第一行,将数据a、b、c、d的后2位和数据e、f的前2位存储到第二行,将数据e、f的后4位和数据g、h的全部存储到第三行。

进一步地,为了便于数据重组,soc需要将位数为奇数的原始数据变换为位数为偶数的原始数据,因为存储器的位宽都是偶数;

具体地,在所述原始数据位数为奇数时,soc在位数为奇数的原始数据的预设位置添加一位数,将奇数位的原始数据变换为偶数位的原始数据,并在添加位置进行标记,在后续的读取数据的过程中,可以将有标记位置的数去除;

所述原始数据的预设位置添加一位数,添加的数可以为0,也可以为1;所述预设位置,优选所述原始数据的末位;

如果原始数据本来就是偶数,就不需要变换。

实施例二

图5为本发明实施例二数据读取的方法的实现流程示意图,本发明实施例中,需要读取数据的主体是soc,所述方法可以由soc实现,如图5所示,所述方法包括:

步骤201:读取存储器中的数据,对读取的数据按数据存储所用的数据重组策略进行数据恢复操作,获得存储前的数据。

soc读取存储器中的数据时,是按存储器的存储位来读取的,也就是每读取一次,就读取一个存储位的数据,所述存储位可以理解为示例图3或图4中的一行;

具体恢复操作包括:读取数据后,soc按数据存储所用的数据重组策略对读取后的数据进行逆向操作,获得有用的数据,也就是与存储前一致的数据;

具体地,soc每读取一个存储位的数据后,就对一个存储位的数据进行逆向操作,获得与存储前一致的数据;

进一步地,当soc每读取所述存储器的一个存储位的数据后获得的原始数据个数不为预设值或零时,soc还执行如下步骤:

将读取的数据放入临时存储部件中;

当所述临时存储部件中的数据数量等于预设值时,传送预设值数量的数据到数据需求部件。

这样,保证soc输出给数据需求部件的传输速率一致,符合数据需求部件的需求;

这里,所述临时存储部件可以是寄存器。

当soc每读取所述存储器的一个存储位的数据后获得的原始数据个数为预设值或零时,直接将读取的数据传输给数据需求部件,不需做额外的处理。

实施例三

图6为本发明实施例三数据存储的装置的结构组成示意图,如图6所示,所述装置包括获取模块31和重组模块32;其中,

所述获取模块31,用于获取待存储数据中包含的各原始数据的位数;

所述重组模块32,用于在所述原始数据的位数与存储器的位宽不是整数倍关系时,对原始数据按预设数据重组策略重组为与所述存储器的位宽一致的数据,并将重组后的数据存储于所述存储器。

为了说明的更清楚,下面将分别对各个模块作详细说明:

所述获取模块31,用于获取原始数据中包含的各原始数据的位数;

实际使用中,有的应用领域常常会有大量的数据需要存入soc的存储器中以备使用,且所述数据常常具有相同的位数;为了更好的利用存储器的存储空间,需要先获取待存储数据中包含的各原始数据的位数。

如果原始数据的位数与存储器的位宽是整数倍关系时,soc直接进行存储;

所述原始数据的位数与存储器的位宽是整数倍关系,可以是原始数据的位数是所述存储器的整数倍,也可以是所述存储器的位宽是原始数据的位数的整数倍;

如果原始数据的位数与存储器的位宽不是整数倍关系时,需要对所述原始数据进行重组,也就是重组模块32的功能。

所述获取模块31获取待存储数据中包含的各原始数据的位数是通过接收数据采集部件的相关信号实现的,所述数据采集部件可以是soc中的功能部件,如视频输入接口等,所述数据采集部件是现有技术中的功能部件,不作赘述。

所述重组模块32,用于在所述原始数据的位数与存储器的位宽不是整数倍关系时,对所述原始数据按预设数据重组策略重组为与所述存储器的位宽一致的数据,并将重组后的数据存储于所述存储器。

这里,所述对原始数据按预设数据重组策略重组为与所述存储器的位宽一致的数据包括两种方式:

第一种,所述重组模块32将所述原始数据按原有顺序首尾拼接,获得与所述存储器的位宽一致的数据;

具体地,如果原始数据位数大于所述存储器的位宽,则所述重组模块32将当前的第一数据分拆;第一数据的前一部分的位数与所述存储器的位宽相同,直接存储;将第一数据之后的第二数据也进行分拆,所述第一数据的后一部分与第二数据的前一部分组合成与所述存储器的位宽相同的数据,存储到所述存储器;依此类推,所述第二数据的后一部分继续与第三数据重新组合,不再赘述;

如果原始数据位数小于所述存储器的位宽,则所述重组模块32将当前第一数据之后的第二数据分拆;所述第二数据的前一部分与第一数据组合成与所述存储器的位宽相同的数据,存储到所述存储器;将第二数据之后的第三数据也进行分拆,所述第三数据的前一部分与第二数据的后一部分组合成与所述存储器的位宽相同的数据,存储到所述存储器;依此类推,所述第三数据的后一部分继续与后续数据重新组合,不再赘述;

如果两个原始数据的位数相加,还是小于所述存储器的位宽,则所述重组模块32将两个数据之后的数据分拆后与前面的数据组合,如果两个以上的数据位数相加,还是小于所述存储器的位宽,则继续分拆后续的数据进行组合,不再赘述。

举例说明,图3为本发明实施例一中soc存储器存储数据的示意图一,如图3所示,原始数据为a、b、c、d、e、f、g、h,其位数均为6位,soc系统总线的位宽是16位的;由于a、b两个数据的位数相加,还是小于所述存储器的位宽,因此将数据c进行拆分,数据c的前一部分与数据a、b组合后存储在第一行,也就是存储器的一个存储位上;依此类推,数据c的后一部分与数据d、e及数据f的前一部分组合后存储在第二行,数据f的后一部分与数据g、h组合后存储在第三行。

第二种,所述重组模块32将所述原始数据基于原有顺序进行拆分、组合,获得与所述存储器的位宽一致且满足预设规则的重组数据;

所述预设规则为:每读取所述存储器的一个存储位,获得的重组数据中包括预设个数或零个存储前的原始数据。

所述重组数据满足预设规则,是为了在读取所述存储器的数据后传输给需求数据部件时的速率保持一致,且不增加额外的处理部件。

这里,所述需求数据部件可以是soc的功能部件,例如可以是soc的视频信号处理部件,所述数据需求部件是现有技术中的功能部件,不作赘述。

举例说明,图4为本发明实施例一中soc存储器存储数据的示意图二;如图4所示,原始数据为a、b、c、d、e、f、g、h,其位数均为6位,soc系统总线的位宽是16位;其中,第一行为数据a、b、c、d的前一部分,读取一次,不能得到任何一个完整的数据,比如:读取第一个存储位,读出a5、a4、a3、a2、b5、b4、b3、b2、c5、c4、c3、c2、d5、d4、d3、d2,但对于原始数据a、b、c、d而言,均不完整,所以,相当于获得零个原始数据;也就不会传输数据给数据需求部件,不会有速率的问题;第二行为数据a、b、c、d的后一部分和数据e、f的前一部分,继续读出a1、a0、b1、b0、c1、c0、d1、d0,加上之前的a5、a4、a3、a2、b5、b4、b3、b2、c5、c4、c3、c2、d5、d4、d3、d2,能得到a、b、c、d四个完整的原始数据;依次类推,第三行为数据e、f的后一部分和数据g、h,能得到e、f、g、h四个完整的原始数据;这样读取第二行和第三行后,由于第二行和第三行均获得四个完整的原始数据,传输给数据需求部件时的速率保持一致;

具体地,为了保证soc每读取所述存储器的一个存储位的数据后获得的原始数据个数为预设值或零,soc可以按如下步骤获得一个原始数据在存储器的存储位分布的方案,其它的原始数据按此方案反复循环即可:

1)计算原始数据位数和存储器位宽的公倍数;

2)将计算得到的公倍数除以原始数据位数,得到原始数据的个数,因为是公倍数,所以一定能整除;

3)将计算得到的公倍数除以存储器位宽,得到存储位个数,可以理解为图3或图4中的行数,同理,也能整除;

4)将可以存储的原始数据个数平均分配到存储位,即可以存储的原始数据个数除以存储位,得到读取后能获得的原始数据个数为预设值的存储位,如不能整除,则存储器的一个或一个以上的存储位读取后不能获得原始数据;

5)将读取后不能获得原始数据的存储位放在前面,存储原始数据的前一部分数据,在其余存储位中存储原始数据的后一部分数据或原始数据的全部,保证soc每读取所述存储器的一个存储位的数据后获得的原始数据个数为预设值或零。

为了说明的更清楚,下面以图4为例进行说明:

1)原始数据为a、b、c、d、e、f、g、h,其位数均为6位,soc系统总线的位宽是16位,原始数据位数和存储器位宽的公倍数为48;

2)将计算得到的公倍数48除以原始数据位数6,得到原始数据个数8;

3)将计算得到的公倍数48除以存储器位宽16,得到存储位个数3,也就是图4中的3行;

4)将8个原始数据平均分配到3个存储位,得到读取后能获得的原始数据个数为4的存储位有两个,另一个存储位读取后不能获得原始数据;

5)图4中,将第一行存储位设置为读取后不能获得原始数据,仅存储原始数据的前一部分数据,将后两行存储位中存储原始数据的后一部分数据或原始数据的全部,保证soc每读取所述存储器的一个存储位的数据后获得的原始数据个数为预设值或零;具体地,将原始数据a、b、c、d的前4位存储到第一行,将数据a、b、c、d的后2位和数据e、f的前2位存储到第二行,将数据e、f的后4位和数据g、h的全部存储到第三行。

进一步地,为了便于数据重组,所述重组模块32需要将位数为奇数的原始数据变换为位数为偶数的原始数据,因为存储器的位宽都是偶数;

具体地,在所述原始数据位数为奇数时,所述重组模块32在位数为奇数的原始数据的预设位置添加一位数,将奇数位的原始数据变换为偶数位的原始数据,并在添加位置进行标记,在后续的读取数据的过程中,可以将有标记位置的数去除;

所述原始数据的预设位置添加一位数,添加的数可以为0,也可以为1;所述预设位置,优选所述原始数据的末位;

如果所述原始数据本来就是偶数,就不需要变换。

本发明实施例中,所述获取模块31和重组模块32均可由位于soc的中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)、或现场可编程门阵列(fpga)等实现。

实施例四

图7为本发明实施例四数据读取的装置的结构组成示意图,如图7所示,所述装置包括读取模块41和恢复模块42;其中,

所述读取模块41,用于读取存储器中的数据;

所述恢复模块42,用于对读取的数据按数据存储所用的数据重组策略进行数据恢复操作,获得存储前的数据。

所述读取模块41读取存储器中的数据,是按存储器的存储位来读取的,也就是每读取一次,就读取一个存储位的数据,所述存储位可以理解为示例图3或图4中的一行;

所述恢复模块42读取数据后,按数据存储所用的数据重组策略对读取后的数据进行逆向操作,获得有用的数据,也就是与存储前一致的数据;

具体地,所述恢复模块42每读取一个存储位的数据后,就对一个存储位的数据进行逆向操作,获得与存储前一致的数据;

进一步地,当所述恢复模块42每读取所述存储器的一个存储位的数据后获得的原始数据个数不为预设值或零时,所述恢复模块42还用于:

将读取的数据放入临时存储部件中;

当所述临时存储部件中的数据个数等于预设值时,传送预设个数的数据到数据需求部件。

这样,保证所述恢复模块42输出给数据需求部件的传输速率一致,符合数据需求部件的需求;

这里,所述临时存储部件可以是寄存器。

当所述恢复模块42每读取所述存储器的一个存储位的数据后获得的原始数据个数为预设值或零时,直接将读取的数据传输给数据需求部件,不需做额外的处理。

本发明实施例中,所述读取模块41和恢复模块42均可由位于soc的中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)、或现场可编程门阵列(fpga)等实现。

实施例五

图8为本发明实施例五soc功能模块存储、读取数据装置的一种可选结构示意图,如图8所示,所述装置包括功能模块一61、数据重组模块62、写逻辑控制模块63、系统总线64、存储器65、读逻辑控制模块66、数据还原模块67、速率调整模块68和功能模块二69;其中,

所述功能模块一61,可以是soc中数据采集部件,如视频输入接口等,是现有技术中的功能部件,不作赘述;

所述数据重组模块62,用于在所述原始数据的位数与存储器的位宽不是整数倍关系时,对所述原始数据按预设数据重组策略重组为与所述存储器的位宽一致的数据,并存储于所述存储器;

具体地,所述数据重组模块62将所述原始数据按原有顺序首尾拼接,获得与所述存储器的位宽一致的数据;

更具体地,如果原始数据位数大于所述存储器的位宽,则所述数据重组模块62将当前的第一数据分拆;第一数据的前一部分的位数与所述存储器的位宽相同,直接存储;将第一数据之后的第二数据也进行分拆,所述第一数据的后一部分与第二数据的前一部分组合成与所述存储器的位宽相同的数据,存储到所述存储器;依此类推,所述第二数据的后一部分继续与第三数据重新组合,不再赘述;

如果原始数据位数小于所述存储器的位宽,则所述数据重组模块62将当前第一数据之后的第二数据分拆;所述第二数据的前一部分与第一数据组合成与所述存储器的位宽相同的数据,存储到所述存储器;将第二数据之后的第三数据也进行分拆,所述第三数据的前一部分与第二数据的后一部分组合成与所述存储器的位宽相同的数据,存储到所述存储器;依此类推,所述第三数据的后一部分继续与后续数据重新组合,不再赘述;

如果两个原始数据的位数相加,还是小于所述存储器的位宽,则所述数据重组模块62将两个数据之后的数据分拆后与前面的数据组合,如果两个以上的原始数据位数相加,还是小于所述存储器的位宽,则继续分拆后续的数据进行组合,不再赘述。

所述写逻辑控制模块63,用于将数据重组模块62重组后的数据通过系统总线写入存储器,是现有技术中的功能模块,不作赘述;

所述系统总线64,用于将所述写逻辑控制模块63输出的数据,快速传递到存储器,是现有技术中的功能模块,不作赘述;

所述存储器65,用于将所述系统总线64传递过来的数据存储到存储空间,具体是每存储一次,就把重组数据存储到一个存储位,一个存储位也可以理解为示例图3或图4中的一行;

所述读逻辑控制模块66,用于将存储器中的数据通过系统总线读出,是现有技术中的功能模块,不作赘述;

所述数据还原模块67,用于对读取的数据按数据存储所用的数据重组策略进行数据恢复操作,获得存储前的各原始数据;

具体地,所述数据还原模块67按数据存储所用的数据重组策略对读取后的数据进行逆向操作,获得与存储前一致的数据;

所述速率调整模块68,用于将数据还原模块67输出的数据的传输速率调整为预设值,保证所述数据还原模块67输出给数据需求部件的传输速率一致,符合功能模块二的需求;

具体地,所述速率调整模块68用于:

将读取的数据放入临时存储部件中;

当所述临时存储部件中的数据个数等于预设值时,传送预设个数的数据到数据需求部件。

所述功能模块二69,可以是soc中的数据需求部件,如视频信号处理部件等,是现有技术中的功能部件,不作赘述。

本发明实施例中,所述数据重组模块62、写逻辑控制模块63、所述读逻辑控制模块66、数据还原模块67和速率调整模块68均可由位于soc的中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)、或现场可编程门阵列(fpga)等实现。

实施例六

图9为本发明实施例六soc功能模块存储、读取数据装置的另一种可选结构示意图,如图9所示,所述装置包括功能模块一71、数据前处理模块72、数据重组模块73、写逻辑控制模块74、系统总线75、存储器76、读逻辑控制模块77、数据还原模块78和功能模块二79;其中,

所述功能模块一71,可以是soc中数据采集部件,如视频输入接口等,是现有技术中的功能部件,不作赘述;

所述数据前处理模块72,用于调整数据位数的奇偶;

具体地,为了便于数据重组,所述数据前处理模块72需要将位数为奇数的原始数据变换为位数为偶数的原始数据,因为存储器的位宽都是偶数;

具体地,在所述原始数据位数为奇数时,所述数据前处理模块72在位数为奇数的原始数据的预设位置添加一位数,将奇数位的原始数据变换为偶数位的原始数据,并在添加位置进行标记,在后续的读取数据的过程中,可以将有标记位置的数去除;

所述原始数据的预设位置添加一位数,添加的数可以为0,也可以为1;所述预设位置,优选所述原始数据的末位;

如果原始数据本来就是偶数,就不需要变换。

所述数据重组模块73,用于在所述原始数据的位数与存储器的位宽不是整数倍关系时,对所述原始数据按预设数据重组策略重组为与所述存储器的位宽一致的数据,并存储于所述存储器;

具体地,所述数据重组模块73将所述原始数据基于原有顺序进行拆分、组合,获得与所述存储器的位宽一致且满足预设规则的重组数据;

所述预设规则为每读取所述存储器的一个存储位,获得的原始数据个数为预设值或零。

所述重组数据满足预设规则,是为了在读取所述存储器的数据后传输给数据需求部件时的速率保持一致,且不增加额外的处理部件。

这里,所述数据需求部件可以是soc的功能部件,例如可以是视频信号处理部件,所述数据需求部件是现有技术中的功能部件,不作赘述。

所述写逻辑控制模块74,用于将数据重组模块73重组后的数据通过系统总线写入存储器,是现有技术中的功能模块,不作赘述;

所述系统总线75,用于将所述写逻辑控制模块74输出的数据,快速传递到存储器,是现有技术中的功能模块,不作赘述;

所述存储器76,用于将所述系统总线75传递过来的数据存储到存储空间,具体是每存储一次,就把重组数据存储到一个存储位,一个存储位也可以理解为示例图3或图4中的一行;

所述读逻辑控制模块77,用于将存储器中的数据通过系统总线读出,是现有技术中的功能模块,不作赘述;

所述数据还原模块78,用于对读取的数据按数据存储所用的数据重组策略进行数据恢复操作,获得存储前的各原始数据;

具体地,所述数据还原模块78按数据存储所用的数据重组策略对读取后的数据进行逆向操作,获得与存储前一致的数据;

所述功能模块二79,可以是soc中的数据需求部件,如视频信号处理部件等,是现有技术中的功能部件,不作赘述。

本发明实施例中,所述数据前处理模块72、数据重组模块73、写逻辑控制模块74、读逻辑控制模块77和数据还原模块78均可由位于soc的中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)、或现场可编程门阵列(fpga)等实现。

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

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

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

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

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

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