xilinx XPM FIFO的使用(xpm_fifo_sync)

参考手册:

XPM_FIFO_SYNC • Vivado Design Suite 7 Series FPGA and Zynq 7000 SoC Libraries Guide (UG953) • 阅读器 • AMD 自适应计算文档门户 (xilinx.com)

 代码使用

parameter FIFO_WRITE_DEPTH = CHANNEL_NUM*3*2;
parameter WRITE_DATA_WIDTH = 16;
parameter WR_DATA_COUNT_WIDTH = $clog2(FIFO_WRITE_DEPTH_2_N);
parameter PROG_FULL_THRESH = CHANNEL_NUM;
parameter READ_DATA_WIDTH = WRITE_DATA_WIDTH;
parameter RD_DATA_COUNT_WIDTH = $clog2(FIFO_WRITE_DEPTH_2_N);
parameter FIFO_WRITE_DEPTH_2_N = CHANNEL_NUM*4*2;

xpm_fifo_sync # (

  .FIFO_MEMORY_TYPE          ("block"),           //string; "auto", "block", "distributed", or "ultra";
  .ECC_MODE                  ("no_ecc"),         //string; "no_ecc" or "en_ecc";
  .FIFO_WRITE_DEPTH          (FIFO_WRITE_DEPTH_2_N),             //positive integer
  .WRITE_DATA_WIDTH          (WRITE_DATA_WIDTH),               //positive integer
  .WR_DATA_COUNT_WIDTH       (WR_DATA_COUNT_WIDTH),               //positive integer
  .PROG_FULL_THRESH          (PROG_FULL_THRESH),               //positive integer
  .FULL_RESET_VALUE          (0),                //positive integer; 0 or 1
  .USE_ADV_FEATURES          ("0000"),           //string; "0000" to "1F1F"; 
  .READ_MODE                 ("std"),            //string; "std" or "fwft";
  .FIFO_READ_LATENCY         (1),                //positive integer;
  .READ_DATA_WIDTH           (READ_DATA_WIDTH),               //positive integer
  .RD_DATA_COUNT_WIDTH       (RD_DATA_COUNT_WIDTH),               //positive integer
  .PROG_EMPTY_THRESH         (10),               //positive integer
  .DOUT_RESET_VALUE          ("0"),              //string
  .WAKEUP_TIME               (0)                 //positive integer; 0 or 2;

) xpm_fifo_sync_inst (

  .sleep            (1'b0),
  .rst              (!rst_n_i),
  .wr_clk           (clk_i),
  .wr_en            (wr_en),
  .din              (din),
  .full             (),
  .overflow         (),
  .prog_full        (),
  .wr_data_count    (),
  .almost_full      (),
  .wr_ack           (),
  .wr_rst_busy      (),
  .rd_en            (rd_en),
  .dout             (dout),
  .empty            (empty),
  .prog_empty       (),
  .rd_data_count    (),
  .almost_empty     (),
  .data_valid       (),
  .underflow        (),
  .rd_rst_busy      (),
  .injectsbiterr    (1'b0),
  .injectdbiterr    (1'b0),
  .sbiterr          (),
  .dbiterr          ()

一定要注意FIFO_WRITE_DEPTH是2的幂,不然,输出会异常。比如下图:

会出现数据是“x”状态。

其他的使用方式按照手册来就行。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值