Nios II开发--基于SDRAM存储器运行
文章摘要
由于FPGA片内的RAM资源比较少(相对于嵌入式系统而言),而且由于布线原因,也不能得到完全利用,所以可利用的空间有限,简单的演示程序还可以跑跑,稍大一点的就提示内存不足了,可以让程序运行在外部的SDRAM上,本文主要就是针对外部SDRAM应用的说明;
硬件平台:EP4CE6F17C8
开发环境:Quartus II 13.1/Nios II 13.1
修改Qsys添加SDRAM控制器
Library -->
Memories and Memory Controllers -->
External Memory Interfaces -->
SDRAM Interfaces -->
SDRAM Controller
基本参数配置:
这里需要根据实际的电路来配置,本例中采用了1片的H57V2562GTR,256Mbit(16Mx16bit),一共4个Bank,13根行地址线,9根列地址线;
时序参数配置:
这里需要查看数据手册,进行相关参数填写;
CAS latency cycles:: 数据潜伏期,数据手册规定为3;
Initialization refresh cycles:初始化刷新周期
Issue one refresh command every: 刷新周期 = 64ms / 行数量(8K) = 7.8125us
Delay after powerup, before initialization:
Duration of refresh command(t_rfc):
Duration of precharge command (t_rp):
ACTIVE to READ or WRITE delay(t_rcd):RAS to CAS Delay
Access time(t_ac):
Write recovery time(t_wr,no auto precharge):
Qsys系统配置
1.修改名称为sdram,连接时钟线,复位线,指令总线和数据总线,并导出相关引脚;
2.删除之前的内部存储器(可不删);
3.修改CPU属性,修改复位向量和异常向量为sdram.
4.重新分配地址;
5.重新生成系统;
顶层文件修改
1.修改顶层接口及例化代码,导出SDRAM引脚;
2.将sdram时钟引脚连接至clk(重要),暂时不采用pll倍频;
3.分析综合并分配sdram引脚;
4.全编译;
5.下载至目标板;
修改BSP
1.重新生成BSP(Generate BSP);
2.重新编译BSP工程(Build Project);
3.重新编译应用工程,并下载运行;
下载完成后,系统自动运行,采用delay延时的程序中,可以发现,系统运行比内部ram慢很多,这里由于外部存储器访问模式比较复杂造成的,这就是为什么有的系统中有多级缓存的原因。