Vivado IP核fifo使用指南

fifo是FPGA中使用最为频繁的IP核之一,可以通过软件自动生成,也可以自主编写。下面介绍vivado的fifo生成步骤

1、打开ip核,搜索fifo

2、创建fifo

选择独立的时钟块ram。

3、

A、选择标准fifo或者frist word full模式,标准模式是数据延时一个时钟周期进入或者输出;frist word full模式时数据直接随时钟同步进入或者输出。

B、设置输入数据位宽

C、设置f写ifo深度

D、设置输出数据位宽、读fifo深度会自动生成

E、选择异步复位

F、勾选复位管脚

G、选择高电平复位或低电平复位

4、设置满、空标志位

选择信号可编程满、空阈值、可以自主设置漫、空标志位的阈值,保证fifio运行的可靠性,尽量多留些阈值

5、读写计数,可以不勾选,只通过满空标志位来做读判断,计数的标志位存在周期短,判断存在不确定性

6、可以看到fifo占用的资源。

三、读写fifo例程

写fifo

//write fifo us1
always@(posedge  wrclk, negedge sys_reset_n_i)
begin
    if (!sys_reset_n_i)
    begin
        fifo_wrreq_ddr3_us <= 0 ;
        fifo_data_ddr3_us <= 0 ;
    end
    else
    begin
        if(fifo_prog_full_ddr3_us!= 1) 
            fifo_wrreq_ddr3_us <= 1 ;
        else
            fifo_wrreq_ddr3_us <= 0 ;        
        if(fifo_wrreq_ddr3_us == 1) 
         begin            
             if(fifo_data_ddr3_us < 64'b1111_1111_1111_1111_1111_1111)
                fifo_data_ddr3_us <=fifo_data_ddr3_us + 1 ;                  
             else 
                 fifo_data_ddr3_us <= 0  ; 
         end  
         else
             fifo_data_ddr3_us <= fifo_data_ddr3_us ;                
    end
end
endmodule

读fifo

assign fifo_rdreq_ddr3_ds = !fifo_empty_ddr3_ds;

always@(posedge sys_clk_i,negedge sys_reset_n_i)
begin
    if(!sys_reset_n_i)
         rd_ck_flag_cp<= 1'b0;
    else
    begin
        if (fifo_q_ddr3_ds_r!==fifo_q_ddr3_ds)
            rd_ck_flag_cp<= 1'b1;  
        else
            rd_ck_flag_cp<= 1'b0;
    end    
end
 //jiao yan cuo wu ji shu    jiao yan wei zi zeng       
always@(posedge sys_clk_i,negedge sys_reset_n_i)
begin
    if(!sys_reset_n_i)
    begin
         rd_ck_cnt <= 64'b0;
         fifo_q_ddr3_ds_r <= 64'b0 ;  
    end
    else  
    begin
        if(rd_ck_flag_cp==1)
            rd_ck_cnt <=rd_ck_cnt+1'b1;
        else
            rd_ck_cnt <= rd_ck_cnt;
             
         if ( ( fifo_rdreq_ddr3_ds==1 ) && (fifo_q_ddr3_ds_r < 64'b1111_1111_1111_1111_1111_1111) )
            
             fifo_q_ddr3_ds_r <= fifo_q_ddr3_ds_r + 1'b1 ; 
         else
             fifo_q_ddr3_ds_r <= 64'b0; 
     end
end

endmodule

### Vivado FIFO IP使用指南 #### 创建FIFO IP实例 在Vivado集成开发环境中创建一个新的项目之后,通过IP Catalog可以找到并添加FIFO Generator IP。双击该选项启动向导程序来配置所需的属性[^1]。 #### 基本参数设定 对于大多数应用场景而言,默认设置已经能够满足需求;然而为了优化性能或者适应特定的设计要求,则可能需要调整一些关键性的参数: - **数据宽度 (Data Width)**:定义每次传输的数据位数。 - **存储深度 (Memory Depth)**:指定缓冲区能容纳的最大项数量。 - **接口类型 (Interface Type)**:支持AXI Stream, AXI4 Full/Lite等多种标准协议的选择。 这些基本特性决定了最终生成的硬件模块的行为模式以及资源消耗情况。 #### 进阶功能定制化 除了上述基础配置外,还可以进一步探索更多高级选项以实现更复杂的功能逻辑,比如: - 实现几乎满/空标志(Almost Full / Almost Empty Flags) - 支持动态可变字宽操作(Variable Data Width Support) 此类增强型特性的启用与否取决于具体的应用场景及其对应的实时性和灵活性诉求。 ```verilog // Verilog代码片段展示如何实例化一个简单的同步FIFO组件 module my_fifo ( input wire clk, input wire rst_n, output reg [7:0] dout, input wire wr_en, input wire rd_en, input wire [7:0] din, output wire empty, output wire full ); // 用户应在此处调用Xilinx官方提供的宏函数或其他方式完成实际的FIFO实体声明 endmodule ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝阳群众&热心市民

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值