CN1731529A - 先入先出数据缓存的方法及全满空间访问先入先出存储器 - Google Patents
先入先出数据缓存的方法及全满空间访问先入先出存储器 Download PDFInfo
- Publication number
- CN1731529A CN1731529A CN 200510083155 CN200510083155A CN1731529A CN 1731529 A CN1731529 A CN 1731529A CN 200510083155 CN200510083155 CN 200510083155 CN 200510083155 A CN200510083155 A CN 200510083155A CN 1731529 A CN1731529 A CN 1731529A
- Authority
- CN
- China
- Prior art keywords
- fifo
- read
- write
- counter
- enable
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 7
- 230000003139 buffering effect Effects 0.000 title claims description 5
- 230000000694 effects Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 13
- 102100039372 Calcium uniporter regulatory subunit MCUb, mitochondrial Human genes 0.000 description 5
- 101100290461 Homo sapiens MCUB gene Proteins 0.000 description 5
- 230000009977 dual effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 2
- 101100018928 Drosophila melanogaster InR gene Proteins 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明涉及一种先入先出数据缓存的方法以及一种全满空间访问先入先出存储器,其采用两个m+1位计数器,且使计数器的低m位连接到双口存储器的地址总线;通过比较两个m+1位读/写计数器的m+1位输出分别产生写、读使能信号,当写使能信号无效时全部空间都存储了有效信号,当读使能信号无效时,全部存储空间中的有效数据都被读出,从而充分利用双口存储器的存储空间,克服了现有技术中写使能信号无效时全部空间不能全部都存储有效数据、读使能信号无效时存储于存储空间中的所有有效数据不能全部读出的缺陷。
Description
技术领域
本发明涉及先入先出存储方法及装置,尤其涉及全满空间先入先出存储器。
背景技术
在数字电路中,存储器有着非常广泛的用途,其中最主要的是用来保存数据,根据存取数据操作顺序的不同,存储器可以分为随机读写存储器(RAM)、先入先出存储器(FIFO)、堆栈式存储器(FILO)。随机读写存储器可以在一个操作周期内读写寻址范围内的任何一个存储空间,这种存储器用于读写非常频繁,并且对操作顺序不做要求的场合。堆栈存储器又可以称为先入后出存储器,其操作顺序是最初写入的数据只能最后读出来,比如将0x11,0x22,0x33三个数写入堆栈存储器,首先写入的是0x11,然后是0x22,最后是0x33,而读出的时候首先读出0x33,然后才能读出0x22,最后才能读到0x11,堆栈式存储器可以用于在PC的中断向量的保存。
先入先出存储器(first in first out),简称为FIFO,通常有两个处理器来控制一个FIFO,即在一个读写周期内,处理器A对FIFO进行写,同时处理器B可以读出数据。而数据的读写顺序是一样的,也就是说,处理器A依次写入0x1,0x2,0x3三个数,处理器B读到的数据的顺序也必须是0x1,0x2,0x3。FIFO主要用于处理器之间交换数据。FIFO可以是双向FIFO,即处理器A,B既可以读又可以写FIFO,FIFO也可以是单向FIFO,即处理器A,B只能执行读或者写操作。对于特定的一种应用场合,FIFO往往是单向操作的。这里处理器是能够产生读写时序的电路,可以是一个CPU,也可以是一个时序电路。
图1是一个单向FIFO的引脚说明,其中n表示数据线的宽度,Dinw和Dinr分别为写、读输入数据线,Doutw和Doutr分别为写、读输出数据线,CLKW和CLKR分别是写、读时钟,write是写操作有效信号、read是读操作有效信号,wen和ren分别为读、写使能信号。图2是由图1所示的单向FIFO实现双向FIFO的原理图。双向FIFO通常是通过在一个单向FIFO的外面增加一些控制逻辑,比如二选开关来实现的。二选开关的原理框图如图3所示,其包括两个输入端:0端和1端,以及一个输出端。
如图2所示,双向FIFO具有两个端口Porta,Portb,其中porta比portb多一个方向控制端信号direction,在实际应用的时候,porta和portb的信号分别连接两个控制设备MCUA和MCUB,direction信号控制数据传输的方向,图2中的双向FIFO的作用就是实现数据从MCUA传输到MCUB或者从MCUB传输到MCUA。Direction信号来源于porta,说明双向FIFO的方向控制权属于MCUA,当然,方向控制端也可以根据情况设置于portb,或者单独设置一个方向控制装置。
当方向控制端信号direction为高时,二选开关的1端连接到其输出端,单向FIFO的写入端与porta连接,单向FIFO的读出端与portb连接。此时porta写portb读,数据从MCUA传输到MCUB。当方向控制端信号direction为低时,二选开关的0端连接到其输出端,单向FIFO的写入端与portb连接,单向FIFO的读出端与porta连接。此时portb写porta读,数据从MCUB传输到MCUA。
FIFO的另外一个重要参数是内部ram地址宽度m,这个参数决定了FIFO的存储容量为2m·nbits。
目前通用的FIFO是采用m位的计数器,计数器的输出产生双口SRAM的m位地址总线(包括读地址总线和写地址总线),初始状态下,写地址计数器和读地址计数器都是0,此后每写一次,写地址计数器加1,每读一次读地址计数器加1。在某一时刻假设读地址为A1,写地址为A2=A1-1,即写地址计数器比读地址计数器少一,如果再写一次,则A2=A1,那么系统无法判断出是写地址更新了一轮之后与读地址相等还是写地址根本没有移动,二者一直相等。因此,在软件操作的过程中,当A2=A1-1的时候,不允许再进行写操作,这样就有一个地址没有被写入有效数据,从而无法实现全满空间的写入。读的情况是一样的,假设读地址A1=A2-1,同样有一个有效数据无法读出。
发明内容
本发明的目的是提供一种先入先出数据缓存方法以及一种全满空间先入先出存储器,当写允许信号无效时FIFO的全部存储空间都存储了有效信号,当读允许信号无效时,FIFO的全部存储空间中的有效数据能全部被读出,以充分利用双口存储器的存储空间。
根据本发明的一个方面,提供一种先入先出数据缓存的方法,其包括:对于地址宽度为m的双口存储器,采用两个m+1位计数器分别作为读、写计数器;将该两个m+1位计数器的低m位输出分别连接于双口存储器的读、写两侧的地址总线,同时将该两个m+1位计数器的m+1位输出均分别与读、写使能产生电路连接;所述写使能产生电路根据如下逻辑产生写使能信号wen:当wa[m-1:0]=ra[m-1:0]同时wa[m]≠ra[m]的时候wen为低,表示FIFO已被写满,否则wen为高,表示FIFO中有空间可供写入;所述读使能产生电路根据如下逻辑产生读使能信号ren:当wa[m:0]=ra[m:0]的时候ren为低,表示FIFO已被读空,否则ren为高,表示FIFO中存在数据等待读出;其中,wa、ra分别表示写计数器、读计数器输出的地址信号。
根据本发明的另一方面,提供一种全满空间访问先入先出存储器,其包括地址宽度为m的双口存储器、第一计数器、第二计数器、读使能产生电路、写使能产生电路,其特征在于,所述第一、第二计数器均为m+1位计数器,,其中第一、第二计数器的低m位输出分别连接到双口存储器A侧的地址总线AA[m-1:0]、B侧的地址总线BA[m-1:0];同时,第一、第二计数器输出的m+1位输出均分别输入到读使能产生电路、写使能产生电路;其中,所述写使能产生电路根据如下逻辑产生写使能信号wen:当wa[m-1:0]=ra[m-1:0]同时wa[m]≠ra[m]的时候wen为低,表示FIFO已被写满,否则wen为高,表示FIFO中有空间可供写入;所述读使能产生电路根据如下逻辑产生读使能信号ren:当wa[m:0]=ra[m:0]的时候ren为低,表示FIFO已被读空,否则ren为高,表示FIFO中存在数据等待读出;其中,wa、ra分别表示第一计数器、第二计数器的输出的地址信号。
本发明由于采用了m+1位的计数器进行计数并将两个计数器的输出进行比较产生读写允许信号,充分利用了FIFO的读写空间,使得FIFO的写允许信号为低的时候,FIFO的所有存储空间里面都存储了有效的数据。同样,当FIFO的读允许信号为低的时候,保证了存储空间内所有的有效数据都被读出了,从而克服了采用m位计数器的现有技术无法实现写允许信号为低时全部空间都存储了有效数据、在读允许信号为低时存储于存储空间中的所有有效数据全部读出的缺点。
附图说明
图1是通常的单向FIFO的端口信号说明;
图2是由图1所示的单向FIFO制作成的双向FIFO的原理框图;
图3是图2中所用的二选开关的原理图;
图4是本发明的原理框图;
图5是本发明的一个实施例的示意图;
图6是本发明中的读使能产生电路示意图;
图7是本发明中的写使能产生电路示意图;
图8是本发明中的8位计数器的电路示意图。
具体实施方式
下面参照附图对本发明进行详细说明,值得强调的是,下面所述的实施例只是为了使本发明的描述更清楚、易于理解,并不是对本发明的限制。
图4给出了根据本发明的存储容量为2m·n比特的全满空间先入先出存储器(FIFO)的原理框图。下面以128*32全满空间读写FIFO的设计为例对本发明进行说明。如图5所示,128*32全满空间访问先入先出存储器包括双口RAM、8位计数器A和计数器B、以及读使能产生电路、写使能产生电路。在本实施例中,所述双口RAM 1的数据总线宽度为32位;地址总线宽度为7位,即存在128个地址。其中双口RAM可以用Xilinx公司的软件ISWE6.2产生,并用XC2V8000来实现。
计数器A、B用逻辑电路设计,如,可以用两片741s161来实现,其中计数器A作为写地址计数器,其输入为写操作有效信号write和CLKW,其输出的低7位wa[6:0]连接到双口RAM的A端的地址总线AA[6:0],同时计数器A输出的8位wa[7:0]分别连接到读使能产生电路、写使能产生电路。上电之后计数器A的输出为全0,而后每进行一次写操作,计数器A加1。计数器B作为读地址计数器,其输入为读操作有效信号read和CLKR,其输出的低7位ra[6:0]连接到双口RAM的B端的地址总线BA[6:0],同时计数器B输出的ra[7:0]分别连接到读使能产生电路、写使能产生电路,上电之后计数器的输出为全0,而后每进行一次读操作,计数器B加1。如图8所示,其给出了一种8位计数器的逻辑电路示意图。
读使能产生电路、写使能产生电路根据接收的来自计数器A、B的地址信号,根据下列逻辑关系分别产生wen、ren信号。
wen信号产生逻辑关系为:当wa[7]≠ra[7]同时wa[6:0]=ra[6:0]时wen为低,表示FIFO已被写满,不能再写入数据,否则为高,表示FIFO中有空间可供写入;
ren信号产生逻辑关系为:当wa[7:0]=ra[7:0]时ren为低,表示FIFO已被读空,不允许读数,否则为高,表示FIFO中存在数据等待读出。
根据上述逻辑形成的读使能产生电路、写使能产生电路可以用普通的逻辑门形成的电路来实现。如图6、图7所示,图6给出了一种读使能产生电路示意图,图7给出了一种写使能产生电路示意图。
本发明的上述FIFO可以用两个单片机来控制,一个单片机A用于写,另一个单片机B用于读。wen,ren信号连接到单片机A的p1[2:1],wen、ren信号连接到单片机B的p1[2:1]。单片机A通过读p1口获得wen信号的电平,如果wen=1,则单片机A向FIFO写入,其产生写操作有效信号write;单片机B通过读p1口获得ren信号的电平,如果ren=1,则单片机B从FIFO读数,其产生写操作有效信号read,这样就可以实现从单片机A向单片机B的数据传输。
另外,利用与图2中所示相同的方式,通过增加若干二选开关以及一个方向控制端可以将图5所示的本发明的单向FIFO制作成双向FIFO。
在本发明中,双口存储器可以为实现本发明功能的具有双端口的存储器,如RAM、SRAM等。
本发明的上述实施例中的计数器、写、读使能产生电路都可以用Verilog-hdl编写的FPGA或ASIC、或逻辑电路来实现。
Claims (4)
1.一种先入先出数据缓存的方法,其特征在于,包括:
对于地址宽度为m的双口存储器,采用两个m+1位计数器分别作为读、写计数器;
将该两个m+1位计数器的低m位输出分别连接于双口存储器的读、写两侧的地址总线,同时将该两个m+1位计数器的m+1位输出均分别与读、写使能产生电路连接;
所述写使能产生电路根据如下逻辑产生写使能信号wen:当wa[m-1:0]=ra[m-1:0]同时wa[m]≠ra[m]的时候wen为低,表示FIFO已被写满,否则wen为高,表示FIFO中有空间可供写入;
所述读使能产生电路根据如下逻辑产生读使能信号ren:当wa[m:0]=ra[m:0]的时候ren为低,表示FIFO已被读空,否则ren为高,表示FIFO中存在数据等待读出;
其中,wa、ra分别表示写计数器、读计数器输出的地址信号。
2.一种全满空间访问先入先出存储器,包括地址宽度为m的双口存储器、第一计数器、第二计数器、读使能产生电路、写使能产生电路,其特征在于,所述第一、第二计数器均为m+1位计数器,其中第一、第二计数器的低m位输出分别连接到双口存储器A侧的地址总线AA[m-1:0]、B侧的地址总线BA[m-1:0];同时,第一、第二计数器输出的m+1位输出均分别输入到读使能产生电路、写使能产生电路;其中,
所述写使能产生电路根据如下逻辑产生写使能信号wen:当wa[m-1:0]=ra[m-1:0]同时wa[m]≠ra[m]的时候wen为低,表示FIFO已被写满,否则wen为高,表示FIFO中有空间可供写入;
所述读使能产生电路根据如下逻辑产生读使能信号ren:当wa[m:0]=ra[m:0]的时候ren为低,表示FIFO已被读空,否则ren为高,表示FIFO中存在数据等待读出;
其中,wa、ra分别表示第一计数器、第二计数器的输出的地址信号。
3.根据权利要求2所述的全满空间访问先入先出存储器,其特征在于,所述双口存储器是具有双端口的SRAM。
4.根据权利要求2或3所述的全满空间访问先入先出存储器,其特征在于,用FPGA或ASIC或逻辑电路来实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510083155 CN1731529A (zh) | 2005-07-13 | 2005-07-13 | 先入先出数据缓存的方法及全满空间访问先入先出存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510083155 CN1731529A (zh) | 2005-07-13 | 2005-07-13 | 先入先出数据缓存的方法及全满空间访问先入先出存储器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1731529A true CN1731529A (zh) | 2006-02-08 |
Family
ID=35963868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510083155 Pending CN1731529A (zh) | 2005-07-13 | 2005-07-13 | 先入先出数据缓存的方法及全满空间访问先入先出存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1731529A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004626A (zh) * | 2010-11-17 | 2011-04-06 | 华亚微电子(上海)有限公司 | 双口存储器 |
CN101566941B (zh) * | 2009-06-03 | 2013-08-07 | 北京中星微电子有限公司 | 一种基于静态存储器的fifo存储单元 |
CN106293636A (zh) * | 2015-05-20 | 2017-01-04 | 北京君正集成电路股份有限公司 | 一种流水级的实现方法、流水级及流水线 |
CN106293609A (zh) * | 2015-05-27 | 2017-01-04 | 中国科学院微电子研究所 | 一种双向fifo及总线桥接系统 |
CN106445842A (zh) * | 2016-09-18 | 2017-02-22 | 北京机械设备研究所 | 一种数据缓存器和数据缓存方法 |
CN109933560A (zh) * | 2019-03-21 | 2019-06-25 | 南京威翔科技有限公司 | 一种基于fifo与随机存储器结合的模块间流控制通信方法 |
WO2021259228A1 (zh) * | 2020-06-22 | 2021-12-30 | 深圳鲲云信息科技有限公司 | 模块间通信方法及系统 |
-
2005
- 2005-07-13 CN CN 200510083155 patent/CN1731529A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101566941B (zh) * | 2009-06-03 | 2013-08-07 | 北京中星微电子有限公司 | 一种基于静态存储器的fifo存储单元 |
CN102004626A (zh) * | 2010-11-17 | 2011-04-06 | 华亚微电子(上海)有限公司 | 双口存储器 |
CN102004626B (zh) * | 2010-11-17 | 2013-02-13 | 华亚微电子(上海)有限公司 | 双口存储器 |
CN106293636A (zh) * | 2015-05-20 | 2017-01-04 | 北京君正集成电路股份有限公司 | 一种流水级的实现方法、流水级及流水线 |
CN106293609A (zh) * | 2015-05-27 | 2017-01-04 | 中国科学院微电子研究所 | 一种双向fifo及总线桥接系统 |
CN106445842A (zh) * | 2016-09-18 | 2017-02-22 | 北京机械设备研究所 | 一种数据缓存器和数据缓存方法 |
CN109933560A (zh) * | 2019-03-21 | 2019-06-25 | 南京威翔科技有限公司 | 一种基于fifo与随机存储器结合的模块间流控制通信方法 |
WO2021259228A1 (zh) * | 2020-06-22 | 2021-12-30 | 深圳鲲云信息科技有限公司 | 模块间通信方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1731529A (zh) | 先入先出数据缓存的方法及全满空间访问先入先出存储器 | |
CN107590533B (zh) | 一种用于深度神经网络的压缩装置 | |
CN108733344B (zh) | 数据读写方法、装置以及环形队列 | |
US8923089B2 (en) | Single-port read multiple-port write storage device using single-port memory cells | |
KR102332375B1 (ko) | 정적 랜덤 액세스 메모리를 액세스하는 방법, 장치, 기기 및 저장 매체 | |
US9436432B2 (en) | First-in first-out (FIFO) memory with multi-port functionality | |
US11947979B2 (en) | Systems and devices for accessing a state machine | |
CN111753962B (zh) | 一种加法器、乘法器、卷积层结构、处理器及加速器 | |
CN105550979A (zh) | 一种高数据通量纹理Cache层次结构 | |
CN101825997A (zh) | 一种异步先入先出存储器 | |
CN101079313A (zh) | 一种无读取延迟的先进先出存储器 | |
CN108701102A (zh) | 直接存储器访问控制器、数据读取方法和数据写入方法 | |
WO2018148918A1 (zh) | 存储设备、芯片及存储设备的控制方法 | |
CN105577985A (zh) | 一种数字图像处理系统 | |
US11755211B2 (en) | Overhead reduction in data transfer protocol for NAND memory | |
CN101042637A (zh) | 先进先出缓冲单元及先进先出缓冲方法 | |
CN1967713A (zh) | 大容量高速缓冲存储器 | |
CN102930898B (zh) | 一种构建多端口异步存储模块的方法 | |
US20120203982A1 (en) | Fifo buffer and method of controlling fifo buffer | |
CN2783418Y (zh) | 用于智能卡仿真调试系统的硬件断点电路 | |
CN111814675A (zh) | 基于fpga支持动态分辨率的卷积神经网络特征图组装系统 | |
CN113886287A (zh) | 一种基于SoC的自适应实时缓存系统及方法 | |
CN209765494U (zh) | 一种异步fifo装置 | |
CN115048320A (zh) | Vtc加速器及其计算vtc的方法 | |
CN1841338A (zh) | 一种用于智能卡仿真调试系统的硬件断点电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |