赞
踩
二、FPGA学习笔记(二)Verilog语法初步学习(语法篇1)
四、FPGA学习笔记(四)通过数码管学习顶层模块和例化的编写
五、FPGA学习笔记(五)Testbench(测试平台)文件编写进行Modelsim仿真
六、FPGA学习笔记(六)Modelsim单独仿真和Quartus联合仿真
七、FPGA学习笔记(七)verilog的深入学习之任务与函数(语法篇3)
九、FPGA学习笔记(九)SPI学习总结及stm32的HAL库下SPI配置
参考正点原子开拓者FPGA开发指南
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模块、写测试模块、读测试模块、顶层模块
quartus18下(quartus13还是在那个MegaWizard Plug In Manager里面)
指定好路径和IP核的名字:
上图选择我们想要的优化:
正常模式: 将 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 核,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。