CN117116323A - 对单端口sram进行读写的方法、fifo模块、芯片 - Google Patents

对单端口sram进行读写的方法、fifo模块、芯片 Download PDF

Info

Publication number
CN117116323A
CN117116323A CN202311025639.0A CN202311025639A CN117116323A CN 117116323 A CN117116323 A CN 117116323A CN 202311025639 A CN202311025639 A CN 202311025639A CN 117116323 A CN117116323 A CN 117116323A
Authority
CN
China
Prior art keywords
write
read
port sram
data
current
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
Application number
CN202311025639.0A
Other languages
English (en)
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.)
Shenzhen Yunbao Intelligent Co ltd
Original Assignee
Shenzhen Yunbao Intelligent Co ltd
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 Shenzhen Yunbao Intelligent Co ltd filed Critical Shenzhen Yunbao Intelligent Co ltd
Priority to CN202311025639.0A priority Critical patent/CN117116323A/zh
Publication of CN117116323A publication Critical patent/CN117116323A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/419Read-write [R-W] circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Static Random-Access Memory (AREA)

Abstract

本申请公开了一种FIFO模块,其包括:选路器,用于接收写使能信号及写数据,并判断本周期是否存在读写冲突,在不存在读写冲突时,将写数据传送给写控制器;在存在读写冲突时,将写数据传送给数据寄存器;数据寄存器,用于寄存选路器发送的写数据,并在下一周期发送给写控制器;写控制器,用于接收来自选路器或数据寄存器的写数据,并根据当前的写地址确定需要写入的第一单端口SRAM或第二单端口SRAM,进行乒乓式写操作处理;读控制器,用于在接收到读使能信号的情况下,根据当前的读地址确定需要读取的第一单端口SRAM或第二单端口SRAM,进行乒乓式读取操作处理。本申请还公开了相应的对单端口SRAM进行读写的方法及芯片。实施本申请,可以在实现同拍读写的同时,减少面积资源和功耗。

Description

