CN100405343C - 一种异步数据缓存装置 - Google Patents
一种异步数据缓存装置 Download PDFInfo
- Publication number
- CN100405343C CN100405343C CNB2006100893562A CN200610089356A CN100405343C CN 100405343 C CN100405343 C CN 100405343C CN B2006100893562 A CNB2006100893562 A CN B2006100893562A CN 200610089356 A CN200610089356 A CN 200610089356A CN 100405343 C CN100405343 C CN 100405343C
- Authority
- CN
- China
- Prior art keywords
- data
- read
- write
- storer
- control 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.)
- Expired - Fee Related
Links
- 238000003860 storage Methods 0.000 title claims abstract description 27
- 230000015654 memory Effects 0.000 claims abstract description 53
- 230000001360 synchronised effect Effects 0.000 claims abstract description 7
- 230000005540 biological transmission Effects 0.000 claims description 18
- 238000000034 method Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 6
- 238000013461 design Methods 0.000 abstract description 5
- 101100062780 Mus musculus Dclk1 gene Proteins 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 239000012467 final product Substances 0.000 description 2
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100434411 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ADH1 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 101150102866 adc1 gene Proteins 0.000 description 1
- 101150042711 adc2 gene Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
本发明公开了一种异步数据缓存装置,用于缓存由系统一向系统二传输的数据,所述系统一的工作频率低于系统二的工作频率,包括:存储模块,由两个单端口存储器组成,用于交替执行数据的读/写操作;同步控制模块,用于控制所述两个存储器中的一个进行写操作,另一个进行读操作;多路选择模块,用于在所述同步控制模块的控制下选择输出所述用于进行读操作的存储器的输出数据至所述系统二。本发明还公开了另一种异步数据缓存装置,用于缓存由所述系统二向系统一传输的数据。应用本发明的缓存装置,能节约电路面积、简化电路设计,并且能有效避免数据丢失,可以广泛应用于异步时钟系统之间的数据缓存领域中。
Description
技术领域
本发明涉及数据传输领域,特别涉及异步数据缓存装置。
背景技术
当两个系统工作频率一致时即同步时,系统之间数据传输的实现相对简单;当两个系统工作频率不一致时,即其时钟不同时,数据传输一般采用异步先进先出存储器即异步FIFO实现。异步FIFO是一种先进先出的电路,用来存储、缓存在两个异步时钟系统之间传输的数据。
一般在异步FIFO中应用双端口的SRAM,对面积的占用很大,特别是在芯片设计中,占用面积过大会造成成本的增加。
同时,较高工作频率的系统如嵌入式DSP已经越来越多的被应用到主系统中,且DSP主要用于大量数据的计算,因此主系统与嵌入式DSP之间的数据传输对于整个系统的重要性也越来越大,所以在异步时钟系统之间实现数据传输时能够节约电路面积成了亟待解决的问题。
此外,在异步电路中,由于时钟之间的周期和相位完全独立,因而数据的丢失概率不为零。对于声音处理芯片来说,数据流失可能造成声音的跳跃;对于图像处理芯片来说,可能会造成图像的断续,因而影响到听觉或视觉效果。
发明内容
针对上述问题,本发明的目的就是提供一种能够减小电路面积的异步数据缓存装置。
因此本发明提出了一种异步数据缓存装置,用于缓存由系统一向系统二传输的数据,所述系统一的工作频率低于系统二的工作频率,包括存储模块、多路选择模块及同步控制模块;
所述存储模块由两个单端口的存储器组成,用于交替执行数据的读/写操作;
所述同步控制模块,用于根据来自所述系统一的写操作命令控制所述两个存储器中的一个进行写操作,并根据来自所述系统二的读操作命令控制所述两个存储器中的另一个进行读操作;
所述多路选择模块,用于在所述同步控制模块的控制下选择输出所述用于进行读操作的存储器的输出数据至所述系统二。
优选地,所述同步控制模块中包括满中断产生单元,用于在所述存储模块中的用于写操作的存储器被写满数据时,产生一满中断信号发送给所述系统二。
进一步地,所述同步控制模块还包括一个数据量设置单元,用于设定向所述存储模块中的用于写操作的存储器一次写入的数据量,及从所述存储模块中的用于读操作的存储器中一次读取的数据量,所述满中断产生单元根据所述数据量设置单元设定的数据量,判断执行写操作的存储器是否被写满,而产生满中断信号。
进一步地,所述同步控制模块中还包括读使能信号保持单元,用于根据所述读使能信号产生一个保持信号,在存储器中数据被读取的过程中保持读使能信号有效。
进一步地,所述装置接收的数据来源是所述系统一中的两个数据来源,在所述装置中还包括数据源同步控制单元,用于判断数据来自所述两个数据来源中的几个数据来源以及哪个数据来源,并且根据接收到的系统二的时钟和复位信号以及来自系统一的写使能信号,产生写入数据有效信号
优选地,所述系统二为嵌入式DSP,所述系统一为工作频率低于所述嵌入式DSP的工作系统。
优选地,所述存储器为SRAM、SDRAM或FLASH。
优选地,所述同步控制模块中包括由两个计数器组成的地址发生电路,其中一个计数器用于根据写操作命令产生所述存储模块写操作所需的写地址,另一个计数器用于根据读操作命令产生所述存储模块读操作所需的读地址。
本发明还公开了另一种异步数据缓存装置,用于缓存系统二向系统一传输的数据,所述系统一的工作频率低于系统二的工作频率,包括存储模块、多路选择模块及同步控制模块;
所述存储模块由两个单端口的存储器组成,用于交替执行数据的读/写操作;
所述同步控制模块,用于根据来自所述系统二的写操作命令控制所述两个存储器中的一个进行写操作,并根据来自所述系统一的读操作命令控制所述两个存储器中的另一个进行读操作;
所述多路选择模块,用于在所述同步控制模块的控制下选择输出所述用于进行读操作的存储器的输出数据至所述系统一。
优选地,所述同步控制模块包括一空中断产生单元,用于在所述存储模块中的用于读操作的存储器中的数据被读空后,产生一空中断信号发送给所述系统二。
进一步地,所述同步控制模块还包括一个数据量设置单元,用于设定向所述存储模块中的用于写操作的存储器一次写入的数据量,及从所述存储模块中的用于读操作的存储器中一次读取的数据量,所述空中断产生单元根据所述数据量设置单元设定的数据量,判断执行读操作的存储器是否被读空,而产生空中断信号。
优选地,所述系统二为嵌入式DSP,所述系统一为工作频率低于所述嵌入式DSP的工作系统。
优选地,所述存储器为SRAM、SDRAM或FLASH。
优选地,所述同步控制模块中包括由两个计数器组成的地址发生电路,其中一个计数器用于根据写操作命令产生存储模块写操作所需的写地址,另一个计数器用于根据读操作命令产生存储模块读操作所需的读地址。
本发明为两个异步系统之间的数据传输提供了异步数据缓存装置,第一种用于缓存从较低工作频率的系统向较高工作频率的系统传输的数据,第二种用于缓存从较高工作频率的系统向较低工作频率的系统传输的数据。所述两种缓存装置都包括由两个单端口存储器组成的乒乓结构存储模块,相比双端口存储器可以节约面积;另外,第一种装置利用满中断控制高频工作系统从所述存储器中读取数据,第二种装置则利用空中断控制高频工作系统向所述存储器写入数据,另外,两种装置都可以设置写入存储器及从存储器读出的数据量,从而可以有效避免数据的丢失;另外,与应用FIFO作为缓存装置时一般需要FIFO空和FIFO满两个控制信号来读/写数据相比,本发明的缓存装置可以只利用满或空中断信号来控制高频工作系统进行读或写数据,同时两片单端口存储器使用相同的地址发生器,因此电路相对简单。
附图说明
图1为系统向DSP输入数据时的异步数据缓存装置示意图;
图2为系统向DSP输入数据时的异步数据缓存装置示意图,且具有读使能信号保持信号产生单元和ADC同步单元;
图3为io hold产生单元的内部结构示意图;
图4为与DSP读数据相关的内部控制信号逻辑示意图;
图5为数据源同步单元的内部结构示意图;
图6为DSP向系统输出数据的异步数据缓存装置示意图;
图7为DSP写数据的时序示意图。
具体实施方式
下面结合说明书附图进一步详细说明本发明的异步缓存装置。
首先说明,所述异步缓存装置用于在系统一和系统二之间缓存数据,所述系统一的工作频率低于所述系统二的工作频率。在本实施例中,所述系统二可以为一嵌入式DSP(在下文中简称为DSP),工作频率假设为20MHz,所述系统一为一个主系统,其工作频率假设为12MHz,因而DSP和主系统属于不同的时钟域,在进行数据传输时处于异步状态。
在所述主系统向DSP传送数据时,可设置一异步缓存装置buffer,其输入数据来自工作频率较低的主系统,其输出数据传送到工作频率较高的DSP,在下文中将该异步缓存装置称为inbuf;相应的,在缓存由DSP向主系统传送的数据时,可设置一异步缓存装置buffer,称之为outbuf。
如图1、2及5所示,所述inbuf及outbuf中的存储模块中包括存储器一和存储器二,其可以采用两个单端口的可擦写存储器,如SRAM、SDRAMFLASH均可,在本发明的实施例中,可以为两个单端口的SRAM:SRAM1和SRAM2。可以将预定需要存储在缓存器中的数据量一分为二来设置每个单端口SRAM的大小,形成应用空满中断控制的乒乓结构的缓存器,例如原本应用双端口SRAM时,需要256K的缓存容量,现在只需两片128K的单端口SRAM即可,两片128K的单端口SRAM比一片256K的双端口SRAM面积小,从而在芯片设计中可以大大节约芯片面积。需要注意的是,在本发明中,一个SRAM被写入数据时,另一个SRAM中的数据可以被读出。
另外,所述inbuf和outbuf中的多路选择模块也是基本相同的,都是用于选择一路数据输出,不过inbuf中的多路选择模块将数据输出给所述工作频率较高的DSP,而outbuf中的多路选择模块是将数据输出给所述工作频率相对较低的主系统,因此其工作频率是不同的。
首先介绍inbuf,图1所示即为所述inbuf的电路框图,如图所示,其中data_in为来自主系统的数据,data_out为所述inbuf输出给所述DSP的数据,d1、d2分别为所述SRAM1和SRAM2输出给所述多路选择模块的数据,所述inbuf电路主要包括:
1)存储模块,由两个单端口的存储器组成,即SRAM1和SRAM2,用于交替执行数据的读/写操作,一个SRAM接收并存储来自主系统的数据时,另一个SRAM中的数据可被DSP通过多路选择模块读出;
2)同步控制模块,用于根据所述主系统发来的写操作命令,在此可以为写使能信号write_enable,及DSP发来的读操作命令,在此可以为读使能信号read_enable,产生对所述两个存储器SRAM1和SRAM2进行数据读/写操作所需的控制信号,包括:片选信号cen、读/写有效信号wen及地址信号addr,以及通知所述DSP读取数据的控制信号,该控制信号可以为一个满中断信号full_interrupt,及控制所述多路选择模块选定待读取数据的存储器的控制信号rbuf_sel;
3)多路选择模块,用于根据所述同步控制模块发来的控制信号rbuf_sel选择待读取数据的SRAM,传输来自所述SRAM1或SRAM2的数据d1或d2给所述DSP。
首先详细介绍上述cen、wen、addr信号,在该三个信号的综合作用下,可实现对SRAM1、SRAM2进行读/写有效控制,所述SRAM1及SRAM2都有各自相应的cen、wen及addr信号。其控制原则为一个SRAM被写入数据时,另一个SRAM中的数据可以被读出,如:SRAM1的片选信号有效,且读/写有效信号为写有效时,主系统向SRAM1的地址中写入数据,若读/写有效信号为读有效时,则DSP读取的数据data_out是通过所述多路选择模块从SRAM1中读取的数据d1;相应地,当SRAM2的片选信号有效,且读/写有效信号为写有效时,即主系统向SRAM2中写入数据,若为读有效,则DSP读取的数据data_out是通过所述多路选择模块从SRAM2中读取的数据d2。
在产生所述两个SRAM的读地址和写地址时,可以只用两个计数器,一个用于产生读地址,另一个用于产生写地址,在将读/写地址输出给两个SRAM时,根据两个SRAM各自当前的读/写状态,选择应该输出读地址,还是输出写地址。例如SRAM1为写有效,则将写地址输出给SRAM1,同时SRAM2为读有效,则将读地址输出给SRAM2。相比于现有技术中每个SRAM都需要自己的读地址发生器和写地址发生器,这种方法可以减少电路面积。
其次介绍所述满中断信号full_interrupt,在所述同步控制模块中可以包括一满中断产生单元(图中未示出),用于根据写地址产生所述full_interrupt。如前所述,一个SRAM的容量为128K,则可以在写满128K时,产生一个full_interrupt,发送给所述DSP的中断控制器,通知DSP读取数据。
另外,也可以在所述同步控制模块中包括数据量设置单元(图中未示出),其可以根据接收到的来自主系统的变量值word_depth,来设定并控制每次写入SRAM的数据量,若写入SRAM的数据量已达到word_depth的值,则认为该SRAM已被写满,同步控制模块即产生一满中断信号发给DSP。其具体实现是令主系统发出与word_depth同值的若干个写使能信号write_enable。在一个实施例中,可以令word_depth值为100K,则系统发出100K个写使能信号,即可实现向选定的SRAM中写入与word_depth等值个数的数据,即实现了写入设定数量数据的目的。同理,所述DSP每次读取的数据量也由word_depth设定,即DSP每次发出的read_enable信号的个数也等于word_depth的值,这样就可以保证数据在缓存过程中不会被丢失。word_depth的具体值可以由软件根据需要传输的数据量的多少而确定,因此其值可不为固定值,而是根据需要变化,如:所述两个SRAM可以用不同的word_depth值,同一个SRAM也可不必每次都使用相同的wotd_depth值,但是这样会使硬件电路的设计复杂化,所以在本实施例中可选择使用相对固定的word_depth值,即两个SRAM都使用相同的word_depth值,且每次word_depth值都基本相同。之所以为基本相同,是因为在数据传输结束时,可能有一个SRAM未被写满,但其中数据仍需被读出,如经过软件计算后确定最后只有80K数据需要传输,则主系统可给出word_depth值为80K,那么主系统和DSP只需给出80K个有效的write_enable及read_enable信号即可。
下面介绍上述inbuf的工作过程。同步控制模块根据所述主系统发来的写使能信号write_enable,产生对所述SRAM进行写数据操作的控制信号,控制所述SRAM开始接收来自主系统的数据data_in,因为一般在开始传输数据时,所述SRAM1和SRAM2均为空,所以可以将缓存装置设置为首先向SRAM1写入数据。另外,如上所述,在本实施例中,所述word_depth为100K,则主系统向SRAM1写入100K数据,写满100K后,所述控制模块即向DSP发出满中断信号fill_interruput。
所述DSP在收到full_interrupt后,可以发出与word_depth等值的read_enable信号,即100K个read_enable信号,所述同步控制模块会选中SRAM1为待读取数据的存储器,开始读取其中的100K个数据,因为写入的数据量及读出的数据量都已设置好,因此避免了数据丢失的现象。另一方面,所述SRAM1被写满后,主系统可以继续向SRAM2中写入数据,其写数据过程与向SRAM1中写数据相同。
因为读数据的一方为所述DSP,其工作频率大于主系统的工作频率,在DSP读取SRAM1的数据结束后,数据data_in还在写入SRAM2,但这时SRAM1已经可以再次被写入数据了,因此,在写满SRAM2之后可以继续向SRAM1中写入数据。当SRAM2被写满后,所述同步控制模块再次向DSP的中断控制器发送full_interrupt,DSP又会进行同样的处理,即从SRAM2中读取数据。本发明可以只用一个full_interrupt来通知所述DSP开始读取数据,因此简化了电路。上述工作过程即为inbuf在工作时的主要状态:一个SRAM被写入数据的同时,另一个SRAM中的数据被DSP读取,如此两个SRAM交替执行读/写操作,即可完成缓存数据的功能。
当主系统需要输入DSP的数据流结束时,没有数据可写入SRAM,此时DSP仅从其中一个SRAM,即被最后写入数据的那个SRAM,如SRAM1中读取数据。前面已经介绍过,所述DSP读取的数据量是由软件决定的,因此,如果最后只剩80K数据需要读出,则主系统在最后一次写数据时,只给出80K个有效的word_depth,即可设定最后一次主系统写入缓存装置的数据量及DSP读取的数据量,DSP读取数据完毕后,缓存工作结束。
下面介绍inbuf更优化的实施方式,如图2所示,其中包括一存储器控制模块,可视为与图1中的同步控制模块的功能相同,存储器控制模块用于根据各个控制信号产生对两个SRAM进行读写的控制信号,包括片选cen、读/写有效信号wen、地址addr、控制多路控制模块的信号rbuf_sel,以及满中断full_interrupt等,所述各个控制信号与图1中所示相应信号的作用相同。
在此基础上,如图2所示,可以增加读使能信号保持单元即io_hold产生单元,这是因为read_enable信号在输入给所述同步控制模块后,要经过处理产生地址、片选等控制信号,所以数据最后被读出时,就会有一定的时间延迟,即在被读出的数据有效时,read_enable信号可能已经不再有效了。因此需要将read_enable信号保持住,以使DSP能够读入正确有效的数据。图中所示io_hold信号是根据所述读使能信号read_enable产生的一个中间信号,其被输出给所述DSP用于延长read_enable信号,图中的io_valid信号为inbuf的一个内部信号,是实际读取数据时有效的读有效信号。
如图3所示,为io_hold信号产生单元的内部结构,其中有三个输入信号:read_enable、rst_d及dclk,其中read_enable为所述DSP发来的读使能信号,dclk为DSP的时钟,rst_d为复位信号;有两个输出信号:io_hold及io_valid,所述io_hold被发送给所述DSP,而所述io_valid则被送到所述存储器控制模块,配合其它信号产生读地址等信号。所述rst_d及dclk分别连接到触发器1和触发器2上,所述read_enable首先进入触发器1;其输出为与门1的一个输入,低电平有效,所述与门1的另一输入为read_enable;该与门的输出为触发器2的输入;所述触发器2的输出为选择器的选择控制信号,所述选择器的一个输入为read_enable,另一输入为0,当所述选择控制信号的值为0时,输出read_enable信号,其值为1时输出0值;其输出信号即为io_hold信号,该信号为与门2的一个输入,低电平有效,所述与门2的另一输入为read_enable,其输出即为io_valid。
上述内容中与io_hold产生单元相关的三个控制信号read_enable、io_hold和io_valid及数据有效的相关时序如图4所示,dclk为DSP的工作频率,read_enable的频率为dclk的1/3,其一个周期中高电平有效时间为两个DSP时钟周期,io_hold是inbuf向DSP发出的控制信号,可以使DSP发给inbuf的read_enable信号保持住,io_hold本身处于高电平的时间就是延长read_enable保持高电平的时间,inbuf设置这个时间是1个DSP时钟周期,图
如果所述主系统输入给inbuf的数据data_in是来自两个数据来源,如两个ADC,则如图2所示,控制模块中还可以包含有一个数据源同步控制单元,用于协调两个ADC的数据输入。其内部结构如图5所示,其中:
dclk及rst_d,分别为所述DSP的时钟和复位信号,分别连接到三个触发器或触发器组上;
write_enable为来自系统的写使能信号;
adc_out_mode用于确定数据来自一个ADC还是两个ADC:若其值为0,可认为是来自一个ADC,其值为1,可认为是来自两个ADC;
而i2s_ws是用于确定数据来自哪个ADC,若其值为0,则可认为数据来自ADC1,若其值为1,则可认为数据来自ADC2;
上述三个输入信号都要经过触发器同步后输出,其中:
adc_out_mode和i2s_ws经过DSP时钟同步后生成表明信号来源的i2s_ws_d及表明数据来源数量的adc_out_mode_d;
而write_enable信号经过的触发器是一个触发器组,其输出信号buffer_wen_d2及buffer_wen_d3分别是write_enable被延迟2个和3个dclk的信号,都输入给一个与门,所述与门连接buffer_wen_d3的输入端为低电平有效,所述与门的输出为inbuf_we。
下面介绍outbuf的组成结构及工作流程,如图6所示,outbuf的结构与inbuf类似,同样主要包括存储模块、同步控制模块2以及多路选择模块2,其功能与inbuf中的相应模块类似,并且所述outbuf的几个主要控制信号cen、wen、addr、rbuf_sel及数据流d1、d2的意义也与所述inbuf中的相应内容类似。
其不同之处在于,图中所示的write_enable信号是来自所述DSP的写使能信号,read_enable信号是来自主系统的读使能信号;通知系统一读取数据的控制信号可以是同步控制模块2中的空中断产生单元(图中未示出)产生的空中断信号empty_interrupt;data_in为所述DSP输入到所述outbuf的数据,的控制信号可以是同步控制模块2中的空中断产生单元(图中未示出)产生的空中断信号empty_interrupt;data_in为所述DSP输入到所述outbuf的数据,data_out为所述outbuf输出给所述主系统的数据。
所述outbuf的工作过程也与inbuf类似,但因为所述outbuf用于缓存所述DSP输出给所述主系统的数据,而所述DSP的时钟频率高于所述主系统的时钟频率,因此所述DSP写满一个SRAM的时间要小于所述主系统读完一个SRAM数据的时间,所以在outbuf中,当一个SRAM中的数据被读空后,同步控制模块2才向DSP的中断控制器发送空中断empty_interrupt,通知其可以向该SRAM中写入数据,因此所述outbuf是一个以空中断控制的乒乓结构的buffer。
下面介绍所述outbuf的工作过程,开始时两个SRAM都处于空状态,因为无论哪个SRAM处于空状态,同步控制模块2都向DSP的中断控制器发送空中断empty_interrupt,DSP会响应此中断,向outbuf发送写使能信号write_enable,同步控制模块2据此产生直接控制SRAM的读/写有效信号wen,片选信号cen和地址addr,控制两个SRAM交替被写入数据。因为开始时两个SRAM都为空,所以可以令数据data_in写入SRAM1,写入的数据量也可由数据量设置单元(图中未示出)根据word_depth限定,并且写满一个SRAM后,系统读取所述SRAM的数据量也由word_depth限定,此时SRAM2闲置。
由于目前只有SRAM1中被写入了数据,SRAM2仍为空,而只要有一个SRAM为空,空中断就依然有效,所以SRAM1被写满后,DSP仍会响应空中断,继续向outbuf中的SRAM2输送一定数量的数据。在此同时,作用在多路选择模块2上片选信号rbuf_sel选定SRAM1,结合cen、wen和addr中SRAM1对应的控制信号,所述SRAM1即被选定为读数据的SRAM,其数据d1经过所述多路选择模块2输出给系统,输出信号记为data_out。
当DSP输出的数据流结束时,没有数据写入,此时只有从其中一个即最后被写入的SRAM中向外部输送数据。
如图7所示,为DSP对outbuf进行写操作的时序图,其中:
dclk为DSP时钟;
addr为写数据时的地址信号,A2为一个地址;
write_enable为DSP发出的写使能信号;
data_in为数据信号,D2为一个数据。
上述缓存装置inbuf及outbuf也可以采用两个以上SRAM组成存储模块,那样数据传输效率会更高,只是在一定程度上会增加成本,在实际使用中可根据具体的数据传输速率的要求来设置SRAM的个数。
在本发明的实施例中,所述两个存储器SRAM1和SRAM2的容量是一样大的,在实际使用中,也可以选择容量不一样大的存储器。
本发明实施例主要针对工作频率较高、数据传输量大的DSP设计,同时也能应用于其它因工作频率不同,而需要异步传输数据的两个系统之间。
本发明实施例采用空/满中断控制的乒乓结构buffer实现了异步时钟域之间的数据传输,具有以下三方面主要的特点:
1)应用乒乓结构单端口SRAM替代了双端口SRAM实现了异步FIFO的功能,节约面积;
2)根据DSP自身的特点实现每个中断响应限定数据传输量,防止数据传输过程中的数据流失;
3)当读取数据的时钟频率大于写入数据的时钟频率时采用满中断控制;当写入数据的时钟频率大于读取数据的时钟频率时采用空中断控制,这种中断控制机制具有一定的灵活性,其他的异步电路也可以方便采用。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (14)
1.一种异步数据缓存装置,用于缓存系统一向系统二传输的数据,所述系统一的工作频率低于系统二的工作频率,其特征在于:包括存储模块、多路选择模块及同步控制模块;
所述存储模块由两个单端口的存储器组成,用于交替执行数据的读/写操作;
所述同步控制模块,用于根据来自所述系统一的写操作命令控制所述两个存储器中的一个进行写操作,并根据来自所述系统二的读操作命令控制所述两个存储器中的另一个进行读操作;
所述多路选择模块,用于在所述同步控制模块的控制下选择输出所述用于进行读操作的存储器的输出数据至所述系统二。
2.根据权利要求1所述的装置,其特征在于,所述同步控制模块中包括满中断产生单元,用于在所述存储模块中的用于写操作的存储器被写满数据时,产生一满中断信号发送给所述系统二。
3.根据权利要求2所述的装置,其特征在于,所述同步控制模块还包括一个数据量设置单元,用于设定向所述存储模块中的用于写操作的存储器一次写入的数据量,及从所述存储模块中的用于读操作的存储器中一次读取的数据量,所述满中断产生单元根据所述数据量设置单元设定的数据量,判断执行写操作的存储器是否被写满,而产生满中断信号。
4.根据权利要求1所述的装置,其特征在于,所述同步控制模块中还包括读使能信号保持单元,用于根据读使能信号产生一个保持信号,在存储器中数据被读取的过程中保持读使能信号有效。
5.根据权利要求1所述的装置,其特征在于,所述装置接收的数据来源是所述系统一中的两个数据来源,在所述装置中还包括数据源同步控制单元,用于判断数据来自所述两个数据来源中的几个数据来源以及哪个数据来源,并且根据接收到的系统二的时钟和复位信号以及来自系统一的写使能信号,产生写入数据有效信号。
6.根据权利要求1所述的装置,其特征在于,所述系统二为嵌入式DSP,所述系统一为工作频率低于所述嵌入式DSP的工作系统。
7.根据权利要求1所述的装置,其特征在于,所述存储器为SRAM、SDRAM或FLASH。
8.根据权利要求1所述的装置,其特征在于,所述同步控制模块中包括由两个计数器组成的地址发生电路,其中一个计数器用于根据写操作命令产生所述存储模块写操作所需的写地址,另一个计数器用于根据读操作命令产生所述存储模块读操作所需的读地址。
9.一种异步数据缓存装置,用于缓存系统二向系统一传输的数据,所述系统一的工作频率低于系统二的工作频率,其特征在于:包括存储模块、多路选择模块及同步控制模块;
所述存储模块由两个单端口的存储器组成,用于交替执行数据的读/写操作;
所述同步控制模块,用于根据来自所述系统二的写操作命令控制所述两个存储器中的一个进行写操作,并根据来自所述系统一的读操作命令控制所述两个存储器中的另一个进行读操作;
所述多路选择模块,用于在所述同步控制模块的控制下选择输出所述用于进行读操作的存储器的输出数据至所述系统一。
10.根据权利要求9所述的装置,其特征在于,所述同步控制模块包括一空中断产生单元,用于在所述存储模块中的用于读操作的存储器中的数据被读空后,产生一空中断信号发送给所述系统二。
11.根据权利要求10所述的装置,其特征在于,所述同步控制模块还包括一个数据量设置单元,用于设定向所述存储模块中的用于写操作的存储器一次写入的数据量,及从所述存储模块中的用于读操作的存储器中一次读取的数据量,所述空中断产生单元根据所述数据量设置单元设定的数据量,判断执行读操作的存储器是否被读空,而产生空中断信号。
12.根据权利要求9所述的装置,其特征在于,所述系统二为嵌入式DSP,所述系统一为工作频率低于所述嵌入式DSP的工作系统。
13.根据权利要求9所述的装置,其特征在于,所述存储器为SRAM、SDRAM或FLASH。
14.根据权利要求9所述的装置,其特征在于,所述同步控制模块中包括由两个计数器组成的地址发生电路,其中一个计数器用于根据写操作命令产生存储模块写操作所需的写地址,另一个计数器用于根据读操作命令产生存储模块读操作所需的读地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100893562A CN100405343C (zh) | 2006-06-21 | 2006-06-21 | 一种异步数据缓存装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100893562A CN100405343C (zh) | 2006-06-21 | 2006-06-21 | 一种异步数据缓存装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1862518A CN1862518A (zh) | 2006-11-15 |
CN100405343C true CN100405343C (zh) | 2008-07-23 |
Family
ID=37389951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100893562A Expired - Fee Related CN100405343C (zh) | 2006-06-21 | 2006-06-21 | 一种异步数据缓存装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100405343C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833431A (zh) * | 2009-03-11 | 2010-09-15 | 中国科学院半导体研究所 | 基于fpga实现的双向高速fifo存储器 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101777031B (zh) * | 2009-01-14 | 2012-02-08 | 中兴通讯股份有限公司 | 直接存储器存取控制器以及数据传输方法 |
CN102253916B (zh) * | 2010-05-21 | 2013-09-18 | 淮阴工学院 | 同异步转换的双端双通道fifo |
CN103389963B (zh) * | 2012-05-09 | 2016-08-31 | 北京兆易创新科技股份有限公司 | 一种嵌入式系统控制器 |
CN103760876B (zh) * | 2014-01-29 | 2018-06-22 | 北京北方华创微电子装备有限公司 | 报警信息的存储方法及存储装置 |
CN107481754A (zh) * | 2016-06-07 | 2017-12-15 | 中芯国际集成电路制造(上海)有限公司 | 一种多路选择电路、静态随机存取存储器以及电子装置 |
US10657022B2 (en) | 2017-02-20 | 2020-05-19 | Tsinghua University | Input and output recording device and method, CPU and data read and write operation method thereof |
CN108345788A (zh) * | 2017-04-01 | 2018-07-31 | 清华大学 | 输入输出记录装置及方法、cpu及其数据读写操作方法 |
CN109388370B (zh) * | 2017-08-03 | 2023-06-27 | 深圳市中兴微电子技术有限公司 | 一种实现先入先出队列的方法及装置 |
WO2020227905A1 (zh) * | 2019-05-13 | 2020-11-19 | 华为技术有限公司 | 预失真参数更新装置及方法、预失真处理系统 |
CN111666225B (zh) * | 2020-06-05 | 2023-12-01 | 上海集成电路研发中心有限公司 | 一种数据处理电路及方法 |
CN113900580A (zh) * | 2020-07-06 | 2022-01-07 | 旺宏电子股份有限公司 | 存储器装置、电子装置及与其相关的读取方法 |
CN112752194B (zh) * | 2020-12-22 | 2022-06-28 | 江西创成微电子有限公司 | 音频数据处理方法、dsp音频架构、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6448124A (en) * | 1987-08-19 | 1989-02-22 | Fujitsu Ltd | Data transfer device |
JPH10326341A (ja) * | 1997-05-27 | 1998-12-08 | Nissan Motor Co Ltd | イメージセンサ |
US5867692A (en) * | 1996-04-12 | 1999-02-02 | Sony Corporation | Data transfer device operable with two types of interfaces |
CN1090859C (zh) * | 1998-07-31 | 2002-09-11 | 国家科学技术委员会高技术研究发展中心 | 具有同时异步读写的缓冲器 |
CN1093963C (zh) * | 1995-06-07 | 2002-11-06 | 三星电子株式会社 | 减少在两个相互异步总线之间数据的同步传送中的累积时间延迟 |
CN1588552A (zh) * | 2004-09-16 | 2005-03-02 | 联合信源数字音视频技术(北京)有限公司 | 有异步缓存的双倍速动态随机存取存储器控制装置及方法 |
-
2006
- 2006-06-21 CN CNB2006100893562A patent/CN100405343C/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6448124A (en) * | 1987-08-19 | 1989-02-22 | Fujitsu Ltd | Data transfer device |
CN1093963C (zh) * | 1995-06-07 | 2002-11-06 | 三星电子株式会社 | 减少在两个相互异步总线之间数据的同步传送中的累积时间延迟 |
US5867692A (en) * | 1996-04-12 | 1999-02-02 | Sony Corporation | Data transfer device operable with two types of interfaces |
JPH10326341A (ja) * | 1997-05-27 | 1998-12-08 | Nissan Motor Co Ltd | イメージセンサ |
CN1090859C (zh) * | 1998-07-31 | 2002-09-11 | 国家科学技术委员会高技术研究发展中心 | 具有同时异步读写的缓冲器 |
CN1588552A (zh) * | 2004-09-16 | 2005-03-02 | 联合信源数字音视频技术(北京)有限公司 | 有异步缓存的双倍速动态随机存取存储器控制装置及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833431A (zh) * | 2009-03-11 | 2010-09-15 | 中国科学院半导体研究所 | 基于fpga实现的双向高速fifo存储器 |
CN101833431B (zh) * | 2009-03-11 | 2012-09-05 | 中国科学院半导体研究所 | 基于fpga实现的双向高速fifo存储器 |
Also Published As
Publication number | Publication date |
---|---|
CN1862518A (zh) | 2006-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100405343C (zh) | 一种异步数据缓存装置 | |
US8151134B2 (en) | SPI devices and method for transferring data between the SPI devices | |
US7689740B2 (en) | System and method for serial-peripheral-interface data transmission | |
US6072741A (en) | First-in, first-out integrated circuit memory device incorporating a retransmit function | |
US9641464B2 (en) | FIFO buffer system providing same clock cycle response to pop commands | |
CN103077123A (zh) | 一种数据写入和读取方法及装置 | |
CN114242138B (zh) | 一种延时控制器、内存控制器以及时序控制方法 | |
CN207718357U (zh) | 一种fifo存储器 | |
CN101430663B (zh) | 缓存管理单元和缓存管理方法 | |
CN101350218B (zh) | 一种虚拟多端口存储器及其存储和读取数据的方法 | |
JPH0816513A (ja) | 周辺装置とシリアルのデジタルデータを交換するための、プロセッサに組み付けられたインターフェース回路 | |
CN103544987A (zh) | 具有自我更新时序电路的半导体存储器元件 | |
CN1937075B (zh) | 数据传送操作完成检测电路和包含其的半导体存储器件 | |
KR20030065276A (ko) | 반도체 기억장치 | |
CN100456679C (zh) | 供双缓存tdm交换机使用的数据存储器扩展 | |
CN100354814C (zh) | 存储器写入方法与控制装置 | |
CN109062843A (zh) | 一种基于iic总线的数据存储方法及系统 | |
CN104700883A (zh) | 半导体器件 | |
WO2004047114A1 (ja) | 情報記憶装置、情報記憶方法及び情報記憶プログラム | |
CN105528305A (zh) | 一种基于ddr2 sdram的短周期存储方法 | |
CN104123247B (zh) | 接口电路及串行接口存储器的存取模式选择方法 | |
CN101697147B (zh) | 一种可重构i/o芯片 | |
CN106508056B (zh) | 一种存储装置 | |
CN101419599B (zh) | 数据存取系统与方法 | |
CN206249288U (zh) | 一种采用动态存储器的数字ate实现失效转移的装置 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080723 Termination date: 20120621 |