FIFO深度

async fifo的full和empty的判断:

1)binary进制,MSB相同时,LSB也相同,empty;

MSB不同时,LSB相同,full

2)gray code,MSB相同时,LSB也相同,empty;

MSB不同,MSB-1也不同,LSB相同,full;

ASYNC FIFO中的empty和full的控制流,

首先ptr,    ptr_w--------binary++---------gray code-------FF(wclk)--------SYNC FF(rclk)-------ptr_r

然后empty

fifo的深度问题:

fifo主要做异步时钟域之间的数据缓存功能。

首先应该理解清楚,该FIFO的应用场景,这会直接关系到需要缓存的数据量,FIFO的深度。

其次,在数据缓存的过程中,最好是不发生fifo,满而等待的情况,所以从带宽角度来看,一般是写的带宽大于读的带宽,

但是在这种情况下,如果写操作是连续操作,再大的FIFO也是没有意义的,所以FIFO的写入操作一般是基于Burst的,

在这种写不连续的情况下,通过FIFO,来最小化,大的带宽到小的带宽的转变。

所以FIFO的深度只与,两个带宽最大的差有关。

BW = Freq * Data_width

一般考虑的场景:空闲------Burst传输------空闲------Burst传输

极端的场景:空闲-------Burst传输-------Burst传输------空闲(背靠背传输)

一般的场景:T(Burst)*BW(read)+FIFO depth >= T(Burst)*BW(write)

且保证空闲时间内,slave可以把FIFO读空。(T(空闲)*BW(read) >= FIFO depth)

极端的场景:2*T(Burst)*BW(read)+FIFO depth >= T(Burst)*BW(write)

且保证空闲时间内,slave可以把FIFO读空。(T(空闲)*BW(read) >= FIFO depth)

时间: 2024-10-12 09:26:36

FIFO深度的相关文章

同步FIFO的verilog描述

1 /****************************************************** 2 A fifo controller verilog description. 3 ******************************************************/ 4 module fifo(datain, rd, wr, rst, clk, dataout, full, empty); 5 input [7:0] datain; 6 input

Verilog基础知识7(FIFO深度计算)

需求说明:Verilog设计 内容       :第一部分 FIFO深度讨论                   第二部分 FIFO深度计算 来自       :时间的诗 第一部分 FIFO深度讨论 原文:http://comm.chinaaet.com/adi/blogdetail/37555.html 其实很惭愧,在这之前用FIFO都是直接用IP,因为应用场景很简单,因此FIFO深度的选择也比较随意,并没想很多.今天在网上看到一个异步FIFO深度计算的题目,发现对于这块并不熟悉,因此注意了下

异步FIFO最小深度计算

计算FIFO深度是设计FIFO中常遇到的问题.常识告诉我们,当读速率慢于写速率时,FIFO便可被用作系统中的缓冲元件或队列.因此FIFO的大小基本上暗示了所需缓存数据的容量,该容量取决于读写数据的速率.据统计,系统的数据速率取决于系统的负载能力.因此为了保证FIFO的大小,我们需要考虑FIFO传输的最坏情况下.所谓最坏的情况就是使得写速率最大,读速率最小:通常是考虑突发传输. 一.异步FIFO最小深度计算原理 如果数据流连续不断则FIFO深度无论多少,只要读写时钟不同源同频则都会丢数:FIFO用

quartusii生成FIFO

Quartus II LPM使用指南 FIFO篇 目录 说明 - 2 - 摘要 - 3 - 第一章 FIFO配置全攻略 - 4 - 1.1如何配置自己需要的FIFO - 4 - 1.2输入输出端口 - 5 - 1.3时序要求 - 8 - 1.4输出状态标记和潜伏期 - 8 - 1.5避免亚稳态 - 9 - 1.6同步复位及异步复位的影响 - 9 - 1.7不同的输入输出位宽 - 10 - 1.8约束设置 - 10 - 第二章  设计实例 - 11 - 2.1设计实例概要 - 11 - 2.2系统

FIFO数据缓存器

FIFO数据缓存器: FIFO (First Input First Output) 一种先进先出的数据缓存器,先进入的数据先从FIFO缓存器中读出,与RAM相比没有外部读写地址线,使用比较简单,但只能顺序写入数据,顺序的读出数据,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址. FIFO数据缓存器的作用: FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端是AD数据采集,另一端为PCI总线,那么在两个不同的时钟域间就可以采用FIFO来作为数据缓冲.另外对于不同宽度的数据

转:FIFO的定义与作用

一.先入先出队列(First Input First Output,FIFO)这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令. 1.什么是FIFO? FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址. 2.什么情况下用FIFO

学习笔记20151211——AXI4 STREAM DATA FIFO

AXI4 STREAM DATA FIFO是输入输出接口均为AXIS接口的数据缓存器,和其他fifo一样是先进先出形式.可以在跨时钟域的应用中用于数据缓冲,避免亚稳态出现.支持数据的分割和数据拼接.在使用该IP核之前,我们应该熟悉该IP核的各种参数设定的含义.  上图则是该IP核的参数设定界面(开发环境为VIVADO2015.1),点击左上角的Documentation,下拉框中选择Product Guide,打开该IP核的说明文档. 链接如下: http://www.xilinx.com/su

FIFO认识(一)

1.什么是FIFO? FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址. 2.什么情况下用FIFO? FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端时AD数据采集,另一端时计算机的PCI总线,假设其AD采集的速率为16位 100K SPS,

同步FIFO学习笔录--

同步FIFO学习 1.撰写缘由 这几天在初步学习verilog,学习到了同步FIFO,写点东西记录一下,写写心得体会和大家一起交流学习,中间有不对的地方希望大家能多多包涵,欢迎指正,共同进步.学习时主要参考:https://www.cnblogs.com/SYoong/p/6108780.html,感谢大神的分享.本文与参考有些不同,其中我自己认为有些需要改动的地方,若不对,多多指正.其实同步FIFO在实际中应用很少,应用多的还是异步FIFO,不过作为一个新手拿来练习练习感觉是很不错的. 2.什