对单端口SRAM进行读写的方法、FIFO模块、芯片
技术领域
本申请涉及存储技术领域,特别是涉及一种对单端口SRAM(Single Port SRAM,SPSRAM)进行读写的方法、FIFO模块及芯片。
背景技术
在需要高带宽和低延迟的应用场景的先入先出队列(First in First out,FIFO)模块中,常常使用双端口静态随机存储器(Two Port SRAM,TP SRAM)来实现对数据的存储,以节省面积资源,并实现读写满带宽需求。
如图1所示,示出了现有技术中一个典型的TP SRAM的FIFO模块实现架构图,对于TP SRAM,其存在两组接口(读口和写口),这两个接口相互独立,可以独立操作,因此可以分别使用一个写控制器和读控制器来控制写地址和读地址的保存。从而TP SRAM可以实现同拍读写,即在同一个时钟周期内(即同拍内)进行读和写操作,也就是在同一个时钟上升沿或下降沿中同时进行读取和写入数据的操作。TP SRAM的这种读写方式可以减少内存访问的延迟和提高数据吞吐量,特别适用于需要高带宽和低延迟的应用场景。
但是,双端口SRAM相对于只存在一组接口的单端口SRAM,由于需要额外的读写电路、控制逻辑更复杂等原因,其面积和功耗都比相同规格大小的单端口SRAM要大很多,没法充分压缩面积资源。而对于同一个单端口SRAM,由于只存在一组接口,其在同一拍只能进行写操作或读操作,无法实现在同一拍同时进行读写操作。
故在现有技术中,对于一些需要高带宽和低延迟的应用场景的FIFO模块中,如果需要节省芯片面积,现有的技术均存在不足之处。
发明内容
本申请所要解决的技术问题在于,提供一种在FIFO模块中对单端口SRAM进行读写的方法、FIFO模块及芯片,可以在实现同拍读写的同时,减少面积资源和功耗。
为解决上述技术问题,作为本申请的一方面,提供一种FIFO模块,其至少包括选路器、数据寄存器、写控制器、读控制器、第一单端口SRAM和第二单端口SRAM;其中:
选路器,用于接收写使能信号及写数据,并判断本周期是否存在读写冲突,在不存在读写冲突时,将写数据传送给写控制器;在存在读写冲突时,将写数据传送给数据寄存器;
数据寄存器,用于寄存选路器发送的写数据,并在下一周期发送给写控制器;
写控制器,用于接收来自选路器或数据寄存器的写数据,并根据当前的写地址确定需要写入的第一单端口SRAM或第二单端口SRAM,进行乒乓式写操作处理;
读控制器,用于在接收到读使能信号的情况下,根据当前的读地址确定需要读取的第一单端口SRAM或第二单端口SRAM,进行乒乓式读取操作处理。
其中,所写控制器进一步包括:
写地址寄存器,用于保存当前的写地址;
写SRAM确定单元,用于根据写地址寄存器中当前写地址值的最后一位的值,确定本次写操作对应的第一单端口SRAM或第二单端口SRAM;
写入操作单元,用于将写数据写入所确定的第一单端口SRAM或第二单端口SRAM中;
写地址寄存器处理单元,用于在所述FIFO模块收到写使能信号时,将写地址寄存器中的当前写地址值加1。
其中,所述读控制器进一步包括:
读地址寄存器,用于保存当前的读地址;
读SRAM确定单元,用于根据所述读地址寄存器中地址值的最后一位的值,确定本次读操作对应的第一单端口SRAM或第二单端口SRAM;
读取操作单元,用于从所确定的第一单端口SRAM或第二单端口SRAM中读出数据;
读地址寄存器处理单元,用于在所述FIFO模块收到读使能信号时,将所述读地址寄存器中地址值加1。
其中,所述选路器进一步采用下述方式进行冲突判断:
如果本周期中同时接收到写使能和读使能信号,将当前写地址值和读地址进行比较,如果两者的最后一位相同,则判定存在读写冲突。
其中,所述写SRAM确定单元进一步包括:
第一确定单元,用于接收到来自选路器的写操作时,根据所述写地址寄存器中当前写地址值的最后一位的值,确定本次写操作对应的第一单端口SRAM或第二单端口SRAM;
第二确定单元,用于接收到来自数据寄存器的写操作时,将写地址寄存器中的当前写地址值减1,根据当前写地址值减1后得到的地址值的最后一位的值确定要写入为第一单端口SRAM或第二单端口SRAM中的一个。
其中,所述第一单端口SRAM和第二单端口SRAM的深度相同,均为FIFO模块深度的一半;所述写地址寄存器的写地址值和读地址寄存器的读地址值均在0至FIFO模块深度-1之间循环。
其中,在存在读写冲突时,所述读控制器优先执行读操作。
相应地,本申请的另一方面,还提供一种对单端口SRAM进行读写的方法,应用于如前述的FIFO模块中,所述方法至少包括:
读控制器在接收到读使能信号的情况下,根据当前的读地址确定需要读取的第一单端口SRAM或第二单端口SRAM,进行乒乓式读取操作处理;
选路器接收写使能信号及写数据,并判断本周期是否存在读写冲突,在不存在读写冲突时,将写数据传送给写控制器;在存在读写冲突时,将写数据传送给数据寄存器;其中,所述数据寄存器寄存选路器所发送的写数据,并在下一周期发送给写控制器;
写控制器接收来自选路器或数据寄存器的写数据,并根据当前的写地址确定需要写入的第一单端口SRAM或第二单端口SRAM,进行乒乓式写操作处理。
其中,进一步包括:
读控制器在接收到读使能信号时,将读控制器内的读地址寄存器中当前读地址值加1;
所述选路器接收写使能信号时,将写控制器内的写地址寄存器中当前写地地址加1。
其中,所述读控制器在接收到读使能信号的情况下,根据当前的读地址确定需要读取的第一单端口SRAM或第二单端口SRAM,进行乒乓式读取操作处理,进一步包括:
根据所述读地址寄存器中当前读地址值的最后一位的值,确定本次读操作对应的第一单端口SRAM或第二单端口SRAM;
从所确定的第一单端口SRAM或第二单端口SRAM中读出数据。
其中,所述判断当前周期内是否存在读写冲突,进一步包括:
如果本周期中同时接收到写使能和读使能信号,将当前写地址值和读地址进行比较,如果两者的最后一位相同,则判定存在读写冲突。
其中,写控制器接收来自选路器或数据寄存器的写数据,并根据当前的写地址确定需要写入的第一单端口SRAM或第二单端口SRAM,进行乒乓式写操作处理,进一步包括:
当接收到来自选路器的写数据时,根据所述写地址寄存器中当前写地址值的最后一位的值,确定本次写操作对应的第一单端口SRAM或第二单端口SRAM;
将接收自选路器的写数据写入所确定的第一单端口SRAM或第二单端口SRAM中。
其中,写控制器接收来自选路器或数据寄存器的写数据,并根据当前的写地址确定需要写入的第一单端口SRAM或第二单端口SRAM,进行乒乓式写操作处理,进一步包括
当接收到来自数据寄存器的写数据时,将写地址寄存器中的当前写地址值减1,根据当前写地址值减1后得到的地址值的最后一位的值确定要写入为第一单端口SRAM或第二单端口SRAM中的一个;
将所述来自数据寄存器的写数据写入所确定的第一单端口SRAM或第二单端口SRAM中。
其中,所述第一单端口SRAM和第二单端口SRAM的深度相同,均为FIFO模块深度的一半;所述写地址寄存器的写地址值和读地址寄存器的读地址值均在0至FIFO模块深度-1之间循环。
作为本申请的再一方面,还提供一种芯片,其上设置有如前述的FIFO模块。
实施本申请,具有如下的有益效果:
本申请提供一种对单端口SRAM进行读写的方法、FIFO模块、芯片,通过采用两个同样深度的单端口SRAM,利用乒乓读/写的方式进行读写操作;且在同一周期对同一单端口SRAM存在读写冲突时,优先处理读操作,并将写数据寄存于数据寄存器中,而在下一周期中,将所述寄存的写数据写入上一周期所确定的单端口SRAM中。实施本申请,能实现同拍读写的功能,可以采用两个单端口SRAM替代现有技术中双端口SRAM,可以实现读写满带宽和低延迟性能,并能降低FIFO存储器的成本;
同时,使用两块单端口SRAM相对于一块双倍深度的双端口SRAM,由于在该种情况下,两块单端口SRAM的面积之和小于双倍深度的双端口SRAM的面积,在达到与TP SRAM实现的FIFO相同读写性能的情况下,能降低大规模集成电路的面积和功耗。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,根据这些附图获得其他的附图仍属于本申请的范畴。
图1为现有技术中一种双端口SRAM的FIFO模块实现架构图;
图2为本申请提供的一种FIFO模块的一个实施例的结构示意图;
图3为图2中写控制器的结构示意图;
图4为图2中读控制器的结构示意图;
图5为图4中写SRAM确定单元的结构示意图;
图6为本申请提供的一种对单端口SRAM进行读写的方法的一个实施例的主流程示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。
如图2所示,示出了本申请提供的一种FIFO模块的一个实施例的结构示意图;请参照图3至图6所示,在本实施例中,所述FIFO模块其至少包括有选路器1、数据寄存器2、写控制器3、读控制器4、第一单端口SRAM 5(即SP SRAM0)和第二单端口SRAM 6(即SP SRAM1),其中:
选路器1,用于接收写使能信号及写数据,并判断本周期是否存在读写冲突,在不存在读写冲突时,将写数据传送给写控制器;在存在读写冲突时,将写数据传送给数据寄存器;
数据寄存器2,用于寄存选路器发送的写数据,并在下一周期发送给写控制器;
写控制器3,用于接收来自选路器或数据寄存器的写数据,并根据当前的写地址确定需要写入的第一单端口SRAM 5或第二单端口SRAM 6,进行乒乓式写操作处理;
读控制器4,用于在接收到读使能信号的情况下,根据当前的读地址确定需要读取的第一单端口SRAM 5或第二单端口SRAM 6,进行乒乓式读取操作处理。
更具体地,如图3所示,在一个具体的例子中,所述写控制器3进一步包括:
写地址寄存器30,用于保存当前的写地址;
写SRAM确定单元31,用于根据本次写操作对应的写地址寄存器中当前写地址值的最后一位的值,确定本次写操作对应的第一单端口SRAM或第二单端口SRAM;其中,在一个例子中,最后一位的值为0时,其对应的写入SRAM为第一单端口SRAM或第二单端口SRAM中的一个,最后一位的值为1时,其对应的写入SRAM为第一单端口SRAM或第二单端口SRAM中另一个;
写入操作单元32,用于将写数据写入所确定的第一单端口SRAM或第二单端口SRAM中。
写地址寄存器处理单元33,用于在所述FIFO模块收到写使能信号时,将写地址寄存器中当前写地址值加1,将加1后的地址值作为FIFO模块下一次接收到的请求对应的写地址。
更具体地,如图4所示,在一个具体的例子中,所述读控制器4进一步包括:
读地址寄存器40,用于保存当前的读地址;
读SRAM确定单元41,用于根据所述读地址寄存器中当前读地址值的最后一位的值,确定本次读操作对应的第一单端口SRAM 5或第二单端口SRAM 6;其中,在一个例子中,最后一位的值为0时,其对应的读出SRAM为第一单端口SRAM或第二单端口SRAM中一个,最后一位的值为1时,其对应的读出SRAM为第一单端口SRAM或第二单端口SRAM中另一个;
读取操作单元42,用于从所确定的第一单端口SRAM或第二单端口SRAM中读出数据;
读地址寄存器处理单元43,用于在所述FIFO模块收到读使能信号时,将所述读地址寄存器中当前读地址值加1,并保存加1后的地址值;
在一具体实施方式中,读控制器4将当前读地址的最后一位发送给选路器,写控制器3将当前写地址的最后一位发送给选路器。
其中,所述选路器1进一步采用下述方式进行冲突判断:
如果本周期中同时接收到写使能和读使能信号,获取所述写地址寄存器中最新的当前写地址值和读地址寄存器中最新的当前读地址值,将两者相比较,如果两者的最后一位相同,则判定存在读写冲突。
在存在读写冲突时,所述读控制器4优先执行读操作,而选路器1将存在冲突的写数据寄存到所述数据寄存器2中。
可以理解的是,写控制器3可以对来自选路器或数据寄存器的写数据进行区别处理,具体地通过所述写SRAM确定单元31来实现,如图4所示,在一个例子中,所述写SRAM确定单元31进一步包括:
第一确定单元310,用于接收到来自选路器的写操作时,根据所述写地址寄存器中当前写地址值的最后一位的值,确定本次写操作对应的第一单端口SRAM 5或第二单端口SRAM 6;
第二确定单元311,用于接收到来自数据寄存器的写操作时,将写地址寄存器中的当前写地址值减1,根据当前写地址值减1后得到的地址值的最后一位的值确定要写入为第一单端口SRAM或第二单端口SRAM中的一个。
其中,所述第一单端口SRAM 5和第二单端口SRAM 5的深度相同,均为FIFO模块深度的一半;所述写地址寄存器的写地址值和读地址寄存器的读地址值均在0至(FIFO模块深度-1)之间循环。
为了进一步理解本申请,下述将结合图6对本申请的细节进行详细描述。
如图6所示,示出了本申请提供的一种对单端口SRAM进行读写的方法的一个主流程示意图,其应用于如图2至图5所描述的FIFO模块中。具体地,在本实施例中,本申请提供的方法至少包括:
步骤S10,读控制器在接收到读使能信号的情况下,根据当前的读地址确定需要读取的第一单端口SRAM或第二单端口SRAM,进行乒乓式读取操作处理;
步骤S11,选路器接收写使能信号及写数据,并判断本周期是否存在读写冲突,在不存在读写冲突时,将写数据传送给写控制器;在存在读写冲突时,将写数据传送给数据寄存器;其中,所述数据寄存器寄存选路器所发送的写数据,并在下一周期发送给写控制器;
步骤S12,写控制器接收来自选路器或数据寄存器的写数据,并根据当前的写地址确定需要写入的第一单端口SRAM或第二单端口SRAM,进行乒乓式写操作处理。
在本申请的具体例子中,进一步包括:
所述选路器接收写使能信号时,将写控制器内的写地址寄存器中当前写地地址加1。具体地,在所述FIFO模块收到写使能信号(wr_en)时,将写控制器内设置的写地址寄存器(wr_addr)中地址值加1;在本实施例中,所述第一单端口SRAM和第二单端口SRAM的深度相同,均为FIFO模块深度的一半。所述写地址寄存器的地址范围在0到(FIFO模块深度-1)之间循环。当某一拍,该写地址寄存器的地址为FIFO模块深度-1时,则在下一拍跳转至0,继续循环。可以理解的是,FIFO的深度和SP SRAM的深度都是指存储器结构中可容纳数据的位置数量。它们通常以存储元素的个数来表示。
读控制器在接收到读使能信号时,将读控制器内的读地址寄存器中当前读地址值加1;在所述FIFO模块收到读使能信号(rd_en)时,将读控制器内设置的读地址寄存器(rd_addr)中地址值加1;同样地,所述读地址寄存器的地址范围在0到(FIFO模块深度-1)之间循环。当某一拍,该读地址寄存器的地址为FIFO模块深度-1时,则在下一拍跳转至0,继续循环。
更具体地,在一个例子中,所述步骤S10进一步包括:
根据所述读地址寄存器中当前读地址值的最后一位(rd_addr[0])的值,确定本次读操作对应的第一单端口SRAM或第二单端口SRAM;其中,在一个例子中,最后一位的值为0时,其对应的读出SRAM为第一单端口SRAM或第二单端口SRAM中一个,例如,对应的为SPSRAM0;最后一位的值为1时,其对应的读出SRAM为第一单端口SRAM或第二单端口SRAM中另一个,例如在该例子中,对应的为SP SRAM1;
从所确定的第一单端口SRAM或第二单端口SRAM中读出数据。在本例子中,如果wr_addr[0]的值为0,则将读请求(sp0_rd)发给SP SRAM0,并从其中读出数据(sp0_wdata);如果wr_addr[0]的值为1,则将读请求(sp1_rd)发给SP SRAM1,并从其中读出数据(sp1_wdata),由于rd_addr[0]的值一直在0和1之间变化,从而可以实现乒乓式的读取数据。
同时需要注意的时,当拍即发起对应SP SRAM的读请求,SP SRAM的时延一般可以灵活参数化配置,等待参数化时延后,该模块将收到的SRAM数据(rdata)和读有效信号(rd_vld)送出FIFO。该模块对读不做任何堵塞限制,因此读请求可以立即送往对应的SRAM实体,延时参数化时延后得到读数据和读有效信号,因此外部看起来任然可以拍拍读。外部看起来该FIFO的读行为与TP SRAM FIFO一致。
其中,配置SP SRAM的时延是为了确保读操作的正确性和可靠性。由于SRAM是一种基于存储电荷的静态随机存取存储器,读操作需要一定的时钟周期来完成数据的读取。在SP SRAM读控制器中,设置SP SRAM的时延可以调整读操作与读有效信号的相对时序,以保证读操作在正确的时机获取到SRAM中的数据并将其送出FIFO。需要注意的是,时延的具体设置取决于具体的设计和SRAM的性能参数。通常,时延可以通过布线长度、缓冲器的选择、时钟频率等参数进行调整。
由于单端口SRAM同一拍只能处理一种操作(读或写操作),如果在一个周期(即一拍)中,同时出现对某一单端口SRAM进行读写时,则会出现读写冲突,故在本申请中需要制定读写冲突检测和规避的措施,下述将描述具体的实现过程。
更具体地,在一个例子中,在所述步骤S11中,所述判断当前周期内是否存在读写冲突,进一步包括:
如果本周期中同时接收到写使能和读使能信号,获取所述写地址寄存器中最新的当前写地址值和读地址寄存器中最新的当前读地址值,将两者相比较,如果两者的最后一位相同,则判定存在读写冲突。
具体地,例如在一种情形下,在同一周期中,同时收到写使能信号(wr_en)和读使能信号(rd_en)后,对当前的wr_add和rd_add进行加1处理,如果此时wr_add[0]和rd_add[0]的值均为0(或1),说明此时对SP SRAM0存在读写冲突,此时优先处理读操作,继续进行读取的流程,而将写数据(wdata)缓存至数据寄存器中。
更具体地,在一个例子中,在所述步骤S12进一步包括:
步骤S120,当接收到来自选路器的写数据时,根据所述写地址寄存器中当前写地址值的最后一位(wr_addr[0])的值,确定本次写操作对应的第一单端口SRAM或第二单端口SRAM;例如,在一个例子中,最后一位的值为0时,其对应的写入SRAM为第一单端口SRAM或第二单端口SRAM中一个,例如对应的为SP SRAM0;最后一位的值为1时,其对应的写入SRAM为第一单端口SRAM或第二单端口SRAM中另一个,在该例子中,对应的为SP SRAM1;简单来说,wr_addr[0]的值用作第一单端口SRAM或第二单端口SRAM的片选信号(sp0_cs、sp1_cs);
步骤S121,将接收自选路器的写数据写入所确定的第一单端口SRAM或第二单端口SRAM中。
具体地,将接收自选路器的写数据(wdata_cuur)写入所确定的第一单端口SRAM或第二单端口SRAM中,在本例子中,如果wr_addr[0]的值为0,则确定将写数据(sp0_wdata)写入SP SRAM0,如果wr_addr[0]的值为1,则确定将写数据(sp1_wdata)写入SP SRAM1,由于wr_addr[0]的值一直在0和1之间变化,从而可以实现乒乓式的写入。
而在另外一种情形下,在一个例子中,在所述步骤S12进一步包括
步骤S122,当接收到来自数据寄存器的写数据时,将写地址寄存器中的当前写地址值减1,根据当前写地址值减1后得到的地址值的最后一位的值确定要写入为第一单端口SRAM或第二单端口SRAM中的一个;通过上述的减1操作,获取所述写数据在上周期所对应的写地址寄存器中地址值,根据所述写地址寄存器中地址值的最后一位的值确定要写入为第一单端口SRAM或第二单端口SRAM中的一个;具体地,获得上一周期wr_en_dly所对应的wr_add[0]的值,在上一步骤S11所举的例子中,其值为0,故所确定的为第一单端口SRAM(即SPSRAM0);将所述写数据(wdata_dly)写入所确定的第一单端口SRAM或第二单端口SRAM中,在该例子中,将所述写数据(wdata_dly)写入SP SRAM0中。
步骤S123,将所述来自数据寄存器的写数据写入所确定的第一单端口SRAM或第二单端口SRAM中。
可以理解的是,在本申请中,读的优先级比写的优先级更高。故读写冲突最早发生在第三拍,如果第三拍发生冲突,由于在两单端口SRAM中各缓存了1拍数据,此时可以进行正常的读操作,因而不会导致读延时(对外界来说无法感知读延时)。
而对于写操作,由于冲突导致写数据的延时为1拍,但在下一周期中会继续写入其正确的单端口SRAM中,只会产生延时,而不会产生写数据的混乱。
更具体地,读写冲突又可以细分为如下的场景:
仅有第一拍冲突的场景:例如,写侧发来两个写操作WR1 WR2,若WR1冲突(即此时所写SP SRAM正在被读侧读取),则WR1的写数据先传送到数据寄存器缓存一拍,下一拍再写将缓存了写数据写入对应的SP SRAM(如SP SRAM0)中;而WR2写命令不冲突,直接写SPSRAM1中;即数据寄存器通路过来的写数据使用上一拍的addr[0]确定要写入的SP SRAM;选路器直通过来的写数据,使用当前拍的addr[0]来确定要写入的SP SRAM。因此当只发生一拍读写冲突,并且下一拍为写数据时,写控制器在下一周期会同拍分别对两块SP SRAM进行写操作;写控制器可以保证连续的两拍写操作一定会以乒乓的方式交替写入这两个SPSRAM。
连续冲突场景:如果写侧连续发来的写操作,每一拍都有冲突,则每一拍写操作都先发送到数据寄存器缓存一拍,再最终写到对应的SP SRAM中,若当拍写发生了冲突,而滞后一拍写一定不会再冲突。简单来说,若持续发生读写冲突,则写数据会一致流经数据寄存器,这样影响仅仅是写数据滞后一拍写进对应的SP SRAM,不会造成写断流,写操作仍然可以实现拍拍写。外部看起来该FIFO的写行为与现有技术中TP SRAM FIFO中一致,只是延迟一拍,基本无法感知。
本申请所采用的方法,可以减少FIFO模块的面积资源,在具体的应用例子中,一块TP SRAM所占面积资源大约是两块一半其大小的SP SRAM所占总面积资源的1.5倍左右。故本申请所提供的方法中,通过设置两块同样深度的SP SRAM来替代其两倍深度的TP SRAM,在能实现同拍读写的功能的同时,可以显著减少FIFO模块的整体面积和功耗。
更多细节,可以参考并结合前述对图2至图5的描述,在此不进行赘述。
作为本申请的再一方面,还提供一种芯片,其上设置有如前述的FIFO模块。更多细节,可参考并结合前述对图3至图6所描述的内容,在此不进行赘述。
作为本申请的再一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,述计算机程序被处理器执行时实现如前述的方法的步骤。更多细节,可参考并结合前述对图2所描述的内容,在此不进行赘述。
实施本申请,具有如下的有益效果:
本申请提供一种对单端口SRAM进行读写的方法、FIFO模块及芯片,通过采用两个同样深度的单端口SRAM,利用乒乓读/写的方式进行读写操作;且在同一周期对同一单端口SRAM存在读写冲突时,优先处理读操作,并将写数据寄存于数据寄存器中,并在下一周期中,将所述寄存的写数据写入上一周期所确定的单端口SRAM中。实施本申请,可以采用两个单端口SRAM替代现有技术中双端口SRAM,能实现同拍读写的功能,可以实现读写满带宽和低延迟性能,并能降低FIFO存储器的成本;
同时,使用两块单端口SRAM相对于一块双倍深度的双端口SRAM,在达到与TP SRAM实现的FIFO相同读写性能的情况下,能降低大规模集成电路的面积和功耗。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
以上所揭露的仅为本申请一种较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (15)

