[go: up one dir, main page]

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

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

Info

Publication number
CN1971543A
CN1971543A CN 200610162318 CN200610162318A CN1971543A CN 1971543 A CN1971543 A CN 1971543A CN 200610162318 CN200610162318 CN 200610162318 CN 200610162318 A CN200610162318 A CN 200610162318A CN 1971543 A CN1971543 A CN 1971543A
Authority
CN
China
Prior art keywords
write
read
data
address pointer
module
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.)
Granted
Application number
CN 200610162318
Other languages
English (en)
Other versions
CN100524269C (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.)
Wuxi Vimicro Corp
Original Assignee
Vimicro Corp
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 Vimicro Corp filed Critical Vimicro Corp
Priority to CNB2006101623185A priority Critical patent/CN100524269C/zh
Publication of CN1971543A publication Critical patent/CN1971543A/zh
Application granted granted Critical
Publication of CN100524269C publication Critical patent/CN100524269C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明提供一种突发机制下实现数据读写控制的方法,该方法包括以下步骤:A.读或写FIFO模块根据获取的BURST长度配置读写地址指针;B.读或写FIFO模块根据读地址指针、写地址指针产生数据读空信号,读或写FIFO模块根据读地址指针、写地址指针、BURST长度和读写FIFO深度产生数据写满信号。本发明同时还提供了一种突发机制下实现数据读写控制的装置,本发明采用FIFO模式来保证数据传输的实时性的同时,实现了读或写FIFO模块在BURST传输机制下对数据读写的控制。

Description

