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有优有缺,这些都不是像我这样的人所能评价的。我们只能保持一颗积极向上学习的心态就行,漫漫长路,需要的是一步一个脚印走下来的,保持初心,一切会好的。

lattice fpga ddr3 读写控制相关推荐

  1. 基于MIG控制器的DDR3读写控制详解

    基于MIG控制器的DDR3读写控制详解 目的:详细介绍FPGA中基于MIG IP核控制的DDR3详细控制及内部逻辑 平台:AX7350-Xilinx 软件:Vivado 2017.4 1.MIG IP ...

  2. vfifo控制mig_MIG IP控制DDR3读写测试

    本文设计思想采用明德扬至简设计法.在高速信号处理场合下,很短时间内就要缓存大量的数据,这时片内存储资源已经远远不够了.DDR SDRAM因其极高的性价比几乎是每一款中高档FPGA开发板的首选外部存储芯 ...

  3. FPGA学习之DDR3读写实验

    FPGA学习之DDR3读写实验 原理 简介 配置原理 程序代码 约束文件 设计文件 参考正点原子视频 原理 简介 DDR3 SDRAM常 简称 DDR3 是当今较为常见的一种储存器,在计算机及嵌入式产 ...

  4. 采用FPGA IP实现DDR的读写控制的设计与验证

    随着高速处理器的不断发展,嵌入式系统应用的领域越来越广泛,数字信号处理的规模也越来越大,系统中RAM规模不断增加,比如视频监控.图像数据采集等领域,图像处理的实时性对RAM带宽的要求不断增加,传统的S ...

  5. 【ZYNQ Ultrascale+ MPSOC FPGA教程】第二十一章 PS端UART读写控制

    原创声明: 本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处. 适用于板卡型号: AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E ...

  6. Xilinx FPGA DDR3设计(二)时钟介绍

    引言:本文介绍Xilinx FPGA外接DDR3时钟相关参数及配置. 1.DDR3芯片时钟.位宽和数据带宽 以MT41K256M16RH-125为例,DDR3关键时序参数如图1所示. 1.1 DDR3 ...

  7. FPGA DDR读写时序分析

    FPGA DDR读写时序分析 使用Vivado中带的DDR的IP核可以方便进行DDR的读写,用户直接操控用户逻辑接口的信号,使信号满足时序逻辑即可. 具体时序逻辑请参照官方文档ug586_7Serie ...

  8. 基于Vivado MIG IP核的DDR3读写实验(top_rom_ddr/ddr_top)

    一.前言 关于Vivado MIG IP核详细配置可以参考我之前的文章:基于Vivado MIG IP核的DDR3控制器(DDR3_CONTROL) 关于MIG IP核的用户端的接口时序可以参考这篇文 ...

  9. FPGA-Xilinx 7系列FPGA DDR3硬件设计规则

    Xilinx 7系列FPGA DDR3硬件设计规则 引言:本文我们介绍Xilinx 7系列FPGA DDR3硬件设计规则及约束,包括Bank选择.管脚位置约束.管脚分配.端接.I/O标准和走线长度. ...

最新文章

  1. {好文备份}SQL索引一步到位
  2. Tech.Ed 2006 博客园兄弟聚会
  3. deepin V20 启用Nvidia驱动方法
  4. eclipse配置虚拟路径后,每次启动tomcat都会虚拟路径失效的问题解决
  5. 【Opencv探索】基于OpenCV的“图像拼接特效”(这效果很实用啊)
  6. HttpClient超时设置
  7. python字符串替换功能string.replace()可以用正则表达式,更优雅
  8. 未指定发送trap的源接口_组播之RPF接口检测
  9. 风控建模 python 知乎_风控建模基本要求及面试问题小结
  10. js并发上传文件到不同服务器,simple-uploader.js 功能强大的上传组件 - 文章教程
  11. 宝宝树发行价为6.8港元 11月27日在港交所正式挂牌
  12. java自动化静态代码检查_Jenkins+findbugs对java代码进行静态代码分析
  13. 《Java开发实战经典》 —— 视频列表
  14. 诺基亚HERE地图套件重返Windows应用商店
  15. 线性调频信号学习笔记
  16. 如何使用AForge调用本机摄像头
  17. ArcGIS中地理配准与空间校正的不同
  18. 著名的php项目,PHP著名开源项目汇总
  19. 验收测试:α测试、β测试
  20. Local declaration of 'XXX' hides instance variable

热门文章

  1. EXCEL函数篇01 按间隔符提取数据,实现分列功能
  2. 入手评测 i7 13700和13700K的区别 i713700和i713700K差距
  3. ubuntu22 使用todesk被远程控制时显示黑屏或者白屏
  4. mysql教学磁力链_使用MySQL存储以太坊事件
  5. 用rankn()等概率生成1~m的通用方法
  6. mysql数据库实验+cmd界面运行基本操作总结(sql:数据增删改查,表格,视图,备份恢复)
  7. 滚动轴承损伤、偏翘、电蚀、跑外圈特征分析及信号特征提取
  8. 史上最超级KB的10个故事~你撑到第几个才发抖?
  9. Android wear 睡眠追踪,为什么智能手表还不是最理想的睡眠追踪设备
  10. 黑盒测试、白盒测试、灰盒测试的区别