1.一种FIFO模块,其特征在于,至少包括选路器、数据寄存器、写控制器、读控制器、第一单端口SRAM和第二单端口SRAM;其中:
选路器,用于接收写使能信号及写数据,并判断本周期是否存在读写冲突,在不存在读写冲突时,将写数据传送给写控制器;在存在读写冲突时,将写数据传送给数据寄存器;
数据寄存器,用于寄存选路器发送的写数据,并在下一周期发送给写控制器;
写控制器,用于接收来自选路器或数据寄存器的写数据,并根据当前的写地址确定需要写入的第一单端口SRAM或第二单端口SRAM,进行乒乓式写操作处理;
读控制器,用于在接收到读使能信号的情况下,根据当前的读地址确定需要读取的第一单端口SRAM或第二单端口SRAM,进行乒乓式读取操作处理。
2.如权利要求1所述的FIFO模块,其特征在于,所述写控制器进一步包括:
写地址寄存器,用于保存当前的写地址;
写SRAM确定单元,用于根据写地址寄存器中当前写地址值的最后一位的值,确定本次写操作对应的第一单端口SRAM或第二单端口SRAM;
写入操作单元,用于将写数据写入所确定的第一单端口SRAM或第二单端口SRAM中;
写地址寄存器处理单元,用于在所述FIFO模块收到写使能信号时,将写地址寄存器中的当前写地址值加1。
3.如权利要求2所述的FIFO模块,其特征在于,所述读控制器进一步包括:
读地址寄存器,用于保存当前的读地址;
读SRAM确定单元,用于根据所述读地址寄存器中当前读地址值的最后一位的值,确定本次读操作对应的第一单端口SRAM或第二单端口SRAM;
读取操作单元,用于从所确定的第一单端口SRAM或第二单端口SRAM中读出数据;
读地址寄存器处理单元,用于在所述FIFO模块收到读使能信号时,将所述读地址寄存器中当前读地址值加1。
4.如权利要求3所述的FIFO模块,其特征在于,所述选路器进一步采用下述方式进行冲突判断:
如果本周期中同时接收到写使能和读使能信号,将当前写地址值和读地址进行比较,如果两者的最后一位相同,则判定存在读写冲突。
5.如权利要求4所述的FIFO模块,其特征在于,所述写SRAM确定单元进一步包括:
第一确定单元,用于接收到来自选路器的写操作时,根据所述写地址寄存器中当前写地址值的最后一位的值,确定本次写操作对应的第一单端口SRAM或第二单端口SRAM;
第二确定单元,用于接收到来自数据寄存器的写操作时,将写地址寄存器中的当前写地址值减1,根据当前写地址值减1后得到的地址值的最后一位的值确定要写入为第一单端口SRAM或第二单端口SRAM中的一个。
6.如权利要求1至5任一项所述的FIFO模块,其特征在于,所述第一单端口SRAM和第二单端口SRAM的深度相同,均为FIFO模块深度的一半;所述写地址寄存器的写地址值和读地址寄存器的读地址值均在0至FIFO模块深度-1之间循环。
7.如权利要求6所述的FIFO模块,其特征在于,在存在读写冲突时,所述读控制器优先执行读操作。
8.一种对单端口SRAM进行读写的方法,应用于如权利要求1至7任一项所述的FIFO模块中,其特征在于,所述方法至少包括:
读控制器在接收到读使能信号的情况下,根据当前的读地址确定需要读取的第一单端口SRAM或第二单端口SRAM,进行乒乓式读取操作处理;
选路器接收写使能信号及写数据,并判断本周期是否存在读写冲突,在不存在读写冲突时,将写数据传送给写控制器;在存在读写冲突时,将写数据传送给数据寄存器;其中,所述数据寄存器寄存选路器所发送的写数据,并在下一周期发送给写控制器;
写控制器接收来自选路器或数据寄存器的写数据,并根据当前的写地址确定需要写入的第一单端口SRAM或第二单端口SRAM,进行乒乓式写操作处理。
9.如权利要求8所述的方法,其特征在于,进一步包括:
读控制器在接收到读使能信号时,将读控制器内的读地址寄存器中当前读地址值加1;
所述选路器接收写使能信号时,将写控制器内的写地址寄存器中当前写地地址加1,并保存。
10.如权利要求9所述的方法,其特征在于,所述读控制器在接收到读使能信号的情况下,根据当前的读地址确定需要读取的第一单端口SRAM或第二单端口SRAM,进行乒乓式读取操作处理,进一步包括:
根据所述读地址寄存器中当前读地址值的最后一位的值,确定本次读操作对应的第一单端口SRAM或第二单端口SRAM;
从所确定的第一单端口SRAM或第二单端口SRAM中读出数据。
11.如权利要求10所述的方法,其特征在于,所述判断当前周期内是否存在读写冲突,进一步包括:
如果本周期中同时接收到写使能和读使能信号,将当前写地址值和读地址进行比较,如果两者的最后一位相同,则判定存在读写冲突。
12.如权利要求11所述的方法,其特征在于,写控制器接收来自选路器或数据寄存器的写数据,并根据当前的写地址确定需要写入的第一单端口SRAM或第二单端口SRAM,进行乒乓式写操作处理,进一步包括:
当接收到来自选路器的写数据时,根据所述写地址寄存器中当前写地址值的最后一位的值,确定本次写操作对应的第一单端口SRAM或第二单端口SRAM;
将接收自选路器的写数据写入所确定的第一单端口SRAM或第二单端口SRAM中。
13.如权利要求11所述的方法,其特征在于,写控制器接收来自选路器或数据寄存器的写数据,并根据当前的写地址确定需要写入的第一单端口SRAM或第二单端口SRAM,进行乒乓式写操作处理,进一步包括
当接收到来自数据寄存器的写数据时,将写地址寄存器中的当前写地址值减1,根据当前写地址值减1后得到的地址值的最后一位的值确定要写入为第一单端口SRAM或第二单端口SRAM中的一个;
将所述来自数据寄存器的写数据写入所确定的第一单端口SRAM或第二单端口SRAM中。
14.如权利要求8至13任一项所述的方法,其特征在于,所述第一单端口SRAM和第二单端口SRAM的深度相同,均为FIFO模块深度的一半;所述写地址寄存器的写地址值和读地址寄存器的读地址值均在0至FIFO模块深度-1之间循环。
15.一种芯片,其特征在于,其上设置有如权利要求1至7任一项所述的FIFO模块。
CN202311025639.0A 2023-08-15 2023-08-15 对单端口sram进行读写的方法、fifo模块、芯片 Pending CN117116323A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311025639.0A CN117116323A (zh) 2023-08-15 2023-08-15 对单端口sram进行读写的方法、fifo模块、芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311025639.0A CN117116323A (zh) 2023-08-15 2023-08-15 对单端口sram进行读写的方法、fifo模块、芯片

