深度学习与企业知识管理:角色解析AI大模型
06-18
摘要:本文介绍了SDRAM的特点和工作原理,提出了一种基于FPGA的SDRAM控制器的设计方法。
采用这种方法实现的控制器可以非常方便地控制SDRAM。
控制住。
关键字:SDRAM;控制器; Verilog;状态机 简介 ---在基于FPGA的图像采集与显示系统中,往往需要大容量、高速的存储器。
在各种随机存储器件中,SDRAM因其价格低、体积小、速度快、容量大而成为理想的器件。
但SDRAM的控制逻辑比较复杂,时序要求也很严格,使用起来不方便。
这就需要一个特殊的控制器,以便系统用户可以轻松地操作SDRAM。
为此,本文提出一种基于FPGA的SDRAM控制器的设计方法,并使用Verilog进行实现。
仿真结果表明,通过该方法设计实现的控制器可以在FPGA芯片中形成如图1所示的SDRAM接口。
这使得系统用户操作SDRAM变得非常方便。
SDRAM简介 ---SDRAM器件的引脚分为三类:控制信号、地址和数据。
通常一个SDRAM包含多个BANK,每个BANK的存储单元按行和列进行寻址。
由于这种特殊的存储结构,SDRAM具有以下运行特性。
● SDRAM 的初始化 ---SDRAM 上电~μs 后,必须使用初始化过程来配置SDRAM 的模式寄存器。
模式寄存器的值决定了SDRAM的工作模式。
● 访问内存单元 ---为了减少I/O引脚数量,SDRAM复用了地址线,所以在读写SDRAM时,首先激活ACTIVE要读写的BANK当读写指令有效时,先锁存行地址,再锁存列地址。
一旦某个BANK被激活,同一个BANK只能在执行预充电命令后才能再次激活。
●刷新与预充电 ---SDRAM的存储单元可以理解为一个电容器,它总是倾向于放电,所以必须有一个定时的刷新周期,以避免数据丢失。
刷新周期可以通过(最小刷新周期÷时钟周期)计算。
预充电 BANK 或关闭激活的 BANK。
它可以对特定BANK进行预充电,也可以同时作用于所有BANK。
A10、BA0、BA1用于选择BANK。
● 操作控制 ---SDRAM的具体控制命令是由一些专用的控制引脚和地址线辅助的。
时钟上升沿时CS、RAS、CAS、WR的状态决定了具体的操作动作。
地址线和BANK选择控制线在某些操作动作中作为辅助参数输入。
由于特殊的存储结构,SDRAM有很多操作指令,不像SRAM只有简单的读写。
SDRAM控制器的设计与实现 ●总体设计框图及外部接口信号 ---SDRAM控制器与外部的接口原理图如图1所示。
控制器右端均直接与SDRAM相连,对应引脚所连接的信号在此不做介绍。
控制器左侧的接口信号是连接FPGA的系统控制接口信号。
其中,CLK为系统时钟信号,RESET_N为复位信号,ADDR为系统给定的SDRAM地址信号,DAIN为系统写入SDRAM所用的数据信号。
其中,FPGA_RD和FPGA_WR为系统读写请求信号(1有效,0无效),SDRAM_FREE为SDRAM的空闲状态指示信号(0为空闲,1为忙),FDATA_ENABLE为数据发送和接收指令信号控制器到系统(为0时,不能与SDRAM收发数据;为1时,如果是系统读操作,此时系统可以从DAOUT接收SDRAM数据,如果是写操作,此时系统可以通过DAIN向SDRAM发送数据)。
---SDRAM控制器的结构组成如图2所示,包括四个模块:系统控制接口模块、CMD命令解析模块、命令响应模块、数据通路模块。
系统控制接口模块用于接收系统控制信号,然后生成不同的CMD命令组合; CMD命令解析模块,用于接收CMD命令并将其解码为操作指令;命令响应模块用于接收操作指令并生成SDRAM操作动作;数据通路模块用于控制数据的有效输入和输出。
---SDRAM控制器设计的状态机实现原理如图3所示,包含9个状态。
从Precharge到Mode set是SDRAM上电后的初始化过程,其余状态为SDRAM的正常读写。
并刷新操作流程。
● 各模块设计 ---(1)系统控制接口模块 ---该模块包含初始化机制和系统命令解析机制。
初始化机制不仅要完成SDRAM的初始配置,还要完成控制器的初始配置,使控制器工作在与外部SDRAM相同的模式下。
流程如下:在计数器的控制下,系统上电约μs后,首先进行SDRAM的初始配置,并通过一条Precharge allbank指令完成所有BANK的预充电,随后是多条Refresh指令,然后通过模式配置指令 LOAD_MODE ,完成SDRAM工作模式设置。
之后,进行控制器的初始配置。
首先发出 LOAD_REG1 指令将模式字加载到控制器中,然后发出 LOAD_REG2 指令加载控制器的刷新计数器值,完成控制器的初始配置。
---上述初始化过程完成后,系统命令分析机制可以接收并分析系统的读写信号和地址信息,以及下一个模块反馈的CMDACK信号,并生成相应的指令CMD命令和SADDR地址信息给CMD命令解析模块。
通过程序设置,可以根据初始配置的参数来决定在读或写的特定时刻是否发出Precharge或Refresh CMD命令,从而简化了系统的控制。
每当收到 CMDACK 为 1 时,就表示 CMD 命令已发出且有效。
此时,必须发出NOP命令(CMD=)。
应当注意,SADDR是时分复用的。
初始化加载模式时,使用SADDR来传输用户自定义的模式字内容;正常读写时,SADDR用作地址线,传输SDRAM所需的行。
、列和块地址。
另外,系统命令分析机制会根据控制器对SDRAM的操作状态,向系统用户反馈SDRAM_FREE和FDATA_ENABLE信号。
---(2)CMD命令解析模块 ---该模块对CMD命令进行判断,结果输出相应的操作命令信号给命令响应模块。
例如,当CMD为时,do_read信号输出为1,当CMD为时,do_write信号输出为1。

