net19 双fifo流水线

数据处理领域应用十分广泛

后面项目用到  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移位寄存器不能复位的,只有时钟就可以了

上一篇:c++ 高并发队列的实现


下一篇:跨时钟域处理之结绳法