【【萌新的FPGA学习之FIFO的介绍】】

本文介绍了FIFO(First-In-First-Out)作为数据缓冲器的基本概念,其工作原理、RAM类型(BRAM和DRAM)、以及在FPGA设计中的写控制模块和格雷码在仲裁中的作用。重点讲述了FIFO如何通过读写指针实现先进先出的机制以及满/空状态的判断方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

萌新的FPGA学习之FIFO的介绍

FIFO first in first out FIFO 的作用更多的是 缓冲与缓存
或者FIFO 也常被用来使用为
FIFO 本质上是由 RAM 加读写控制逻辑构成的一种先进先出的数据缓冲器,其与普通存储器 RAM 的
区别在于 FIFO 没有外部读写地址线,使用起来非常简单,但 FIFO 只能顺序写入数据,并按顺序读出数据,
其数据地址由内部读写指针自动加 1 完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定
的地址,不过也正是因为这个特性,使得 FIFO 在使用时并不存在像 RAM 那样的读写冲突问题。

先入先出 从这里写进去的第一个数据一定会先读出

FIFO 虽然本质上是RAM 但是也分为 BRAM 和 DRAM BRAM 支持 读写位宽不同
在这里插入图片描述

在这里插入图片描述

它在设计的时候 留下了两个 almost_full 和almost_empty 空余了一个时钟周期的量 交给了 读写端 让读写端有反应时间
这里的prog_full 设置为可编程的拉高或拉低

FIFO 并不需要提供地址 相对于 RAM 而言
它是一种先进先出的概念
在这里插入图片描述

进制 :
独热码假设是4bit : 0001, 0010, 0100 , 1000 ; 在做仲裁的时候 使用
格雷码 : 每个相邻的数之间,只有一个bit在变化

为什么还要用格雷码呢?
主要用来处理跨时钟域的问题 ,在跨时钟域时数据很容易出现亚稳态。

我们先来 分析一下 整个的 写控制模块
在这里插入图片描述
在这里插入图片描述

如果en 拉高一次 , 地址就增加一次 , 再把增加的地址转成格雷码 , 再从这个口传输给我们的RAM
控制模块最关键的是 这个 gary_com 格雷码比较模块

FIFO 满情况 :
因为转了一圈 读写的地址都是一样的
读地址追上了写地址 就是空
写地址追上了读地址 就是满

判断满的情况是 : 写指针和读指针 相比 最高位不相等 ,剩下的位数全相等
判断空的情况是 : 读和写指针 最高位相等 ,剩下的位数全相等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值