从蓄水池问题思考异步FIFO深度设计
文章目录
- 前言
- 蓄水池问题
- 情形一:进水口,出水口一直工作
- 情形二:出水口一直工作
- FIFO深度问题
- 举例
前言
前段时间面试,因为没考虑过FIFO深度的问题,被面试官吊打一番,痛定思痛,写下这些。
蓄水池问题
一个蓄水池,体积为V,有进水口和出水口。进水口每秒流进m立方米的水,出水口每秒流出n立方米的水。初始时,蓄水池中没有水。
情形一:进水口,出水口一直工作
如果m=n,蓄水池可有可无,流进蓄水池的水会很快流出,蓄水池不会溢出;
如果m>n,经过一段时间t后,蓄水池溢出。
t=V/(m−n)t = V / (m-n)t=V/(m−n)
可以推论,在这种情况下, 无论蓄水池有多大,总会溢出。
如果m<n,蓄水池永不会溢出。
情形二:出水口一直工作
该情形下,只关心m>n情况。
为了保证蓄水池不溢出,进水口在连续工作t时间后必须关闭,直到蓄水池中有剩余空间v0。进水口可再次连续工作的时间为t0=v0/(m−n)t_0 = v_0/(m-n)t0=v0/(m−n)
为了不频繁打开关闭进水口,可等到v0=V时再让进水口工作。
此种情形下,蓄水池的行为是,进水口一直工作到蓄水池满,关闭后等到蓄水池为空,再次工作直到蓄水池满。
FIFO深度问题
将FIFO类比成蓄水池。写时钟域吞吐量为m,读时钟域吞吐量为n。吞吐量表示为每秒钟数据量大小。
例如,写时钟为50MHz,每个时钟周期产生一个字节,则吞吐量为50M byte/s
若每两个时钟周期产生一个字节,则吞吐量为25M byte/s
在m>n的情形下,若写时钟域一直工作,则无论FIFO为多深,总会溢出。因此,写时钟域只能工作一段时间,直到FIFO满。
在实际情况下,我们通常是先知道写时钟域能工作的时间,再反推出FIFO的最大深度。参考蓄水池问题,易得fifodepth=twr∗(m−n)fifo_{depth} = t_{wr} * (m-n)fifodepth=twr∗(m−n)
举例
A/D采样速率50Mhz,dsp读A/D的速率40Mhz,要不丢失地将将10万个采样数据送入DSP ,在A/D和DSP之间至少加多大容量的(深度)FIFO才行??
答:A/D需工作的时间t=100,000/50,000,000t=100,000/50,000,000t=100,000/50,000,000
FIFO深度 = 1/500 *(50,000,000-40,000,000)= 20,000
从蓄水池问题思考异步FIFO深度设计相关推荐
- 74ls390设计任意进制计数器_异步FIFO:设计原理及Verliog源码
1. 异步FIFO的概念 异步FIFO为读取与写入采用不同的时钟,使用异步FIFO用于在不同的时钟域传输数据,主要用于跨时钟域传输多bit数据. 2. 异步FIFO的设计难点 同步异步信号,避免亚 ...
- 异步fifo的设计(FPGA)
本文首先对异步 FIFO 设计的重点难点进行分析 最后给出详细代码 一.FIFO简单讲解 FIFO的本质是RAM, 先进先出 重要参数:fifo深度(简单来说就是需要存多少个数据) fifo位宽(每个 ...
- 异步FIFO的设计详解(格雷码计数+两级DFF同步)
文章目录 一.异步FIFO介绍 1.1.空满判断 1.2.跨时钟域问题 1.3.格雷码转换 1.4.格雷码计数器 二.代码code 一.异步FIFO介绍 FIFO有同步和异步两种,同步即读写时钟相 ...
- (87)FPGA面试题-同步FIFO与异步FIFO区别?异步FIFO代码设计
1.1 FPGA面试题-同步FIFO与异步FIFO区别?异步FIFO代码设计 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-同步FIFO与异步FIFO区 ...
- 异步FIFO逻辑设计部分
目录 1. wr_logic 与 rd_logic 1.1. RAM 读使能与写使能 1.2. full与empty判定:读写指针的扩展位 位宽相同的 读写指针 读写指针的 扩展位 1.3. RAM ...
- 异步fifo的设计与验证
书接上文,上一篇介绍了略简单的同步fifo,接下来开始较为复杂的异步fifo. 1.同步fifo与异步fifo的区别 当设计中只有一个时钟时,所有的寄存器否用同一个,不会出现传输速度不匹配的情况:但是 ...
- 同步FIFO + 异步FIFO 【设计详解及代码分享】
FIFO表示先入先出,是一种存储结构.可满足一下需求: 1.当输入数据速率和输出速率不匹配时.可作为临时存储单元. 2.用于不同时钟域之间的同步. 3.输入数据路径和输出数据路径之间的数据宽度不匹配时 ...
- 异步FIFO最小深度的计算
异步FIFO通常用于在两个时钟域间传输数据,并且通常情况下,写数据的速率是要比读数据的速率快的,因此,就存在FIFO最小深度的一个问题,以防止在数据传输时发生溢出,造成数据的丢失. 在计算FIFO最小 ...
- FPGA基础知识极简教程(4)从FIFO设计讲起之异步FIFO篇
博文目录 写在前面 正文 同步FIFO回顾 $clog2()系统函数使用 综合属性控制资源使用 异步FIFO设计 FIFO用途回顾 异步FIFO原理回顾 异步FIFO设计 异步FIFO仿真 参考资料 ...
最新文章
- MAC OS X的ACL扩展权限设置
- Django路由与视图
- python3.6使用chardet模块总是报错ValueError: Expected a bytes object, not a unicode object
- STM32F103外部晶振由8M变为12M
- 基于日志的交换机故障预测
- Android渠道打包技术小结
- h3c 链路聚合测试_4G/5G聚合路由器在直播中无线多链路聚合图传技术是什么?
- 新电脑到手要干的事情
- 如何用python设计一个计算器程序_如何使用 50 行 Python 代码制作一个计算器
- 易筋SpringBoot 2.1 | 第廿六篇:SpringBoot访问缓存抽象Cache
- NI Vision 开发环境
- ODI知识模块--IKM Oracle Incremental Update
- python支持xp系统吗_《xp python安装教程》 win XP的系统应该装哪个python的安装包?...
- 通知:逆天异常库 V1.0版本支持下载了~~
- 京东大数据技术白皮书 附下载地址
- html滚动轮播图片代码,html 无缝轮播图完整代码
- CIF/4CIF/QCIF/D1 介绍
- phpstudy 运行PHP项目
- LED软模组圆柱屏、柔性屏、异形屏、柱子屏、方柱屏、创意显示屏案例分享
- ARM 微处理器的数据类型