基于FPGA的SDRAM控制器设计(二)

  • 1. SDRAM理论基础
  • 2. SDRAM初始化模块以及仿真
  • 3.TOP模块的仲裁机制
  • 4. SDRAM刷新模块代码以及仿真
  • 5.代码
  • 6.参考资料

1. SDRAM理论基础

1、SDRAM(synchronous dynamic random access memory)同步动态随机存储器
2、SDRAM 容量=数据位宽x存储单元数量(Bank数x行地址x列地址)
对于SDRAM仿真module(sdram_module_plus.v):数据位宽为16位、bank数为4、每个bank大小为2Mbit
3、SDRAM初始化过程、各命令对应引脚电平如图1.1、图1.2所示

图1.1 初始化时序图

图1.2 命令真值表

2. SDRAM初始化模块以及仿真

初始化模块流程:
 A、 上电后给到一定延时(200us)
 B、 输出PRECHARGE命令
 C、 经过一个时钟周期(20ns)输出AUTO REFRESH命令
 D、 经过四个时钟周期(80ns)再次输出一个AUTO REFRESH命令
 E、 最后输出MODE REGISTER SET命令
 F、 完成SDRAM初始化

仿真结果:

图1.3 刷新模块仿真结果

 运行一段时间过后(210us),已有初始化完成信息显示如图1.3所示,CAS潜伏期(给出读命令后,数据会有相应的延时才会输出),设置为3个时钟周期,设置突发长度为4个存储单元,突发类型为连续型。

3.TOP模块的仲裁机制

 这个仲裁模块利用状态机来实现,主要用于处理刷新、读、写操作的先后顺序问题。
 目前只写了仲裁状态ARBIT、刷新状态AREF和初始状态IDLE。初始状态结束后进入仲裁状态,在仲裁状态下收到刷新使能后进入刷新状态,在刷新状态下收到刷新完成后进入仲裁状态。

4. SDRAM刷新模块代码以及仿真

刷新功能整体时序如图1.4

图1.4 刷新时序图

A、 一片SDRAM有4096行,4个bank,每一次只刷新4个bank的一行,在64ms内需要刷新到所有4096行,所以每次刷新的间隔为64000us/4096=15us。
B、 当刷新模块内部计数到15us时,向TOP模块发送刷新请求,仲裁模块回送刷新使能命令。
C、 刷新模块只需要在PRECHARGE命令后(20ns)输出一次刷新命令即可完成一次刷新。
D、 仿真结果如图1.5

图1.5 刷新仿真结果

可以看到在初始化完成后,每隔15us SDRAM就完成了一次刷新。

5.代码

我的Github

6.参考资料

【开源骚客】基于FPGA的SDRAM控制器设计

