0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

友晶FPGA 来源:友晶FPGA 2025-02-26 15:27 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本案例为何需要引入FIFO

为了加深读者对 FPGA 端控制架构的印象,在数据读取的控制部分,首先我们可以将SDRAM 想作是一个自来水厂,清水得先送至用户楼上的水塔中存放,在家里转开水龙头要用水时,才能及时供应,相同的原理,要读取 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和ROM的读写都是根据地址来的,而FIFO( First 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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1656

    文章

    22292

    浏览量

    630433
  • 控制器
    +关注

    关注

    114

    文章

    17650

    浏览量

    190304
  • SDRAM
    +关注

    关注

    7

    文章

    449

    浏览量

    57293
  • fifo
    +关注

    关注

    3

    文章

    406

    浏览量

    45499

原文标题:06-SDRAM控制器的设计——异步FIFO的调用

文章出处:【微信号:友晶FPGA,微信公众号:友晶FPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SDRAM控制器的设计——Sdram_Control.v代码解析(异步FIFO读写模块、读写SDRAM过程)

    参考:05-SDRAM控制器的设计——异步FIFO调用; https://www.elecfans.com/d/6468023.html
    的头像 发表于 03-04 10:49 2193次阅读
    <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>的设计——<b class='flag-5'>Sdram</b>_Control.v代码解析(<b class='flag-5'>异步</b><b class='flag-5'>FIFO</b>读写模块、读写<b class='flag-5'>SDRAM</b>过程)

    【开源骚客】《轻松设计SDRAM控制器》第九讲—解密读写FIFO

    使用FIFO缓存已从SDRAM中读出的数据。二、读写FIFO的时序设计对于串口发送过来的是待写入的数据时,我们是在当串口接收到了第四个待写入的数据时(待写入数据的最后一个),才向SDRAM
    发表于 05-08 22:38

    Gowin SDRAM控制器的参考设计

    本次发布三例 SDRAM 控制器参考设计及 IP Core Generator 支持调用SDRAM 控制器 IP。 1. 32-bit
    发表于 10-08 07:59

    使用Verilog实现基于FPGA的SDRAM控制器

    摘 要:介绍了SDRAM的特点和工作原理,提出了一种基于FPGA的SDRAM控制器的设计方法,使用该方法实现的控制器可非常方便地对SDRAM
    发表于 06-20 13:04 2443次阅读

    SDRAM控制器简易化设计

    SDRAM存储芯片拥有快速读写的性能,可以应用以回波模拟系统作为数据高速缓存SDRAM芯片是由SDRAM控制器
    发表于 10-24 15:08 0次下载
    <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>简易化设计

    EPM1240的SDRAM控制器的设计

    EPM1240的SDRAM控制器的设计
    发表于 10-31 08:24 21次下载
    EPM1240的<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>的设计

    SDRAM控制器的设计

    逻辑复杂,接口方式与普通的存储差异很大。为了解决这个矛盾,需要设计专用的SDRAM控制器,使用户像使用SRAM -样方便的使用SDRAM。考虑到
    发表于 11-28 19:51 5次下载
    <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>的设计

    FPGA读写SDRAM的实例和SDRAM的相关文章及一些SDRAM控制器设计论文

    本文档的主要内容详细介绍的是FPGA读写SDRAM的实例和SDRAM的相关文章及一些SDRAM控制器设计论文主要包括了:FPGA读写SDRAM
    发表于 12-25 08:00 57次下载
    FPGA读写<b class='flag-5'>SDRAM</b>的实例和<b class='flag-5'>SDRAM</b>的相关文章及一些<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>设计论文

    如何使用FPGA设计SDRAM控制器

    针对SDRAM 操作繁琐的问题,在对SDRAM 存储和全页突发式操作进行研究的基础上,提出一种简易SDRAM 控制器的设计方法。该设计方法
    发表于 12-18 16:13 6次下载
    如何使用FPGA设计<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>

    基于SDRAM控制器软核的Verilog设计

    SDRAM控制逻辑复杂,使用很不方便。 为了解决这个矛盾,需要设计专用的SDRAM控制器,使系统用户象使用SRAM一样方便的使用SDRAM
    的头像 发表于 06-30 09:16 3363次阅读
    基于<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>软核的Verilog设计

    Gowin SDRAM控制器用户指南

    SDRAM 控制器用户手册主要内容包括功能特点、整体框图、工作原理、 信号定义、参数介绍、GUI 调用、接口时序等。主要用于帮助用户快速了解 高云半导体 SDRAM
    发表于 09-15 15:17 0次下载
    Gowin <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>用户指南

    异步FIFOVerilog代码实现案例

    同步FIFO的意思是说FIFO的读写时钟是同一个时钟,不同于异步FIFO异步FIFO的读写时钟
    发表于 11-01 09:58 2394次阅读

    FIFO设计—异步FIFO

    异步FIFO主要由五部分组成:写控制端、读控制端、FIFO Memory和两个时钟同步端
    发表于 05-26 16:17 2152次阅读
    <b class='flag-5'>FIFO</b>设计—<b class='flag-5'>异步</b><b class='flag-5'>FIFO</b>

    PIC32系列参考手册DDR SDRAM控制器

    电子发烧友网站提供《PIC32系列参考手册DDR SDRAM控制器.pdf》资料免费下载
    发表于 09-25 11:39 0次下载
    PIC32系列参考手册<b class='flag-5'>之</b>DDR <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>

    同步FIFO异步FIFO的区别 同步FIFO异步FIFO各在什么情况下应用

    同步FIFO异步FIFO的区别 同步FIFO异步FIFO各在什么情况下应用? 1. 同步
    的头像 发表于 10-18 15:23 2551次阅读