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有优有缺,这些都不是像我这样的人所能评价的。我们只能保持一颗积极向上学习的心态就行,漫漫长路,需要的是一步一个脚印走下来的,保持初心,一切会好的。
lattice fpga ddr3 读写控制相关推荐
- 基于MIG控制器的DDR3读写控制详解
基于MIG控制器的DDR3读写控制详解 目的:详细介绍FPGA中基于MIG IP核控制的DDR3详细控制及内部逻辑 平台:AX7350-Xilinx 软件:Vivado 2017.4 1.MIG IP ...
- vfifo控制mig_MIG IP控制DDR3读写测试
本文设计思想采用明德扬至简设计法.在高速信号处理场合下,很短时间内就要缓存大量的数据,这时片内存储资源已经远远不够了.DDR SDRAM因其极高的性价比几乎是每一款中高档FPGA开发板的首选外部存储芯 ...
- FPGA学习之DDR3读写实验
FPGA学习之DDR3读写实验 原理 简介 配置原理 程序代码 约束文件 设计文件 参考正点原子视频 原理 简介 DDR3 SDRAM常 简称 DDR3 是当今较为常见的一种储存器,在计算机及嵌入式产 ...
- 采用FPGA IP实现DDR的读写控制的设计与验证
随着高速处理器的不断发展,嵌入式系统应用的领域越来越广泛,数字信号处理的规模也越来越大,系统中RAM规模不断增加,比如视频监控.图像数据采集等领域,图像处理的实时性对RAM带宽的要求不断增加,传统的S ...
- 【ZYNQ Ultrascale+ MPSOC FPGA教程】第二十一章 PS端UART读写控制
原创声明: 本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处. 适用于板卡型号: AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E ...
- Xilinx FPGA DDR3设计(二)时钟介绍
引言:本文介绍Xilinx FPGA外接DDR3时钟相关参数及配置. 1.DDR3芯片时钟.位宽和数据带宽 以MT41K256M16RH-125为例,DDR3关键时序参数如图1所示. 1.1 DDR3 ...
- FPGA DDR读写时序分析
FPGA DDR读写时序分析 使用Vivado中带的DDR的IP核可以方便进行DDR的读写,用户直接操控用户逻辑接口的信号,使信号满足时序逻辑即可. 具体时序逻辑请参照官方文档ug586_7Serie ...
- 基于Vivado MIG IP核的DDR3读写实验(top_rom_ddr/ddr_top)
一.前言 关于Vivado MIG IP核详细配置可以参考我之前的文章:基于Vivado MIG IP核的DDR3控制器(DDR3_CONTROL) 关于MIG IP核的用户端的接口时序可以参考这篇文 ...
- FPGA-Xilinx 7系列FPGA DDR3硬件设计规则
Xilinx 7系列FPGA DDR3硬件设计规则 引言:本文我们介绍Xilinx 7系列FPGA DDR3硬件设计规则及约束,包括Bank选择.管脚位置约束.管脚分配.端接.I/O标准和走线长度. ...
最新文章
- {好文备份}SQL索引一步到位
- Tech.Ed 2006 博客园兄弟聚会
- deepin V20 启用Nvidia驱动方法
- eclipse配置虚拟路径后,每次启动tomcat都会虚拟路径失效的问题解决
- 【Opencv探索】基于OpenCV的“图像拼接特效”(这效果很实用啊)
- HttpClient超时设置
- python字符串替换功能string.replace()可以用正则表达式,更优雅
- 未指定发送trap的源接口_组播之RPF接口检测
- 风控建模 python 知乎_风控建模基本要求及面试问题小结
- js并发上传文件到不同服务器,simple-uploader.js 功能强大的上传组件 - 文章教程
- 宝宝树发行价为6.8港元 11月27日在港交所正式挂牌
- java自动化静态代码检查_Jenkins+findbugs对java代码进行静态代码分析
- 《Java开发实战经典》 —— 视频列表
- 诺基亚HERE地图套件重返Windows应用商店
- 线性调频信号学习笔记
- 如何使用AForge调用本机摄像头
- ArcGIS中地理配准与空间校正的不同
- 著名的php项目,PHP著名开源项目汇总
- 验收测试:α测试、β测试
- Local declaration of 'XXX' hides instance variable
热门文章
- EXCEL函数篇01 按间隔符提取数据,实现分列功能
- 入手评测 i7 13700和13700K的区别 i713700和i713700K差距
- ubuntu22 使用todesk被远程控制时显示黑屏或者白屏
- mysql教学磁力链_使用MySQL存储以太坊事件
- 用rankn()等概率生成1~m的通用方法
- mysql数据库实验+cmd界面运行基本操作总结(sql:数据增删改查,表格,视图,备份恢复)
- 滚动轴承损伤、偏翘、电蚀、跑外圈特征分析及信号特征提取
- 史上最超级KB的10个故事~你撑到第几个才发抖?
- Android wear 睡眠追踪,为什么智能手表还不是最理想的睡眠追踪设备
- 黑盒测试、白盒测试、灰盒测试的区别