CN101110259A - 先进先出存储器 - Google Patents
先进先出存储器 Download PDFInfo
- Publication number
- CN101110259A CN101110259A CNA2007101420861A CN200710142086A CN101110259A CN 101110259 A CN101110259 A CN 101110259A CN A2007101420861 A CNA2007101420861 A CN A2007101420861A CN 200710142086 A CN200710142086 A CN 200710142086A CN 101110259 A CN101110259 A CN 101110259A
- Authority
- CN
- China
- Prior art keywords
- data
- cell
- push
- output
- storage
- 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
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种先进先出存储器,包括:一缓冲单元,包含多个用于存储数据的单元格;一输出控制电路,依据一读取指针与一读取字节数读取所述缓冲单元存储的数据。输出控制电路包含:一选择信号产生模块,根据所述读取指针与读取字节数产生多个选择信号;以及一数据输出模块,依据所述多个选择信号与读取指针,由所述缓冲单元中读取相应单元格的数据,并作为所述先进先出存储器的输出数据输出。本发明所述的先进先出存储器,大大降低了读取指针与写入指针的负载,避免使用复杂的驱动电路,从而降低了控制电路复杂度和传输门的数目,且具有相对较小的面积和较高的数据传输速度。
Description
技术领域
本发明是有关于一种先进先出存储器,特别是有关于一种高速的先进先出存储器(First In First Out,FIF O)。
背景技术
图1所示为一现有技术中具有四输入四输出的先进先出存储器(First In First Out,FIFO)。先进先出存储器100可应用于中央处理器(Central Processing Unit,CPU)和北桥(North Bridge)之间进行传输数据。先进先出存储器100具有四路多工器(Mux)111、112、113、114、141、142、143和144,暂存器121、122、123和124以及十六路多工器131、132、133和134。其中,暂存器121、122、123和124均为可储存16组32位数据的先进先出暂存器。
输入数据Data0、Data1、Data2和Data3通过四路多工器111、112、113和114存入暂存器121、122、123和124的对应位置。十六路多工器131、132、133和134接收来自暂存器121、122、123和124的暂存数据并输出至四路多工器141、142、143和144。
从图1可以看出,由于四路多工器111、112、113和114必须具有驱动具有储存16组32位的暂存器121、122、123和124的驱动能力,即必须通过写入指针Push从64个32位的存储单元中选择出用来存储数据Data0~Data3的存储单元,使得写入指针Push的负载很大。因此四路多工器111、112、113和114需要较大驱动器,从而增加四路多工器111、112、113和114电路复杂度和传输门的数目,并且由于传输门的数目较多,数据传输也比较慢。同样地,在先进先出存储器100的输出端,存于暂存器121~124的数据需要通过两级多工器,即十六路多工器131~134与四路多工器141~144才能以先进先出的方式输出,进而使得电路复杂度增加而数据传输速度降低。
发明内容
本发明的目的在于提供一种高速的先进先出存储器。
本发明提供一种先进先出存储器,包括:一缓冲单元,包含多个用于存储数据的单元格;一输出控制电路,依据一读取指针与一读取字节数读取所述缓冲单元存储的数据。输出控制电路包含:一选择信号产生模块,根据所述读取指针与读取字节数产生多个选择信号;以及一数据输出模块,依据所述多个选择信号与读取指针,由所述缓冲单元中读取相应单元格的数据,并作为所述先进先出存储器的输出数据输出。
本发明所述的先进先出存储器,通过移位寄存器产生对应于即将用来存储或输出数据的单元格,因此大大降低了读取指针与写入指针的负载,避免使用复杂的驱动电路,从而降低了控制电路复杂度和传输门的数目。由于传输门的数目较少,本发明先进先出存储器具有相对较小的面积和较高的数据传输速度。
附图说明
通过下面结合示例性地示出一例的附图进行的描述,本发明的上述和其他目的和特点将会变得更加清楚,其中:
图1为现有技术的四输入四输出的先进先出存储器的示意图;
图2为根据本发明一实施例的先进先出存储器的示意图;
图3为图2所示先进先出存储器的输入控制电路的示意图;
图4为图2所示先进先出存储器的输出控制电路的示意图;
图5为图4所示先进先出存储器的输出控制电路的详细示意图;
图6a~6c为图5所示选择逻辑的详细示意图。
具体实施方式
为让本发明的上述和其它目的、特征和优点能更明显易懂,下文特举出较佳实施例,并配合所附图式,作详细说明如下。
如图2所示,本发明一实施例的先进先出存储器(First InFirst Out,FIFO)200包括:一控制单元20、一缓冲单元23、一输入控制电路21以及一输出控制电路22。假设本实施例中先进先出存储器200每个周期(cycle)可支持最多4个长度为32bit的数据写入,以及最多4个长度为32bit数据输出。于本实施例中,控制单元20用于依据接收的传输请求request输出一缓冲单元23的写入指针Push与一写入字节数Push_valid至输入控制电路21,以及一读取指针Pop与一读取字节数Pop_valid至输出控制电路22。于本实施例中,控制单元20设于先进先出存储器200中,但不限定于此。如本领域技术人员所知,写入指针Push指向缓冲单元23下一个可存储数据的单元格的存储地址,读取指针Pop用来指向缓冲单元23下一个数据可被读取的单元格的存储地址。假设写入字节数Push_valid与读取字节数Pop_valid均为包含4个位,用来标示将要写入的数据长度和将要读取的数据长度。举例来说,若写入字节数Push_valid为4’b0001,则将一个长度为1DW(即32bit)的数据存入缓冲单元23;若写入字节数Push_valid为4’b0011,则将两个1DW的数据存入缓冲单元23;若写入字节数Push_valid为4’b0111,则将三个1DW的数据存入缓冲单元23;若写入字节数Push_valid为4’b1111,则将四个1DW的数据存入缓冲单元23。控制单元20接收到的传输请求request可以是来自CPU的读取或写入请求。
输入控制电路21依据写入指针Push与写入字节数Push_valid将接收到的数据datain0~datain3存入先进先出缓冲单元23的相应单元格中。进一步来说,输入控制电路21包括单元格选择模块216和排序模块210。单元格选择模块216依据写入指针Push与写入字节数Push_valid最多产生四个单元格使能信号act_1~act_4,以将先进先出缓冲单元23中即将用来存储数据的单元格激活。排序模块210依据写入指针Push将接收到的数据datain0~datain3按照先进先出的方式存入由单元格使能信号act1~act4激活的单元格中,从而完成数据存储操作。
输出控制电路22依据读取指针Pop与读取字节数Pop_valid自先进先出缓冲单元23中读取并输出数据dataout0~dataout3。于本实施例中,输出控制电路22包括数据输出模块224和选择信号产生模块225。选择信号产生模块225由多工器220和移位寄存器组221组成。多工器220依据接收的读取指针Pop和读取字节数Pop_valid产生一读取行移位信号R_shift。移位寄存器组221在读取行移位信号R_shift的控制下输出多个选择信号,即RPtr_0~RPtr_a。数据输出模块224依据多个选择信号RPtr_0~RPtr_a由先进先出缓冲单元23中选择输出相应单元格的数据,并进一步依据读取指针Pop选择输出4个数据dataout0~dataout3作为先进先出存储器200的输出。
以下将结合图3说明本实施例中,输入控制电路21如何依据写入指针Push与写入字节数Push_valid将接收到的数据存入缓冲单元23中。假设输入控制电路21需要将4个长度为1DW的数据datain0~datain3按照先进先出的方式放入缓冲单元23中。
如图3所示,本实施例中缓冲单元23由四个先进先出的子存储块bank1~bank4构成,每一子存储块bank1~bank4的数据宽度为1DW,深度为96。也就是说,每一子存储块bank1~bank4均包含96个宽度为1DW的单元格,即单元格cell1_0~cell1_95、单元格cell2_0~cell2_95、单元格cell3_0~cell3_95和单元格cell4_0~cell4_95。因此,本实施例缓冲单元23也可看作一具有96行×4列,共包含有384个宽度为1DW的单元格的存储器。子存储块bank1~bank4位于第n(n=0,1......95)行的单元格1_n~4_n的地址是连续的,且第n+1行的单元格1_n+1与第n行的单元格4_n的地址连续是连续的,因而先进先出存储器200接收到的数据通过输入控制电路21蛇形地存入子存储块bank1~bank4的单元格中。为方便理解,本实施例在描述以及附图中将以datan_n来表示单元格celln_n中存储的数据。譬如说,单元格cell1_30中存储的数据为data1_30。
输入控制电路21包括多工器210、211,第一移位寄存器212、第二移位寄存器213、单元格预选模块214以及一时钟控制模块215。多工器210依据写入指针Push的低两位,即Push[1:0],将接收到的数据datain0~datain3分别依据表1所示的对应关系输出至相应的子存储块bank1~bank4。其中,子存储块bank1用来存储地址的低两位为“00”的数据,子存储块bank2用来存储地址的低两位为“01”的数据,子存储块bank3用来存储地址的低两位为“10”的数据,子存储块bank4用来存储地址的低两位为“11”的数据。
表1
Push[1:0] | datain0 | datain1 | datain2 | datain3 |
00 | bank1 | bank2 | bank3 | bank4 |
01 | bank2 | bank3 | bank4 | bank1 |
10 | bank3 | bank4 | bank1 | bank2 |
11 | bank4 | bank1 | bank2 | bank3 |
举例来说,若写入指针Push=8’b010100101,则数据datain0将被存入子存储块bank2,数据datain1存入子存储块bank3,数据datain2存入子存储块bank4,数据datain3存入子存储块bank1。换句话说,本实施例中输入控制电路21可通过多工器210确定数据datain0~datain3与子存储块bank1~bank4的对应关系,即确定接收到的数据将分别存入缓冲单元23的哪一列。
多工器211依据写入字节数Push_valid[3:0]与写入指针Push[1:0]产生一写入行移位信号W_shift,用以控制第一移位寄存器212、第二移位寄存器213的移位。第一移位寄存器212包含有96bit,在写入行移位信号W_shift的控制下顺序移位,并输出一第一行选择信号wptr_0[95:0],其96个位分别对应子存储块bank1~bank4的96个单元格,且仅有一个位为“1”。第二移位寄存器213也包含有96位,在写入行移位信号W_shift的控制下输出一第二行选择信号wptr_1[95:0],其96个位分别对应子存储块bank1~bank4的96个单元格,且仅有一个位为“1”。特别地,第一行选择信号wptr_0的起始值为wptr_0[0],即bit0为“1”,对应于缓冲单元23的第1行单元格,而第二行选择信号wptr_1的起始值为wptr_1[1],即bitl为“1”,对应于缓冲单元23的第2行单元格。多工器211依据接收到的写入指针Push[1:0]与写入字节数Push_valid[3:0]来判断即将接收到的数据是否可被完整存入当前第一、第二行选择信号wptr_0,wptr_1所对应的单元格中,若不能,则输出行移位信号W_shift,使得第一移位寄存器212、第二移位寄存器213移位,以通过第一、第二行选择信号wptr_0,wptr_1预选两行(8个)单元格。举例来说,在进行完第一笔数据存储后,若第一移位寄存器212、第二移位寄存器213接收的写入行移位信号W_shift被致能,则第一移位寄存器212输出第一行选择信号由wptr_0[0]变为wptr_0[1],第二移位寄存器213输出第二行选择信号由wptr_1[1]变为wptr_1[2],即预选缓冲单元23的第2行和第3行单元格。
单元格预选模块214随后依据写入指针Push[1:0]、写入字节数Push_valid[3:0]以及第一行选择信号wptr_0[n]与第二行选择信号wptr_1[n+1],按照表2~表5所示的对应关系输出相应子存储块bank1~bank4的单元格指针addr_1~addr_4,从而由预选的两行单元格中进一步选择出即将用来存储数据的单元格。
表2:(Push_valid=4’b1111)
Push[1:0] | addr_1 | addr_2 | addr_3 | addr_4 |
00 | wptr_0[n] | wptr_0[n] | wptr_0[n] | wptr_0[n] |
01 | wptr_1[n+1] | wptr_0[n] | wptr_0[n] | wptr_0[n] |
10 | wptr_1[n+1] | wptr_1[n+1] | wptr_0[n] | wptr_0[n] |
11 | wptr_1[n+1] | wptr_1[n+1] | wptr_1[n+1] | wptr_0[n] |
表3:(Push_valid=4’b0111)
Push[1:0] | addr_1 | addr_2 | addr_3 | addr_4 |
00 | wptr_0[n] | wptr_0[n] | wptr_0[n] | 0 |
01 | 0 | wptr_0[n] | wptr_0[n] | wptr_0[n] |
10 | wptr_1[n+1] | 0 | wptr_0[n] | wptr_0[n] |
11 | wptr_1[n+1] | wptr_1[n+1] | 0 | wptr_0[n] |
表4:(Push_valid=4’b0011)
Push[1:0] | addr_1 | addr_2 | addr_3 | addr_4 |
00 | wptr_0[n] | wptr_0[n] | 0 | 0 |
01 | 0 | wptr_0[n] | wptr_0[n] | 0 |
10 | 0 | 0 | wptr_0[n] | wptr_0[n] |
11 | wptr_1[n+1] | 0 | 0 | wptr_0[n] |
表5:(Push_valid=4’b0001)
Push[1:0] | addr_1 | addr_2 | addr_3 | addr_4 |
00 | wptr_0[n] | 0 | 0 | 0 |
01 | 0 | wptr_0[n] | 0 | 0 |
10 | 0 | 0 | wptr_0[n] | 0 |
11 | 0 | 0 | 0 | wptr_0[n] |
举例来说,如表2所示,假设单元格预选模块214接收到低两位为“01”的写入指针Push、写入字节数Push_valid=4’b1111、第一行选择信号wptr_0[41]与第二行选择信号wptr_1[42],则单元格预选模块214输出单元格指针addr_1[42],addr_2[41],addr_3[41],addr_4[41],表示其值为“1”的位分别对应子存储块bank1的单元格cell1_42,子存储块bank2~bank4的单元格cell2_41,cell3_41和cell4_41,且这些单元格将被用来存储本次传输周期(cycle)接收到的数据。
为达到省电的目的,单元格预选模块214输出的单元格指针addr_1~addr_4被送到时钟控制模块215。时钟控制模块215依据系统时钟CLK输出四个使能信号act_1~act_4至缓冲单元23的各个单元格,以使即将用来存储数据的单元格,即子存储块bank1~bank4中使能信号act_1~act_4值为“1”的位所对应的单元格被激活(提供时钟信号给该单元格)。
由以上描述可知,在本实施例先进先出存储器200的输入端,依据第一行选择信号wptr_0和第二行选择信号wptr_1由缓冲单元23中选择出两行单元格,即8个地址连续的单元格,然后再通过单元格预选模块214由这两行单元格中选择出即将用来存储数据的单元格。时钟控制模块215激活被选中的单元格,使得多工器210将接收到的数据datain0~datain3按序存入被启动的单元格中。
显然,与现有技术相比,本实施例先进先出存储器200的输入控制电路21通过移位寄存器等相对简单的电路,依据接收到的写入指针Push以及写入字节数Push_valid产生对应于缓冲单元23的每一个单元格的使能信号act1~act_4,从而有效降低了写入指针Push与写入字节数Push_valid的负载。由于本实施例中不需要设计具有很大驱动力的电路来驱动写入指针Push依据写入字节数Push_valid从384个单元格中选择即将用来存储数据的单元格,因而本实施例先进先出存储器200的数据存储效率被有效提高。
以下将结合图4说明本实施例中,输出控制电路22如何依据读取指针Pop与读取字节数Pop_valid将数据由缓冲单元23中读出。
如图4所示,输出控制电路22包含一多工器220、移位寄存器0~a以及数据输出模块224。移位寄存器0~a组成移位寄存器组221。数据输出模块224包括由处理单元2261~2264组成的单元格初选模块226和多工器223。
多工器220依据读取指针Pop的低三位以及读取字节数Pop_valid输出一读取行移位信号R_shift,用以控制移位寄存器0~a的移位。移位寄存器0~a分别依据行移位信号R_shift输出一选择信号RPtr_0~RPtr_a,每一选择信号RPtr_0~RPtr_a均包含有48个位,且同一时间每个选择信号RPtr_0~RPtr_a只有一个位为“1”。单元格初选模块226依据选择信号RPtr_0~RPtr_a由缓冲单元23的相应子存储块bank1~bank4中选择11个地址连续的单元格,并将选中单元格中存储的数据通过信号cell_out0~cell_outa输出给多工器223。多工器223依据读取指针Pop由初选出来的11个数据中选择输出4个数据dataout0~dataout3,作为先进先出存储器200的输出。
更进一步来说,为减轻选择信号RPtr_0~RPtr_a的负载,每一子存储块bank1~bank3的单元格所存储的数据在输出至相应的处理单元2261~2264时都被分为两组。其中,第一组数据由存储于奇数行单元格中的数据组成,第二组数据由存储于偶数行单元格中的数据组成,因而每组都包含48个数据,且分别对应于相应选择信号RPtr_0~RPtr_a的48个位。为方便说明,子存储块bank1~bank4输出的第一组数据分别用group1_1,group2_1,group3_1和group4_1标示,第二组数据分别用group1_2,group2_2,group3_2和group4_2标示。举例来说,子存储单元bank1输出的第一组数据group1_1由单元格cell1_0,cell1_2,cell1_4......cell1_94中所存储的数据组成,即数据data1_0,data1_2......data1_94(图6a),第二组数据group1_2由单元格cell1_1,cell1_3,cell1_5......cell1_95中所存储的数据组成,即数据data1_1,data1_3......data1_95(图6b)。于本实施例中,处理单元2261~2263还接收一第三组数据,即数据group1_3,group2_3和group3_3。如图所示,数据输出模块224包含调序单元2271~2273,用于对相应的子存储块bank1~bank3输出的第一组数据group1_1,group2_1和group3_1进行调序操作,以获得第三组数据group1_3,group2_3和group3_3。更进一步来说,本实施例中调序单元2271~2273为一循环右移移位寄存器,即可对接收到的数据进行右移操作,从而达到调整数据排列顺序的目的。例如,假设子存储块bank1输出的第一组数据group1_1由数据data1_0,data1_2......data1_94组成,且排列顺序为data1_94,data1_92......data1_2,data1_0,则经过调序单元2271的循环右移移位操作后,数据的排列顺序变为data1_0,data1_94......data1_4,data1_2(图6c)。简言之,以处理单元2261为例,处理单元2261所接收的第三组数据group1_3是第一组数据group1_1右移所得。处理单元2261~处理单元2264随后依据选择信号RPtr_0~RPtr_a,由数据组group1_1~group4_1,group1_2~group4_2以及group1_3~group3_3中选择11个数据,并通过信号cell_out0~cell_outa输出至多工器223。多工器223依据读取指针Pop的低三位,从数据cell_out0~cell_outa中选择输出四个数据dataout0~dataout3作为本实施例先进先出存储器200的输出数据。
请一并参阅图4至图6,处理单元2261~2264均包含有多个处理逻辑con0~cona,用于依据相应的选择信号RPtr_0~RPtr_a从对应的子存储块bank1~bank4中选择11个地址连续的单元格中存储的数据输出。请参阅图6a~6c,以选择逻辑0~2为例来说明本实施例中如何通过选择逻辑0~a由缓冲单元23中选择出11个地址连续的单元格。选择逻辑0包含48个与门AN0~47以及一个或门OR0。与门AN0~47均具有两个输入端,一端连接至子存储块bank1的第一组数据group1_1,即数据data1_0,data1_2......data1_94,另一端连接至选择信号RPtr_0[47:0]的相应位。如本领域熟练技术人员所知,通过与门AN0~47,与选择信号RPtr_0中1’b1相对应的数据将被送至或门OR0,并作为数据cell_out0输出。选择逻辑1和选择逻辑2的结构与选择逻辑0相同,只是选择信号RPtr_1的48个位分别对应于第二组数据group1_2,即数据data1_1,data1_3......data1_95,选择信号RPtr_2的48个位分别对应于第三组数据group1_3,即数据data1_2,data1_4......data1_94,data1_0。。因此,假设移位寄存器0~2分别输出选择信号RPtr_0[20]~RPtr_2[20],则选择逻辑0~2输出的数据cell_out0~cell_out2分别为单元格cell1_40,cell1_41与cell_142所存储的数据,即数据data1_40,data1_41与data1_42。换句话说,选择逻辑0~2依据接收到的选择信号0~2自子存储块bank1中选择三个单元格,并将其中存储的数据通过cell_out0~cell_out2输出。与选择逻辑0~2相似,选择逻辑3~5分别依据选择信号RPtr_3~RPtr_5由子存储块bank2中选择三个单元格,并将其中存储的数据通过cell_out3~cell_out5输出。选择逻辑6~8分别依据选择信号RPtr_6~RPtr_8由子存储块bank3中选择三个单元格,并将其存储的数据通过cell_out6~cell_out8输出。选择逻辑9~a分别依据选择信号RPtr_9~RPtr_a由子存储块bank4中选择两个单元格,并将其存储的数据通过cell_out9~cell_outa输出。
由以上描述可知,本实施例中输出控制电路22可依据选择信号0~a控制相应的选择逻辑0~a由缓冲单元23中选择出11个地址连续的单元格,并由信号cell_out0~cell_outa将这11个单元格中的数据输出。举例来说,假设移位寄存器0~a分别输出选择信号RPtr_0[20]~RPtr_a[20],则选择逻辑0~a输出的数据cell_out0~cell_outa为单元格cell1_40~cell4_40,cell1_41~cell4_41,cell1_42~cell3_42所存储的数据。多工器223随后依据读取指针Pop的低三位,从数据cell_out0~cell_outa中选择输出四个数据dataout0~dataout3输出。多工器220依据读取指针Pop和读取字节数Pop_valid判断即将读取的数据是否已经由选择逻辑con0~cona输出至多工器223,若否,则输出读取行移位信号R_shift,使得选择逻辑con0~cona依据移位后的选择信号RPtr_0~RPtr_a选择11个数据输出至多工器223。
由于本实施例中输出控制电路22通过一组移位寄存器,即移位寄存器0~a来产生一组选择信号RPtr_0~RPtr_a,使得选择逻辑con0~cona输出一组地址连续的数据cell_out0~cell_outa。因此,与现有技术相比,本发明输出控制电路22只需要驱动读取指针Pop从11个地址连续的数据中选择出4个数据作为先进先出存储器200的输出数据,进而大幅减小了读取指针Pop的负载,使得本实施例先进先出存储器200的数据输出效率被有效提高。
以上说明均假设本实施例中先进先出存储器200每个周期可支持最多4个长度为32bit的数据写入,以及最多4个长度为32bit数据输出,然而,如本领域熟练技术人员所知,以上假设可因应不同的应用环境而改变,且输入/输出控制电路及缓冲单元的结构只需要做简单的更改即可。举例来说,若缓冲单元23由32个位宽为32bit的单元格组成,则输出控制电路22的多工器220可依据读取字节数Pop_valid[3:0]与读取指针Pop[1:0]产生读取行移位信号R_shift。移位寄存器的个数可以相应地由11个减少为8个。此时,每一子存储块bank1~bank4包含8个单元格,其中奇数行的单元格分为一组,偶数行的单元格分为另一组,并分别输出至相应的处理单元2261~2264。移位寄存器0~7依据读取行移位信号R_shift,分别输出选择信号RPtr_0~RPtr_7,每一选择信号RPtr_0~RPtr_7包含有4个位。处理单元2261~2264随后依据选择信号RPtr_0~RPtr_7自缓冲单元23中选择输出两行,共8个地址连续的单元格的数据,以供多工器223依据读取指针Pop[1:0]选择性地输出数据dataout0~dataout3。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
Claims (13)
1.一种先进先出存储器,其特征在于,包括:
一缓冲单元,包含多个用于存储数据的单元格;
一输出控制电路,依据一读取指针与一读取字节数读取所述缓冲单元存储的数据,所述输出控制电路包含:
一选择信号产生模块,根据所述读取指针与所述读取
字节数产生多个选择信号;以及
一数据输出模块,依据所述多个选择信号与所述读取
指针,由所述缓冲单元中读取相应单元格的数据,并作为
所述先进先出存储器的输出数据输出。
2.根据权利要求1所述的先进先出存储器,其特征在于,所述输出控制电路的所述选择信号产生模块包括:
一第一多工器,根据所述读取指针与所述读取字节数产生一读取行移位信号;以及
一移位寄存器组,依据所述读取行移位信号输出所述多个选择信号。
3.根据权利要求2所述的先进先出存储器,其特征在于,所述第一多工器依据所述读取指针与所述读取字节数判断将要读取的数据是否存储于所述选择信号对应的单元格中,若否,则输出所述读取行移位信号,使所述移位寄存器组输出移位的选择信号。
4.根据权利要求1所述的先进先出存储器,其特征在于,所述输出控制电路的所述数据输出模块包括:
一单元格初选模块,分别依据相应的选择信号,由所述缓冲单元中选择输出相应单元格的数据;以及
一第二多工器,接收所述单元格初选模块输出的数据,并依据所述读取指针选择多个数据作为所述先进先出存储器的输出数据输出;
其中,由所述单元格初选模块输出的数据的存储地址连续。
5.根据权利要求4所述的先进先出存储器,其特征在于,所述单元格初选模块包含多个选择逻辑,分别依据相应的选择信号由所述缓冲单元中选择输出相应单元格的数据。
6.根据权利要求5所述的先进先出存储器,其特征在于,所述数据输出模块还包括一调序单元,耦接于所述缓冲单元与选择逻辑之间,用于调整所述缓冲单元输出至所述选择逻辑的数据的排列顺序。
7.根据权利要求4所述的先进先出存储器,其特征在于,所述输出电路的选择信号的个数等于所述选择逻辑的个数。
8.根据权利要求1所述的先进先出存储器,其特征在于,还包括一输入控制电路,依据一写入指针与一写入字节数,将接收的数据存入缓冲单元,所述输入控制电路包括:
一第三多工器,依据所述写入指针与所述写入字节数产生一写入行移位信号;
第一移位寄存器、第二移位寄存器,分别依据所述写入行移位信号输出第一行选择信号、第二行选择信号;以及
一单元格预选模块,依据所述第一行选择信号、第二行选择信号、所述写入指针与所述写入字节数产生多个单元格指针,分别指向即将用于存储数据的单元格。
9.根据权利要求8所述的先进先出存储器,其特征在于,所述输入控制电路还包括一时钟控制模块,用以依据所述单元格预选模块输出的所述单元格指针给相应的单元格提供时钟信号。
10.根据权利要求8所述的先进先出存储器,其特征在于,所述输入控制电路还包括一第四多工器,依据所述写入指针将所述先进先出存储器接收到的多个数据存入所述单元格指针指向的单元格中,且使所述先进先出存储器接收到的第一个数据存入所述写入指针所对应的单元格中。
11.根据权利要求8所述的先进先出存储器,其特征在于,所述第一行选择信号、第二行选择信号均包括多个位,且所述第二行选择信号为“1”的位比所述第一行选择信号为“1”的位高一位。
12.根据权利要求11所述的先进先出存储器,其特征在于,所述第三多工器依据所述读取指针与所述读取字节数判断将要写入的数据是否能够全部存储于所述第一行选择信号、第二行选择信号所对应的单元格中,并依据判断结果输出所述写入行移位信号,使得所述第一移位寄存器、第二移位寄存器移位。
13.根据权利要求1所述的先进先出存储器,其特征在于,所述缓冲单元的单元格包含多行多列,且所述缓冲单元的同一行的单元格的存储地址连续,相邻两行中的前一行的最后一个单元格的存储地址与后一行的第一个单元格的存储地址连续。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101420861A CN100568382C (zh) | 2007-08-22 | 2007-08-22 | 先进先出存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101420861A CN100568382C (zh) | 2007-08-22 | 2007-08-22 | 先进先出存储器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101110259A true CN101110259A (zh) | 2008-01-23 |
CN100568382C CN100568382C (zh) | 2009-12-09 |
Family
ID=39042278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101420861A Active CN100568382C (zh) | 2007-08-22 | 2007-08-22 | 先进先出存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100568382C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101552041A (zh) * | 2009-05-12 | 2009-10-07 | 北京中星微电子有限公司 | 一种fifo存储单元及其实现方法 |
CN102654827A (zh) * | 2011-03-02 | 2012-09-05 | 安凯(广州)微电子技术有限公司 | 一种先进先出缓冲器及缓存数据的方法 |
CN105511835A (zh) * | 2014-09-24 | 2016-04-20 | 深圳市中兴微电子技术有限公司 | 一种异步fifo控制器及防止异步fifo缓存数据溢出的方法 |
CN113434545A (zh) * | 2021-06-02 | 2021-09-24 | 中科驭数(北京)科技有限公司 | 数据缓存装置及数据提供方法 |
CN115604198A (zh) * | 2022-11-29 | 2023-01-13 | 珠海星云智联科技有限公司(Cn) | 一种网卡控制器、网卡控制方法、设备及介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR950015207B1 (ko) * | 1993-10-28 | 1995-12-23 | 대우전자주식회사 | 다단 선입 선출 버퍼 제어장치 |
KR0123239B1 (ko) * | 1994-07-06 | 1997-11-26 | 김주용 | 선입선출방식(fifo) 메모리 |
CN1226746C (zh) * | 2001-03-30 | 2005-11-09 | 矽统科技股份有限公司 | 高速多路先进先出存储器结构 |
-
2007
- 2007-08-22 CN CNB2007101420861A patent/CN100568382C/zh active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101552041A (zh) * | 2009-05-12 | 2009-10-07 | 北京中星微电子有限公司 | 一种fifo存储单元及其实现方法 |
CN102654827A (zh) * | 2011-03-02 | 2012-09-05 | 安凯(广州)微电子技术有限公司 | 一种先进先出缓冲器及缓存数据的方法 |
CN102654827B (zh) * | 2011-03-02 | 2014-05-28 | 安凯(广州)微电子技术有限公司 | 一种先进先出缓冲器及缓存数据的方法 |
CN105511835A (zh) * | 2014-09-24 | 2016-04-20 | 深圳市中兴微电子技术有限公司 | 一种异步fifo控制器及防止异步fifo缓存数据溢出的方法 |
CN105511835B (zh) * | 2014-09-24 | 2019-11-15 | 深圳市中兴微电子技术有限公司 | 一种异步fifo控制器及防止异步fifo缓存数据溢出的方法 |
CN113434545A (zh) * | 2021-06-02 | 2021-09-24 | 中科驭数(北京)科技有限公司 | 数据缓存装置及数据提供方法 |
CN115604198A (zh) * | 2022-11-29 | 2023-01-13 | 珠海星云智联科技有限公司(Cn) | 一种网卡控制器、网卡控制方法、设备及介质 |
CN115604198B (zh) * | 2022-11-29 | 2023-03-10 | 珠海星云智联科技有限公司 | 一种网卡控制器、网卡控制方法、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100568382C (zh) | 2009-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101231877B (zh) | 存取n端口存储器m个存储器地址的方法及n端口存储器 | |
CN107133011B (zh) | 一种示波记录仪的多通道数据存储方法 | |
CN100568382C (zh) | 先进先出存储器 | |
CN103714038B (zh) | 一种数据处理方法和装置 | |
CN101777031B (zh) | 直接存储器存取控制器以及数据传输方法 | |
CN101512362A (zh) | 自动测试设备的数字波形产生及测量 | |
CN102931994B (zh) | 应用于信号处理芯片的高速信号采样和同步的架构及方法 | |
CN101236774B (zh) | 单端口存储器实现多端口存储功能的装置和方法 | |
CN102497575B (zh) | 一种多片面阵ccd的筛选测试系统 | |
CN1892528A (zh) | 产生数字信号处理器和存储器的时钟信号的电路和方法 | |
CN101825997A (zh) | 一种异步先入先出存储器 | |
CN102004626B (zh) | 双口存储器 | |
CN1201234C (zh) | 多通道先进先出数据缓冲存储装置 | |
CN103309981A (zh) | 一种具有高存储效率的adc数据组织系统及其方法 | |
CN102117478B (zh) | 批量图像数据的实时处理方法及系统 | |
CN102118304B (zh) | 一种信元交换方法和装置 | |
US7072998B2 (en) | Method and system for optimized FIFO full conduction control | |
CN101277378A (zh) | 图像缩放装置及其线缓冲器 | |
CN102142269A (zh) | 半导体存储装置 | |
CN100385387C (zh) | 一种提高ram利用效率的方法 | |
US7093051B2 (en) | Dynamic input/output: configurable data bus for optimizing data throughput | |
CN106445836B (zh) | 异步数据读写方法、系统及装置 | |
CN107293318B (zh) | 一种可配位宽的嵌入式存储器 | |
CN202332303U (zh) | 一种多通道实时直读存储器结构 | |
CN101452695B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |