EDN首页   博客首页

日志档案

发表于 2008-9-14 23:44:26

3

标签: FPGA  SDRAM  模块  

基于FPGA的SDRAM设计——模块化设计思路

基于FPGASDRAM设计——模块化设计思路

 

    题记:基于FPGASDRAM设计是个大题,以后多篇日志将会涉及到这个主题,今天先从总体上把握SDRAMFPGA设计思想,也即介绍模块化的设计思路,以后还会具体深入的配合verilog源代码来展开介绍。(为了保持文章的原创性,本文的介绍文字均由特权同学根据自己的理解和认识用键盘实打实的敲上去的,其中难免有错误纰漏的地方,还望各位指点~_~ )

 

    关于SDRAM基础知识的文章之前共享过了,那篇好文章,基本把SDRAM的相关知识点说得很到位了。从基本概念到SDRAM的时序操作都囊括了,在这篇日志的开始将会对这些基本知识再多做一些说明,以便下文更好的进入正题——模块化设计思路!

    SDRAM是什么我就不多说了,它和平时我们接触比较多的SRAM不一样(计算机内存DDR SDRAM也是SDRAM,看看你家内存条上的八块芯片说的就是它了)。我们知道,FLASHEEPROM断了电也能保存数据,SRAM只要不断电数据就会一直保存,而SDRAM光是上电并不能一直保存数据不丢失(那为什么计算机的内存用SDRAM而不用RAM或者ROM呢?答案就在于速度和成本吧!)。

SDRAM是基于电容储电的原理,这也是它就有别于SRAM的最主要原因,SDRAM在上电情况下最多能保存数据64ms,这是个上限吧,超过这个时间电容放电完成数据也就无法保存了,所以我们要做的就是先电容放电完成一步给电容提前充一次电,这个步骤就叫做prefresh(预刷新)。此外,我们知道在SDRAM的某一行数据被读写后,也会加大其功耗,促使其电容加快放电,所以我们在读写完某一行地址的数据后,就要做一步叫做precharge(预充电)的操作。

    前面零散的说了点SDRAM相关的概念,下面系统的来给我们这个基于FPGASDRAM驱动设计分模块吧,然后我们再做具体深入不迟。

 

 

    我是参考了很多有关SDRAMverilog驱动,上面这个分模块方式是最常见的(最经典的)。顶层模块原则上是不做时序逻辑后者组合逻辑设计的,仅仅是定义接口,向上做成一个简单的封装,向下把三个模块粘合起来。时序控制模块里会把SDRAM从初始化到正常工作以及产生自刷新的请求和响应的时间关系做一个细化,其实说白了就是重点在这个模块里做各个状态的保持时间。命令控制模块会根据时序模块里产生的各个状态对FPGASDRAM的接口信号进行赋值,以达到相应的目的。数据地址模块就是要在指定的时间状态里读写SDRAM相应地址的数据。

 

 

系统分类: CPLD/FPGA   |   用户分类: FPGA/CPLD   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(400)    回复(2)  

投一票您将和博主都有获奖机会!

  • wangxing

    2008-9-17 8:47:29

    很不错,欢迎你到EDN的“可编程器件”版块发表心得!!

  • zhzjjx

    2008-10-7 20:03:02

    岗位职责:负责产品的FPGA设计、开发、调试。 职责要求: 1.计算机、电子及相关专业本科及以上学历,1-2年以上相关经验; 2.良好的数字电路基础; 3.良好的英文阅读能力; 4.熟悉FPGA的设计开发流程,熟悉VHDL、Verilog语言; 5.熟悉EDA综合仿真软件; 6.有成功的产品开发经验,熟悉SDRAM。 待遇面议 北京市海淀区上地三街中黎科技园1号楼3201 邹宏志 010-62987860-603 13581986948 zhzjjx@tom.com