发明内容
基于此,本发明的目的在于,提供一种DBI的数据传输方法,其具有可使CPU可以连续地向DBI写入数据,并可更加准确地区分发命令、发数据和收数据的操作,操作方便的优点。
一种DBI的数据传输方法,包括如下步骤:
获取外围CPU发送的需传输的信息,并将所述需传输的信息暂存至第一先进先出存储器;所述需传输的信息包括数据和令牌;
从第一先进先出存储器中获取当前需传输的信息,并识别当前需传输的信息中令牌对应的传输指令,且根据所述传输指令传输所述当前需传输中的数据。
相比于现有技术,本发明通过设置第一先进先出存储器,可使CPU可以连续地向DBI写入数据,通过设置令牌,可更加准确地区分发命令、发数据和收数据的操作,操作方便,简单灵活。
进一步地,所述从第一先进先出存储器中获取当前需传输的信息,并识别当前需传输的信息中令牌对应的传输指令,且根据所述传输指令传输所述当前需传输中的数据,包括:
分别提取当前需传输的信息中的数据和令牌;
将所述令牌与存储设定的传输指令库进行比较,若所述令牌对应的传输指令为发命令指令或发数据指令,则产生与所述当前需传输的信息中的数据相对应的时钟周期,并将所述当前需传输的信息中的数据转换为串行数据,且在所述时钟周期下将所述串行数据发送到外界从设备;
若所述令牌对应地传输指令为收数据指令,则产生与所述当前需传输的信息中的数据相对应的时钟周期,并将所述时钟周期提供给外界从设备,以采集外界从设备传送的数据。
进一步地,所述传输指令库包括令牌与传输指令唯一对应存储的信息,包括:所述令牌“00”对应存储的传输指令为发命令指令、所述令牌“01”对应存储的传输指令为为发数据指令以及所述令牌“10”对应存储的传输指令为收数据指令。以2bit信息表示令牌,以准确区分指令操作。
进一步地,所述将令牌与存储设定的传输指令进行比较时,还判断该令牌是否有误,若有误,则发出令牌错误中断通知外围总线,并清空所述第一先进先出存储器。
进一步地,所述令牌有误的判定方式为:若当前需传输的信息中的令牌对应存储的传输指令为发数据指令,下一个需传输的信息中的令牌对应存储的传输指令为收数据指令,则判定下一个需传输的信息中的令牌有误;或者若当前需传输的信息中的令牌对应存储的传输指令为收数据指令,下一个需传输的信息中的令牌对应存储的传输指令为发数据指令,则判定下一个需传输的信息中的令牌有误。通过在令牌有误时,发出令牌错误中断通知外围CPU,并清空第一先进先出存储器,以实现数据的有效实时传输。
进一步地,所述采集的外界从设备传送的数据还传送到第二移位寄存器,并通过该第二移位寄存器实现串并转换,且将该转换后的并行数据传送到第二先进先出存储器,以供外界CPU读取该并行数据。进一步地,通过第二先进先出存储器,使CUP可连续地向DBI读取数据。
本发明还提供一种DBI的数据传输系统,包括寄存器单元、主设备状态机和第一先进先出存储器;
所述寄存器单元用于获取外围CPU发送的需传输的信息,并将所述需传输的信息暂存至第一先进先出存储器;所述需传输的信息包括数据和令牌;
所述主设备状态机用于从第一先进先出存储器中获取当前需传输的信息,并识别当前需传输的信息中令牌对应的传输指令,且根据所述传输指令传输所述当前需传输中的数据。
相比于现有技术,本发明通过设置第一先进先出存储器,可使CPU可以连续地向DBI写入数据,通过设置令牌,可更加准确地区分发命令、发数据和收数据的操作,操作方便,简单灵活。
为了更好地理解和实施,下面结合附图详细说明本发明。
具体实施方式
请参阅图1,其为本发明实施例中DBI的数据传输方法的流程图;该DBI的数据传输方法,包括如下步骤:
步骤S1:获取外围CPU发送的需传输的信息,并将所述需传输的信息暂存至第一先进先出存储器(TX_FIFO);所述需传输的信息包括数据和令牌。
本发明通过总线接口(Bus interface unit)接收CPU通过外围总线发送的信息,并对该信息进行解码,再从解码后的信息中获取有效信息,并将该有效信息存储至寄存器单元(register unit);寄存器单元接收有效信息后,获取相关的控制信息以及需传输的信息。所述控制信息包括如包括传输时钟(SCL)的频率控制、传输模式控制(三线/四线模式、dummy/非dummy模式等)、SCL的极性控制、中断使能控制、FIFO的阈值大小等;所述需传输的信息包括数据和令牌,同时将该需传输的信息暂存至第一先进先出存储器(TX_FIFO)。
另外,寄存器单元还收集传输过程中接收到的有效数据以及产生的状态信息,如DBI工作状态、第一先进先出存储器(TX_FIFO)的空满状态、令牌错误标志等,CPU通过读取的寄存器便可知道DBI目前的状态。
步骤S2:从第一先进先出存储器(TX_FIFO)中获取当前需传输的信息,并识别当前需传输的信息中令牌对应的传输指令,且根据所述传输指令传输所述当前需传输中的数据。
请参阅图2,其为本发明实施例识别令牌并传输数据的流程图。
在步骤S2中,具体包括如下步骤:
步骤S21:分别提取当前需传输的信息中的数据和令牌。
在3线模式下,所述需传输的信息中的数据包括8bit的信息与位于该信息之前的1bit的标识位,在4线模式下,所述需传输的信息中的数据包括8bit的信息与该信息相互独立的1bit的标识位。
步骤S22:将所述令牌与存储设定的传输指令库进行比较,若所述令牌对应的传输指令为发命令指令或发数据指令,则产生与所述当前需传输的信息中的数据相对应的时钟周期,并将所述当前需传输的信息中的数据转换为串行数据,且在所述时钟周期下将所述串行数据发送到外界从设备。若所述令牌对应地传输指令为收数据指令,则产生与所述当前需传输的信息中的数据相对应的时钟周期,并将所述时钟周期提供给外界从设备,以采集外界从设备传送的数据。
在一个实施例中,所述传输指令库包括令牌与传输指令唯一对应存储的信息,包括:所述令牌“00”对应存储的传输指令为发命令指令、所述令牌“01”对应存储的传输指令为为发数据指令以及所述令牌“10”对应存储的传输指令为收数据指令。以2bit信息表示令牌,以准确区分指令操作。
在一个实施例中,本发明通过主设备状态机(Master FSM)来实现所述令牌与存储设定的传输指令库的比较,且将令牌与存储设定的传输指令进行比较时,还判断该令牌是否有误,若有误,则发出令牌错误中断通知外围CPU,并清空第一先进先出存储器(TX_FIFO)。所述令牌有误的判定方式为:若当前需传输的信息中的令牌对应存储的传输指令为发数据指令,下一个需传输的信息中的令牌对应存储的传输指令为收数据指令,则判定下一个需传输的信息中的令牌有误;或者若当前需传输的信息中的令牌对应存储的传输指令为收数据指令,下一个需传输的信息中的令牌对应存储的传输指令为发数据指令,则判定下一个需传输的信息中的令牌有误。
本发明中,时钟周期是由系统时钟分频而来,并通过时钟产生单元(SCL generateunit)产生,由于它的频率由系统时钟和分频值决定,其中,分频值从寄存器中获得。初始时的时钟为复位状态,如设为高电平,计数器以系统时钟进行加一计数,当计数器的值达到分频值的二分之一时,令时钟翻转,如变为低电平,当计数值递增至于分频值相等时,时钟进入复位状态,且计数器清零。本发明的主设备状态机(Master FSM)获取第一先进先出存储器(TX_FIFO)的状态,在第一先进先出存储器(TX_FIFO)为空时,判断该段信息传输结束,并产生SCL mask信号,且将该SCL mask信号发送到时钟产生单元(SCL generate unit)。时钟产生单元(SCL generate unit)收到该SCL mask信号后,停止产生SCL时钟,并回到复位状态。另外,时钟产生单元还会根据发数据指令和收数据指令而改变时钟的沿变信息,依据DBI协议,数据线(SDA)ZAI SCL的上升沿处被采样,在SCL的下降处变化,因此,本发明在下降沿将用于发数据,上升沿用于收数据。
本发明中,在第一先进先出存储器(TX_FIFO)为非空状态,即第一先进先出存储器(TX_FIFO)中有令牌时,DBI开始进行数据传输;在第一先进先出存储器(TX_FIFO)为空时表示传输结束,并等待下一个令牌的到来。本发明还通过第一移位寄存器(TX_shift unit)实现数据的并串转换,且数据在SCL的下降沿处转换,产生的串行数据将作为输出。具体的,本发明通过主设备状态机产生Tx_load_enable信号,并将该Tx_load_enable信号传送到第一移位寄存器(TX_shift unit),该第一移位寄存器(TX_shift unit)收到该Tx_load_enable信号后,将从第一先进先出存储器(TX_FIFO)中获取新的数据。其中,Tx_load_enable信号的产生条件如下:(1)第一先进先出存储器(TX_FIFO)非空,即第一先进先出存储器(TX_FIFO)中尚有数据;(2)已完成当前数据的并串转换。另外,主设备状态机还在每一个SCL的下降沿处产生一个tx_shift_en信号,第一移位寄存器(TX_shift unit)通过该tx_shift_en信号后驱动数据的并串转换。
本发明中,将采集的外界从设备传送的数据传送到第二移位寄存器(RX_shiftunit),所述第二移位寄存器(RX_shift unit)获取该数据,并进行串并转换,且将该转换后的并行数据传送到第二先进先出存储器(RX_FIFO),以使外界CPU可通过寄存器单元读取该并行数据。具体的,完成一个数据包的采样后(一个数据包8bit,采样8次表示一个数据包采样完成),主设备状态机产生rx_load_enable信号来通知第二移位寄存器(Rx_shift unit)将数据送往第二先进先出存储器(Rx_FIFO),同时,第二移位寄存器(Rx_shift unit)准备进行下一个数据包的采样。另外,主设备状态机还在每一个SCL的上升沿处产生一个tx_shift_en信号,第二移位寄存器(RX_shift unit)通过该tx_shift_en信号后驱动数据的串并转换。
请参阅图3,其为本发明实施例中DBI的数据传输的原理图。
本发明还提供一种DBI的数据传输系统,包括总线接口(Bus interface unit)、寄存器单元(register unit)、时钟产生单元(SCL generate unit)、主设备状态机(MasterFSM)、第一先进先出存储器(TX_FIFO)、第二先进先出存储器(RX_FIFO)、第一第二移位寄存器、第一移位寄存器(TX_shift unit)和第二移位寄存器(RX_shift unit)。
总线接口(Bus interface unit)接收CPU通过外围总线发送的信息,并对该信息进行解码,再从解码后的信息中获取有效信息,并将该有效信息存储至寄存器单元。
所述寄存器单元(register unit)接收有效信息后,获取相关的控制信息以及需传输的信息,并将所述需传输的信息暂存至第一先进先出存储器(TX_FIFO);所述需传输的信息包括数据和令牌。
所述主设备状态机(Master FSM)用于从第一先进先出存储器(TX_FIFO)中获取当前需传输的信息,并识别当前需传输的信息中令牌对应的传输指令,且根据所述传输指令传输所述当前需传输中的数据。
所述主设备状态机(Master FSM)还用于:
分别提取当前需传输的信息中的数据和令牌;
将所述令牌与存储设定的传输指令库进行比较,若所述令牌对应的传输指令为发命令指令或发数据指令,则产生与所述当前需传输的信息中的数据相对应的时钟周期,且所述第一先进先出存储器(TX_FIFO)将信息传输到所述第一移位寄存器;所述第一移位寄存器用于将所述当前需传输的信息中的数据转换为串行数据,且在所述时钟周期下将所述串行数据发送到外界从设备;
若所述令牌对应地传输指令为收数据指令,则产生与所述当前需传输的信息中的数据相对应的时钟周期,并将所述时钟周期提供给外界从设备,以采集外界从设备传送的数据。
在一个实施例中,寄存器单元中将定义多个寄存器。CPU发给DBI的控制信息、所需传输的数据信息,以及DBI的状态信息都将缓存在对应的寄存器中。其中,控制信息包括传输时钟(SCL)的频率控制、传输模式控制(三线/四线模式、dummy/非dummy模式等)、SCL的极性控制、中断使能控制、FIFO的阈值大小等。主设备状态机会根据这些控制信息进行不同的操作。所述需传输的信息包括数据和令牌,同时将该需传输的信息暂存至第一先进先出存储器(TX_FIFO)。所述状态信息主要包括FIFO的空满状态、中断状态。实际上,寄存器模块不仅将CPU发送的需传输的数据信息暂存至第一先进先出存储器TX_FIFO中,还将作为第二先进先出存储器RX_FIFO与CPU之间的桥梁,实现CPU对第二先进先出存储器RX_FIFO的读取。
在一个实施例中,所述传输指令库包括令牌与传输指令唯一对应存储的信息,包括:所述令牌“00”对应存储的传输指令为发命令指令、所述令牌“01”对应存储的传输指令为为发数据指令以及所述令牌“10”对应存储的传输指令为收数据指令。以2bit信息表示令牌,以准确区分指令操作。
在一个实施例中,所述主设备状态机(Master FSM)还用于判读还判断该令牌是否有误,若有误,则发出令牌错误中断通知外围总线,并清空所述第一先进先出存储器(TX_FIFO);所述令牌有误的判定方式为:若当前需传输的信息中的令牌对应存储的传输指令为发数据指令,下一个需传输的信息中的令牌对应存储的传输指令为收数据指令,则判定下一个需传输的信息中的令牌有误;或者若当前需传输的信息中的令牌对应存储的传输指令为收数据指令,下一个需传输的信息中的令牌对应存储的传输指令为发数据指令,则判定下一个需传输的信息中的令牌有误。
本发明中,时钟周期是由系统时钟分频而来,并通过时钟产生单元(SCL generateunit)产生,因而它的频率由系统时钟和分频值决定,其中,分频值从寄存器中获得。初始时的时钟为复位状态,如设为高电平,计数器以系统时钟进行加一计数,当计数器的值达到分频值的二分之一时,令时钟翻转,如变为低电平,当计数值递增至于分频值相等时,时钟进入复位状态,且计数器清零。本发明的主设备状态机(Master FSM)获取第一先进先出存储器(TX_FIFO)的状态,在第一先进先出存储器(TX_FIFO)为空时,判断该段信息传输结束,并产生SCL mask信号,且将该SCL mask信号发送到时钟产生单元(SCL generate unit)。时钟产生单元(SCL generate unit)收到该SCL mask信号后,停止产生SCL时钟,并回到复位状态。另外,时钟产生单元还会根据发数据指令和收数据指令而改变时钟的沿变信息,依据DBI协议,数据线(SDA)ZAI SCL的上升沿处被采样,在SCL的下降处变化,因此,本发明在下降沿将用于发数据,上升沿用于收数据。
本发明中,在第一先进先出存储器(TX_FIFO)为非空状态,即第一先进先出存储器(TX_FIFO)中有令牌时,DBI开始进行数据传输;在第一先进先出存储器(TX_FIFO)为空时表示传输结束,并等待下一个令牌的到来。
本发明还通过第一移位寄存器(TX_shift unit)实现数据的并串转换,且数据在SCL的下降沿处转换,产生的串行数据将作为输出。具体的,本发明通过主设备状态机产生Tx_load_enable信号,并将该Tx_load_enable信号传送到第一移位寄存器(TX_shiftunit),该第一移位寄存器(TX_shift unit)收到该Tx_load_enable信号后,将从第一先进先出存储器(TX_FIFO)中获取新的数据。其中,Tx_load_enable信号的产生条件如下:(1)第一先进先出存储器(TX_FIFO)非空,即第一先进先出存储器(TX_FIFO)中尚有数据;(2)已完成当前数据的并串转换。另外,主设备状态机还在每一个SCL的下降沿处产生一个tx_shift_en信号,第一移位寄存器(TX_shift unit)通过该tx_shift_en信号后驱动数据的并串转换。
本发明中,将采集的外界从设备传送的数据传送到第二移位寄存器(RX_shiftunit),所述第二移位寄存器(RX_shift unit)获取该数据,并进行串并转换,且将该转换后的并行数据传送到第二先进先出存储器(RX_FIFO),以使外界CPU可通过寄存器单元读取该并行数据。具体的,完成一个数据包的采样后(一个数据包8bit,采样8次表示一个数据包采样完成),主设备状态机产生rx_load_enable信号来通知第二移位寄存器(Rx_shift unit)将数据送往第二先进先出存储器(Rx_FIFO),同时,第二移位寄存器(Rx_shift unit)准备进行下一个数据包的采样。另外,主设备状态机还在每一个SCL的上升沿处产生一个tx_shift_en信号,第二移位寄存器(RX_shift unit)通过该tx_shift_en信号后驱动数据的串并转换。
相比于现有技术,本发明通过设置第一先进先出存储器,可使CPU可以连续地向DBI写入数据,通过设置令牌,可更加准确地区分发命令、发数据和收数据的操作,操作方便,简单灵活。进一步地,通过第二先进先出存储器,使CUP可连续地向DBI读取数据;通过将第一先进先出存储器和第二先进先出存储器的空满状态以中断和寄存器状态的方式反馈给CPU,以便CPU做后续处理;通过在令牌有误时,发出令牌错误中断通知外围CPU,并清空第一先进先出存储器,以实现数据的有效实时传输。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。