基于FPGA的SDRAM控制器设计(二)相关推荐

  1. 基于FPGA的SDRAM控制器设计(1)

    基于FPGA的SDRAM初始化配置 SDRAM简述 SDRAM的引脚及作用 SDRAM初始化时序控制 SDRAM上电时序代码 SDRAM测试模块的代码 仿真测试结果 参考文献 总结 SDRAM简述 S ...

  2. 基于FPGA的SDRAM控制器设计(2)

    基于FPGA的SDRAM的自刷新操作 SDRAM自刷新简述 SDRAM自刷新时序图 SDRAM自刷新代码 仿真模块的代码 仿真结果测试 参考文献 总结 SDRAM自刷新简述 SDRAM作为一个RAM并 ...

  3. 基于FPGA的SDRAM控制器设计(一)----------SDRAM初始化

    本文设计思路与讲解于参考邓堪文老师的视频,感谢-(不太适合一点基础都没有的小白) SDRAM简介 SDRAM(synchronous Dynamic Random ),同步动态随机存储器,同步指内存工 ...

  4. 基于 FPGA 的 UART 控制器设计(VHDL)(下)

    今天给大侠带来基于FPGA的 UART 控制器设计(VHDL)(下),由于篇幅较长,分三篇.今天带来第三篇,下篇,使用 FPGA 实现 UART.话不多说,上货. 之前有关于 Veriliog HDL ...

  5. FPGA之SDRAM控制器设计(三)

    FPGA之SDRAM控制器设计(三):写 由于已经涉及了上电刷新,写三个大的状态转移,先把状态转移图给出.主控状态转移图是基于手册上描述来的.在代码注释中会给出每个状态的意义解释. 写时序图 写状态转 ...

  6. 七、基于FPGA的Flash控制器设计

    根据项目需求,设计一个Flash控制器.以便将完成低速数据的存储.Flash选用了S25FL032.使用单线SPI接口,接线如图: 1,Flash S25fl032介绍 1.1 IO描述 1.2 相关 ...

  7. 基于FPGA的PID控制器设计

    1 知识背景 PID控制应该算是应用非常广泛的控制算法了.常见的比如控制环境温度,控制无人机飞行高度速度等.PID我们将其分成三个参数,如下: P-比例控制,基本作用就是控制对象以线性的方式增加,在一 ...

  8. 实验二 基于FPGA的分频器的设计(基本任务:设计一个分频器,输入信号50MHz,输出信号频率分别为1KHz、500Hz及1Hz。拓展任务1:用按键或开关控制蜂鸣器的响与不响。拓展任务2:用按键或开)

    实验二 基于FPGA的分频器的设计 1. 实验目的: (1) 掌握QuartusⅡ软件的层次型设计方法: (2) 掌握元件封装及调用方法: (3) 熟悉FPGA实验平台,掌握引脚锁定及下载. 2. 实 ...

  9. 基于FPGA的以太网控制器(MAC)设计(中)

    今天给大侠带来基于FPGA的以太网控制器(MAC)设计,由于篇幅较长,分三篇.今天带来第二篇,中篇,以太网控制器(MAC)程序的实现.话不多说,上货. 导读 当前,互联网已经极大地改变了我们的生产和生 ...

最新文章

  1. http的“无连接”指的是_【38期】一份tcp、http面试指南,常考点都给你了
  2. flutter已经支持安卓热更新_flutter 在 android 上的热更新
  3. MapReduce排序-实现比较器和序列化代码
  4. 一个SAP顾问2018年的回顾
  5. 开发转测试没人要_新人如何快速的进入融入软件测试行业?
  6. jquery获得当前元素父级元素_jquery怎么获取当前元素的父元素
  7. webservices系列(三)——调用线上webservice(天气预报和号码查询)
  8. 银行转账和分布式事务(转)
  9. HTML5期末大作业:商城网站设计——小米商城官网首页(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 web学生网页设计作业源码...
  10. Swift-基本运算符
  11. 上海市提取公积金攻略
  12. 16 张图解 | 淘宝 10年架构演进
  13. OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 5726797824, 0) failed;
  14. 高德地图2----输入提示、关键字查询
  15. 为什么手机信号满格,但网速却还是那么慢?这4点原因是关键
  16. 【论文阅读】KLD模型
  17. 时间序列学习 经典案例(1)【tsfresh】预测多只股票
  18. java mail 发送邮件_JavaMail实现收发邮件——(二)发送邮件
  19. bpmn不带网关的流程
  20. 生日提醒神器,拯救你的七秒金鱼记忆。

热门文章

  1. VSCode开发工具设置2个空格缩进
  2. linux关闭无响应文件夹,4种强制关闭Ubuntu中无响应应用程序的方法
  3. 1进程 ppid_PPID · 理解Linux进程 · 看云
  4. 2017腾讯暑期实习-产品经理一面(群面)
  5. java中String类的常用方法总结
  6. 腾讯云iis8.5新建网站无法访问_教程篇 | 使用七牛云存储、CDN加速网站图片
  7. setp的好处是一次性可以设置多根线条的样式
  8. Java并发之Semaphore源码解析
  9. com.sun.jersey.api.client.ClientHandlerException:java.net.ConnectException:Connection refused:connec
  10. CCIE-IPV6单播和组播地址