FPGA学习笔记——SDRAM(一)

基础知识

ROM和RAM:

ROM:只读存储器(Read Only Memory),数据只能读出而不能写入,最早的ROM只是用来存储程序的地方,比如BIOS。

  • PROM:可编程只读存储器,这样的产品只允许写入一次,所以也被称为“一次可编程只读存储器”。PROM在出厂时,存储的内容全为1,用户可以根据需要将其中的某些单元写入数据0(部分的PROM在出厂时数据全为0,则用户可以将其中的部分单元写入1),以实现对其“编程”的目的。PROM的典型产品是“双极性熔丝结构”,如果我们想改写某些单元,则可以给这些单元通以足够大的电流,并维持一定的时间,原先的熔丝即可熔断,这样就达到了改写某些位的效果。
  • EPROM:可擦写可编程只读存储器,即Erasable Programmable Read-Only Memory。它可以使用紫外线照射一定的时间来达到擦出的功能,擦除后即可进行再编程。
  • EEPROM:电可擦除可编程只读存储器,即Electrically Erasable Programmable Read-Only Memory。它的最大优点是可直接用电信号擦除,也可用电信号写入。它的擦除方式是使用高压电场,所以在EEPROM芯片内部都设置有电荷泵电路来产生高压。
  • Flash memory:闪存,也是一种非易失性的内存,属于EEPROM的改进产品。它的最大特点是必须按块(Block)擦除,而EEPROM则可以一次只擦除一个字节(Byte)。目前“闪存”被广泛用在PC机的主板上,用来保存BIOS程序,便于进行程序的升级。FLASH分为NOR FLASH和NAND FLASH。NOR型闪存更像内存,有独立的地址线和数据线,但价格比较贵,容量比较小;而NAND型更像硬盘,地址线和数据线是共用的I/O线,类似硬盘的所有信息都通过一条硬盘线传送一般,成本要低一些,而容量大得多。因此,NOR型闪存比较适合频繁随机读写的场合,通常用于存储程序代码并直接在闪存内运行,手机就是使用NOR型闪存的大户,所以手机的“内存”容量通常不大;NAND型闪存主要用来存储资料,常用的闪存产品有SSD、U盘

RAM:随机存取存储器(Random Access Memory),是与 CPU 直接交换数据的内部存储器。速度远远大于ROM,但是掉电后数据会丢失

        此处的随机是指RAM能够在任意时刻在任意存储位置进行读写,是相对于早期磁带等顺序存储设备而言。只要给出行地址和列地址,就能确定目标数据,这一过程和目标数据所处的物理位置无关。与“随机存取”相对的,是“串行访问”,指存取数据所花的时间与目标数据所在的物理位置有关。串行访问里面又分为顺序存取和直接存取。顺序存取如磁带,要想访问一个某一存储单元,必须先访问该单元前面的单元。直接存取如磁盘,磁头可以直接定位到目标存储单元,不需访问该单元前面的单元。需要注意的是,即使是直接定位,定位磁头所花的时间也是不同的,比如磁头当前在磁道0,定位到磁道2和磁道10000的时间肯定不同,所以存取数据所花的时间与目标数所在的物理位置仍然有关。

  • DRAM动态随机存取存储器,使用电容的电量来表示逻辑 0 和 1,电容充放电的特性导致其需要不断的刷新来保证数据不丢失,这就是“动态”的由来。存储容量较大,多用于数据存储。DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但价格要便宜很多,计算机内存条就是DRAM的。
  • SRAM静态随机存取存储器,使用触发器的两个稳定状态来表示逻辑 0 和 1,不需要刷新操作。存储容量一般较小,但读写速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。  
  • SDRAM同步动态随机存储器,同步是指其时钟频率和总线的系统时钟相同,并且内部命令的发送与数据的传输都以它为基准。

SDRAM发展历史:

             SDR SDRAM -> DDR SDRAM - > DDR2 SDRAM ->DDR3 SDRAM ->  ……

SDR:相对于时钟来讲,数据只在时钟上升沿传输。
DDR:相对于时钟来讲,数据在时钟的上升沿与下降沿都传输。所以DDR在每个时钟周期都可以完成两倍于SDR的数据传输量。

SDRAM

SDRAM相对于FPGA内部的BRAM、LUT、RAM速度较低,带宽较小,但是SDRAM的容量远远大于FPGA内部的RAM。在7系FPGA中,RAM资源的大小通道为300Kbit ~ 900Kbit,而SDRAM的容易一般为256M*16bit = 4096Mbit。由此可见,SDRAM的容量远远大于FPGA内部的RAM容量。

而FPGA内部的资源是有限的,所以当我们需要存放大量数据时(如缓存一帧摄像头的图像、缓存以太网下发的大量数据等等),内部RAM的空间不够。这时,我们就要考虑将数据存放到SDRAM中。