Publications (1)

Publication Number Publication Date
CN117116323A true CN117116323A (zh) 2023-11-24

Family

ID=88812058

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311025639.0A Pending CN117116323A (zh) 2023-08-15 2023-08-15 对单端口sram进行读写的方法、fifo模块、芯片

Country Status (1)

Country Link
CN (1) CN117116323A (zh)

Similar Documents

Publication Publication Date Title
US8225064B2 (en) Storage region allocation system, storage region allocation method, and control apparatus
US7349285B2 (en) Dual port memory unit using a single port memory core
JP2007525766A (ja) マルチポートメモリシステムにおける衝突検出
JPH02227765A (ja) デジタル・コンピユータのデータ転送装置
JPH02227766A (ja) デジタル・コンピユータのデータ転送装置
US9026746B2 (en) Signal control device and signal control method
EP3082048B1 (en) Memory configured to provide simultaneous read/write access to multiple banks
CN115905086A (zh) 基于axi同步读写单口sram的控制方法及控制器
CN113109778A (zh) 一种基于中断响应机制的多体制雷达预处理实现方法
US8751853B2 (en) Quad-data rate controller and implementing method thereof
US20030005344A1 (en) Synchronizing data with a capture pulse and synchronizer
CN117116323A (zh) 对单端口sram进行读写的方法、fifo模块、芯片
US5247640A (en) Dual access control system including plural magnetic disk control units and contention control circuitry
US7395197B2 (en) Verification method and system for logic circuit
CN108108148A (zh) 一种数据处理方法和装置
CN115527579A (zh) Fifo存储器读写数据的方法、装置、芯片及介质
CN111414148A (zh) 面向高性能处理器的混合型fifo数据存储方法及装置
CN100354814C (zh) 存储器写入方法与控制装置
JP2004127305A (ja) メモリ制御装置
US8131893B2 (en) Memory device that mediates mutual communication among a pluraliity of CPUs
WO2024031798A1 (zh) 高带宽ddr双列直插式存储模块、存储系统及其操作方法
JP2510261B2 (ja) 非同期デ―タ伝送装置
KR19980068130A (ko) 공유메모리를 이용한 데이터 액세스 제어장치
CN102253896B (zh) 写操作处理方法及网络设备
US20240053898A1 (en) Hign-bandwidth ddr dimm, memory system, and operation method thereof

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination