数据处理领域应用十分广泛
后面项目用到 3×3矩阵运算 所以引入双 fifo 将来可能用到 3 4或更多的fifo运算方法
fifo在数据处理领域十分广泛 因为fifo 具备数据缓存的能力 还可以进行数据位宽的变换 等等运用的方法
这节课针对双fifo的应用来引出fifo的操作时序,使用方法
FIFO(first input first output) 先存进去的被先读出来。
fifo没有地址 不能按照指定读取某一数据 数据只能按照数据输入的顺序输出 即先入先出 并且读写可以同时进行。
ram会复杂一点 需要地址与使能共作用才能把数据写入到ram指定的地址空间
fifo可分为异步fifo 同步fifo 课程展示的为异步:两个时钟,写时钟和读时钟
对于用户来讲 full是一个输出信号,由ip核输出给我们来用的
读时钟 写时钟是独立的时钟 周期是可以不一样的 因为fifo本身具备跨时钟域处理的能力
选择 First-World Fall-Through读模式 第一个数据不需要使能就能读出来 为什么用:用ram的时候,给地址的时候数据最少延时一拍出来,有一拍延时。使用这种,模式读出延时可以为0,即读使能为高的时候数据就有效了,在读使能没拉高的时候就把第一拍数据传到接口上,永远是提前一拍把数据释放出来,这样就能保证数据的有效和读使能是对齐的。往往在一些应用里边都需要用这种模式。通常这种模式我们用的更多一些(FWFT模式)
好处:比如这个使能能作为其他模块的同步信号来用,这个时候就不需要再打拍了,直接可以使能数据传过去就可以了,因为他俩是同步的。如果要打拍的话可以两个同时都打拍,这样有利于时序操作
empty信号:默认fifo没有数据所以是空的,由写段的写进去几个数据之后,过几个时钟周期空信号变为不空 为什么要过几个时钟周期:由于数据的写入前边由同步的 数据给到fifo的接口但是并没有放到fifo的内存里边去,也是经过几级寄存器的操作的写入到真正的ram。fifo里边也是ram,只不过加了fifo的地址控制器,才会写到我们fifo的缓存里边去。所以真正写到fifo缓存里边时这个empty才拉低
标准的读模式standard读模式
读的数据延一拍
第一步 创建工程
学习如何使用fifo:创建fifo控制器 用于仿真
一般 同步fifo:sfifo 异步fifo:asfifo 深度256
所以asfifo_w256×8_r256×8 其中深度:写256x8 读256x8
rst只能reset寄存器,不能reset存储器里边的存储数据进行reset
data count options 只能对fifo中剩余的数据进行估计 因为可能会有延时所以不能精确fifo中所存数据的量
写入数据256 实际是257
w_cnt 控制使能宽度 w_en控制 w_data数据
空信号可以用来控制读使能
Xilinx移位寄存器不能复位的,只有时钟就可以了