全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

SDRAM控制器设计之异步FIFO的调用

时间:2025-09-01 14:14

人气:

作者:admin

标签:

导读:为了加深读者对 FPGA 端控制架构的印象,在数据读取的控制部分,首先我们可以将SDRAM 想作是一个自来水厂,清水得先送至用户楼上的水塔中存放,在家里转开水龙头要用水时,才能及...

本案例为何需要引入FIFO

为了加深读者对 端控制架构的印象,在数据读取的控制部分,首先我们可以将 想作是一个自来水厂,清水得先送至用户楼上的水塔中存放,在家里转开水龙头要用水时,才能及时供应,相同的原理,要读取 SDRAM 中的数据来处理时, FPGA 端的控制架构中一定要有相当于水塔功能的“读出数据缓冲器”,在数据的处理上才会流畅。

而在使用自来水时,自来水厂会补充清水至水塔中,用户才可以连续的使用,同样保存着从 SDRAM 读出数据的缓冲器,当数据量下降到某个程度时也必须要补充,在数据的处理上才不会中断。

6931297e-f3f6-11ef-9310-92fbcf53809c.png

接着在数据写入的控制部分,我们可以将 SDRAM 想作是一个银行,相信当你身上有零钱时会顺手存进存钱罐,而不会费时的跑一趟银行去存钱,相同的原理,要将数据写入SDRAM 时, FPGA 端的控制架构中一定要有相当于存钱罐功能的“写入数据缓冲器”,才不会降低 SDRAM 存取的使用效率。只有在存钱罐存到一个程度时,我们才会取出钱拿去银行存放,同样保存着要写入 SDRAM 数据的缓冲器,当数据量上升到某个程度时也必须要取出放进 SDRAM,才不会造成数据的遗失。

693e6b8e-f3f6-11ef-9310-92fbcf53809c.png

FIFO IP核简介

FIFO 本质是RAM,其作用主要是作为缓存。

RAM和的读写都是根据地址来的,而FIFO( Fit In First Out)读写不需要提供读地址和写地址,其数据读写按照先入先出的方式。所以FIFO的读写非常简单,但灵活性稍差,不能做到灵活读写。

696d2046-f3f6-11ef-9310-92fbcf53809c.png

FIFO分两种:同步FIFO和异步FIFO。同步FIFO读写是一个。异步FIFO的读时钟和写时钟是分开的。

同步FIFO和异步FIFO常应用在同步时钟系统和异步时钟系统中。异步FIFO应用场景如多比特数据做跨时钟域处理、前后带宽不同步等。

本案例中用到的是异步FIFO。异步FIFO IP模块如下图:

697cdf68-f3f6-11ef-9310-92fbcf53809c.png

异步FIFO IP模块描述如下:

698c7338-f3f6-11ef-9310-92fbcf53809c.png

*注意:FIFO复位信号是高电平有效。

打开FIFO IP 设置界面可以找到FIFO文档链接:

69964b10-f3f6-11ef-9310-92fbcf53809c.png

阅读FIFO文档可知异步FIFO写操作的各个信号在写时钟下进行工作,读操作的各个信号在读时钟下进行工作:

69b2f850-f3f6-11ef-9310-92fbcf53809c.png

Sdram_Control.v文件里面例化了两个FIFO模块,一个是异步FIFO写模块,用于缓存要写入SDRAM器件的数据。异步FIFO写模块的数据写入在27MHz时钟下进行,数据的读出在100MHz时钟下进行。

69c2274e-f3f6-11ef-9310-92fbcf53809c.png

Sdram_Control.v文件例化的另一个FIFO模块是异步FIFO读模块,用于缓存从SDRAM器件读出的数据。异步FIFO读模块的数据写入在100MHz时钟下进行,数据的读出在27MHz时钟下进行。

69d14206-f3f6-11ef-9310-92fbcf53809c.png

FIFO IP 设置

异步FIFO写模块的IP设置如下:

FIFO数据位宽是16bit,与SDRAM位宽保持一致。

FIFO存储深度设置512字,虽然实际存储255个数据,但一般深度都设置大一点。

勾选读写时钟分开的选项。

勾选读的rdusedw接口,用来生成写SDRAM器件的请求信号。

其他选项可以选择默认。

69f97c4e-f3f6-11ef-9310-92fbcf53809c.png

6a18520e-f3f6-11ef-9310-92fbcf53809c.png

6a3444e6-f3f6-11ef-9310-92fbcf53809c.png

异步FIFO读模块的IP设置如下:

FIFO数据位宽是16bit,与SDRAM位宽保持一致。

FIFO存储深度设置512字,虽然实际存储127个数据,但一般深度都设置大一点。

勾选读写时钟分开的选项。

勾选写入端口的wrusedw接口,用来生成读SDRAM器件的请求信号。

其他选项可以选择默认。

6a47a4aa-f3f6-11ef-9310-92fbcf53809c.png

6a70f558-f3f6-11ef-9310-92fbcf53809c.png

6a8ea2b0-f3f6-11ef-9310-92fbcf53809c.png

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信