当前位置: 首页 > news >正文

FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇四

前言

  • 前面三篇,主要记录了基于Vivado 2020.2 的 Block Design 设计,本篇开始记录导出硬件产物到 Vitis,进行嵌入式C语言开发:开发MicroBlaze的嵌入式软件,如读写内存,验证DDR3是否正常工作

  • DDR3,最终呈现给用户的就是内存,使用FPGA AXI 总线,映射到某个地址,读写DDR3 MIG IP 映射后的地址空间,如果能正常的读写,DDR3 就可以正常工作

开发环境

  • Windows 10 64位 专业版(Vivado IDE 推荐的环境)

  • Vivado 2020.2,可以使用 Vivado 2018.2或最新的Vivado 2022.1等版本,操作起来差别不算大,需要安装Vitis,Vivado 2018.2 版本是 SDK开发

  • Xilinx FPGA开发板:xc7k325tffg900-2

导出硬件

  • Vivado 2020.2 中,成功生成BitStream文件后,就可以导出硬件设计文件了,这样可以打开Vitis,进行嵌入式MicroBlaze处理器的开发,单片机开发环境,C语言开发

  • Vitis 跟之前 SDK 导出硬件产物稍微有点区别

  • 【File 】 -> 【Export】 -> 【Export Hardware】
    在这里插入图片描述

在这里插入图片描述

  • 注意这里 勾选 BitStream文件

在这里插入图片描述

  • 这里可以更改目录,默认为工程的根目录下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 查看导出的文件,发现只有 一个 xsa 类型的文件

在这里插入图片描述

  • 启动 Vitis ,【Tools】 --> 【Launch Vitis IDE】

在这里插入图片描述

Vitis开发

  • 启动 Vitis后,发现没有什么,跟直接打开Vitis 类似,所以这里新建 应用工程:【Application Project】

在这里插入图片描述

  • 直接 Next
    在这里插入图片描述

  • 选择 Vivado 导出的 硬件设计文件 xsa 格式

在这里插入图片描述
在这里插入图片描述

  • 应用工程的名字: 如 top
    在这里插入图片描述

  • 这里可以直接 Next

在这里插入图片描述

  • 这里使用现有的例程:Memory Tests,内存测试例程

在这里插入图片描述

  • Vitis SDK 工程,测试 DDR3的,基本搭建完成了,编译通过

在这里插入图片描述

烧写 FPGA

  • Vivado 2020.2,【Open Hardware Manager】,通过xilinx 下载器,连接上板子

在这里插入图片描述

  • Vitis :【Program Device】
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

调试FPGA

  • 实际测试,发现Vitis 默认 点击下载调试按钮,会自动下载 FPGA程序,这里的FPGA程序,是合并了Vitis 生成的 elf文件的

在这里插入图片描述

  • 程序运行后,发现串口开始打印数据了

  • 默认的程序,打印一次就结束了,我这里简单的修改了下,每2S 都打印一次,这样方便串口数据的持续打印,方便验证结果

#include "sleep.h" ,用于延时函数 :sleep 的调用

  • main 函数中,增加 while (1) 循环检查,让串口持续输出
int main()
{
    int i;

    init_platform();

    print("--Starting Memory Test Application--\n\r");
    print("NOTE: This application runs with D-Cache disabled.");
    print("As a result, cacheline requests will not be generated\n\r");

    for (i = 0; i < n_memory_ranges; i++) {
        test_memory_range(&memory_ranges[i]);
    }

    print("--Memory Test Application Complete--\n\r");
    print("Successfully ran Memory Test Application");

    while (1)
    {
    	sleep(2);
    	xil_printf("\n\r%s : DDR3 one  Test: \n\r", __func__);
        for (i = 0; i < n_memory_ranges; i++) {
            test_memory_range(&memory_ranges[i]);
        }

        print("--Memory Test Application Complete--\n\r");
        print("Successfully ran Memory Test Application\n\r");
    }

    cleanup_platform();
    return 0;
}

在这里插入图片描述

小结

  • 本篇记录 Vitis C语言开发环境的编译与下载运行,此时 下载到FPGA中,程序没有固化,断电后就不再运行,后面继续介绍Vitis 生成 elf文件后,如何跟 Vivado 生成的 bit 文件,合并编译成 可以固化的bit文件或者 bin文件

  • C语言开发环境,eclipse的开发环境,引入嵌入式C开发,让FPGA开发更灵活

相关文章:

  • 01.简单梳理模拟SpringBoot自动装配的原理(代码测试代码)
  • 谷粒商城 高级篇 (二十三) --------- 订单业务
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • spring整体脉络
  • 路由多视图单页应用router-link相关属性
  • ICCV 2021 Oral | CoaT: Co-Scale Conv-Attentional Image Transformers
  • js单行代码------数组
  • 量化C++国产框架千星+ WonderTrader
  • Java基于ssm+vue+nodejs的私人牙科门诊预约系统element
  • 微服务项目:尚融宝(56)(核心业务流程:投资列表展示(1))
  • 【文档资料】Linux、Vi/Vim常用命令
  • javascript入门经典 第6版
  • Pr 视频效果:键控
  • 【JavaScript】五个常用功能/案例:高精度乘法 | 批量修改对象属性 | 属性遍历 | 判断是否包含数字 | 检查重复字符串
  • idea运行项目错误 Error running ‘XXXXXXXApplication‘: Command line is too long
  • @jsonView过滤属性
  • 5、React组件事件详解
  • Android开源项目规范总结
  • crontab执行失败的多种原因
  • emacs初体验
  • HashMap ConcurrentHashMap
  • Java Agent 学习笔记
  • Javascript弹出层-初探
  • Java比较器对数组,集合排序
  • Python_网络编程
  • storm drpc实例
  • Terraform入门 - 3. 变更基础设施
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 阿里云Kubernetes容器服务上体验Knative
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 大主子表关联的性能优化方法
  • - 概述 - 《设计模式(极简c++版)》
  • 欢迎参加第二届中国游戏开发者大会
  • 精彩代码 vue.js
  • 小程序 setData 学问多
  • 移动端 h5开发相关内容总结(三)
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • nb
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​io --- 处理流的核心工具​
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • #QT项目实战(天气预报)
  • (31)对象的克隆
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (二)PySpark3:SparkSQL编程
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (十三)Flask之特殊装饰器详解
  • (转)我也是一只IT小小鸟
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • [.net]官方水晶报表的使用以演示下载
  • []FET-430SIM508 研究日志 11.3.31