一种突发机制下实现数据读写控制的方法和装置
技术领域
本发明涉及数据读写控制技术,特别涉及一种突发机制下实现数据读写控制的方法和装置。
背景技术
在直接内存存取(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[000000]和wr_addr[000000]。对写FIFO模块每进行一次写操作,所述写地址指针加1,当对所述写FIFO模块进行32次写操作后,写地址指针变为:wr_addr[100000]。同样,对写FIFO模块每进行一次读操作,所述读地址指针加1,当对写FIFO模块进行32次读操作后,读地址指针变为:rd_addr[100000],且等于写地址指针wr_addr[100000],表示写FIFO模块中的数据被读空,所述写FIFO模块产生数据读空信号。根据本发明提供的技术方案,假如BURST长度被配置为8,读地址指针和写地址指针的初始地址分别为:rd_addr[000000]和wr_addr[000000]。若所述写FIFO模块被写入32个数据,对所述写地址指针的进行配置方法为:将正常模式下的写地址指针wr_addr[100000]右移3位,并将右移后的写地址指针的高3位补零,BURST机制下的写地址指针变为:wr_addr[000100]。以BURST=8对写FIFO模块进行读操作,每读出8个数据,所述读地址指针加1,当对所述写FIFO模块进行4次读操作后,此时的读地址指针变为:rd_addr[000100],且等于写地址指针wr_addr[000100],表示写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。
步骤402:FIFO模块计算写地址指针和读地址指针之差,将两者差值与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[000000]和wr_addr[000000]。对读FIFO模块每进行一次写操作,所述写地址指针加1,当DMA控制模块对读FIFO模块进行32次写操作后,写地址指针变为:wr_addr[100000]。wr_addr[100000]-rd_addr[000000]等于读写FIFO深度32,表示读FIFO模块被写满,所述读FIFO模块产生数据写满信号。根据本发明提供的技术方案,例如,BURST长度被配置为8,读地址指针和写地址指针的初始值分别为:rd_addr[000000]和wr_addr[000000]。对BURST机制下的写地址指针的配置方法为:将正常模式下的写地址指针wr_addr[000000]右移3位,并将右移后的写地址指针的高3位补零。DMA控制模块以BURST=8的长度对读FIFO模块进行写操作,每写入8个数据,所述写地址指针加1,当对所述读FIFO模块进行4次写操作后,写地址指针变为:wr_addr[000100],此时,(wr_addr[000100]-rd_addr[000000])*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模块产生的数据读空和写满信号进行数据读写操作。其他与本发明具有相同原理的装置和方法,也在本发明的保护范围之内。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

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模块读取数据。
CNB2006101623185A 2006-12-11 2006-12-11 一种突发机制下实现数据读写控制的方法和装置 Expired - Fee Related CN100524269C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101623185A CN100524269C (zh) 2006-12-11 2006-12-11 一种突发机制下实现数据读写控制的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101623185A CN100524269C (zh) 2006-12-11 2006-12-11 一种突发机制下实现数据读写控制的方法和装置

Publications (2)

Publication Number Publication Date
CN1971543A true CN1971543A (zh) 2007-05-30
CN100524269C CN100524269C (zh) 2009-08-05

Family

ID=38112375

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101623185A Expired - Fee Related CN100524269C (zh) 2006-12-11 2006-12-11 一种突发机制下实现数据读写控制的方法和装置

Country Status (1)

Country Link
CN (1) CN100524269C (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101552041A (zh) * 2009-05-12 2009-10-07 北京中星微电子有限公司 一种fifo存储单元及其实现方法
CN101520722B (zh) * 2008-02-27 2011-12-07 奇景光电股份有限公司 先进先出缓冲器的存取方法及其控制器
CN102622321A (zh) * 2011-01-28 2012-08-01 炬力集成电路设计有限公司 一种数据处理设备及其数据传输方法
CN105718395A (zh) * 2016-01-28 2016-06-29 山东超越数控电子有限公司 一种基于fpga的多路串口通信系统及方法
CN111193873A (zh) * 2019-12-25 2020-05-22 新大陆数字技术股份有限公司 一种图像快速调光系统及方法
CN112416823A (zh) * 2020-11-15 2021-02-26 珠海市一微半导体有限公司 一种突发模式下的传感器数据读写控制方法、系统及芯片
CN113312282A (zh) * 2021-06-10 2021-08-27 京微齐力(北京)科技有限公司 一种fifo读写控制电路、控制方法、芯片以及设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103365804B (zh) * 2012-03-28 2016-09-21 中国科学院空间科学与应用研究中心 一种用于芯片bu-65170的读写控制装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101520722B (zh) * 2008-02-27 2011-12-07 奇景光电股份有限公司 先进先出缓冲器的存取方法及其控制器
CN101552041A (zh) * 2009-05-12 2009-10-07 北京中星微电子有限公司 一种fifo存储单元及其实现方法
CN102622321A (zh) * 2011-01-28 2012-08-01 炬力集成电路设计有限公司 一种数据处理设备及其数据传输方法
CN102622321B (zh) * 2011-01-28 2015-06-17 炬芯(珠海)科技有限公司 一种数据处理设备及其数据传输方法
CN105718395A (zh) * 2016-01-28 2016-06-29 山东超越数控电子有限公司 一种基于fpga的多路串口通信系统及方法
CN105718395B (zh) * 2016-01-28 2018-08-21 山东超越数控电子有限公司 一种基于fpga的多路串口通信系统及方法
CN111193873A (zh) * 2019-12-25 2020-05-22 新大陆数字技术股份有限公司 一种图像快速调光系统及方法
CN112416823A (zh) * 2020-11-15 2021-02-26 珠海市一微半导体有限公司 一种突发模式下的传感器数据读写控制方法、系统及芯片
CN112416823B (zh) * 2020-11-15 2024-05-03 珠海一微半导体股份有限公司 一种突发模式下的传感器数据读写控制方法、系统及芯片
CN113312282A (zh) * 2021-06-10 2021-08-27 京微齐力(北京)科技有限公司 一种fifo读写控制电路、控制方法、芯片以及设备

Also Published As

Publication number Publication date
CN100524269C (zh) 2009-08-05

Similar Documents

Publication Publication Date Title
CN105224482B (zh) 一种fpga加速卡高速存储系统
CN109412914B (zh) 流数据与axi接口通信装置
CN101261575B (zh) 一种实现不等宽数据传输的异步先进先出存储器及方法
CN108958800A (zh) 一种基于fpga硬件加速的ddr管理控制系统
CN102760111A (zh) 一种基于fpga的扩展多串口装置及其数据收发方法
CN102508631B (zh) 用于写入任意字节数据的fifo的写入数据处理装置
CN101344870B (zh) 一种复用性强的fifo控制模块及其管理内存的方法
CN109446126B (zh) 基于emif总线的dsp与fpga高速通信系统及方法
CN1971543A (zh) 一种突发机制下实现数据读写控制的方法和装置
US20240020246A1 (en) Method for Generating Information Based on FIFO Memory and Apparatus, Device and Medium
CN101308450A (zh) Fifo控制电路及控制方法
CN115599719A (zh) 一种基于fpga的fifo接口多通道dma控制器
CN102789424B (zh) 基于fpga的外扩ddr2的读写方法及基于fpga的外扩ddr2颗粒存储器
CN201378851Y (zh) 一种ccd图像数据采集装置
CN104615386A (zh) 一种核外高速缓存装置
CN102819418B (zh) 超细粒度门控时钟的fifo数据存储方法及装置
CN101493759B (zh) 一种任意容量异步先入先出存储器的地址控制方法
CN101846726A (zh) 数字接口射频芯片测试方法、装置和系统
CN103294411B (zh) 具有大容量存储的低速载荷数据加载模块
CN115237349A (zh) 数据读写控制方法、控制装置、计算机存储介质和电子设备
CN102169425B (zh) 一种具有四种工作模式的fifo缓存电路
CN100517498C (zh) 一种无读取延迟的先进先出存储器
CN103377029A (zh) 参数化的通用fifo控制方法
CN113760795B (zh) 一种异步fifo存储器读写控制方法、装置及设备
CN101894005A (zh) 高速接口向低速接口的异步fifo传输方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: WUXI VIMICRO ELECTRONIC CO., LTD.

Free format text: FORMER OWNER: BEIJING ZHONGXING MICROELECTRONICS CO., LTD.

Effective date: 20110127

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100083 15/F, SHINING BUILDING, NO.35, XUEYUAN ROAD, HAIDIAN DISTRICT, BEIJING TO: 214028 610, NATIONAL INTEGRATED CIRCUIT DESIGN PARK (CHUANGYUAN BUILDING), NO.21-1, CHANGJIANG ROAD, NEW DISTRICT, WUXI CITY, JIANGSU PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20110127

Address after: 214028 national integrated circuit design (21-1), Changjiang Road, New District, Jiangsu, Wuxi, China, China (610)

Patentee after: Wuxi Vimicro Co., Ltd.

Address before: 100083, Haidian District, Xueyuan Road, Beijing No. 35, Nanjing Ning building, 15 Floor

Patentee before: Beijing Vimicro Corporation

C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090805

Termination date: 20121211