在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7628|回复: 16

[原创] 【征文】基于FPGA的SDRAM接口实现

[复制链接]
发表于 2015-4-15 19:15:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 574920045 于 2015-4-15 19:21 编辑

基于FPGASDRAM接口实现

看到特权同学在eetop中举行的活动,来参加一下表示支持,因为当初买的第一块板子就是特权同学的板子。买的板子性价比很高,而且有很详细的资料和教程,是块非常好的入门级开发板,这里就不多说开发板,以免有打广告之嫌。现在我想分享一下自己在学习FPGA的道路中的一些收获,自己也不是什么高手,写的东西算是对自己入门的总结,同时也算是抛砖引玉吧,希望那些技术大牛们来传道授业解惑。用FPGA实现SDRAM接口算是刚入门,进入公司工作的第一个独立调试的东西吧,当时同事给做了一个板子,我开始调试sdram的代码是从lattice的官方网站上下载的一个开放的IP,然后自己在这个IP的基础上调试的。首先,在调试sdram之前自己也是看的sdram的技术手册,我用的是三星的K4S643232H,这个技术手册是个很重要的东西,由于当时第一次调试sdram,什么都不会,所以还是反复的多看了几遍,大致理解了结构和操作原理。感觉主要看的就是芯片信号及其作用,内部需要设置的寄存器,以及操作步骤和操作注意事项等,刚尝试调试sdram的朋友在调试的时候要细心。很多时候没有调通都是因为某些细节导致的。各个厂商的sdram的型号不同,设置和操作有细微的差别,但是大概的设置就是那些,现在我们从接口方面来介绍一下。

LatticeIP是通过用户总线来访问sdram,完成对SDRAM的初始化,设置寄存器等操作

我在调试sdram的时候,在初始化的时候就犯了一个错误,我一上电就对sdram进行初始化,当你仔细阅读sdram手册的时候,你会发现在上电的时候,需要等待一段时间,各个厂商有差别大致是几百微秒。所以当时初始化一直是错误的,后面的错误就很明显了,从latticeIP中也可以看到初始化的状态机操作

上面也是有一个延时后操作初始化。

这个就是进入工作状态的状态机,通过不同的信号控制读写等操作。当然了,最重要的就是读写操作的时序,

读时序

写时序

这样操作这个sdram接口的读写时序就能看出,读写的时候该操作那些信号。

对于在初始化的寄存器的时候要按照手册和你自己的需要配置寄存器,比如我在写的时候是单次写,但是我读的时候设置为促发读,一次连续读8个地址的数据,这时候你想想,你的地址的变化应该是怎样的,可能你会忽略地址变化,造成你对数据的疑惑。我还出现过的错误就是初始化没有成功,读出来的数据只有一个,但是我设置的是8位促发读,后来检查了很多,最后定位是初始化没有初始化正确的配置,最后一个一个寄存器初始化,发现软件编译的时候对宏定义的支持不好,后来改为直接赋值,最后初始化完成。所以,在调试sdram的过程中,有很多细节的问题决定了调试的结果。

当然,我见到有人调试的时候是用串口发送命令来调试,我调试的方法是通过单片机通过FSMC总线接到latticesdramIP提供的用户总线,我在特权同学的博客上看到用FSMC总线来和FPGA交互的设计方案,然后通过上位机超级终端通过用户界面来读写访问sdram内存,这样通过交互界面很方便完成调试。当然,这样需要外接有MCU来提供支持。如果你的FPGA只接sdram也可以通过例化一个通用的软核cpu来实现交互式的调试。

最后总结感觉调试sdram最主要的是多看手册,多细心调试观察,调试的手段有很多。Sdram在现实项目中有很多应用,我做的项目中sdram接口逻辑的主要就是做数据存储,作为LED显示数据的缓存。当然,学习sdram主要是学会使用它,你如果对存储带宽有更高的要求,可以学习调试ddr,对于ddr的调试,网上也有一些介绍。我推荐大家使用开发板通过Hard IP来调试,这样节省调试时间。调试的时候要仔细研读IPUG,这样会省去你很多做无用功的时间,我在这说那么多看手册的废话,希望大家能多看手册也是自己在学习中总结的一些经验。希望大家在学习FPGA的过程中都有所收获吧。

6.png
1.png
2.png
3.png
4.png
5.png

特权同学sdram源程序分析.pdf

283.86 KB, 下载次数: 181 , 下载积分: 资产 -2 信元, 下载支出 2 信元

 楼主| 发表于 2015-4-15 19:27:49 | 显示全部楼层
自己弄的LED显示控制卡用了SDRAM的读写接口,发个SDRAM接口学习经历和大家一起分享!SDRAM源代码和手册可以在lattice官方网站下载!
发表于 2015-4-15 20:06:46 | 显示全部楼层
写得很详细!!
 楼主| 发表于 2015-4-16 11:29:52 | 显示全部楼层
回复 3# jackzhang


    可加工资了啊!
发表于 2015-4-16 13:37:23 | 显示全部楼层
回复 4# 574920045


    已奖励!谢谢!!
发表于 2015-4-16 22:14:47 | 显示全部楼层
自己动手实际操作,感悟多多,其实SDRAM是从初学到进阶最好的载体
 楼主| 发表于 2015-5-6 08:59:16 | 显示全部楼层
自己顶一下!
发表于 2015-5-6 14:46:32 | 显示全部楼层
写的很好,顶一下
发表于 2015-5-13 18:19:29 | 显示全部楼层
sdram 很好 但是不同厂家的参数都不同 很难做到一个通用的IP。
发表于 2015-5-17 00:33:42 | 显示全部楼层
实SDRAM是从初学到进阶最好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-26 18:02 , Processed in 0.035006 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表