0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Vivado中配置FIFO IP核

CHANBAEK ? 來源:FPGA入門到精通 ? 作者:未可知摩爾 ? 2023-08-07 15:36 ? 次閱讀

Vivado IP核提供了強(qiáng)大的FIFO生成器,可以通過圖形化配置快速生成FIFO IP核。

本文將詳細(xì)介紹如何在Vivado中配置一個FIFO IP核,以及如何調(diào)用這個FIFO IP核。

一、FIFO IP核的配置

1、新建FIFO IP

在Vivado的IP Catalog中找到FIFO Generator IP核,雙擊打開參數(shù)配置界面。

圖片

2、配置FIFO基本參數(shù)

圖片

圖片

編輯切換為居中

添加圖片注釋,不超過 140 字(可選)

(1)接口類型

Native interface FIFOs:

這是最基本的FIFO接口,包括數(shù)據(jù)輸入、輸出端口、寫使能、讀使能等信號。

AXI Memory Mapped interface FIFOs:

這種接口將 FIFO 封裝為一個AXI內(nèi)存映射的IP核,可以通過AXI總線進(jìn)行訪問。

AXI4-Stream interface FIFOs:

這種接口兼容AXI4-Stream協(xié)議,適合在流式數(shù)據(jù)傳輸場景中使用。

(2)時鐘類型和資源類型

時鐘:

同步時鐘(common clock) 和 異步時鐘(Independent clock)

資源:

block RAM、Distributed RAM、Shift Register、Built-in FIFO

3、配置fifo接口參數(shù)

圖片

(1)讀模式設(shè)置

Standard FIFO:標(biāo)誰讀模式,接收到讀使能后下一個周期輸出數(shù)據(jù)

First Word Fall Through:先入先出模式,只有FIFO中有數(shù)據(jù),則自動輸出第一個數(shù)據(jù),并保持這個數(shù)據(jù)輸出

(2)數(shù)據(jù)接口參數(shù)設(shè)置

FIFO讀數(shù)據(jù)接口的位寬和深度,F(xiàn)IFO寫數(shù)據(jù)接口的位寬和深度

(3)ECC和輸出寄存器設(shè)置

(4)初始化設(shè)置

4、狀態(tài)信號接口設(shè)置

根據(jù)實(shí)際需求,選擇對應(yīng)的狀態(tài)信號即可。

注意(Programmable Flags):自定義FIFO緩存深度是否達(dá)到設(shè)定值的信號,可以用于設(shè)定半滿或半空信號。

圖片

5、計(jì)數(shù)端口設(shè)置

fifo已緩存的數(shù)據(jù)深度計(jì)數(shù),可選。

圖片

6、FIFO設(shè)置參數(shù)總覽

這是FIFO IP的設(shè)置參數(shù)總覽,可看到資源消耗、寬度、深度、讀延遲等信息

圖片

7、點(diǎn)擊OK生成FIFO IP核。

二、FIFO IP核的接口

生成的FIFO IP核提供以下接口:

wr_clk 寫時鐘

rd_clk 讀時鐘

din 數(shù)據(jù)輸入端口,寬度為配置的Data Width;

wr_en 寫使能信號;

rd_en 讀使能信號;

dout 數(shù)據(jù)輸出端口;

full 滿標(biāo)志,高電平表示FIFO滿;

empty 空標(biāo)志,高電平表示FIFO空;

almost_full 幾乎滿標(biāo)志;

almost_empty 幾乎空標(biāo)志;

valid 有效數(shù)據(jù)標(biāo)志

rd_data_count 讀計(jì)數(shù)

wr_data_count 寫計(jì)數(shù)

overflow 寫溢出標(biāo)記

underflow 讀溢出標(biāo)記

三、FIFO IP核的調(diào)用

FIFO IP核的調(diào)用很簡單,只需要對接口進(jìn)行適當(dāng)?shù)倪B接,并根據(jù)Full和Empty標(biāo)志控制讀寫使能信號。下面給出一個簡單的調(diào)用例子:

module fifo_test(
  input clk,
  input [17:0] din,
  input wr_en, rd_en,
  output valid,
  output [17:0] dout,
  output full, empty, overflow, underflow
);