同时,仅输出一条有效操作指令。
------此外,该模块还包含用于预设某些模式参数的模式寄存器,主要包括三类: 第一类是SDRAM模式控制寄存器。
LOAD_MODE指令期间,将该寄存器的值发送到SDRAM的模式寄存器,以控制SDRAM的工作模式。
第二类是SDRAM控制器的参数寄存器(LOAD_REG1),它使SDRAM控制器的工作模式与外部SDRAM设备的工作模式相匹配。
第三类是SDRAM刷新周期控制寄存器,它预设一个用户自定义的自动刷新计数值,用于SDRAM刷新周期预设。
上述三类寄存器的预设值是在初始化时由系统控制接口模块通过SADDR传输的。
---(3)命令响应模块 ---该模块的功能是根据从CMD命令解析模块获取的操作指令,做出符合SDRAM读写规范的操作动作来执行用户期望。
手术;给出数据选通信号OE来控制数据路径模块(写操作期间OE为1,读操作期间OE为0)。
另外,该模块将系统的非复用地址ADDR处理成SDRAM复用地址,分时发送给SA和BA。
程序中地址复用方法为: ---赋值 raddr = ADDR[ROWSTART + ROWSIZE -1:ROWSTART] //raddr 为行地址 ---赋值 caddr = ADDR[COLSTART + COLSIZE - 1: COLSTART] //caddr为列地址 ---赋值 baddr= ADDR[BANKSTART +`BANKSIZE -1:BANKSTART]//baddr为BANK地址 ---(ROWSTART, COLSTART, BANKSTART是 row, ADDR 中的列和块的起始位) ---程序中 WRITEA 和 READA 的 CMD 指令实际上隐含了 ACTIVE 命令,所以模块收到 do_write 或 do_read 后会先激活命令。
Action,读写动作会在初始化配置中指定的CAS延迟时间后执行。
例如,初始化时,模式字指定CAS=2,BURST LENGTH=PAGE,那么从命令接口模块接收到do_write=1后,首先会执行激活动作并给出行地址(发出RAS_N=0,CAS_N =1,WE_N= 1,SA=raddr),2个时钟延迟后,进行写操作并给出列地址(发出RAS_N=1,CAS_N=0,WE_N=0,SA=caddr)。
---另外,模块收到各种操作指令后,会反馈cmdack信号给CMD命令解析模块为1,最后反馈给系统控制接口模块CMDACK信号为1。
如果没有收到操作命令,则 cmdack=0,CMDACK 信号为 0。
---(4) 数据通路模块 ---该模块由 OE 信号控制,同步数据的进出以及相应的时序操作说明。
当OE为1时,数据可以通过DQ引脚写入SDRAM;当OE为0时,可以从SDRAM的DQ引脚读出数据。
---控制器使用及仿真时序 ---根据不同的系统设计要求对SDRAM的读写,对控制器进行简单的参数修改(主要是初始化时模式内容字的设置),即可可以使SDRAM的控制满足您自己的要求。
该控制器使得系统对SDRAM的操作变得非常简单。
以写操作为例。
初始化后,只要SDRAM空闲,系统就会收到SDRAM_FREE有效信号。
此时可以发出FPGA_WR指令并给出ADDR地址信息。
收到FDATA_ENABLE有效的反馈后,系统将通过数据DAIN写入SDRAM,即写操作完成,系统不需要关心SDRAM的刷新和预充电。
仿真时序图如图4、图5和图6所示。
在写和读时序中,CAS=2,BURST LENGTH=PAGE,DC表示Don’t care。
仿真结果表明,该控制器可以使系统对SDRAM的控制变得非常简单、方便。
结论 ---在实际应用中,采用ALTERA的Cyclone FPGA器件进行设计,并使用Verilog完成设计输入,实现上述SDRAM控制器接口电路。
另外,由于采用了参数化设计思想,该控制器只要根据其器件参数进行设置,就可以适用于特定容量的SDRAM的特定工作模式,具有一定的通用性。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-18
06-18
06-18
06-17
06-18
06-18
06-18
最新文章
使用电子管有哪些注意事项?如何检查电子管之间是否短路?
博通支付1200万美元和解SEC财务欺诈指控
八名运营商高管确认加入虚拟运营商
内蒙古农牧区雷电灾害成因分析及防雷对策
北京联通将5G应用于世园会远程医疗急救
TD-SCDMA最后一轮冲刺测试启动,产业前景更加光明
专访阿里云总裁王健:云计算服务平台梦想成真
USB2.0控制器CY7C68013的接口设计与实现