在使用SDRAM中,我们需要考虑的问题就是SDRAM的读写带宽。如果读带宽>写带宽,那么可放心使用SDRAM。如果读带宽<写带宽,这时由于无法及时将数据搬运出SDRAM,会造成SDRAM存储满了的情况,在这种情况下,需要结合写数据有没有空闲或者写数据可不可以丢(覆盖)等等因素评估,是否可以满足存储要求。

存储容量

                     

内存芯片寻址的基本原理:和表格的检索原理一样,先指定一个行,再指定一个列,我们就可以准确地找到所需要的单元格。这个单元格称为存储单元,这个表格称为逻辑Bank(L-Bank)。存储单元的位宽就是内存芯片的位宽。芯片是16位的,所以存储单元也就是16位的。

通常 SDRAM 的存储空间被划分为 4 个 L-Bank,在寻址时需要先指定其中一个 L-Bank,然后在这个选定的 L-Bank 中选择相应的行与列进行寻址(寻址就是指定存储单元地址的过程)。对 SDRAM 的读写是针对存储单元进行的,对 SDRAM 来说一个存储单元的容量等于数据总线的位宽,单位是 bit。那么 SDRAM 芯片的总存储容量我们就可以通过下面的公式计算出来:SDRAM总存储容量 = 行数 × 列数 × L-Bank的数量 × 存储单元的容量。比如W9825G6KH这颗芯片,为4M * 4 L_BANKS * 16BIT。

工作原理

                                     

SDRAM的读写是通过存储电容充放电实现的。存储电容满电荷就是1,放完电后就是0。在SDRAM中,行地址与列地址线是共用的。SDRAM初始化完成之后,选定L-BANK和行列地址线。选定地址后,就已经确定了具体的存储单元。接着打开行选通三极管,再打开列选通三极管,电容的电平状态就能呈现在位线上,即实现了数据读取。

但是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CL(CAS Latency,CAS潜伏期)。由于CL只在读取时出现,所以CL又被称为读取潜伏期(RL,Read Latency)。

写数据时由于数据信号由控制端发出,输入时芯片无需做任何调校,只需直接传到数据输入寄存器中,然后再由写入驱动器进行对存储电容的充电操作。不过,数据并不是即时地写入存储电容,因为选通三极管(就如读取时一样)与电容的充电必须要有一段时间,所以数据的真正写入需要一定的周期。为了保证数据的可靠写入,都会留出足够的写入/校正时间-tWR,这个操作也被称作写回。tWR至少占用一个时钟周期或再多一点(时钟频率越高,tWR占用周期越多)。

芯片引脚
 

                                      

还是以W9825G6KH为例:

名字

功能

备注

A0 ~ A12

地址信号

BS0/BA0 BS1/BA1

BANK地址信号

最多四个BANK,两位即可

DQ0 ~ DQ15

数据信号

CS/

片选信号

低有效

RAS/

行地址指示信号

CAS/

列地址指示信号

WE/

写使能

LDQM

UDQM

掩码信号

LDQM为低字节掩码

UDQM为高字节掩码

CLK

时钟

CKE

时钟使能

为高时时钟有效

VDD

电源

VSS

VDDQ

IO电源

VSSQ

IO地

NC

空引脚,不连接

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA自学笔记——设计与验证JMB FPGA(可编程逻辑门阵列)是一种可编程的硬件平台,可以实现各种数字电路的设计与验证。本文将简要介绍使用FPGA自学设计与验证JMB(低功耗、高效能、集成度高的多媒体芯片)的过程。 首先,我们需要了解JMB的功能和特性。JMB是一种面向多媒体应用的芯片,具备低功耗、高效能和高集成度的优势。我们需要详细研究JMB的硬件架构和内部模块,包括处理器核、存储器模块、图像和音频处理模块等。 接下来,我们可以使用FPGA开发板来设计和验证JMB。首先,我们需要熟悉FPGA设计工具,例如Vivado或Quartus等。这些工具提供了图形化界面和硬件描述语言(HDL)等设计方法。我们可以使用HDL编写JMB的功能模块,并将其综合为FPGA可执行的位流文件。 在设计完成后,我们需要验证JMB的功能和性能。我们可以使用仿真工具(例如ModelSim或ISE Simulator)来模拟JMB在不同情况下的行为。通过设计测试程序并运行仿真,我们可以验证JMB的各个模块是否正确地工作,是否满足设计要求。 在验证完成后,我们可以将位流文件下载到FPGA开发板中进行智能芯片的物理实现和测试。通过与外部设备的连接以及相关测试程序的运行,我们可以验证JMB在实际硬件中的功能和性能。 总结起来,学习FPGA设计与验证JMB,我们需要熟悉JMB的硬件架构和内部模块,并使用FPGA开发工具进行设计与验证。通过仿真和物理实现测试,我们可以验证JMB的功能和性能。这些过程需要理论知识和实践经验的结合,希望这些笔记能够给你提供一些参考和指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值