一种突发机制下实现数据读写控制的方法和装置的制作方法

文档序号:6563944阅读:168来源:国知局
专利名称:一种突发机制下实现数据读写控制的方法和装置的制作方法
技术领域
本发明涉及数据读写控制技术,特别涉及一种突发机制下实现数据读写控制的方法和装置。
背景技术
在直接内存存取(DMA)控制器中,功能模块,例如,安全数字卡(SD)控制器等,和DMA控制模块,根据读或写先入先出(FIFO)模块产生的读空或写满信号,对该模块进行数据读写操作。
图1为基于AMBA总线的DMA控制器的结构示意图,如图1所示,该控制器包括DMA控制模块100、写FIFO或BUFFER模块111、读FIFO或BUFFER模块112和功能模块120。其中,DMA控制模块100与功能模块之间的数据传输有两种传输模式,即FIFO模式和BUFFER模式,用户根据实际需要从中选择一种传输模式。
如图1所示,在FIFO模式下,当写FIFO模块111非满时,功能模块120向该模块写入数据,当写FIFO模块111非空时,DMA控制模块100从该模块中读取数据。当读FIFO模块112非满时,DMA控制模块100向该模块中写入输入数据,当读FIFO模块112非空时,功能模块120从该模块中读取数据。
在FIFO工作模式下,写FIFO模块111和读FIFO模块112分别产生读空信号和写满信号,来控制DMA控制模块100和功能模块120的数据读写操作,具体操作如下DMA控制模块100以长度为1进行数据读写,即此时的DMA控制模块100处于正常读写机制,当写FIFO模块111中的最后一个数据被读走时,写FIFO模块111产生读空信号,通知DMA控制模块100不能再从写FIFO模块111中读取数据,换言之,只要写FIFO模块111中的数据非空,DMA控制模块100就可以从写FIFO模块111中读出数据。当写入一个数据,使得读FIFO模块112被写满时,读FIFO模块112产生写满信号,通知DMA控制模块100不能再往读FIFO模块112中写入数据,换言之,只要写FIFO模块111中的数据非满,DMA控制模块100就可以往写FIFO模块111写入数据。写FIFO模块111和读FIFO模块112对功能模块120的数据读写操作控制方法,与对DMA控制模块100的数据读写操作控制方法基本相同,不同的是当功能模块120向写FIFO模块111写入一个数据,使得写FIFO模块111变满时,写FIFO模块111产生数据写满信号,通知功能模块120不能再往自身写入数据;当功能模块120从读FIFO模块112读出一个数据使得读FIFO模块112为空时,读FIFO模块112产生读空信号,通知功能模块120不能再从自身读出数据。
在BUFFER工作模式下,DMA控制模块100的突发(BURST)长度可配置,当DMA控制模块100一次性写满读BUFFER模块112时,读BUFFER模112产生中断信息通知DMA控制模块100不能再往读BUFFER模块112中写入数据。同样,只有当DMA控制模块100一次性读空写BUFFER模块111时,写BUFFER模块111才能产生中断信息,通知DMA控制模块100不能再从写BUFFER模块111中读出数据。同样,写BUFFER模块111和读BUFFER模块112对功能模块120的数据读写操作控制方法,与对DMA控制模块100的数据读写操作控制方法基本相同,差别在于,当功能模块120一次性写满写BUFFER模块111时,写BUFFER模块111才能产生中断信息,通知功能模块120不能再往写BUFFER模块111中写入数据;当功能模块120一次性读空读BUFFER模块112时,读BUFFER模块112能产生中断信息,通知功能模块120不能再从读BUFFER模块112中读出数据。
以上给出的是FIFO模式和BUFFER模式下正常读写机制的方案,实际应用中还存在突发机制下数据的读写控制问题,但FIFO模块不能根据BURST长度,在BURST机制下进行数据的读写控制。下面以BURST长度为2n(n≥1,且n为整数,例如,n=3)为例,介绍现有技术中读或写FIFO模块不能根据该BURST长度,进行突发机制下数据读写控制的原因。
以现有的FIFO模式为例,当写FIFO模块111中的数据不足8个时,DMA控制模块100不能完成一次BURST数据读操作,此时写FIFO模块111应当产生读空信号,但在现有FIFO模式下,只有当写FIFO模块111中的最后一个数据被DMA控制模块100读走时,写FIFO模块111才能产生读空信号。同样,对于读FIFO模块112也会存在这样的问题,当读FIFO模块112的剩余数据空间不足8个时,DMA控制模块100不能完成一次BURST数据写操作,此时读FIFO模块112应当产生数据写满信号,但在现有FIFO模式下,只有当写入一个数据使得读FIFO模块112变满时,读FIFO模块112才能产生写满信号。所以,FIFO模块在突发机制下,不能对DMA控制模块100进行数据读写控制。
同样,在FIFO工作模式下,当功能模块120处于BURST读写机制,对FIFO模块进行读写操作时,也会存在所述DMA控制模块100所存在的问题,区别在于,当写FIFO模块111的剩余数据空间不足8个时,功能模块120不能完成一次BURST数据写操作,此时写FIFO模块111应当产生写满信号,但在现有FIFO模式下,只有当功能模块120写入一个数据使得写FIFO模块111变满时,写FIFO模块111才能产生写满信号。当读FIFO模块112中的数据不足8个时,功能模块120不能完成一次BURST数据读操作,此时读FIFO模块112应当产生数据读空信号,但在现有FIFO模式下,只有当读FIFO模块112中的最后一个数据被功能模块120读走时,读FIFO模块112才能产生数据读空信号。可以看出,FIFO模块在突发机制下,不能对功能模块120进行数据读写控制。
可见,正常机制时,DMA控制模块工作在FIFO模式下,可以与读或写FIFO模块进行实时数据读写操作。由于读或写FIFO模块不能根据BURST长度对数据进行读写操作,并根据读或写FIFO模块产生数据读空和写满信号,因此读或写FIFO模块不能在突发机制下,产生数据读写控制信号来控制DMA控制模块的读写操作。而当DMA控制模块工作在BUFFER模式下时,读或写BUFFER模块可以配置DMA控制模块的BURST长度,但是,DMA控制模块不能进行实时数据读写操作。

