FIFO学习笔记: FIFO的英文全称是First In First Out,即先进先出。FPGA使用的FIFO一般指的是对数据的存储具有先进先出特性的一个缓存器,常被用于数据的缓存,或者高速异步数据的交互也即所谓的跨时钟域信t传递。它与FPGA内部的RAM和ROM的区别是没有外部读写地址线,采取顺序写入数据,顺序读出数据的方式,使用起来简单方便,由此带来的缺点就是不能像RAM和ROM那样可以由地址线决定读取或写入某个指定的地址。 1. 用于两个module时钟,位宽不同的情况 2. 缓存 3. 先写入数据,(先入先出)上图的如果是异步时钟的话则用到了clka:用于写数据的时钟,clkb用于读数据的时钟。同步时钟的话读写则用的一个时钟 4. 当写入的数据数据速度大于读出的数据的时候,会让写入等待 5. Ram资源:::bram资源(block):这个是支持读写位宽不一样的,常用的就是bram。而dram资源是不支持读写位宽不一致的。 6. Prog_full:自定义的一个多少个的个数的数,当写进去这莫多的时候,则拉高的他。对应的读也是、 7. Wr_ack:写使能成功之后给应答。 8. Overflow:写溢出标志, 9. valid:读出的数据有效标志, 10. underflow:读空标志。 11. Wr_data_count:表示fifo有多少个写进去的数据, Rd_data_count表示还有多少个可以读出的数据。同步fifo的时候特们相等,但是异步的时候:他们的(计数*位宽)相等的。 12. Prog_full_thresh_assert:对你想要写入的预设值得动态修改:上边的Prog_full。对应的读:Prog_empty_thresh也是 13. Prog_full_thresh_negate:12的文献值失效 14. Prog_full_thresh是具体的写什么值 (12.13.14配合使用的)
|