FPGA学习笔记——SDRAM(二)

​​SDRAM基本操作

SDRAM内部框图:

查阅W9825G6KH手册,总结了一些常用操作:

1、上电初始化

系统上电时,SDRAM芯片需一定时间进入工作状态。上电后,SDRAM需稳定200us,然后FPGA需发送所有Bank充电指令。在所有Bank充电指令发送完成后,还需要连续8次刷新操作,最后发送模式寄存器的参数。发送完模式寄存器的参数后,SDRAM就进入正常的工作状态。

2、模式寄存器

模式寄存器(Mode Register),主要设置SDRAM的写操作模式、CAS潜伏期、地址模式、突发长度。在设置完模式寄存器后,需要等待一段时间才可以发送新的指令,这段时间为tRSC(模式寄存器设置周期,Register Set Command)。


 

3、Bank与行激活

初始化完成后,无论是进行读还是写,都要先激活SDRAM中的Bank地址与行地址,激活之后才可以发送列地址。激活操作非常简单,其目的是指定读写操作的行数。行激活之后要间隔一段时间才可以发送列地址,这段时间为tRCD(RAS to CAS Delay)。tRCD是以时钟周期为单位,若tRCD等于3,则Bank与行激活后要等待3个周期才可以写入列地址。

4、列地址写入

行地址激活在之后,就要对列地址进行操作,输入列地址。在SDRAM中由于行地址和列地址有复用的地址线,因此在输入行地址时,RAS信号为低。在输入列地址时,CAS信号为低。列寻址信号与读写命令是同时发出的。使用WE信号控制是读还是写,如果WE为低则为写,反之为读。

5、突发读

在输入完列地址后,等待一个读潜伏期(CL)后,SDRAM输出读数据,读数据突发的个数与模式寄存器中设置的突发长度有关。读潜伏期CL以时钟周期为单位。

6、突发写

在输入完列地址后,可进行写操作。突发写写完多个字节的数据后,需等待一段时间,让数据成功保持。这段时间为tWR(Write Recovery Time),以时钟周期为单位,至少一个周期。

7、读数据时的读中断

在突发读数据时,可由另一条读指令打断。另一条指令生效后,将输出新指令的数据。

8、读数据时的写中断

在突发读数据时,可由另一条写指令打断。在打断时,需要控制DQM使DQ数据变为高阻态,防止端口驱动冲突。

9、写数据时的写中断

写数据时可由另一条写指令打断。

10、写数据时的读中断

写数据时可由另一条读指令打断。

11、突发停止

在突发操作时,可使用突发停止指令终止正在进行的突发操作。突发停止指令可用于整页的突发操作中。对于其他的突发长度,突发指令不可以使用。

12、顺序地址模式

在突发操作中,数据的写入或者读取地址是逐次递增的。

13、乱序地址模式

在突发操作中,数据的写入或者读取地址是乱序的,顺序可由A2 A1 A0控制。

14、预充电

预充电操作是对SDRAM中的存储电容进行刷新。当我们导通行控制三极管和列控制三极管后,会对电容中的存储的电荷量产生影响,从而导致存储的数据不稳定。因此在我们进行完读操作与写操作后,需要控制SDRAM中的刷新放大器对电容进行一次刷新。读写操作后的刷新操作,我们称它为预充电。

预充电分为两种类型。第一种是在读写操作完成后,发送预充电指令,SDRAM接收到此条指令后,开启一次刷新操作。第二种是在读写操作完成后,自动进行预充电,无需发送任何指令,SDRAM在执行完读写操作后,自动刷新一次。自动预充电课通过地址线A10控制,其中A10还可以控制对所有Bank进行预充电还是只对当前Bank进行预充电。在预充电结束后需要等待一段时间才可以进行下一行的操作,这段时间称为:预充电周期-tRP(Precharge command period)。

15、刷新

刷新操作与预充电类似,两者都是控制SDRAM中的刷新放大器,对存储电容进行刷新。与预充电不同的时,刷新操作是一个定时的操作,间隔一段时间后,必须执行一次。而预充电指令只在读写操作结束后才执行一次,刷新操作是防止SDRAM中的数据静置时间过长出现丢失。因此在定时刷新一次电容,加固存储电容中的数据。

目前SDRAM的存储电容的刷新周期最大为64ms,由于自刷新指令一次只能刷新一行,因此我们要在64ms内刷新完所有行。假设SDRAM的行数为4096,那么就需要在64ms内刷新4096次,我们在64ms内均匀的刷新4096行,那么自刷新的指令间隔:64ms/4096 = 15.6us。

SDRAM指令

DRAM的指令主要由:CKE、CS、RAS、CAS、WE、A10这几个引脚控制。通过输出不同的数值,SDRAM可以执行不同的指令,其中包含Bank行激活、预充电等等。指令表如图所示:

主要使用的指令如表格所示。

指令

CKE

CS

RAS

CAS

WE

A10

初始化

0

1

1

1

1

x

空指令

1

0

1

1

1

x

行激活

1

0

0

1

1

v

(自动预充电)

1

0

1

0

1

1

(自动预充电)

1

0

1

0

0

1

突发停止

1

0

1

1

0

x

预充电

1

0

0

1

0

0/1

自动刷新

1

0

0

0

1

x

模式寄存器

1

0

0

0

0

x

SDRAM时序

SDRAM在操作时,每个操作之间有具体的时间要求。这些时间要求共同组成了SDRAM的时序。时序与SDRAM芯片的速度等级相关,具体的时序要求如图所示。

其中一些重要的时序参数:

  • tRSC:   模式寄存器设置周期
  • tRC:   刷新时间间隔
  • tRCD:行激活与列地址输入直接的时间间隔 (RAS to CAS Delay)
  • tRP:   预充电的指令周期
  • tWR:  写数据的同步周期 - 2
  • CL:    读数据的潜伏期 - 2 

了解了SDRAM工作原理和操作之后,我们可以根据手册的时序图来构建状态转移图和总体的时序逻辑,然后根据整理的有效信息编写代码,可以很简单的完成SDRAM的驱动。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA网络指的是使用FPGA(可编程逻辑门阵列)实现的网络架构。FPGA是一种可以根据用户的需求进行重新编程的硬件设备,可以实现高度的灵活性和可重构性。在传统的网络架构中,网络功能通常由特定的硬件设备实现,例如路由器和交换机。而在FPGA网络中,这些功能可以通过在FPGA中重新编程来实现。 FPGA网络的一个主要优势是其高度可定制性。传统的网络设备通常具有固定的硬件架构,无法灵活地适应不同的网络需求。而FPGA网络可以根据具体的应用场景和需求重新编程,从而实现各种不同的网络功能和协议。这种可定制性使得FPGA网络具有适应性强、实时性好和可扩展性高的特点。 此外,FPGA网络还具有低延迟和高吞吐量的特点。由于FPGA网络可以在硬件层面上进行编程和优化,因此可以实现更加精细和高效的数据处理。这使得FPGA网络在高性能计算和实时数据处理等应用领域具有重要的优势。 然而,FPGA网络也面临一些挑战。首先,FPGA编程相对复杂,需要专门的技术知识和经验。其次,FPGA设备较昂贵,限制了大规模应用的普及。此外,由于FPGA的可编程性,网络中存在的潜在安全风险也需要引起重视。 总结来说,FPGA网络利用可编程硬件的特性,可以实现高度可定制和高性能的网络架构。虽然面临一些挑战,但FPGA网络在高性能计算和实时数据处理等领域具有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值