发明内容
有鉴于此,本发明的目的在于提供一种突发机制下实现数据读写控制的方法,使用该方法确保读或写FIFO模块在突发传输机制下能够进行数据读写控制,提高DMA控制模块的传输效率。
本发明的另一目的在于提供一种突发机制下实现数据读写控制的装置,使用该装置确保读或写FIFO模块在突发传输机制下,能够进行数据读写控制,提高DMA控制模块的传输效率。
为了达到上述目的,本发明提供了一种突发机制下实现数据读写控制的方法,其特征在于,该方法包括以下步骤A、读或写FIFO模块根据获取的BURST长度配置读写地址指针;B、读或写FIFO模块根据读地址指针、写地址指针产生数据读空信号,读或写FIFO模块根据读地址指针、写地址指针、BURST长度和读写FIFO深度产生数据写满信号。
所述步骤A中读或写FIFO模块根据接收到的控制信息,获取BURST长度。
在所述步骤A中,所述BURST的长度为2n,n为大于等于1的整数。
在所述步骤A中,所述读或写FIFO模块根据获取的BURST长度配置读写地址指针的步骤包括所述读或写FIFO模块取正常读写模式下的N位读地址指针的高N-n位;所述读或写FIFO模块取正常读写模式下的N位写地址指针的高N-n位。
所述读或写FIFO模块根据获取的BURST长度配置所述读地址指针的步骤为所述读或写FIFO模块将正常读写模式下的N位读地址指针右移n位,对右移后的读地址指针的高n位补零;所述读或写FIFO模块根据获取的所述BURST长度,配置所述写地址指针的步骤为所述读或写FIFO模块将正常读写模式下的N位写地址指针右移n位,对右移后的写地址指针的高n位补零。
所述步骤B具体包括当读地址指针等于写地址指针时,读或写FIFO模块产生数据读空信号;当写地址指针和读地址指针之差与BURST长度的乘积,等于所述FIFO深度时,读或写FIFO模块产生数据写满信号。
所述步骤B后进一步包括当所述写FIFO模块产生数据读空信号时,将所述信号发送给直接内存存取DMA控制模块,通知所述DMA控制模块不能再从自身读取数据;当所述读FIFO模块产生数据读空信号时,将所述信号发送给功能模块,通知所述功能模块不能再从自身读取数据;当所述写FIFO模块产生数据写满信号时,将所述信号发送给功能模块,通知所述功能模块不能再向自身写入数据;当所述读FIFO模块产生数据写满信号时,将所述信号发送给DMA控制模块,通知所述DMA控制模块不能再向自身写入数据。
为了达到本发明的另一目的,本发明提供一种突发机制下实现数据读写控制的装置,该装置为读或写FIFO模块,包括双端口存储器,根据写地址指针和读地址指针,进行数据存储操作,该装置进一步包括读或写地址产生逻辑和读空或写满信号产生逻辑;所述读或写地址产生逻辑,用于获取BURST长度,根据获取的所述BURST长度配置读地址指针和写地址指针,将配置的读地址指针和写地址指针发送给读空或写满信号产生逻辑和所述双端口存储器;所述读空或写满信号产生逻辑,用于接收所述读地址指针和写地址指针,根据读地址指针、写地址指针产生数据读空信号,将所述数据读空信号发送出去,根据读地址指针、写地址指针、BURST长度和读写FIFO深度产生数据写满信号,将所述数据写满信号发送出去。
该装置进一步包括BURST长度配置寄存器,用于将BURST的长度配置为2n,n为大于等于1的整数,将配置的所述BURST的长度发送给所述读或写地址产生逻辑。
该装置进一步包括DMA控制模块和功能模块,所述DMA控制模块,当接收到所述写FIFO模块中的读空或写满信号产生逻辑发出的数据读空信号时,不再从该写FIFO模块读取数据;当接收到所述读FIFO模块中的读空或写满信号产生逻辑发出的数据写满信号时,不再向该读FIFO模块中写入数据;所述功能模块,当接收到所述写FIFO模块中的读空或写满信号产生逻辑发出的数据写满信号时,不再向该写FIFO模块写入数据;当接收到所述读FIFO模块中的读空或写满信号产生逻辑发出的数据读空信号时,不再从该读FIFO模块读取数据。
由上述方案可以看出,本发明提供的一种突发机制下实现数据读写控制的方法和装置,读或写FIFO模块根据获取的BURST长度配置读写地址指针;读或写FIFO模块根据读地址指针、写地址指针产生数据读空信号,读或写FIFO模块根据读地址指针、写地址指针和读写FIFO深度产生数据写满信号。使用本发明所提供的技术方案,能够实现读或写FIFO模块在BURST传输机制下,根据比较读写地址指针产生数据读空信号,或根据比较读写地址指针之差和BURST长度的乘积与读写FIFO深度的关系产生数据写满信号,从而实现读或写FIFO模块在BURST传输机制下的数据读写控制。
在本发明中,读或写FIFO模块可以灵活地配置BURST长度,可以将BURST长度配置为2n,其中n为大于等于1的整数。读或写FIFO模块根据BURST长度,产生数据读空或写满信号,DMA控制模块和功能模块根据读空或写满信号,以2n为单位进行数据读写操作。本方案还可以解决现有技术中,DMA控制模块和功能模块以1为单位读写数据时,长时间占用高级微控制器总线结构(AMBA)总线影响其他模块工作的问题。除此之外,也会解决DMA控制模块因不断发出读写申请,造成的系统功耗增大的问题。


