找回密码
 注册
关于网站域名变更的通知
查看: 167|回复: 1
打印 上一主题 下一主题

转——FIFO之战

[复制链接]
  • TA的每日心情
    开心
    2019-11-20 15:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2019-4-12 09:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    转——FIFO之战
    FIFO是First Input First Output的缩写,先进先出队列,这是一种传统的按序执行方法,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。
    接下来我们学习如何在Quartus中使用FIFOIP核,我们常用的FIFO为双时钟的异步FIFO,在这里为了较为简单,方便大家理解,虽然我们使用的是异步FIFO,但两个时钟端口使用的确是同一个时钟。
    首先,新建一个工程
    然后建立起顶层文件
    接下来我们需要调出FIFO,点击TOOLS->
    点击NEXT
    在Memory Compiler中选择FIFO,设置文件名称为my_fifo
    点击NEXT
    设置存储空间为1024*8
    点击选中第二个选项
    点击NEXT
    点击NEXT
    点击选中full和empty,如下图所示
    点击NEXT
    点击NEXT
    点击NEXT

    % d& B- e# r  F7 u0 t& j7 M
    点击NEXT
    点击Finish,配置结束。由于FIFO是一种存储器,所以我们可以建立两个FIFO控制器,一个写控制器负责把数据写入到FIFO,另一个读控制器负责把数据从FIFO中读出来,仿真验证读写是否正确
    FIFO写控制器具体代码如下:
    FIFO读控制器具体代码如下:
    接下来我们需要通过顶层文件,实例化所有模块,具体代码如下
    最后我们编写测试代码如下:
    在软件中设置tb为测试文件之后,查看仿真波形
    如上图可以看出,当写请求信号线为高电平的时候,有数据写入,输出端q保持初始值状态。当数据写入完毕以后,FIFO满标志信号线会置为高电平,同时读控制器开始读出数据,q端有数据输出。写入数据和读出数据完全一致,说明数据读写正确。

    6 q, y8 R. K6 Z0 A+ D) l2 B
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-31 10:54 , Processed in 0.121094 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表