sdram是一种ram类型的易失性存储器件,因其具有较大的容量和相对较低的价格在嵌入式系统中应用广泛。然而应用sdram需要实现刷新操作、行列管理、不同延迟和命令序列等逻辑,控制复杂,而qsys提供的sdram控制器ip核接口极大的方便了sdram的使用,本文我们实现使用sdram控制器ip核对sdram进行读写操作。
理论部分简介
sdram控制器ip核能够处理所有的sdram协议要求,包括上电初始化、地址复用、刷新、读写时序等,极大的方便了sdram的使用。下面我们先来看看sdram控制器ip核和sdram芯片的连接框图,如下所示:
从上面的这个结构框图中,我们可以看到sdram控制器ip核产生于fpga内部,它带有接口引脚、控制逻辑、以及avalon从机接口。接口引脚用来连接外部sdram芯片管脚,这些接口引脚通过altera fpga上的i/o引脚连接到sdram芯片管脚上。控制逻辑用来实现sdram的操作,比如,sdram初始化,自刷新,突发读写等,这些全都是控制逻辑来完成的,控制逻辑不需要我们编写,当我们生成sdram控制器ip核之后,它会自动生成。
avalon从机接口用来连接我们的cpu,avalon从机接口是sdram控制器ip核中仅为用户可见的部分。从控制器端口提供一个如sdram芯片一样大的平滑、线性存储器空间。当访问从控制器端口时,sdram协议的细节完全透明。avalon接口作为一个简单的存储器接口操作,没有存储器映射的配置寄存器。这里我们需要注意的是:sdram芯片必须和avalone接口一样以相同的时钟来驱动。
我们可以看到图中的片内锁相环(pll),它就是用来调整sdram控制器与sdram芯片之间的时钟相位差。在较低的时钟频率下,可能不需要pll。在较高的时钟频率下,当信号在引脚上有效时,需要pll来调整sdram时钟。pll并没有包括在sdram控制器内。如果需要pll,设计者必须在生成qsys系统模块以外手动添加pll。altera fpga和sdram芯片的不同组合将要求不同pll的设置。
还有一点我们需要说明的是fmax性能取决于整个硬件设计。qsys系统模块的主控制器时钟驱动sdram控制器和sdram芯片。因此,整个系统模块的性能决定sdram控制器的性能。例如,为了实现100mhz的fmax性能,系统模块必须设计为100mhz时钟率,且quartusii软件的时序分析必须检验硬件设计是否能够进行100mhz的操作。说完了sdram的综述之后下面我们就总结给出sdram控制器ip核的功能特性:
(1)sdram控制器ip核具有不同数据宽度(8、16、32或64位)、不同内存容量和多片选择等设置。
(2)sdram控制器ip核可以全面支持符合pc100标准的sdram芯片。 (pc100,表明时钟信号为100,数据读写速率也为100)
(3)sdram控制器ip核可选择与其他的片外avalon三态器件共用地址和数据总线,该特性在i/o引脚资源紧张的系统中很有用。我们可以在qsys中使用sdram ip核的配置向导来指定硬件特性和仿真特性。sdramip核配置向导有两个选项卡:memory profile和timing,如下图所示。
为了使用方便,presets列表提供几个预定义的sdram配置。如果实际使用的sdram芯片型号与列表中的一致,可直接选用而不用设置其他选项。选择不同的预配置,sdram ip核将自动改变memory profile和timing选项卡上的值来匹配指定的配置。如果实际使用的sdram芯片与列表中的不相同,则需要设计者根据sdram芯片数据手册的参数来设置memory profile和timing标签上的值,改变任何选项卡上的配置设置转变preset值为custom。
当然我们也可以将我们配置好的sdram参数添加到预定义的sdram配置,在今后的使用过程中我们就直接选择我们添加的预定义的sdram配置。接下来我们就来简单的介绍一下memory profile和timing。
(1) memory profile选项卡
memory profile选项卡允许设计者指定sdram的结构,例如地址和数据总线宽度、片选信号的数目和区的数目等。memory profile选项卡设置项如下表所示。
这些参数值可参照使用的sdram手册来设置。通过memory profile选项卡上的设置后,消息框以兆字节、兆bit位以及可寻址的字长显示sdram预期的内存容量。将这些预期值与选择的sdram的实际大小相比较可以检验设置是否正确。说完了memory profile选项卡,接下来我们看看timing选项卡。
(2) timing选项卡
timing选项卡允许设计者设置sdram芯片的时序规范。正确值在sdram芯片数据手册中提供。timing选项卡上可用的设置如下表所示。
我们需要注意的是无论我们输入的精确时序值如何,每个参数实现的实际时序将为avalon时钟的整数倍。对于每隔一段时间执行一个刷新命令的参数,实际时序将不超出目标值,而其他所有参数,实际时序将大于或等于目标值。
操作任务
利用官方sdram controllerip核实现对sdram的读写操作。
硬件设计
实验的硬件框架如下图所示:
图中,我们要把clk ip 核的时钟频率设置为 100mhz。
另外需要注意的是,nios ii ip 核需要将复位向量 reset vector 和异常向量 exception vector 都设置为 sdram,如下图所示:
现在我们主要来介绍一下新添加的sdram ip 核,按照使用的 sdram 型号为
w9825g6kh的datasheet,配置如下图所示。
为了方便大家以后的使用,下面我们就简单为大家讲解一下如何将自己的sdram配置添加至library中。当我们配置好sdram以后,我们可以在窗口的右下方找到【new】按钮并点击,弹出如下图所示页面。
在该页面中,我们将preset name和preset description填写好以后,我们就可以点击【save】按钮,弹出如下图所示提示窗口。
在该提示窗口中我们选择是,这时我们就可以在library中看到我们添加的sdram配置了。然后我们重新打开qsys软件,这时,我们就可以在sdram的library中看到我们添加的w9825g6kh。最后我们再补充说明一点,sdram为动态存储器对时序要求比较高,由于fpga内部有延迟,所以pll输出100mhz时钟频率给sdram_sclk时,pll时钟需要设置相位偏移,
相位偏移我们设置为-75deg。
顶层代码如下:
从顶层代码可以看到,我们主要例化pll和sdram控制器,pll生成两个100mhz的时钟,其中一个偏移-75度用于驱动sdram芯片。
软件设计
本实验的软件工程代码如下:
在代码中,首先定义了一个aut_u8型的指针ram指向sdram的基地址+0x10000,之后我们改变或读取指针指向的地址(sdram基地址+偏移地址)的值,就改变了sdram相应地址(偏移地址/2)的值。在主函数中,我们通过memset函数将从ram指向地址开始的100个地址的值全部清0,再通过一个for循环向从ram指向地址开始的100个地址的赋相应的值,最后再将这100个值逆向读取打印出来,这样就完成了sdram的读写操作。可以看出,通过sdram控制器的使用,对sdram的读写操作变得非常简单。
之所以对sdram的读写要偏移0x10000,是因为cpu程序的运行占用了从sdram基地址开始的部分内存,如果我们不做偏移直接从基地址开始读写,则很有可能破坏程序正常运行,0x10000这个值并不固定,只要别占用程序运行的内存就可以了。
下载验证
首先我们需要在quartus ii软件中将qsys_sdram.sof文件下载到开发板中;然后在eclipse软件中将qsys_sdram_rw.elf文件下载进去。
qsys_sdram_rw.elf下载完成以后,我们的c程序会自动运行,同时在nios ii console界面会显示程序的打印信息。图中可以看到从sdram中读出的数据为99到0,与我们写入的数据一致,说明本次实验下载验证成功。
如果大家在下载elf文件的过程中工具提示错误,如下图所示:
我们留意到在下载过程中,console 会提示如下图所示的信息,说地址“0x2000020”到 “0x200d757”之间验证错误。
错误的这段地址并不固定,但它们在qsys 系统中刚好处于 sdram 的地址范围内。此时,我们可以通过以下方式解决下载报错的问题。
在eclipse 中右击应用工程“qsys_sdram_rw”,在弹出的菜单中选择“run as”
—>“run configurations”,会弹出“run configurations”配置页面,如下图所示:
在上图所示页面中的“target connection”标签页最下方,勾选“reset the selected
target system”。在上图中,我们同时勾选了“ignore mismatched system id”以及“ignore mismatched system timestamp”。设置完成后,点击“apply”,最后点击“run”来重新下载elf文件,这样在下载的过程中就不会报错了。
7颗 4颗 12颗光束 四合一 控制板 共阳极架构灯具芯片
压力开关接线图与特点
华为畅享6S评测 相比同价位产品表现更加均衡
iPhone 5有望拥有声音记录应用
无人机系统的基本结构及工作原理
使用SDRAM控制器IP核对SDRAM进行读写操作
人脑和人工智能相比谁更具有能力
微电子封装技术探讨
运动耳机哪个牌子好性价比高,2022运动耳机推荐
itunes是什么意思_itunes怎么用(itunes使用步骤教程)
2018阿里云双12年终大促主会场全攻略
基于TMPN3150芯片和总线技术实现步进电机智能控制器的应用方案
牙齿矫正背后的智能制造,飞凌智慧医疗解决方案
介绍一款改变游戏规则的产品—ACT85610电源管理IC(PMIC)
中星微AI将继续深入聚焦人工智能技术与芯片研发的融合
用于跟踪单个分枝杆菌细胞中药物反应动力学
UVA-340灯管户外暴晒和紫外老化的对比
区块链技术在智慧城市如何应用
俄发力无人机行业,潜心研究察打一体化属性的轻型无人机
南大光电首款国产ArF光刻胶通过认证 可用于45nm工艺光刻需求