最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

Lattice DDR3教程全攻略之仿真篇

IT圈 admin 36浏览 0评论

2024年3月18日发(作者:兴吉欣)

Lattice ddr3教程全攻略之仿真篇

By: BACKKOM

QQ:784496547

Date:2014/9/19

对于这部分,首先建议安装好diamond3.1,modelsim se 10.1a这两个软件,如

果想仔细分析DDR3的IP部分,可仔细阅读DDR3 SDRAM Controller IP Core User’s

Guide,下面用ug代指。官网上可以download,还有DDR3的基本知识,可以到

网上download《高手进阶,终极内存技术指南——完整进阶版》,这个文章值得

一读。DDR的调试成功,可以说是开发学习FPGA的一大重要标志,能够把DDR3

玩转的熟练,那自称FPGA工程师也是理所当然了。。。

Lattice的ddr3控制器接口逻辑还是相对简单,比较好理解的,下面来看看

DDR3 IP 的内部结构:

图:DDR3 IP逻辑框图

Initialization Module:根据JEDEC.的标准,在上电后对DDR3进行初始化配置,

配置其相应的寄存器和工作方式等,具体配置的寄存器可以参看ddr3的协议文

档,JEDEC规范写的很详细。当初始化配置完成后,该模块会给出一个done信

号告诉用户。

sysCLOCK PLL:用于提供IP工作所需要的时钟,并提供给用户端一个时钟:

k_clk。

Data Path Logic:用于从DDR3读取的数据转换到用户端,写入的数据不经过

该模块,写入的数据从Command Application Logic (CAL)模块输入。

Command Decode Logic (CDL) :该模块用于译码命令,控制core按照设定的

命令正确的访问ddr3芯片。

DDR3 PHY:用于转换单端的数据转换为差分给到ddr芯片端,和差分转单端

输入。

以上部分有基础了解就行,不需要深究。

图:DDR初始化时序

当上电后,用户应该将init_start拉高至少200us,直到init_done被拉高

一个周期,则将init_start拉低。用户检测到init_done被拉高后就表明芯片初始

化完成了,也大概可以确定硬件是OK的。可以进行下一步操作。

读和写控制非常简单,ug上说的很清楚,就不一一赘述了。

做DDR3设计之前当然是先仿真,这个毋庸置疑,那么仿真当然首选Modelsim,

在仿真之前,先做好准备工作,那就是先编译好仿真所需要的库文件,编译库文

件方法和Altera Xilinx类似,见《在Modelsim中建立LATTICE仿真库》一文,已

共享。lattice的资料做的确实不如xilinx和altera。也是很多使用lattice fpga的工

程师经常抱怨的一点,没有前人带的情况下使用lattice确实是非常恼火的。但是

却也没有江湖传言的那么难用,其实很多时候并不是因为难,而是我们不愿意去

了解,因为陌生而导致的恐惧,先入为主吧。那,废话不多说,开始进入主题。

现在假定你lattice库文件已经编译成功,那,我们当然要物尽其用,尽可能

收集多的资源加快效率。。。此处省略一万字。

首先说明,lattice的DDR3是带有Modelsim仿真例程的,只要在IP例化好了

之后找到:

***ddr_p_evalddr3coresim

然后在modelsim se中敲do ddr3core_就可以了,正常情况下是可以

运行得到结果的,而且仿真初始化时间短,比altera快,这一点本人非常满意,

而且激励写的很好懂,多以任务函数形式调度,这一点秒杀altera,altera还用

的system verilog写的,比较坑。

有时候直接用生成的例程一点问题没有,但就在刚刚,我又验证了一下出现

了。。。

2024年3月18日发(作者:兴吉欣)

Lattice ddr3教程全攻略之仿真篇

By: BACKKOM

QQ:784496547

Date:2014/9/19

对于这部分,首先建议安装好diamond3.1,modelsim se 10.1a这两个软件,如

果想仔细分析DDR3的IP部分,可仔细阅读DDR3 SDRAM Controller IP Core User’s

Guide,下面用ug代指。官网上可以download,还有DDR3的基本知识,可以到

网上download《高手进阶,终极内存技术指南——完整进阶版》,这个文章值得

一读。DDR的调试成功,可以说是开发学习FPGA的一大重要标志,能够把DDR3

玩转的熟练,那自称FPGA工程师也是理所当然了。。。

Lattice的ddr3控制器接口逻辑还是相对简单,比较好理解的,下面来看看

DDR3 IP 的内部结构:

图:DDR3 IP逻辑框图

Initialization Module:根据JEDEC.的标准,在上电后对DDR3进行初始化配置,

配置其相应的寄存器和工作方式等,具体配置的寄存器可以参看ddr3的协议文

档,JEDEC规范写的很详细。当初始化配置完成后,该模块会给出一个done信

号告诉用户。

sysCLOCK PLL:用于提供IP工作所需要的时钟,并提供给用户端一个时钟:

k_clk。

Data Path Logic:用于从DDR3读取的数据转换到用户端,写入的数据不经过

该模块,写入的数据从Command Application Logic (CAL)模块输入。

Command Decode Logic (CDL) :该模块用于译码命令,控制core按照设定的

命令正确的访问ddr3芯片。

DDR3 PHY:用于转换单端的数据转换为差分给到ddr芯片端,和差分转单端

输入。

以上部分有基础了解就行,不需要深究。

图:DDR初始化时序

当上电后,用户应该将init_start拉高至少200us,直到init_done被拉高

一个周期,则将init_start拉低。用户检测到init_done被拉高后就表明芯片初始

化完成了,也大概可以确定硬件是OK的。可以进行下一步操作。

读和写控制非常简单,ug上说的很清楚,就不一一赘述了。

做DDR3设计之前当然是先仿真,这个毋庸置疑,那么仿真当然首选Modelsim,

在仿真之前,先做好准备工作,那就是先编译好仿真所需要的库文件,编译库文

件方法和Altera Xilinx类似,见《在Modelsim中建立LATTICE仿真库》一文,已

共享。lattice的资料做的确实不如xilinx和altera。也是很多使用lattice fpga的工

程师经常抱怨的一点,没有前人带的情况下使用lattice确实是非常恼火的。但是

却也没有江湖传言的那么难用,其实很多时候并不是因为难,而是我们不愿意去

了解,因为陌生而导致的恐惧,先入为主吧。那,废话不多说,开始进入主题。

现在假定你lattice库文件已经编译成功,那,我们当然要物尽其用,尽可能

收集多的资源加快效率。。。此处省略一万字。

首先说明,lattice的DDR3是带有Modelsim仿真例程的,只要在IP例化好了

之后找到:

***ddr_p_evalddr3coresim

然后在modelsim se中敲do ddr3core_就可以了,正常情况下是可以

运行得到结果的,而且仿真初始化时间短,比altera快,这一点本人非常满意,

而且激励写的很好懂,多以任务函数形式调度,这一点秒杀altera,altera还用

的system verilog写的,比较坑。

有时候直接用生成的例程一点问题没有,但就在刚刚,我又验证了一下出现

了。。。

发布评论

评论列表 (0)

  1. 暂无评论