我是靠谱客的博主 每日一库,最近开发中收集的这篇文章主要介绍[FPGA系列] SDRAM项目实战总结一、项目介绍二、思路整理三、项目总结(细节知识整理),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        这个项目里面包含了大量的知识点,内容比较复杂,为了方便后续复习,对其中的内容进行一个大概的梳理。

一、项目介绍

        设计并实现一个 SDRAM 数据读写控制器,使用 PC 机通过串口向 SDRAM 写入 10 字节数据,并将写入的 10 字节数据读出,通过串口回传至 PC 机,在串口助手上位机上打印显示回传数据。

        项目中用到的SDRAM型号为W9825G6KH , 存 储 容 量 为 256Mbit(32MByte),地址位宽 13 位,数据位宽 16 位。

二、思路整理

        这个项目大大小小调用了13个模块,其模块框图如下所示。

         根据硬件设计的思路,其程序流向如下图所示。

         端口数和线路连接虽然很多,但只要弄清楚每个端口的作用和每个模块的作用,整个项目就会清晰很多。

         整体大致可以分为三个模块:

        ①sdram_ctrl:这个模块的作用是将对SDRAM最底层的读写、刷新、初始化等操作进行了封装,留出基本的地址线、数据线、命令线等,方便后续直接对SDRAM进行读写操作。

        ②sdram_top:这个模块是在sdram_ctrl基础上,加入了fifo模块,并进行封装,整个模块具有了基本的缓冲功能,方便后续跨时钟域对SDRAM进行读写操作。

        ③uart_sdram:这个是最顶层的模块,在本项目中,我们使用了uart通信实现PC与SDRAM间数据交互,加入了fifo_read模块,对SDRAM读出的数据进行缓存,然后提供给uart_tx模块将数据输出。

        其他模块,比如对SDRAM进行基本操作的模块,可以根据SDRAM数据手册进行编写,从下至上,步步为营,每个模块仿真没有问题后,一步步封装引用,到最后水到渠成。

三、项目总结(细节知识整理)

        1、SDRAM的自动刷新操作

        SDRAM的存储体是利用电容能够保持电荷以及可充放电的特性制成,电容所存储的电荷会随时间慢慢释放,这就需要不断刷新为电容充电,以保证存储数据可靠性。

        SDRAM的刷新操作是周期性的,在两次刷新的间隔可以进行数据的相关操作,所以我们需要计算出执行刷新操作的时间间隔。目前国际公认的标准是,存储体中电容的数据有效保存期上限是64ms,也就是说每一行刷新的循环周期最大为 64ms,那么刷新速度就是:行数/64ms。

        刷新命令一次对一行有效,刷新间隔也是随总行数而变化,由此可知,刷新周期计算公式为:T = 64ms \ 总行数 。要注意的是,这里算出的刷新周期是允许的最大周期,一般设置的比这个周期小一点更稳妥。

        2、仲裁模块

        在项目中,我们共涉及到SDRAM的4种操作方式,初始化操作、自动刷新操作、数据写操作和数据读操作,其中初始化操作优先级最高,SDRAM只有经过初始化操作后,才可被正常使用。SDRAM初始化后,自动刷新操作周期执行,而读和写操作不定时执行,为了协调好这些模块的运行,我们使用仲裁模块对其进行处理。

        使用状态机来表示仲裁模块的执行:

         由图可知, SDRAM 上电后处于初始状态(IDLE),初始化完成后,状态跳转到仲裁状态(ARBIT);当状态机处于仲裁状态时,若自动刷新请求、读请求、写请求中的任意一路请求有效,且其他两路请求信号无效,状态跳转到有效请求信号对应状态,对应操作完成后,对应结束信号有效,状态跳回到仲裁状态,等待下一次请求信号。

        若多路请求信号同时有效,优先执行优先级较高的操作,默认优先级为自动刷新操作>数据写操作>数据读操作。

        各路请求信号只有在仲裁状态才会被响应,这就保证某一操作正在执行时,不会被新的请求信号打断。

        3、数据流衔接

        项目能够顺利实现,很重要的一点就是要处理好数据流之间的衔接关系,也就是“打拍打地恰到好处”。比如项目中用到了FIFO模块,我们使用的FIFO 读模式为normal模式,这样从FIFO中读取数据会有“延一拍”的效果,在使能信号到达后,还要再来一拍数据才会输出,而写模式却没有滞后,所以要理清每个端口数据流接收与发送之间的时间关系,设计时才会成竹在胸。



参考资料:《FPGA Verilog开发实战指南——基于Altera EP4CE10》

最后

以上就是每日一库为你收集整理的[FPGA系列] SDRAM项目实战总结一、项目介绍二、思路整理三、项目总结(细节知识整理)的全部内容,希望文章能够帮你解决[FPGA系列] SDRAM项目实战总结一、项目介绍二、思路整理三、项目总结(细节知识整理)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(219)

评论列表共有 0 条评论

立即
投稿
返回
顶部