CN110188059B - 数据有效位统一配置的流控式fifo缓存装置及方法 - Google Patents

数据有效位统一配置的流控式fifo缓存装置及方法 Download PDF

Info

Publication number
CN110188059B
CN110188059B CN201910411859.4A CN201910411859A CN110188059B CN 110188059 B CN110188059 B CN 110188059B CN 201910411859 A CN201910411859 A CN 201910411859A CN 110188059 B CN110188059 B CN 110188059B
Authority
CN
China
Prior art keywords
fifo
data
flow control
transmission
data transmission
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
Application number
CN201910411859.4A
Other languages
English (en)
Other versions
CN110188059A (zh
Inventor
肖建青
刘思源
杨靓
张海金
贾一鸣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Microelectronics Technology Institute
Original Assignee
Xian Microelectronics Technology Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xian Microelectronics Technology Institute filed Critical Xian Microelectronics Technology Institute
Priority to CN201910411859.4A priority Critical patent/CN110188059B/zh
Publication of CN110188059A publication Critical patent/CN110188059A/zh
Application granted granted Critical
Publication of CN110188059B publication Critical patent/CN110188059B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了数据有效位统一配置的流控式FIFO缓存结构及方法,包括第一FIFO和第二FIFO,第一FIFO和第二FIFO共同连接至用于选择全双工模式或半双工模式的全双工模式配置寄存器。本发明能够提高与主机接口的数据传输效率,减少通过软件进行数据整合的开销,并且设计硬件管理的流控模式从而避免FIFO的溢出现象。

Description

数据有效位统一配置的流控式FIFO缓存装置及方法
技术领域
本发明涉及串行通信控制领域,具体涉及一种数据有效位统一配置的流控式FIFO缓存结构及方法。
背景技术
在串行通信控制领域,FIFO是普遍存在的用来缓存与主机交互的并行数据的一种基本结构。针对实际应用情况,目前的FIFO位宽主要有两种形式:(1)FIFO存储宽度为标准的八位数据字节。在这种结构下,主机每进行一次并行数据传输时,只有其中一个字节的数据有效,因此其数据传输效率较低。例如,当主机并行数据位宽为32位时,每次传输只有其中8位数据与FIFO关联,而其它的24位数据都被浪费掉,即便主机要发送一个32位的数据,它也需要进行四次传输。(2)FIFO存储宽度等于主机数据位宽。在这种结构下,主机的一个并行数据只通过一次传输操作就可完成与FIFO的关联,但它可能需要额外的软件拼凑开销。例如,当串行通信应用只需对并行数据字中的一部分字节进行传输时,那么在开始传输前,就需要通过软件手段把这些分散在各个并行数据字中的数据字节整合在一起,然后再装入到FIFO中进行发送。
另外,针对FIFO的空满状态与控制,现有技术也主要是通过软件查询或者中断方式来实现的,由于软件处理速度慢、系统中断优先级抢占等情况的出现,经常导致FIFO数据传输不及时,从而引起FIFO溢出的现象数见不鲜。
总体而言,现有的FIFO设计结构存在着数据传输效率低、需要软件交互开销大,以及容易引发溢出错误等多方面的缺点。经检索相关文献,目前尚没有一种很好的解决办法。
发明内容
本发明的目的在于提供一种数据有效位统一配置的流控式FIFO缓存结构及方法,以解决现有FIFO结构中存在的问题,本发明能够提高与主机接口的数据传输效率,减少通过软件进行数据整合的开销,并且设计硬件管理的流控模式从而避免FIFO的溢出现象。
为达到上述目的,本发明采用如下技术方案:
数据有效位统一配置的流控式FIFO缓存结构,包括第一FIFO(1)和第二FIFO(2),第一FIFO(1)和第二FIFO(2)共同连接至用于选择全双工模式或半双工模式的全双工模式配置寄存器;
第一FIFO(1)上连接有用于产生数据字节有效位的第一流控配置电路及用于接收第一FIFO(1)填充状态信息的第一流控逻辑电路,第一流控配置电路包括第一FIFO对齐模式配置寄存器、第一突发传输大小配置寄存器和第一串行传输字节计数器,第一FIFO对齐模式配置寄存器和第一突发传输大小配置寄存器的输出端均连接至第一流控逻辑电路,第一串行传输字节计数器和第一流控逻辑电路双向交互;
第二FIFO(2)上连接有用于产生数据字节有效位的第二流控配置电路及用于接收第二FIFO(2)填充状态信息的第二流控逻辑电路,第二流控配置电路包括第二FIFO对齐模式配置寄存器、第二突发传输大小配置寄存器和第二串行传输字节计数器,第二FIFO对齐模式配置寄存器和第二突发传输大小配置寄存器的输出端均连接至第二流控逻辑电路,第二串行传输字节计数器和第二流控逻辑电路双向交互;
第一流控逻辑电路和第二流控逻辑电路均连接至用于选择DMA或CPU响应数据传输请求的DMA使能配置寄存器,所述数据传输请求包括突发数据传输请求、最后一次突发数据传输请求、单字数据传输请求和最后一次单字数据传输请求。
进一步地,第一FIFO(1)和第二FIFO(2)均通过主机接口连接至DMA或CPU。
进一步地,第一FIFO(1)和第二FIFO(2)的数据位宽与主机接口的数据位宽相等。
进一步地,第一FIFO(1)和第二FIFO(2)均通过串行外设接口连接至外界通信总线。
数据有效位统一配置的流控式FIFO缓存方法,包括以下步骤:
步骤一:用户配置全双工模式配置寄存器,当选择全双工模式时,第一FIFO(1)用于数据的发送,第二FIFO(2)同时用于数据的接收;当选择半双工模式时,第一FIFO(1)用于数据的发送或接收,并进行时分复用,第二FIFO(2)不使用;
步骤二:当在全双工模式下,用户配置第一FIFO对齐模式配置寄存器、第一突发传输大小配置寄存器、第一串行传输字节计数器、第二FIFO对齐模式配置寄存器、第二突发传输大小配置寄存器、第二串行传输字节计数器和DMA使能配置寄存器;然后第一流控逻辑电路和第二流控逻辑电路自动产生数据传输请求并发送至DMA或CPU进行处理。
进一步地,第一流控逻辑电路和第二流控逻辑电路自动产生数据传输请求并发送至DMA或CPU进行处理具体为:
第一流控逻辑电路根据第一FIFO对齐模式配置寄存器的值、第一突发传输大小配置寄存器的值、第一串行传输字节计数器的值以及第一FIFO(1)填充状态信息自动判断当前是进行突发数据传输、最后一次突发数据传输、单字数据传输,还是最后一次单字数据传输,并发出相应的发送数据传输请求;
同时第二流控逻辑电路根据第二FIFO对齐模式配置寄存器的值、第二突发传输大小配置寄存器的值、第二串行传输字节计数器的值以及第二FIFO(2)填充状态信息自动判断当前是进行突发数据传输、最后一次突发数据传输、单字数据传输,还是最后一次单字数据传输,并发出相应的接收数据传输请求;
根据DMA使能配置寄存器的值选择DMA或CPU响应上述两个数据传输请求,当数据传输请求被CPU或DMA处理后,第一流控逻辑电路从第一串行传输字节计数器的值中减去当前传输的数据字节数以作为下次需要进行的数据传输总量,并将其更新到第一串行传输字节计数器中,如此继续,直到第一串行传输字节计数器的值为0;同时第二流控逻辑电路从第二串行传输字节计数器的值中减去当前传输的数据字节数以作为下次需要进行的数据传输总量,并将其更新到第二串行传输字节计数器中,如此继续,直到第二串行传输字节计数器的值为0;至此,全双工模式的数据发送和接收完成。
当在半双工模式下,用户配置第一FIFO对齐模式配置寄存器、第一突发传输大小配置寄存器、第一串行传输字节计数器和DMA使能配置寄存器;然后第一流控逻辑电路自动产生数据传输请求并发送至DMA或CPU进行处理。
进一步地,第一流控逻辑电路自动产生数据传输请求并发送至DMA或CPU进行处理具体为:
第一流控逻辑电路根据第一FIFO对齐模式配置寄存器的值、第一突发传输大小配置寄存器的值、第一串行传输字节计数器的值以及第一FIFO(1)填充状态信息自动判断当前是进行突发数据传输、最后一次突发数据传输、单字数据传输,还是最后一次单字数据传输,并发出相应的发送或接收数据传输请求;
根据DMA使能配置寄存器的值选择DMA或CPU响应上述发送或接收数据传输请求,当数据传输请求被CPU或DMA处理后,第一流控逻辑电路从第一串行传输字节计数器的值中减去当前传输的数据字节数以作为下次需要进行的数据传输总量,并将其更新到第一串行传输字节计数器中,如此继续,直到第一串行传输字节计数器的值为0,至此,半双工模式的数据发送或接收完成。
与现有技术相比,本发明具有以下有益的技术效果:
(1)降低了软件的辅助操作开销。目前FIFO中存储的都是有效数据,如果实际应用中待传输的源或目标数据是散落在各个不同地址空间上的非连续字节或半字,那么就需要主机接口的软件对这些数据进行加工处理。例如发送操作,需要先将这些分散的数据拼凑在一起再写入FIFO中;对于接收操作,需要将这些从FIFO中读出的数据按照对应字节或半字的格式分散存储到不同的地址空间上去。本发明通过对齐模式所指定的字节有效位,可以免去软件层面的辅助操作,因为FIFO中即便装载了整个并行数据,利用字节有效位的指示,流控逻辑并不会传输并行数据中的无效字节或半字。
(2)支持全双工和半双工模式的串行通信应用。本发明的FIFO结构可根据应用情况进行工作模式的选择,在全双工模式下,启用两套FIFO装置,分别用于发送和接收操作;在半双工模式下,只启用一套FIFO装置,用于发送或接收操作,另一套FIFO不使能,处于低功耗休眠状态。
(3)避免了FIFO发生溢出错误的现象。本发明的FIFO设计了基于硬件的流控模式,它自动计算当前需要进行哪种数据传输,传输的数据量是多大,并发出相应的传输请求,该传输请求既可以由DMA方式响应完成,也可以由CPU中断方式处理。DMA或CPU主机根据传输请求的大小进行数据传输,从而保证FIFO不会发生溢出现象。
(4)提高了数据传输效率,本发明的FIFO存储位宽等于主机接口(CPU或DMA控制器)的并行数据宽度,并且设计对齐模式,使得FIFO每个存储表项中的数据字节都有独立的有效位控制。因此,无论是进行整个并行数据、还是该并行数据中某部分数据字节的交互,它与主机接口的数据传输都可以在一个周期内完成,不会让主机接口产生任何等待。
本发明方法具有以下有益的技术效果:
(1)能够普遍适用于各种串行通信领域。无论是全双工通信还是半双工通信,本发明方法只需软件配置全双工模式配置寄存器为1或者0,就可以选择对应的工作模式,操作灵活、简单。
(2)能够适用于带有DMA数据处理功能以及不带DMA数据处理功能的处理系统。本发明方法根据处理系统中是否集成有DMA主机,只需软件配置DMA使能配置寄存器为1或0,就可以选择由DMA主机还是默认的CPU主机来完成数据的收发操作,对处理系统并无特殊要求,适用性更强。
(3)消除了传统方法经常发生的FIFO溢出现象。本发明方法通过设置流控逻辑的硬件电路,自动识别FIFO的填充状态并计算待传输的数据量,产生的数据发送(或接收)请求大小不会超过FIFO的空闲(或有效)存储表项,因此从根本上避免了FIFO发生溢出错误的可能性。
(4)降低了特殊应用下软件进行数据预处理的操作开销。本发明方法通过定义FIFO对齐模式配置寄存器,可以实现对FIFO数据有效位的统一配置,包括了按字节、半字和字三种有效位对齐模式。因此,当特殊应用下只需要发送数据字中的某些字节时,无需通过软件预处理将分散的字节拼凑在一起再写入FIFO,可以直接将整个字写入FIFO,FIFO会按照对齐模式只将对应有效的字节发送出去,于是减少了软件的辅助处理开销。
附图说明
图1为本发明设计的数据有效位统一配置的流控式FIFO缓存结构的总体框架;
图2为进行发送操作时FIFO数据有效位的配置情况;
图3为进行接收操作时FIFO数据有效位的配置情况;
图4为FIFO流控模式下数据传输示意图。
具体实施方式
下面对本发明作进一步详细描述:
参见图1、图2和图3,本发明的FIFO结构能够提高与主机接口的数据传输效率,减少通过软件进行数据整合的开销,并且设计硬件管理的流控模式从而避免FIFO的溢出现象,其所使用的技术手段主要包括如下方面:
(1)设置两套FIFO缓存硬件装置,并可根据串行通信应用模式进行配置选择。在全双工应用模式下,一套FIFO装置用于发送操作,另一套FIFO则同时用于接收操作;在半双工应用模式下,只启用一套FIFO装置,发送操作和接收操作共享该套FIFO,并进行分时复用。
(2)将发送FIFO和接收FIFO的存储宽度都设置为主机接口的数据位宽。当主机进行发送操作时,来自于主机接口的并行数据一个周期就可以全部装入到发送FIFO中;当主机进行接收操作时,从FIFO中读取的数据一个周期就可以全部输出到主机接口的并行数据总线上。这样可以保证主机接口与FIFO之间进行数据传输的最大交互带宽。
(3)针对FIFO存储宽度中的每个数据字节都设置独立的有效位。即便FIFO提供了与主机接口交互的最大数据带宽,但考虑到实际应用中可能只需要传输该最大数据带宽中的某些字节,因此对FIFO中所有字节数据都设置相应的有效位指示,这通过配置FIFO对齐模式来实现。当FIFO配置为按字节对齐时,从主机接口装入或读出的FIFO存储表项中所有字节数据都有效,将依次通过外设接口发送到串行总线上(发送操作);或者从外设接口接收到的串行数据将按各个字节依次保存到FIFO的存储表项中(接收操作)。当FIFO配置为按半字对齐时,从主机接口装入或读出的FIFO存储表项中的各个半字都只有一个字节有效,这些有效字节将依次通过外设接口发送到串行总线上(发送操作);或者从外设接口接收到的串行数据将按各个半字的有效字节位置依次保存到FIFO的存储表项中(接收操作)。当FIFO配置为按字对齐时,从主机接口装入或读出的FIFO存储表项中的每个字都只有一个字节有效,该字节将通过外设接口发送到串行总线上(发送操作);或者从外设接口接收到的串行数据将按照一个数据字的有效字节位置保存到FIFO的存储表项中(接收操作)。
(4)针对发送和接收FIFO设置基于硬件的流控功能。本发明将数据发送和接收操作都分成四种传输类型:突发传输、最后一次突发传输、单字传输、最后一次单字传输。突发传输的大小由用户进行配置,包含若干个位宽为主机接口宽度(即FIFO存储宽度)的并行数据;单字传输则只包含一个位宽为主机接口宽度的并行数据;最后一次突发传输和最后一次单字传输表明完成该次传输后就达到了所需传输的字节总数。流控逻辑根据所要进行串行传输的字节计数、突发传输的大小、FIFO对齐模式、FIFO填充状态等信息来计算当前是进行突发传输、最后一次突发传输、单字传输,还是最后一次单字传输,并发出相应的传输请求。当本次传输结束后,流控逻辑根据剩下所要传输的字节计数再进行类似的计算,以决定下一次的传输类型,其基本原则就是优先考虑进行多个并行数据的突发传输或最后一次突发传输,如不满足则进行一个并行数据的单字传输或最后一次单字传输,如此继续,直到所需的串行传输的数据字节都传输完毕。
(5)所有的FIFO数据传输请求都可配置选择采用CPU或DMA方式来处理。本发明针对数据发送和接收操作的四种传输请求,都设置了CPU中断接口和DMA接口处理逻辑,当系统中有DMA控制器并且也使能了DMA功能时,FIFO的四种数据传输请求操作将由DMA来实现,否则将由CPU中断方式来实现。
下面结合附图及实施例对本发明做进一步详细说明:
图1给出了本发明设计的数据有效位统一配置的流控式FIFO缓存结构的总体框架。首先,用户根据实际的串行通信应用选择是否需要配置全双工模式,如果配置了全双工模式,则FIFO 1用于发送操作,FIFO 2同时用于接收操作;否则,FIFO 1用于发送或接收操作,并进行时分复用,FIFO 2则不被使用。这两套FIFO装置的数据存储位宽都与主机接口并行数据宽度一致。其次,用户通过配置FIFO对齐模式,可以控制FIFO存储表项中哪部分数据字节是有效的。流控逻辑根据FIFO对齐模式、突发传输的大小、串行传输的数据字节计数,以及FIFO实时填充状态信息来自动判断当前是进行突发传输、最后一次突发传输、单字传输,还是最后一次单字传输,并发出相应的传输请求。用户可根据系统中有无DMA控制器的情况选择配置DMA使能,从而可以控制该数据传输请求是采用DMA方式处理,还是采用CPU中断方式处理。当传输请求被主机接口(CPU或DMA)处理后,流控逻辑从串行传输的数据字节计数中减去当前传输的数据字节数,以作为下次需要进行的数据传输总量,并将其更新到串行传输字节计数器中。如此继续,直到整个串行传输过程所需的数据字节都已传输完。
图2给出了进行发送操作时FIFO数据有效位的配置情况。这里假设主机接口的数据位宽是32位,因此FIFO的存储宽度也是32位的。来自主机接口的并行数据先写到发送寄存器(txd_i)中,该寄存器直接将发送数据装入到发送FIFO最尾端的存储表项中,随后,FIFO中的数据整体从尾部向头部移动,其每个表项中的数据有效位则依据用户配置的对齐模式来确定。当FIFO配置为按字节对齐时,FIFO中每个存储表项的32位数据都是有效的(用V进行标识),其四个字节分四次从FIFO最头部表项中读取出来,并放入到临时的发送寄存器(txd_o)的低八位中,四次计数分别是dc_cnt=0、1、2、3,该发送寄存器直接将各个字节装入到串行外设接口的移位寄存器中,然后进行串行移位输出。当FIFO配置为按半字对齐时,FIFO中32位存储数据的每个16位半字都只有其中一个字节有效,因此共分两次从FIFO最头部表项中读取出来,两次计数分别是dc_cnt=0、1。当FIFO配置为按字对齐时,FIFO中32位存储数据只有其中一个字节有效,因此只需一次从FIFO最头部表项中读取出来,计数标识是dc_cnt=0。可以看到,通过配置对齐模式,可以控制各个数据字节的有效性,并保证只有有效的数据字节才发送到串行外设接口上,无效的数据字节是不被允许发送出去的。
图3给出了进行接收操作时FIFO数据有效位的配置情况。从串行外设接口接收的串行数据经过移位寄存器后得到的八位数据字节被写入到临时的接收寄存器(rxd_i)中。当FIFO配置为按字节对齐时,该临时接收寄存器只使用低八位字节,并分四次将接收的数据字节装入到FIFO中,计数标识依次为dc_cnt=0、1、2、3,此时FIFO存储表项中四个字节都是有效的。当FIFO配置为按半字对齐时,该临时接收寄存器只使用低16位半字,并分两次将接收的数据字节装入FIFO中,计数标识依次为dc_cnt=0、1,此时FIFO存储表项中只有两个字节是有效的,无效字节用零填充。当FIFO配置为按字对齐时,该临时接收寄存器使用整个32位数据,只需一次将接收的数据字节装入FIFO中,计数标识为dc_cnt=0,此时FIFO存储表项中只有一个字节是有效的,无效字节用零填充。随后,FIFO中的数据整体从尾部向头部移动,而其最头部的存储数据直接写入到接收数据寄存器(rxd_o)中,主机接口也直接通过该寄存器进行接收数据的读取。
针对图2和图3所述的对齐模式,以下列举几种实际应用情况进行说明:
当配置为按字节对齐时,假设需要发送8个字节的数据,那么主机接口需要写两个32位的并行数据,例如为0x12345678和0x87654321,这时发送的8个字节分别是0x78、0x56、0x34、0x12、0x21、0x43、0x65、0x87,对应接收的数据也是0x12345678和0x87654321。
当配置为按半字对齐时,假设需要发送4个字节的数据,那么主机接口需要写两个32位的并行数据,例如为0x12345678和0x87654321,这时发送的4个字节分别是0x78、0x34、0x21、0x65,对应接收的数据是0x00340078和0x00650021。
当配置为按字对齐时,假设需要发送2个字节的数据,那么主机接口需要写两个32位的并行数据,例如为0x12345678和0x87654321,这时发送的2个字节分别是0x78、0x21,对应接收的数据是0x00000078和0x00000021。
图4给出了在FIFO流控模式下各种数据传输过程的示意。当串行传输字节总数为12、FIFO按字节对齐、突发传输大小为2时的流控传输顺序依次是产生1个突发传输和1个最后一次单字传输。当串行传输字节总数为12、FIFO按半字对齐、突发传输大小为2时的流控传输顺序依次是产生2个突发传输和1个最后一次突发传输。当串行传输字节总数为10、FIFO按字对齐、突发传输大小为4时的流控传输顺序依次是产生2个突发传输、1个单字传输和1个最后一次单字传输。
实施例
将本发明应用于多款SoC芯片的I2C串行总线控制器设计中,这些SoC采用了32位SPARC V8处理器的主机控制接口,因此I2C总线控制器中的FIFO存储位宽也为32位。通过使用该发明内容,明显提高了该I2C模块与主机SPARC V8处理器之间的数据传输效率,并且不会发生I2C FIFO溢出错误,提高了应用的可靠性。

Claims (6)

1.数据有效位统一配置的流控式FIFO缓存装置,其特征在于,包括第一FIFO(1)和第二FIFO(2),第一FIFO(1)和第二FIFO(2)共同连接至用于选择全双工模式或半双工模式的全双工模式配置寄存器;第一FIFO(1)和第二FIFO(2)的数据位宽与主机接口的数据位宽相等;
第一FIFO(1)上连接有用于产生数据字节有效位的第一流控配置电路及用于接收第一FIFO(1)填充状态信息的第一流控逻辑电路,第一流控配置电路包括第一FIFO对齐模式配置寄存器、第一突发传输大小配置寄存器和第一串行传输字节计数器,第一FIFO对齐模式配置寄存器和第一突发传输大小配置寄存器的输出端均连接至第一流控逻辑电路,第一串行传输字节计数器和第一流控逻辑电路双向交互;
第二FIFO(2)上连接有用于产生数据字节有效位的第二流控配置电路及用于接收第二FIFO(2)填充状态信息的第二流控逻辑电路,第二流控配置电路包括第二FIFO对齐模式配置寄存器、第二突发传输大小配置寄存器和第二串行传输字节计数器,第二FIFO对齐模式配置寄存器和第二突发传输大小配置寄存器的输出端均连接至第二流控逻辑电路,第二串行传输字节计数器和第二流控逻辑电路双向交互;
第一流控逻辑电路和第二流控逻辑电路均连接至用于选择DMA或CPU响应数据传输请求的DMA使能配置寄存器,所述数据传输请求包括突发数据传输请求、最后一次突发数据传输请求、单字数据传输请求和最后一次单字数据传输请求;
其中,FIFO中所有字节数据都设置相应的有效位指示,通过配置FIFO对齐模式来实现;当FIFO配置为按字节对齐时,从主机接口装入或读出的FIFO存储表项中所有字节数据都有效;当FIFO配置为按半字对齐时,从主机接口装入或读出的FIFO存储表项中的各个半字都只有一个字节有效;当FIFO配置为按字对齐时,从主机接口装入或读出的FIFO存储表项中的每个字都只有一个字节有效;
流控逻辑电路根据所要进行串行传输的字节计数、突发传输的大小、FIFO对齐模式、FIFO填充状态来计算当前是进行突发传输、最后一次突发传输、单字传输,还是最后一次单字传输,并发出相应的传输请求。
2.根据权利要求1所述的数据有效位统一配置的流控式FIFO缓存装置,其特征在于,第一FIFO(1)和第二FIFO(2)均通过主机接口连接至DMA或CPU。
3.根据权利要求1所述的数据有效位统一配置的流控式FIFO缓存装置,其特征在于,第一FIFO(1)和第二FIFO(2)均通过串行外设接口连接至外界通信总线。
4.数据有效位统一配置的流控式FIFO缓存方法,采用权利要求1所述的数据有效位统一配置的流控式FIFO缓存装置,其特征在于,包括以下步骤:
步骤一:用户配置全双工模式配置寄存器,当选择全双工模式时,第一FIFO(1)用于数据的发送,第二FIFO(2)同时用于数据的接收;当选择半双工模式时,第一FIFO(1)用于数据的发送或接收,并进行时分复用,第二FIFO(2)不使用;
步骤二:当在全双工模式下,用户配置第一FIFO对齐模式配置寄存器、第一突发传输大小配置寄存器、第一串行传输字节计数器、第二FIFO对齐模式配置寄存器、第二突发传输大小配置寄存器、第二串行传输字节计数器和DMA使能配置寄存器;然后第一流控逻辑电路和第二流控逻辑电路自动产生数据传输请求并发送至DMA或CPU进行处理;
当在半双工模式下,用户配置第一FIFO对齐模式配置寄存器、第一突发传输大小配置寄存器、第一串行传输字节计数器和DMA使能配置寄存器;然后第一流控逻辑电路自动产生数据传输请求并发送至DMA或CPU进行处理。
5.根据权利要求4所述的数据有效位统一配置的流控式FIFO缓存方法,其特征在于,第一流控逻辑电路和第二流控逻辑电路自动产生数据传输请求并发送至DMA或CPU进行处理具体为:
第一流控逻辑电路根据第一FIFO对齐模式配置寄存器的值、第一突发传输大小配置寄存器的值、第一串行传输字节计数器的值以及第一FIFO(1)填充状态信息自动判断当前是进行突发数据传输、最后一次突发数据传输、单字数据传输,还是最后一次单字数据传输,并发出相应的发送数据传输请求;
同时第二流控逻辑电路根据第二FIFO对齐模式配置寄存器的值、第二突发传输大小配置寄存器的值、第二串行传输字节计数器的值以及第二FIFO(2)填充状态信息自动判断当前是进行突发数据传输、最后一次突发数据传输、单字数据传输,还是最后一次单字数据传输,并发出相应的接收数据传输请求;
根据DMA使能配置寄存器的值选择DMA或CPU响应上述两个数据传输请求,当数据传输请求被CPU或DMA处理后,第一流控逻辑电路从第一串行传输字节计数器的值中减去当前传输的数据字节数以作为下次需要进行的数据传输总量,并将其更新到第一串行传输字节计数器中,如此继续,直到第一串行传输字节计数器的值为0;同时第二流控逻辑电路从第二串行传输字节计数器的值中减去当前传输的数据字节数以作为下次需要进行的数据传输总量,并将其更新到第二串行传输字节计数器中,如此继续,直到第二串行传输字节计数器的值为0;至此,全双工模式的数据发送和接收完成。
6.根据权利要求4所述的数据有效位统一配置的流控式FIFO缓存方法,其特征在于,第一流控逻辑电路自动产生数据传输请求并发送至DMA或CPU进行处理具体为:
第一流控逻辑电路根据第一FIFO对齐模式配置寄存器的值、第一突发传输大小配置寄存器的值、第一串行传输字节计数器的值以及第一FIFO(1)填充状态信息自动判断当前是进行突发数据传输、最后一次突发数据传输、单字数据传输,还是最后一次单字数据传输,并发出相应的发送或接收数据传输请求;
根据DMA使能配置寄存器的值选择DMA或CPU响应上述发送或接收数据传输请求,当数据传输请求被CPU或DMA处理后,第一流控逻辑电路从第一串行传输字节计数器的值中减去当前传输的数据字节数以作为下次需要进行的数据传输总量,并将其更新到第一串行传输字节计数器中,如此继续,直到第一串行传输字节计数器的值为0,至此,半双工模式的数据发送或接收完成。
CN201910411859.4A 2019-05-17 2019-05-17 数据有效位统一配置的流控式fifo缓存装置及方法 Active CN110188059B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910411859.4A CN110188059B (zh) 2019-05-17 2019-05-17 数据有效位统一配置的流控式fifo缓存装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910411859.4A CN110188059B (zh) 2019-05-17 2019-05-17 数据有效位统一配置的流控式fifo缓存装置及方法

Publications (2)

Publication Number Publication Date
CN110188059A CN110188059A (zh) 2019-08-30
CN110188059B true CN110188059B (zh) 2020-10-27

Family

ID=67716619

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910411859.4A Active CN110188059B (zh) 2019-05-17 2019-05-17 数据有效位统一配置的流控式fifo缓存装置及方法

Country Status (1)

Country Link
CN (1) CN110188059B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111338997B (zh) 2020-03-05 2021-07-20 苏州浪潮智能科技有限公司 一种arm服务器bios支持tcm通信的方法、装置、设备和介质
CN112749112B (zh) * 2020-12-31 2021-12-24 无锡众星微系统技术有限公司 一种硬件流水结构
CN112948322B (zh) * 2021-02-26 2023-05-16 西安微电子技术研究所 一种基于弹性缓存的虚通道及实现方法
CN113434545B (zh) * 2021-06-02 2022-11-18 中科驭数(北京)科技有限公司 数据缓存装置及数据提供方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1407458A (zh) * 2001-08-30 2003-04-02 华为技术有限公司 一种异步先进先出(fifo)数据缓存的方法
CN202453864U (zh) * 2011-12-20 2012-09-26 四川九洲电器集团有限责任公司 基于fpga和ddr2 sdram的大容量异步fifo缓存
CN105511835A (zh) * 2014-09-24 2016-04-20 深圳市中兴微电子技术有限公司 一种异步fifo控制器及防止异步fifo缓存数据溢出的方法
CN107451087A (zh) * 2017-07-31 2017-12-08 郑州云海信息技术有限公司 一种基于fpga的异同步可切换串口及使用方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070076726A (ko) * 2006-01-19 2007-07-25 삼성전자주식회사 엔드포인트 제어 장치 및 방법
CN103678202B (zh) * 2013-11-26 2016-08-17 北京时代民芯科技有限公司 一种多核处理器的dma控制器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1407458A (zh) * 2001-08-30 2003-04-02 华为技术有限公司 一种异步先进先出(fifo)数据缓存的方法
CN202453864U (zh) * 2011-12-20 2012-09-26 四川九洲电器集团有限责任公司 基于fpga和ddr2 sdram的大容量异步fifo缓存
CN105511835A (zh) * 2014-09-24 2016-04-20 深圳市中兴微电子技术有限公司 一种异步fifo控制器及防止异步fifo缓存数据溢出的方法
CN107451087A (zh) * 2017-07-31 2017-12-08 郑州云海信息技术有限公司 一种基于fpga的异同步可切换串口及使用方法

Also Published As

Publication number Publication date
CN110188059A (zh) 2019-08-30

Similar Documents

Publication Publication Date Title
CN110188059B (zh) 数据有效位统一配置的流控式fifo缓存装置及方法
US10515030B2 (en) Method and device for improved advanced microcontroller bus architecture (AMBA) and advanced extensible interface (AXI) operations
EP1896965B1 (en) Dma descriptor queue read and cache write pointer arrangement
US6397316B2 (en) System for reducing bus overhead for communication with a network interface
US5600799A (en) Status batching and filtering in a media access control/host system interface unit
US8850085B2 (en) Bandwidth aware request throttling
US5471632A (en) System for transferring data between a processor and a system bus including a device which packs, unpacks, or buffers data blocks being transferred
US5392406A (en) DMA data path aligner and network adaptor utilizing same
US7818546B2 (en) Pipeline processing communicating adjacent stages and controls to prevent the address information from being overwritten
US6823403B2 (en) DMA mechanism for high-speed packet bus
WO2002101566A2 (en) Flexible i/o interface and method for providing a common interface to a processing core
JP4903801B2 (ja) FlexRay通信モジュールとFlexRay加入者装置とを繋ぐ加入者インタフェース、およびFlexRay通信モジュールとFlexRay加入者装置とを繋ぐ加入者インタフェースを経由するメッセージの伝送方法
WO2010078017A2 (en) Interrupt techniques
EP1709543A2 (en) A multiple address two channel bus structure
US9471521B2 (en) Communication system for interfacing a plurality of transmission circuits with an interconnection network, and corresponding integrated circuit
US8086766B2 (en) Support for non-locking parallel reception of packets belonging to a single memory reception FIFO
KR20120040535A (ko) 버스 시스템 및 그것의 동작 방법
US20080109604A1 (en) Systems and methods for remote direct memory access to processor caches for RDMA reads and writes
WO2007130476A2 (en) Network interface device with 10 gb/s full-duplex transfer rate
JP2009502072A (ja) FlexRay通信モジュール及びFlexRay通信制御装置、並びにFlexRay通信接続とFlexRay加入者装置との間でメッセージを伝送する方法
EP0618537B1 (en) System and method for interleaving status information with data transfers in a communications adapter
US7610415B2 (en) System and method for processing data streams
US6633927B1 (en) Device and method to minimize data latency and maximize data throughput using multiple data valid signals
US11847464B2 (en) Variable pipeline length in a barrel-multithreaded processor
US20140160954A1 (en) Host ethernet adapter frame forwarding

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
GR01 Patent grant
GR01 Patent grant