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

  • 34
    点赞
  • 339
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
VivadoFIFO IP核是一种常用的IP核,用于实现先进先出(FIFO)的数据缓存功能。引用 使用Vivado生成FIFO IP核的步骤如下: 1. 打开Vivado工程并创建一个新的Block Design。 2. 在Block Design添加一个FIFO IP核。可以通过IP Catalog搜索并选择FIFO IP核。 3. 配置FIFO IP核的参数,包括宽度、深度、以及其他相关选项。可以根据需要进行自定义设置。 4. 连接FIFO IP核与其他模块或接口。 5. 完成FIFO IP核的配置后,生成Block Design的输出产品。 6. 使用生成的输出产品进行后续的综合、实现和比特流生成。 FIFO IP核的使用还涉及到一些参数和模式的选择。例如,可以选择标准FIFO模式或者First Word Full模式。标准模式下,数据会延迟一个时钟周期进入或输出;而First Word Full模式下,数据会直接随时钟同步进入或输出。引用 在具体的设计,可以根据需要在FIFO IP核的例化代码进行相应的配置。通过对FIFO IP核的配置和连接,可以实现数据的缓存和有序传输。引用<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vivado IP核fifo使用指南](https://blog.csdn.net/baidu_25816669/article/details/88941458)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

朝阳群众&热心市民

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

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

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

打赏作者

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

抵扣说明:

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

余额充值