首页 > 其他分享 >FIFO FWFT Adapter(First Word Fall Through) 预读FIFO适配器

FIFO FWFT Adapter(First Word Fall Through) 预读FIFO适配器

时间:2023-08-01 11:33:11浏览次数:44  
标签:pre PRE ld 适配器 fifo DEPTH 预读 reg FIFO

预读fifo

修改了一下1:
增加了暂停预读信号stop。
修改2:
考虑一种情况,在没有预取的情况下,若fifo剩余的数据长度比预取流水线长度小,且在预取完成的前后一段时间内都没有读请求,empty流水线内会产生一段"气泡"。
此时若有新的数据写入fifo,预取流水线不会对这些“气泡”进行填充,如果能即时的填充这些气泡,应该能提高读请求的连续性。

`timescale 1ns / 1ps
/*========================================FILE_HEADER=====================================
# Author          : WYM
# Create Time     : 2023-07-31 15:32
# Last modified   : 2023-07-31 15:32
# Filename        : fwft_adapt.sv
# Synthesizable   :  Vivado 2022.2
# FPGA Chip Model :  XC7A100T-2
# Description     : fwft_adapt.sv
#
#
=========================================FILE_HEADER====================================*/
module fwft_adapter
#(
    parameter DATA_WIDTH = 8,
    parameter PRE_DEPTH = 1
)
(
    input rclk,
    input rst,
    
    input rden,
    output empty,
    output [DATA_WIDTH - 1 : 0]dout,

    input fifo_empty,
    output fifo_rden,
    input [DATA_WIDTH - 1 : 0]fifo_din
);

    reg [PRE_DEPTH : 0]pre_reg_ld = 0;
    wire [PRE_DEPTH : 0]pre_reg_ld_stop;
    reg [DATA_WIDTH - 1 : 0]pre_dout[PRE_DEPTH - 1 : 0];

    assign fifo_rden = ~fifo_empty & (|(~pre_reg_ld) | rden);

    generate
        genvar i;

// pre register load sig
        assign pre_reg_ld_stop[PRE_DEPTH] = ~rden & pre_reg_ld[PRE_DEPTH]; 
        always@(posedge rclk)
            if(rst)
                pre_reg_ld[0] <= 'd0;
            else if(~pre_reg_ld_stop[0])
                pre_reg_ld[0] <= fifo_rden;

        for(i = 0;i <PRE_DEPTH;i=i+1)
        begin
            assign pre_reg_ld_stop[i] = (fifo_empty | pre_reg_ld[i]) & pre_reg_ld_stop[i+1];
            always@(posedge rclk)
                if(rst)
                    pre_reg_ld[i+1] <= 'd0;
                else if(~pre_reg_ld_stop[i+1])
                    pre_reg_ld[i+1] <= pre_reg_ld[i];
        end

// pre register data sig
        always@(posedge rclk)
            if(pre_reg_ld[0] & ~pre_reg_ld_stop[1])
                pre_dout[0] <= fifo_din;

        for(i = 0;i <PRE_DEPTH - 1;i=i+1)
        begin
            always@(posedge rclk)
                if(pre_reg_ld[i+1] & ~pre_reg_ld_stop[i+2])
                    pre_dout[i+1] <= pre_dout[i];
        end

    endgenerate

    assign empty = ~pre_reg_ld[PRE_DEPTH];
    assign dout = pre_dout[PRE_DEPTH-1];
    

endmodule

标签:pre,PRE,ld,适配器,fifo,DEPTH,预读,reg,FIFO
From: https://www.cnblogs.com/wymvelyaten/p/17593794.html

相关文章

  • python适配器模式
    classA:  defcost(self):    print('costa')​​classB:  defcost(self):    print('costb')​​classMyAdapter:​  def__init__(self,obj):    self.obj=obj​  defpay(self):    self.obj.cost()​​adt_a=MyAd......
  • android studio 学习数据适配器
    AndroidStudio学习数据适配器在Android开发中,我们经常需要将数据显示在界面上,而数据适配器(Adapter)就是帮助我们将数据和界面进行绑定的重要工具。在本文中,我们将学习如何使用AndroidStudio创建和使用数据适配器。数据适配器的作用数据适配器是连接数据和界面的桥梁,它负责将数......
  • LIVE555 利用FIFO实现直播
    1.LIVE555直播 直播方案采取的是 直播流 ->FIFO->输出 的技术路线。 2.搭建: a.在LIVE555编译之后,在BIN文件下,有很多可执行程序生成,这些程序有些是LIVE555服务器(live555MediaServer),有些是客户端(testRTSPClient),还有大量的流推送服务(testMPEG2TransportStreamer......
  • 适配器模式
    适配器模式(AdapterPattern)说白了就是把一个接口实现类转换成另外一个接口对象。先看代码:1//目标接口2publicinterfaceITarget3{4voidRequest();5}67//原本不兼容的类8publicclassAdaptee9{10publicvoidSpecificRequest()11......
  • 接口默认方法,接口应用和适配器设计模式
    静态方法只能通过接口名调用!!! 私有方法主要用于提取两个不同方法的相同部分,两个不同方法分别调用私有方法,从而简化代码 ......
  • 【不止IP】First In First Out FIFO核的使用
    一、VivadoFIFOIP核的使用方法和注意事项1、fifo核的两种工作模式:standardfifo、firstwordfallthrough,它们的功能和操作上有一些区别。(1)StandardFIFO(标准FIFO):在标准FIFO中,数据输入(写入)和数据输出(读取)是独立的操作。写入和读取操作是异步进行的,即它们可以在任何时刻......
  • JAVA设计模式之适配器模式
    设计模式设计模式(DesignPattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、......
  • 适配器模式解决数据格式适配问题
    @RestController@RequestMapping("/ClientUserAssist/")publicclassClientUserAssistController{@AutowiredClientUserAssistMapperclientUserAssistMapper;/**子系统数据导入接口**/@Transactional(rollbackFor=Exception.class)@PostMa......
  • 重温设计模式 --- 适配器模式
    引言适配器模式是一种结构型设计模式,用于将一个类的接口转换成另一个接口,以便于两个不兼容的类之间能够协同工作。适配器模式可以被认为是一个桥梁,它可以连接两个不同的接口,从而使得它们可以进行协同工作。适配器模式通常在两个不兼容的类之间进行转换,这些类可能具有不同的接口,......
  • 串行协议适配器行业市场调研及规模分析报告2023-2029
    2023-2029全球串行协议适配器行业调研及趋势分析报告2022年全球串行协议适配器市场规模约亿元,2018-2022年年复合增长率CAGR约为%,预计未来将持续保持平稳增长的态势,到2029年市场规模将接近亿元,未来六年CAGR为%。从核心市场看,中国串行协议适配器市场占据全球约%的市场份额,为全......