lattice fpga ddr3 读写控制

Lattice FPGA ECP5 DDR3 调试报告

环境:WIN10、Diamond 3.11 (64-bit)、Verilog语言。

 

一、创建Diamond工程

1、创建一个存放工程的文件夹。根据个人喜好,注意不要有中文路径。

2、打开Diamond

3、创建工程,File->New->Project

4、点击Next

5、创建工程名字,文件夹选择第1步创建的文件夹。

6、暂时没有可以添加的文件,点击Next。

7、选择板卡所对应的FPGA型号,这里我手中板卡的型号为LFE5U-25F-8BG381C。具体型号根据自己手中板卡选择。

8、选择综合工具,第一种为第三方工具,不是Lattice公司的,第三种为Lattice公司自己的工具。

9、创建工程的一些基本信息,从中可以看出:工程名字、工程存放地址、生成文件的文件夹、FPGA芯片的型号、综合工具。和自己的板卡对照下,没问题就点击Finish。

10、工程创建完成,和ISE、Vivado还是有很大的区别。在怎么不一样也是需要用Verilog写程序。慢慢熟悉熟悉感觉它还是不错的一个工具。

 

二、生成控制DDR3的IP核,也可以自己写一个对DDR3控制的程序,这对大神们来说小菜一碟,但对我这种(菜笨)还是想想就行了。这山有点高,不好翻。

1、选择DD3控制IP,右击impl1->Add->New->File

2、选择Clarity Designer,然后名字就是来个自己喜欢的。

3、然后选择对应的IP核。(如果第一次使用   ,可能找不到这个IP,这就需要你下载一个,然后安装下。)左边是介绍这个IP的一些文档,很重要,不管看懂看不懂先下载下来再说。

4、双击IP之后,对这个IP起个名字。

5、选择与板卡上DDR3对应的模板。我手上板卡是2G的,板卡FPGA是-8级别的,单颗DDR3,DQ16,X16。(FPGA是-8级别DDR3是可以跑到400M的,-6就是300M,个人理解,仅供参考)。

6、配置完如图所示,实际情况根据自己板卡做适当的修改。点击Configure。

7、这里说一点,正常的IP调用这里会出现一些信息的,但是DDR3没有,是因为Lattice使用这个IP需要收费的,这里我们只能试用。所以在这里不要大惊小怪。点击Close。

8、软件的下边会打印很多信息。这个没有研究是什么,我们只用知道他是在生成IP的过程就行。

9、下边出现Successfully,证明我们这个IP已经生成完成。点击保存按钮。

10、问你是不是要添加到工程中,点击Yes。

11、IP出现在了工程中。到这里我们的IP已经生成完成。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三、控制IP

1、创建一个顶层文件,右击Impl1->Add->New File

2、起个名字,点击New。

3、写代码进去,使用DDR3第一步,你先看看这个DDR3会不会初始化完成,标志呢就是Init_done信号。在xilinx中如果初始化完成后这个信号会一直拉高。这里不知道会怎么样,看手册,就是生成IP时下载的那个手册。

4、看手册显示的是你需要先对Init_start信号进行一个拉高的过程,等Init_done拉高了,在拉下来就行了。手册是这么说的,到底是不是真的,我们需要试下才能知道是不是真。下来开始写代码。这里说一点这个Diamond软件的调试工具不太好用,(不能说不好用,只是自己还没有使用熟练。)

5、由于代码过长,这里只粘贴出来一部分。然后保存,点击Synthesize Design。

6运行成功后,添加管脚约束绑定,这里Lattice在你创建工程时,已经给你创建了对应的文件。点击,会进入到引脚绑定的界面。

7、按照原理图进行填写,这里说一点,Lattice和XILINX对管脚的约束有一点差别,差分信号,XILINX关键约束对PN都需要进行绑定,而Lattice不需要,只需要对P进行绑定就行了。不知道这一点的感觉很不可思议,DDR3的IP核的数据同步信号和输入时钟信号等一些差分对,在IP核的框图上看到的命名是差分对,但是生成IP后调用的却是单端信号。这里需要注意。绑定完之后就是编译综合了。

8、编译完成之后就会生成一个BIT文件,这就可以下载了,但是下载之后你怎么知道对不对呢?所以你需要抓信号,抓刚才的Init_done信号。这就需要工具,XILINX的是ChipScope,Lattice使用的Reveal工具。右击Impl1->Add->New File

10、选择Reveal Project Files,来个喜欢的名字。点击New。

11、添加你需要抓取的波形。

12、设置下触发

13、点击保存,

14、点击红框的按钮,点击OK

15,、然后重新编译下。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

四、下载调试

1、下载程序,点击

2、点击OK

3、点击扫描下载器,板卡上电准备下载。

4、点击红框中的按钮,开始下载。

5、显示PASS,下载成功。然后调用Reveal工具,点击。

6、依次点击红框按钮,选择你创建的调试核。

7、点击OK

8、点击红框中的按钮。

9、出现错误,排查错误。

10、复位有些问题。修改下,重新生成bit文件,下载。

11、可以看到Init_done_pos拉高了,证明DDR3复位初始化完成,到这一步基本能确定板卡没问题。

 

 

 

 

 

 

 

 

 

 

 

五、对板卡DDR3进行读写操作。

1、编写读写文件,

2、添加需要抓取的波形,点击编译,生成bit文件,下载,抓取波形。

3、DDR3读写测试完成。

 

 

结论、

从XILINX转向Lattice,期间总是有些不适,掌握一个软件那是不可能的,只能说使用这个软件越来越熟练,Lattice有优有缺,这些都不是像我这样的人所能评价的。我们只能保持一颗积极向上学习的心态就行,漫漫长路,需要的是一步一个脚印走下来的,保持初心,一切会好的。

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值