发明内容
本发明的主要目的是提出一种用于微控制单元的数据传输方法与装置以及数据传输***,以解决现有技术中MCU从外部存储元件读取数据的效率较低的问题。
为解决上述问题,根据本发明的一个方面,提出了一种用于微控制单元的数据传输方法。
本发明的这种用于微控制单元的数据传输方法包括:通过串行口从存储装置中读取数据然后保存在缓存中,在保存时将读取的数据由串行转换为并行,串行时钟频率高于并行时钟频率;根据所述缓存的存储地址与所述存储装置的存储地址之间的对应关系,确定所述MCU在所述存储装置中指定的地址在所述缓存中对应的地址,然后将该对应的地址中的数据通过并行口发送给所述MCU。
进一步地,通过串行口从存储装置中读取数据之前还包括:根据所述MCU历次指定的地址确定所述MCU在指定地址时遵循的规律;所述从存储装置中读取数据包括从根据所述规律确定的存储装置内的地址中读取数据。
进一步地,所述规律包括:所述MCU从所述存储装置中的一段连续的地址中按地址顺序获取数据;或者,所述规律包括:所述MCU从所述存储装置中的多个地址段中获取数据,在每个所述地址段中按地址顺序获取数据。
进一步地,所述从存储装置中读取数据包括:在所述MCU指定存储装置中的地址之前,从根据所述规律确定的存储装置内的地址中读取部分数据并且记录所述部分数据在所述存储装置中的地址;将该对应的地址中的数据通过并行口发送给所述MCU之前还包括:确认所述指定的地址与记录的所述部分数据在所述存储装置中的地址为相同地址。
进一步地,所述从存储装置中读取数据包括:在所述MCU指定存储装置中的地址之前,从根据所述规律确定的存储装置内的地址中读取部分数据并且记录所述部分数据在所述存储装置中的地址;将该对应的地址中的数据通过并行口发送给所述MCU之前还包括:确认所述指定的地址与记录的所述部分数据在所述存储装置中的地址为不同地址,然后从所述存储装置中读取所述MCU在所述存储装置中的指定的地址中的全部数据并用该全部数据覆盖所述缓存中已有的数据。
为解决上述问题,根据本发明的另一方面,提出了另一种用于微控制单元的数据传输方法。
本发明的这种用于微控制单元的数据传输方法包括:通过并行口接收MCU发送的数据然后保存在缓存中,保存时将读取的数据由并行转换为串行,其中串行时钟频率高于并行时钟频率,并记录MCU指定的存储装置中的地址;根据所述缓存的存储地址与所述存储装置的存储地址之间的对应关系,确定所述MCU在所述存储装置中指定的地址在所述缓存中对应的地址,然后将该对应的地址中的数据通过串行口发送给所述存储装置并在保存在所述MCU在所述存储装置中指定的地址中。
进一步地,将该对应的地址中的数据通过串行口发送给所述存储装置之后还包括:接收所述MCU指定的存储装置中的地址,根据接收的地址和已记录的存储装置中的地址是否相同判断所述缓存中是否已保存MCU要存入所述存储装置中的数据,若是,则将所述缓存中的数据发送给所述存储装置,否则从所述MCU接收数据然后发送给所述存储装置。
为解决上述问题,根据本发明的又一方面,提出了一种用于微控制单元的数据传输装置。
本发明的这种用于微控制单元的数据传输装置包括预取控制模块、缓存模块和地址映射模块,其中:预取控制模块,用于通过串行口从存储装置中读取数据然后保存在所述缓存模块中;地址映射模块,用于根据所述缓存模块的存储地址与所述存储装置的存储地址之间的对应关系,确定所述MCU在所述存储装置中指定的地址在所述缓存模块中对应的地址,然后将该对应的地址中的数据通过并行口发送给所述MCU。
为解决上述问题,根据本发明的又一方面,提出了另一种用于微控制单元的数据传输装置。
本发明的这种用于微控制单元的数据传输装置包括接收模块和发送模块,其中:接收模块,用于通过并行口接收MCU发送的数据然后保存在缓存中,并记录MCU指定的存储装置中的地址;发送模块,用于根据所述缓存的存储地址与所述存储装置的存储地址之间的对应关系,确定所述MCU在所述存储装置中指定的地址在所述缓存中对应的地址,然后将该对应的地址中的数据通过串行口发送给所述存储装置并在保存在所述MCU在所述存储装置中指定的地址中。
为解决上述问题,根据本发明的又一方面,提出了一种用于微控制单元的数据传输***。
本发明的这种用于微控制单元的数据传输***包括微控制单元(MCU);并且包括本发明的数据传输装置,与MCU连接;以及包括存储装置,与所述数据传输装置连接。
根据本发明的技术方案,通过对存储装置中读出的数据进行缓存并且进行时钟域转换,能够使存储装置的串行口与MCU的并行口速率匹配,这样在串行时钟频率高于并行时钟频率的情况下提高了MCU读取数据的效率。另外在本发明中,通过数据传输装置预先从存储装置中读取数据并保存在缓存中,当MCU需要数据时直接将缓存中的数据发送给MCU,从而此时无需从存储装置读取数据,也有助于提高MCU获取数据的效率。
具体实施方式
以下结合附图,对本发明的实施方式作出说明。
图1是根据本发明实施例的数据传输***的基本结构的示意图。
如图1所示,本发明实施例的数据传输***主要包括依次连接的微控制单元(MCU)、数据传输装置和存储装置。
本发明实施例的用于MCU的数据传输方法主要由数据传输装置完成,其主要步骤如图2所示,图2是根据本发明实施例的用于MCU的数据传输方法的示意图。
步骤S21:通过串行口从存储装置中读取数据。
步骤S22:将读取的数据由串行转换为并行。
步骤S22中,串行时钟频率高于并行时钟频率。
步骤S23:将并行数据保存在缓存中。
步骤S24:根据缓存的存储地址与存储装置的存储地址之间的对应关系,确定MCU在存储装置中指定的地址在缓存中对应的地址。
在MCU从存储装置中读取数据时,MCU将要访问的地址发送给数据传输装置,也就是说MCU在存储装置中指定了地址,该地址中的数据为MCU要读取的数据。
缓存的存储容量通常比存储装置的存储容量小,所以上述缓存的存储地址与存储装置的存储地址之间的对应关系可以是动态的,该对应关系可以通过记录缓存中保存的数据是来自于存储装置的哪段地址来实现。
步骤S25:将步骤S24中对应的地址中的数据通过并行口发送给MCU。
从上述的步骤S21至S25中可以看出,通过将存储装置中的数据进行时钟域转换和缓存,并使串行时钟频率高于并行时钟频率,这样能够加快串行电路执行效率,使其与并行口的传输速率匹配,满足并行口带宽需求,从而提高了MCU从存储装置中读取数据的效率。
在实现中,上述的存储装置可以是闪存(Flash)。
在实现中,可以将上述串行口的串行时钟设置为上述并行口的并行时钟的8N倍频,其中N表示正整数。
在本实施例中,除了通过对数据进行上述的时钟域转换和缓存来提高MCU读取存储装置的效率以外,还通过多种方式提高MCU读取存储装置的效率,以下对此加以说明。
根据MCU的应用特点,通常MCU是用于执行程序的指令,即MCU读取程序指令然后执行该指令,再读取下一条指令然后执行,依此往复。也就是说,MCU读取的数据为程序的指令,该程序保存在存储装置中。基于MCU的这种读取数据的特点,其访问存储装置的地址也相应具有一定的规律性,例如MCU访问存储装置时在特定的几个地址段之间跳转,访问到一段连续地址之后依次读取该地址的数据,然后跳转到下一个地址段。
所以数据传输装置可以根据所述MCU历次指定的地址确定所述MCU在指定地址时遵循的规律,这样就预先确定了MCU要访问的存储装置中的地址,再将从根据该规律确定的存储装置内的地址中预先读取数据,保存在缓存中。此处的预先读取主要是指在收到MCU发送的要访问的地址之前,数据传输装置对存储装置的读取。
这样,在上述的步骤S21中,读取的数据也可以是根据上述的规律预先读取的数据。即在MCU指定存储装置中的地址之前,数据传输装置按照上述规律预先得出MCU可能访问的存储装置的地址,从该地址中读取部分数据,并且记录该部分数据在存储装置中的地址。
这样,当要把缓存中的数据发送给MCU的时候,判断该部分数据是否为MCU需要的数据,如果记录的该部分数据在存储装置中的地址与MCU指定的地址相同,则说明该部分数据为MCU需要的数据。在这种情况下,可以将缓存中的数据直接发送给MCU,无需再从存储装置中读取数据,有助于提高MCU获取数据的效率。此时发送的同时,从数据存储装置中继续读取MCU需要的其他数据。
在上述的判断中,如果该部分数据不是MCU需要的数据,则从存储装置中读取MCU在存储装置中的指定的地址中的全部数据并用该全部数据覆盖缓存中已有的数据。
在从缓存向MCU发送数据的过程中,MCU也是一边接收数据一边执行接收的数据构成的指令。可以在缓存中设置水位指针,当MCU访问到该水位指针时,表示缓存中保存的指令即将被执行完成,此时数据传输装置再次开始从存储装置中获取数据。
对于MCU来说,通常是依次运行若干函数,每个函数中包含多条指令,所以MCU从存储装置中获取数据时,往往是顺序访问一段地址之后跳转至另一地址,再从该地址开始顺序访问一段地址,访问时MCU执行完成一段指令,这些指令对应一个函数,而多个函数之间通常具有一定的先后运行的逻辑关系。所以上述的MCU在指定地址时遵循的规律易于通过在数据传输装置中设置具有学习功能的模块来掌握,从而对存储装置进行预先读取。预先读取的数据可以是MCU常用的程序段,这样,MCU在需要这些程序段时可以直接从存储装置的缓存中获得,无需再通过串口从存储装置读取,有助于提高MCU获取数据的效率。
上述对MCU从存储装置获取数据的方法进行了说明。另外也可以利用数据存储装置从MCU向存储装置写入数据。
具体方式可以是,通过并行口接收MCU发送的数据然后保存在缓存中,保存时将读取的数据由并行转换为串行,其中串行时钟频率高于并行时钟频率,并记录MCU指定的存储装置中的地址;根据缓存的存储地址与存储装置的存储地址之间的对应关系,确定MCU在存储装置中指定的地址在缓存中对应的地址,然后将该对应的地址中的数据通过串行口发送给存储装置并在保存在MCU在存储装置中指定的地址中。
在继续向存储装置写入数据时,可以先接收MCU指定的存储装置中的地址,根据接收的地址和已记录的存储装置中的地址是否相同判断缓存中是否已保存MCU要存入存储装置中的数据,若是,则将缓存中的数据发送给存储装置,否则从MCU接收数据然后发送给所述存储装置。这样无需再次从MCU传输数据,而是直接将缓存中的数据保存到存储装置中。
根据本发明实施例的上述方法,可以采用合适的电路来直接获得数据传输装置。例如可以采用现在可编程门阵列(FPGA)来搭建具有上述方法中的数据传输装置所具有的各种功能的电路。
以下对数据传输装置的可选结构作一说明。
图3是根据本发明实施例的一种数据传输装置的结构的示意图。
如图3所示,在本发明实施例的数据传输装置的一种结构中,数据传输装置30主要包括预取控制模块31、缓存模块32和地址映射模块33。
预取控制模块31用于通过串行口从存储装置中读取数据然后保存在缓存模块32中。
地址映射模块33用于根据缓存模块32的存储地址与存储装置的存储地址之间的对应关系,确定MCU在存储装置中指定的地址在缓存模块32中对应的地址,然后将该对应的地址中的数据通过并行口发送给MCU。
图3中的数据传输装置30主要用于MCU从存储装置获取数据。以下结合图4,说明本实施例中的主要用于MCU向存储装置写入数据的数据传输装置的基本结构。
图4是根据本发明实施例的另一种数据传输装置的结构的示意图。
图4所示的数据传输装置40包括接收模块41和发送模块42,其中,接收模块41用于通过并行口接收MCU发送的数据然后保存在缓存中,并记录MCU指定的存储装置中的地址,发送模块42用于根据缓存的存储地址与存储装置的存储地址之间的对应关系,确定MCU存储装置中指定的地址在缓存中对应的地址,然后将该对应的地址中的数据通过串行口发送给存储装置并在保存在MCU在存储装置中指定的地址中。
根据本发明实施例可以看出,本发明通过对存储装置中读出的数据进行缓存并且进行时钟域转换,能够使存储装置的串行口与MCU的并行口速率匹配,这样在串行时钟频率高于并行时钟频率的情况下提高了MCU读取数据的效率。另外在本发明中,通过数据传输装置预先从存储装置中读取数据并保存在缓存中,当MCU需要数据时直接将缓存中的数据发送给MCU,从而此时无需从存储装置读取数据,也有助于提高MCU获取数据的效率。
在电视机相关的技术领域中,本发明实施例的方案能够显著地提高MCU访问存储装置特别是Flash存储器的速度,尤其是处理屏幕显示(OSD,On ScreenDisplay)等一些需要从Flash存储器中读入大量数据的程序时,因为有效地提高了MCU获取数据的速度,所以能够加快OSD显示速度。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。