fifo_generator_0 fifo_inst(
  .clk(clk),
  .din(din),
  .wr_en(wr_en),
  .rd_en(rd_en),
  .dout(dout),
  .full(full),
  .empty(empty),
  .overflow(overflow),
  .valid(valid), 
  .underflow(underflow)
);

endmodule

在這個例子中,din和wr_en分別連接到FIFO的輸入端口,dout和empty連接到輸出端口。在寫入數(shù)據(jù)時需要檢查full信號,在讀出數(shù)據(jù)時需要檢查empty信號,以避免overflow和underflow的情況發(fā)生。

下面是FIFO IP核的一個簡單的testbench:

`timescale 1ns / 1ps

module fifo_testbench();

reg clk;
reg [17:0] din;
reg wr_en;
reg rd_en;
wire valid;
wire [17:0] dout;
wire full, empty, overflow, underflow;

fifo_test dut(
  .clk(clk),
  .din(din),
  .wr_en(wr_en),
  .rd_en(rd_en),  
  .dout(dout),
  .full(full),
  .empty(empty),
  .overflow(overflow),
  .valid(valid), 
  .underflow(underflow) 
);

always #5 clk = ~clk; 

initial begin
  clk = 0;
  wr_en = 0; rd_en = 0;

  #10;
  wr_en = 1; din = 18'd1;
  #10;
  wr_en = 1; din = 18'd2;
  #10;
  wr_en = 1; din = 18'd3;

  #10;
  wr_en = 0; rd_en = 1;
  #10;
  wr_en = 0; rd_en = 1;

  #10;
  wr_en = 1; din = 18'd4;
  wr_en = 1; din = 18'd5;

  #10;
  wr_en = 0; rd_en = 1;
  #10
  wr_en = 0; rd_en = 1;

  #10;
  $finish;
end

endmodule

這個testbench通過 Applying 不同的讀寫使能信號來測試FIFO的寫入和讀取功能。

仿真測試圖:

(1)FIFO讀模式設(shè)置為“Standard FIFO”

valid信號完全由rd_en控制。

圖片

(2)FIFO讀模式設(shè)置為“First Word Fall Through”

緩存一定長度數(shù)據(jù)后,自動讀取第一個數(shù)據(jù),并保持,直到下一個rd_en 信號到來。

圖片

四、總結(jié)

通過上面的描述,我們詳細(xì)介紹了如何在Vivado中配置FIFO IP核,F(xiàn)IFO的接口信號,以及如何調(diào)用FIFO IP核的一個簡單例子。FIFO是一種非常常用的IP核,通過Vivado的FIFO Generator可以大大簡化配置和使用FIFO的過程。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8447

    瀏覽量

    150720
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    386

    瀏覽量

    43492
  • IP核
    +關(guān)注

    關(guān)注

    4

    文章

    326

    瀏覽量

    49376
  • 生成器
    +關(guān)注

    關(guān)注

    7

    文章

    313

    瀏覽量

    20948
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    804

    瀏覽量

    66222
收藏 人收藏

    評論

    相關(guān)推薦

    玩轉(zhuǎn)Zynq連載21——VivadoIP的移植

    `玩轉(zhuǎn)Zynq連載21——VivadoIP的移植更多資料共享騰訊微云鏈接:https://share.weiyun.com/5s6bA0s百度網(wǎng)盤鏈接:https://pan.ba
    發(fā)表于 09-04 10:06

    Vivado IP鎖定的解決辦法分享

      發(fā)生IP鎖定,一般是Vivado版本不同導(dǎo)致的,下面介紹幾種方法:    1 常用的方法  1)生成IP的狀態(tài)報告 Report -
    發(fā)表于 01-08 17:12

    Vivadoxilinx_courdic IP怎么使用

    Vivadoxilinx_courdic IP(求exp指數(shù)函數(shù))使用
    發(fā)表于 03-03 07:35

    Vivado生成IP

    vivado生成ip后缺少一大片文件,之前是可以用的,中途卸載過Modelsim,用vivado打開過ISE工程,因?yàn)楣こ?b class='flag-5'>中很多
    發(fā)表于 04-24 23:42

    Xilinx Vivado的使用詳細(xì)介紹(3):使用IP

    IPIP Core) Vivado中有很多IP核可以直接使用,例如數(shù)學(xué)運(yùn)算(乘法器、除法器、浮點(diǎn)運(yùn)算器等)、信號處理(FFT、DFT、D
    發(fā)表于 02-08 13:08 ?2122次閱讀
    Xilinx <b class='flag-5'>Vivado</b>的使用詳細(xì)介紹(3):使用<b class='flag-5'>IP</b><b class='flag-5'>核</b>

    了解VivadoIP的原理與應(yīng)用

    IPIP Core) Vivado中有很多IP核可以直接使用,例如數(shù)學(xué)運(yùn)算(乘法器、除法器、浮點(diǎn)運(yùn)算器等)、信號處理(FFT、DFT、D
    發(fā)表于 11-15 11:19 ?9068次閱讀

    vivado調(diào)用IP詳細(xì)介紹

    大家好,又到了每日學(xué)習(xí)的時間了,今天咱們來聊一聊vivado 調(diào)用IP。 首先咱們來了解一下vivadoIP
    的頭像 發(fā)表于 05-28 11:42 ?3.7w次閱讀

    何在Vivado Design Suite 中進(jìn)行IP加密

    此視頻概述了Vivado Design SuiteIP加密。 它涵蓋了IP加密工具流程,如何準(zhǔn)備加密IP以及如
    的頭像 發(fā)表于 11-20 06:34 ?6422次閱讀

    FPGA實(shí)現(xiàn)基于Vivado的BRAM IP的使用

    ? Xilinx公司的FPGA中有著很多的有用且對整個工程很有益處的IP,比如數(shù)學(xué)類的IP,數(shù)字信號處理使用的IP
    的頭像 發(fā)表于 12-29 15:59 ?1.1w次閱讀

    VCS獨(dú)立仿真Vivado IP的問題補(bǔ)充

    在仿真Vivado IP時分兩種情況,分為未使用SECURE IP和使用了SECURE IP
    的頭像 發(fā)表于 06-06 14:45 ?1652次閱讀
    VCS獨(dú)立仿真<b class='flag-5'>Vivado</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>的問題補(bǔ)充

    講解幾點(diǎn)關(guān)于FIFO IP使用時的注意事項(xiàng)

    FIFO?還是FIFO IP?這也需要寫總結(jié)嗎?太容易了吧。如果我是一個正在處于面試找工作的年輕人,肯定關(guān)注的是如何手撕
    發(fā)表于 06-21 14:22 ?1380次閱讀
    講解幾點(diǎn)關(guān)于<b class='flag-5'>FIFO</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>使用時的注意事項(xiàng)

    VivadoBRAM IP配置方式和使用技巧

    FPGA開發(fā)中使用頻率非常高的兩個IP就是FIFO和BRAM,上一篇文章已經(jīng)詳細(xì)介紹了Vivado FIFO
    的頭像 發(fā)表于 08-29 16:41 ?5455次閱讀
    <b class='flag-5'>Vivado</b><b class='flag-5'>中</b>BRAM <b class='flag-5'>IP</b>的<b class='flag-5'>配置</b>方式和使用技巧

    Vivado IPShared Logic選項(xiàng)配置

    在給Vivado的一些IP進(jìn)行配置的時候,發(fā)現(xiàn)有Shared Logic這一項(xiàng),這里以Tri Mode Ethernet MAC
    的頭像 發(fā)表于 09-06 17:05 ?1460次閱讀
    <b class='flag-5'>Vivado</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>Shared Logic選項(xiàng)<b class='flag-5'>配置</b>

    FPGA實(shí)現(xiàn)基于Vivado的BRAM IP的使用

    Xilinx公司的FPGA中有著很多的有用且對整個工程很有益處的IP,比如數(shù)學(xué)類的IP,數(shù)字信號處理使用的IP
    的頭像 發(fā)表于 12-05 15:05 ?1475次閱讀

    VivadoFFT IP的使用教程

    本文介紹了VidadoFFT IP的使用,具體內(nèi)容為:調(diào)用IP>>配置界面介紹>>
    的頭像 發(fā)表于 11-06 09:51 ?173次閱讀
    <b class='flag-5'>Vivado</b><b class='flag-5'>中</b>FFT <b class='flag-5'>IP</b><b class='flag-5'>核</b>的使用教程