文章目录

  • 前言
  • 蓄水池问题
    • 情形一:进水口,出水口一直工作
    • 情形二:出水口一直工作
  • 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深度设计相关推荐

  1. 74ls390设计任意进制计数器_异步FIFO:设计原理及Verliog源码

    1.  异步FIFO的概念 异步FIFO为读取与写入采用不同的时钟,使用异步FIFO用于在不同的时钟域传输数据,主要用于跨时钟域传输多bit数据. 2.  异步FIFO的设计难点 同步异步信号,避免亚 ...

  2. 异步fifo的设计(FPGA)

    本文首先对异步 FIFO 设计的重点难点进行分析 最后给出详细代码 一.FIFO简单讲解 FIFO的本质是RAM, 先进先出 重要参数:fifo深度(简单来说就是需要存多少个数据) fifo位宽(每个 ...

  3. 异步FIFO的设计详解(格雷码计数+两级DFF同步)

    文章目录 一.异步FIFO介绍 1.1.空满判断 1.2.跨时钟域问题 1.3.格雷码转换 1.4.格雷码计数器 二.代码code 一.异步FIFO介绍   FIFO有同步和异步两种,同步即读写时钟相 ...

  4. (87)FPGA面试题-同步FIFO与异步FIFO区别?异步FIFO代码设计

    1.1 FPGA面试题-同步FIFO与异步FIFO区别?异步FIFO代码设计 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-同步FIFO与异步FIFO区 ...

  5. 异步FIFO逻辑设计部分

    目录 1. wr_logic 与 rd_logic 1.1. RAM 读使能与写使能 1.2. full与empty判定:读写指针的扩展位 位宽相同的 读写指针 读写指针的 扩展位 1.3. RAM ...

  6. 异步fifo的设计与验证

    书接上文,上一篇介绍了略简单的同步fifo,接下来开始较为复杂的异步fifo. 1.同步fifo与异步fifo的区别 当设计中只有一个时钟时,所有的寄存器否用同一个,不会出现传输速度不匹配的情况:但是 ...

  7. 同步FIFO + 异步FIFO 【设计详解及代码分享】

    FIFO表示先入先出,是一种存储结构.可满足一下需求: 1.当输入数据速率和输出速率不匹配时.可作为临时存储单元. 2.用于不同时钟域之间的同步. 3.输入数据路径和输出数据路径之间的数据宽度不匹配时 ...

  8. 异步FIFO最小深度的计算

    异步FIFO通常用于在两个时钟域间传输数据,并且通常情况下,写数据的速率是要比读数据的速率快的,因此,就存在FIFO最小深度的一个问题,以防止在数据传输时发生溢出,造成数据的丢失. 在计算FIFO最小 ...

  9. FPGA基础知识极简教程(4)从FIFO设计讲起之异步FIFO篇

    博文目录 写在前面 正文 同步FIFO回顾 $clog2()系统函数使用 综合属性控制资源使用 异步FIFO设计 FIFO用途回顾 异步FIFO原理回顾 异步FIFO设计 异步FIFO仿真 参考资料 ...

最新文章

  1. MAC OS X的ACL扩展权限设置
  2. Django路由与视图
  3. python3.6使用chardet模块总是报错ValueError: Expected a bytes object, not a unicode object
  4. STM32F103外部晶振由8M变为12M
  5. 基于日志的交换机故障预测
  6. Android渠道打包技术小结
  7. h3c 链路聚合测试_4G/5G聚合路由器在直播中无线多链路聚合图传技术是什么?
  8. 新电脑到手要干的事情
  9. 如何用python设计一个计算器程序_如何使用 50 行 Python 代码制作一个计算器
  10. 易筋SpringBoot 2.1 | 第廿六篇:SpringBoot访问缓存抽象Cache
  11. NI Vision 开发环境
  12. ODI知识模块--IKM Oracle Incremental Update
  13. python支持xp系统吗_《xp python安装教程》 win XP的系统应该装哪个python的安装包?...
  14. 通知:逆天异常库 V1.0版本支持下载了~~
  15. 京东大数据技术白皮书 附下载地址
  16. html滚动轮播图片代码,html 无缝轮播图完整代码
  17. CIF/4CIF/QCIF/D1 介绍
  18. phpstudy 运行PHP项目
  19. LED软模组圆柱屏、柔性屏、异形屏、柱子屏、方柱屏、创意显示屏案例分享
  20. ARM 微处理器的数据类型

热门文章

  1. 计算同比、环比的一些常识性问题
  2. sql中on和where的区别在哪
  3. Android App 耗电量分析-1
  4. 房讯房屋租赁管理软件新版上线 专为房东朋友定制
  5. 番茄钟怎么调_实操番茄钟使用方法
  6. 长城皮卡品牌CEO张昊保:皮卡是一个独特的品类,想玩门槛很高
  7. Linux内核模块编程指南(一)(转)
  8. 为什么定义补码等于反码加一,知其所以然
  9. 「星火计划沙龙视频」腾讯Caelus在离线混合部署方案揭秘
  10. 蓝芽技术的原理和应用(2)(转)