vivado学习(2)-- FIFO ip核的使用


前言

fifo ip核也是vivado最常用的ip核之一,这篇博客记录了fifo核的使用方法,各个模式之间的区别。
介绍了如何计算datacount 使得fifo达到最小延迟。
埋个坑,后续应用到fifo的时候在放波形给大家看。

一、使用步骤

在这里插入图片描述

在这里插入图片描述
对于新手来说,接口类型先跳过,我们暂时默认都选native。
先说说 Fifo implementation 这个选项。
common是使用静态ram, distributed是使用LUT资源(当ram不够时才用);Independent是异步fifo(读写时钟分开)。

在这里插入图片描述
read mode : standard模式下读使能和读出数据是在一拍完成的,first模式读出数据要比读使能延迟一拍。
data port paramers : 写宽度深度,读宽度深度。如果读写的宽度和深度一致,则可以勾选data_count,如果不一致,那么只能勾选 读写计数。(下图可见)
initialization: 可以勾选复位,勾选复位后可以选择同步复位或者异步复位,作用是清除data_count内的数据,随后写进来一个就可以读一个出去。
在这里插入图片描述
这里显示的more accurate data counts 不能勾选是因为选择的是standard模式,选择first模式时可以勾选,勾选此模式可以提高data_count的计数精度,读者可以自行尝试查看效果。

二、Data_count的计算

data_count 信号是用来给读数据使能的信号,什么时候读,能得到最低延迟(即信号写完最短时间内读出来,理想状态是读完刚好写完)
(1)同步fifo,8转64,datacount计算

//800/100=8,256/8=32,fifo 中写32字节时,可以读出256个字节,256-32=224,224/8=28  

(2)异步fifo 仅跨时钟域 写100M,读200M。

//200/100=2,256/2=128, fifo写128个字节,可以读出256个字节,256-128=128,这里有延迟

不位宽转换的话不需要/8.

​ (3)异步fifo,跨时钟域位宽转换 8转64 写时钟100M,读时钟50M

//400/100=4,256/4=64, fifo写64个字节,可以读出256个字节,256-64=192,192/8=24.这里有延迟

可以给1个裕量,设置data_count 为25即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值