图1为基于AMBA总线的DMA控制器的结构示意图;图2是本发明的读或写FIFO模块在突发传输机制下实现数据读写控制的方法的流程图;图3为写FIFO模块在BURST机制下产生数据读空信号方法的流程示意图;图4为读FIFO模块在BURST机制下产生数据写满信号方法的流程示意图;图5为在突发机制下实现数据读写控制的装置的结构示意图;图6为在突发机制下实现数据读写控制的装置的第一较佳实施例的结构示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
本发明的核心思想是在FIFO工作模式下,在保证实时性传输的同时,读或写FIFO模块根据获取的BURST长度配置读写地址指针,读或写FIFO模块根据读地址指针、写地址指针产生数据读空信号,读或写FIFO模块根据读地址指针、写地址指针、BURST长度和配置的读写FIFO深度产生数据写满信号。因此,可以实现读或写FIFO模块在BURST机制下对DMA控制模块和功能模块的读写控制,同时可以提高DMA控制模块的传输效率。
图2是本发明的实现FIFO模块在突发传输机制下数据读写控制方法的流程图。该方法具体步骤如下
步骤201读或写FIFO模块根据获取的BURST长度配置读写地址指针。
步骤202读或写FIFO模块根据读地址指针、写地址指针产生数据读空信号,读或写FIFO模块根据读地址指针、写地址指针、BURST长度和读写FIFO深度产生数据写满信号。
本步骤的具体操作为读或写FIFO模块首先比较写地址指针和读地址指针,当两者相等时,认为读或写FIFO模块被读空,则产生读空信号。当写地址指针减去读地址指针,当两者差值与BURST长度的乘积等于读写FIFO深度时,认为读或写FIFO模块已被写满,则读或写FIFO模块产生数据写满信号。
在图2所示实施例中,FIFO模块可以将BURST的长度配置为2n,其中,n≥1的整数,所述读或写FIFO的深度为2m,其中,m为大于等于n的整数。下面以BURST的长度为8为例,介绍当DMA控制模块对读或写FIFO模块进行读或写操作时,写FIFO模块如何通过比较读写地址指针产生读空信号,读FIFO如何根据读写地址指针,以及读写FIFO深度之间的关系产生写满信号的操作。
现有技术中,读或写FIFO模块将读写地址指针分别配置为rd_addr[N-1:0]和wr_addr[N-1:0],其中,N是地址的总位数。rd_addr[N-1:0]表示N位二进制读地址指针,使用第0位到第N-1位进行读操作,每进行一次读操作,该读地址指针加1。wr_addr[N-1:0]表示N位二进制写地址指针,N是写地址指针的总位数,使用第0位到第N-1位进行读操作,每进行一次写操作该写地址指针加1。读或写FIFO模块比较读写地址指针,当rd_addr[N-1:0]=wr_addr[N-1:0]时,产生读空信号。当wr_addr[N-1:0]-rd_addr[N-1:0]的值与BURST长度的乘积等于读写FIFO深度时,产生数据写满信号。在图2所示的实施例中,读或写FIFO根据获取的BURST长度配置读写地址指针的具体步骤包括当BURST长度为2n时,取正常读写模式下的读地址指针rd_addr[N-1:0]的高n位,配置后的读地址指针为rd_addr[N-1:n],读或写FIFO模块使用配置后的高N-n位读地址指针进行读操作,在这里N-n是N和n之差。取正常读写模式下的写地址指针wr_addr[N-1:0]的高n位,配置后的写地址指针为wr_addr[N-1:n],读或写FIFO模块使用配置后的高N-n位写地址指针进行写操作,N是地址的总位数,n为大于等于1的整数。FIFO深度为2m,其中,2m大于2n。
本发明的技术方案可以用在DMA控制器中,读或写FIFO产生数据读空或写满信号,对DMA控制模块和功能模块进行数据读写控制。在图3和图4所示的实施例中,分别介绍写FIFO模块产生数据读空信号和读FIFO模块产生数据写满信号,对DMA控制模块进行数据读写控制的具体操作过程。在图3所示的实施例中,给出写FIFO通过比较读写地址指针产生数据读空信号的具体操作过程。在图4所示的实施例中,给出读FIFO通过比较读写地址指针、BURST长度与读或写FIFO深度之间的关系,产生数据写满控制信号的具体实施步骤。
图3为写FIFO模块在BURST机制下产生读空信号的方法流程示意图;如图3所示,具体步骤如下步骤301写FIFO模块获取BURST长度。
在本步骤中,写FIFO模块从负责配置BURST长度的寄存器发送的控制信息中,获取到BURST长度为8。
步骤302写FIFO模块根据获取的BURST长度,配置读写地址指针。
在本步骤中,写FIFO模块获取BURST长度配置读写地址指针的具体步骤包括例如,写FIFO模块根据BURST长度为8,将读地址指针配置为rd_addr[5:3],将写地址指针配置为wr_addr[5:3],N为地址总位数,这里将N取为6。
步骤303写FIFO模块通过比较读地址指针和写地址指针,判断两者是否相等,如果两者相等,则执行步骤304;否则,执行步骤305。
在本步骤中,根据控制信息获取到BURST长度被配置为8,所以DMA控制模块以8为单位进行数据读操作;当DMA对写FIFO每进行一次读操作时,读地址指针加1,同样,当功能模块对写FIFO每进行一次写操作时,写地址指针加1。当所述写FIFO模块的写地址指针大于读地址指针时,表示该模块中还有可供DMA控制模块读取的数据;当所述读地址指针等于写地址指针时,表示写FIFO模块被读空,则产生数据读空信号。
步骤304写FIFO模块产生数据读空信号。
步骤305写FIFO模块不产生数据读空信号,结束本流程。
下面结合一个具体的例子,分别介绍现有技术和步骤303中的写FIFO模块,如何根据比较读写地址指针产生数据读空信号。例如,读写地址的总长度为6,在现有技术正常读写模式下,读地址指针和写地址指针的初始地址分别被配置为rd_addr
和wr_addr
。对写FIFO模块每进行一次写操作,所述写地址指针加1,当对所述写FIFO模块进行32次写操作后,写地址指针变为wr_addr[100000]。同样,对写FIFO模块每进行一次读操作,所述读地址指针加1,当对写FIFO模块进行32次读操作后,读地址指针变为rd_addr[100000],且等于写地址指针wr_addr[100000],表示写FIFO模块中的数据被读空,所述写FIFO模块产生数据读空信号。根据本发明提供的技术方案,假如BURST长度被配置为8,读地址指针和写地址指针的初始地址分别为rd_addr
和wr_addr
。若所述写FIFO模块被写入32个数据,对所述写地址指针的进行配置方法为将正常模式下的写地址指针wr_addr[100000]右移3位,并将右移后的写地址指针的高3位补零,BURST机制下的写地址指针变为wr_addr
。以BURST=8对写FIFO模块进行读操作,每读出8个数据,所述读地址指针加1,当对所述写FIFO模块进行4次读操作后,此时的读地址指针变为rd_addr
,且等于写地址指针wr_addr
,表示写FIFO模块中的数据被读空,则写FIFO模块产生数据读空信号。
图4为读FIFO模块在BURST机制下产生数据写满信号的方法流程示意图。如图4所示,具体步骤如下步骤401读FIFO模块根据获取的BURST长度配置读写地址指针。
在本步骤中,读FIFO模块根据获取的BURST长度配置读写地址指针的方法为例如,读FIFO模块根据BURST长度为8,将读地址指针配置为rd_addr[5:3],将写地址指针配置为wr_addr[5:3],N为地址指针的总长度,这里将N取为6,取读写FIFO深度为32。
步骤402FIFO模块计算写地址指针和读地址指针之差,将两者差值与BURST长度的乘积与读写FIFO自身深度进行比较,如果相等则执行步骤403,否则执行步骤404。
在本步骤中,FIFO模块用写地址指针减去读地址指针,如果两者差值与BURST长度的乘积等于32则执行步骤403,否则执行步骤404。
本步骤中,所述读写地址指针的操作方法同步骤303,即当DMA对读FIFO每进行一次写操作时,写地址指针加1。同样,当功能模块对读FIFO模块每进行一次读操作时,读地址指针加1。
步骤403读FIFO模块产生数据写满信号。
步骤404读FIFO模块不产生数据写满信号,并结束本流程。
下面结合一个具体的例子,分别介绍现有技术和步骤402中的读FIFO模块,如何根据比较读写地指针、BURST长度和读写FIFO深度产生数据写满信号。例如,读写地址的总长度为6,读写FIFO深度为32。在现有技术正常读写模式下,读地址指针和写地址指针的初始值分别为rd_addr
和wr_addr
。对读FIFO模块每进行一次写操作,所述写地址指针加1,当DMA控制模块对读FIFO模块进行32次写操作后,写地址指针变为wr_addr[100000]。wr_addr[100000]-rd_addr
等于读写FIFO深度32,表示读FIFO模块被写满,所述读FIFO模块产生数据写满信号。根据本发明提供的技术方案,例如,BURST长度被配置为8,读地址指针和写地址指针的初始值分别为rd_addr
和wr_addr
。对BURST机制下的写地址指针的配置方法为将正常模式下的写地址指针wr_addr
右移3位,并将右移后的写地址指针的高3位补零。DMA控制模块以BURST=8的长度对读FIFO模块进行写操作,每写入8个数据,所述写地址指针加1,当对所述读FIFO模块进行4次写操作后,写地址指针变为wr_addr
,此时,(wr_addr
-rd_addr
)*8的值等于读写FIFO深度32,表示读FIFO模块被写满,则读FIFO模块产生数据写满信号。在对读FIFO模块同时进行读写操作的情况下,所述读FIFO模块仍根据上述方法对读写地址指针进行配置,并根据所述读写地址指针、BURST长度和读写FIFO深度的关系产生数据写满信号。
在图3和图4所示的实施例中,介绍了在BURST机制下对读写地址指针进行配置的方法首先将正常读写模式下的读地址指针rd_addr[N-1:0]和写地址指针wr_addr[N-1:0]都右移n位,将右移后的读地址指针和写地址指针的高n位补零,读地址指针被配置为rd_addr[N-1:n],写地址指针被配置为wr_addr[N-1:n]。图3和图4所示的实施例只是本发明的最佳实施例,并非对本发明的限定,其他任何将正常读写模式下的读地址指针rd_addr[N-1:0]和写地址指针wr_addr[N-1:0],分别配置为rd_addr[N-1:n]和wr_addr[N-1:n]的方法,仍然在本发明的保护范围之内。
图3和图4所示的实施例中,分别以BURST长度等于8为例,介绍了当DMA控制模块对读或写FIFO模块进行读或写操作时,读或写FIFO模块如何根据读地址指针和写地址指针产生数据读空信号,根据读地址指针、写地址指针、BURST长度和读写FIFO深度产生数据写满信号,对于其他满足BURST长度为2n,n≥1,且n为整数的情况,上述方法也是适用的。同样,当功能模块对读或写FIFO模块进行读或写操作时,其操作方法基本相同,差别在于在图4所述的读FIFO模块中,按照图3所述的方法,当所述读写地址指针相等时,所述读FIFO模块产生数据读空信号,通知功能模块不能再从自身读取数据;否则所述读FIFO模块不产生读空信号,并结束本流程。在图4所述的写FIFO模块中,按照图3所述的方法,当写地址指针和读地址指针差值与BURST长度的乘积等于读写FIFO深度时,写FIFO模块产生写满信号,通知功能模块不能再往自身写入数据;否则所述写FIFO模块不产生写满信号,并结束本流程。
下面介绍在突发机制下实现数据读写控制的装置,在本发明中,该装置为读或写FIFO模块。
图5为在突发机制下实现数据读写控制的装置的结构示意图;如图5所示,该装置为读或写FIFO模块500包括读或写地址产生逻辑501、读空或写满信号产生逻辑502和双端口存储器503;读或写地址产生逻辑501,用于获取BURST长度,并根据获取的BURST长度配置读地址指针和写地址指针,将配置的读地址指针和写地址指针发送给读空或写满信号产生逻辑502和双端口存储器503。
读空或写满信号产生逻辑502,接收读或写地址产生逻辑发送的读地址指针和写地址指针,根据读地址指针、写地址指针产生数据读空信号,根据读地址指针、写地址指针、BURST长度和读写FIFO深度产生数据写满信号。
双端口存储器503,用于接收读或写地址产生逻辑501发出读地址指针和写地址指针,根据所述指针进行数据的存储操作。
图6为在突发机制下实现数据读写控制的装置的第一较佳实施例的结构示意图;如图6所示,该装置包括功能模块610、DMA控制模块620和BURST长度配置寄存器630、写FIFO模块640和读FIFO模块650。
BURST长度配置寄存器630,用于配置BURST长度,将所述BURST长度发送给读或写地址产生逻辑641,例如,可以将BURST长度配置为8。
读或写地址产生逻辑641,用于接收BURST长度配置寄存器630发送的BURST长度,根据该长度配置读写地址指针。在本实施例中,将所述读地址指针和写地址指针分别配置为rd_addr[5:3]和wr_addr[5:3]。其中,6是地址的总长度,写FIFO模块640的深度为32。
读空或写满信号产生逻辑642,用于接收读或写地址产生逻辑641发送的读写地址指针。比较所述读写地址指针,当rd_addr[5:3]=wr_addr[5:3]时,读空或写满信号产生逻辑642产生数据读空信号发送给所述DMA控制模块620,通知其不能再从自身读出数据。读空或写满信号产生逻辑642比较(wr_addr[5:3]-rd_addr[5:3])*8的值和写FIFO深度的值,当(wr_addr[6:3]-rd_addr[6:3])*8=32时,读空或写满信号产生逻辑642产生数据写满信号,发送给功能模块610通知其不能再向自身写入数据。
功能模块610,向双端口存储器643写入数据,如果功能模块610接到读空或写满信号产生逻辑642发送的数据写满信号,不再向双端口存储器643中写入数据。
DMA控制模块620,从双端口存储器643读取数据,如果DMA控制模块620接到读空或写满信号产生逻辑642发送的数据读空信号,不再从双端口存储器643中读取数据。
功能模块610、DMA控制模块620和读FIFO模块650之间读写操作的方法,与上述功能模块610、DMA控制模块620和写FIFO模块640之间读写操作方法相同。只是功能模块610,在接到读空或写满信号产生逻辑652发出的数据读空信号的情况下,不再从双端口存储器653读取数据。所述DMA控制模块620,在接到读空或写满信号产生逻辑652发出的数据写满信号的情况下,不再向双端口存储器653写入数据。
在上述实施例中,介绍了DMA控制模块和功能模块,如何根据读或写FIFO模块产生的数据读空和写满信号进行数据读写操作。其他与本发明具有相同原理的装置和方法,也在本发明的保护范围之内。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种突发机制下实现数据读写控制的方法,其特征在于,该方法包括以下步骤A、读或写FIFO模块根据获取的BURST长度配置读写地址指针;B、读或写FIFO模块根据读地址指针、写地址指针产生数据读空信号,读或写FIFO模块根据读地址指针、写地址指针、BURST长度和读写FIFO深度产生数据写满信号。
2.根据权利要求1所述的方法,其特征在于,所述步骤A中读或写FIFO模块根据接收到的控制信息,获取BURST长度。
3.根据权利要求1或2所述的方法,其特征在于,在所述步骤A中,所述BURST的长度为2n,n为大于等于1的整数。
4.根据权利要求3所述的方法,其特征在于,在所述步骤A中,所述读或写FIFO模块根据获取的BURST长度配置读写地址指针的步骤包括所述读或写FIFO模块取正常读写模式下的N位读地址指针的高N-n位;所述读或写FIFO模块取正常读写模式下的N位写地址指针的高N-n位。
5.根据权利要求3所述的方法,其特征在于,所述读或写FIFO模块根据获取的BURST长度配置所述读地址指针的步骤为所述读或写FIFO模块将正常读写模式下的N位读地址指针右移n位,对右移后的读地址指针的高n位补零;所述读或写FIFO模块根据获取的所述BURST长度,配置所述写地址指针的步骤为所述读或写FIFO模块将正常读写模式下的N位写地址指针右移n位,对右移后的写地址指针的高n位补零。
6.根据权利要求1所述的方法,其特征在于,所述步骤B具体包括当读地址指针等于写地址指针时,读或写FIFO模块产生数据读空信号;当写地址指针和读地址指针之差与BURST长度的乘积,等于所述FIFO深度时,读或写FIFO模块产生数据写满信号。
7.根据权利要求6所述的方法,其特征在于,所述步骤B后进一步包括当所述写FIFO模块产生数据读空信号时,将所述信号发送给直接内存存取DMA控制模块,通知所述DMA控制模块不能再从自身读取数据;当所述读FIFO模块产生数据读空信号时,将所述信号发送给功能模块,通知所述功能模块不能再从自身读取数据;当所述写FIFO模块产生数据写满信号时,将所述信号发送给功能模块,通知所述功能模块不能再向自身写入数据;当所述读FIFO模块产生数据写满信号时,将所述数据写满信号发送给DMA控制模块,通知所述DMA控制模块不能再向自身写入数据。
8.一种突发机制下实现数据读写控制的装置,该装置为读或写FIFO模块,包括双端口存储器,用于根据写地址指针和读地址指针,进行数据存储操作;其特征在于,该装置进一步包括读或写地址产生逻辑和读空或写满信号产生逻辑;所述读或写地址产生逻辑,用于获取BURST长度,根据获取的所述BURST长度配置读地址指针和写地址指针,将配置的读地址指针和写地址指针发送给读空或写满信号产生逻辑和所述双端口存储器;所述读空或写满信号产生逻辑,用于接收所述读地址指针和写地址指针,根据读地址指针、写地址指针产生数据读空信号,将所述数据读空信号发送出去;根据读地址指针、写地址指针、BURST长度和读写FIFO深度产生数据写满信号,将所述数据写满信号发送出去。
9.根据权利要求8所述的装置,其特征在于,该装置进一步包括BURST长度配置寄存器,用于将BURST的长度配置为2n,n为大于等于1的整数,将配置的所述BURST的长度发送给所述读或写地址产生逻辑。
10.根据权利要求8所述的装置,其特征在于,该装置进一步包括DMA控制模块和功能模块,所述DMA控制模块,当接收到所述写FIFO模块中的读空或写满信号产生逻辑发出的数据读空信号时,不再从该写FIFO模块读取数据;当接收到所述读FIFO模块中的读空或写满信号产生逻辑发出的数据写满信号时,不再向该读FIFO模块中写入数据;所述功能模块,当接收到所述写FIFO模块中的读空或写满信号产生逻辑发出的数据写满信号时,不再向该写FIFO模块写入数据;当接收到所述读FIFO模块中的读空或写满信号产生逻辑发出的数据读空信号时,不再从该读FIFO模块读取数据。
全文摘要
本发明提供一种突发机制下实现数据读写控制的方法,该方法包括以下步骤A.读或写FIFO模块根据获取的BURST长度配置读写地址指针;B.读或写FIFO模块根据读地址指针、写地址指针产生数据读空信号,读或写FIFO模块根据读地址指针、写地址指针、BURST长度和读写FIFO深度产生数据写满信号。本发明同时还提供了一种突发机制下实现数据读写控制的装置,本发明采用FIFO模式来保证数据传输的实时性的同时,实现了读或写FIFO模块在BURST传输机制下对数据读写的控制。
文档编号G06F13/28GK1971543SQ200610162318
公开日2007年5月30日 申请日期2006年12月11日 优先权日2006年12月11日
发明者吕品 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1