当前位置:   article > 正文

FPGA学习笔记(十二)IP核之FIFO的学习总结_stm32fpgafifo电路设计

stm32fpgafifo电路设计

系列文章目录

一、FPGA学习笔记(一)入门背景、软件及时钟约束

二、FPGA学习笔记(二)Verilog语法初步学习(语法篇1)

三、FPGA学习笔记(三) 流水灯入门FPGA设计流程

四、FPGA学习笔记(四)通过数码管学习顶层模块和例化的编写

五、FPGA学习笔记(五)Testbench(测试平台)文件编写进行Modelsim仿真

六、FPGA学习笔记(六)Modelsim单独仿真和Quartus联合仿真

七、FPGA学习笔记(七)verilog的深入学习之任务与函数(语法篇3)

八、FPGA学习笔记(八)同步/异步信号的打拍分析及处理

九、FPGA学习笔记(九)SPI学习总结及stm32的HAL库下SPI配置

十、FPGA学习笔记(十)IP核之PLL锁相环的学习总结

十一、FPGA学习笔记(十一)IP核之RAM的学习总结


参考正点原子开拓者FPGA开发指南

FIFO简介

FIFO( First In First Out):先进先出
常用在数据缓存或者跨时钟域的信号传递(高速异步数据的交互)

类比前面学习的ROM,只是没有地址线,采取顺序写入数据,顺序读出数据的方式。

  • FIFO分类:
    SCFIFO(single clock FIFO):单时钟FIFO。
    DCFIFO(double clock FIFO):双时钟FIFO。
    DCFIFO_MIXED_WIDTHS:混合宽度双时钟FIFO。
    同步FIFO:读时钟和写时钟的频率相同(单时钟)
    异步FIFO:读时钟和写时钟的频率不同(双时钟)。
    在这里插入图片描述
    双时钟将clock分为wrclk和rdclk

  • 常见FIFO参数:
    FIFO宽度(N):一次读写操作的N位数据
    FIFO深度(M):存储M个宽度为N位的数据
    将空标志:almost_empty(FIFO即将被清空)
    空标志:empty。FIFO 已空时送出的一个信号,阻止读操作继续从 FIFO中读出数据而造成无效数据的读出。
    将满标志:almost_full。FIFO 即将被写满。
    满标志:full。FIFO 已满或将要写满时的一个信号,阻止写操作继续向 FIFO 中写数据而造成溢出。
    读时钟:读 FIFO 时所遵循的时钟,在每个时钟的上升沿触发。
    写时钟:写 FIFO 时所遵循的时钟,在每个时钟的上升沿触发。
    wrreq/rdreq:请求(request)

  • 应用实例:
    跨时钟域:存储器A和B的时钟不一样,传递数据的时候可以用FIFO作为两者的衔接。
    带宽不同步:两个存储器的数据宽度不一样(比如一个8位,一个12位),传递数据的时候可以用FIFO作为两者的衔接。

FIFO的程序设计

需要四个模块:FIFO模块、写测试模块、读测试模块、顶层模块

FIFO IP核创建

quartus18下(quartus13还是在那个MegaWizard Plug In Manager里面)
在这里插入图片描述
指定好路径和IP核的名字:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上图选择我们想要的优化:

  • Lowest latency but requires synchronized clocks(最低延迟,但要求同步时钟): 此选项使用一个同步阶段,没有亚稳态保护,适用于同步时钟。它是最小尺寸,提供良好的 Fmax 。
  • TYPE_Cmal setting for unsynchronized clocks (异步时钟时的最小设置):这个选项使用两个同步阶段,具有良好的亚稳态保护。它是中等尺寸,提供良好的 Fmax 。
  • Best metastability protection, best fmax and unsynchronized clocks
    (异步时钟时最好的亚稳态保护,最好的 Fmax ,不同步):这个选项使用三个或更多的同步阶段,具有最好的亚稳态保护。它是最大尺寸,给出了最好的 Fmax 。

在这里插入图片描述
在这里插入图片描述
正常模式: 将 rdreq 看做读请求,在该端口信号为高电平进行读操作。(一般选正常模式)

前显模式: 将 rdreq 看做读确认,rdreq 信号置为高电平时,输出 FIFO 中的下一个数据字(如果存在)。(将会使设计性能下降)(应该意思就是超前读了一个数据字)

记忆块如下:
在这里插入图片描述

在这里插入图片描述
是否禁止上溢检测和下溢检测的保护电路。

上溢检测保护电路主要是用于在FIFO 满时,禁止 wrreq 端口
下溢检测保护电路主要是用于在 FIFO 空时,禁止 rdreq 端口

“Implement FIFO storage with logic cells only, even if the device contains memory blocks ?(选项使用逻辑单元实现 FIFO 存储器,即使器件拥有存储块)
选择使用存储块实现FIFO
在这里插入图片描述
仿真FIFO IP 核,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/206750
推荐阅读
相关标签
  

闽ICP备14008679号