Xilinx MicroBlaze软核驱动DDR4
版权声明:本文为CSDN博主「Crazzy_M」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40147893/article/details/115382474
说明:通过Vivado生成MicroBlaze工程导入SDK实现DDR4的读写。
环境:Vivado2018.3。
IP核:MicroBlaze。
参考手册:
pg150:UltraScale Architecture-Based FPGAs Memory IP v1.4基础知识:Xilinx MicroBlaze软核驱动DDR3(最好先看一下)
工程下载
文章目录
- 1.MicroBlaze设计流程
- 1.2 DDR Block Design 流程
- 2.SDK工程
- 2.1 不断电重新读数据
1.MicroBlaze设计流程
新建Vivado工程
1.2 DDR Block Design 流程
Creat Block Design:
添加Microblaze核:
Run Block Automation:
添加Uartlite核:
双击更改波特率为115200
添加DDR4 IP:
双击配置DDR4 IP
根据自己DDR选择型号
即MIG对DDR接口的速率为1200M*2=2400M(双沿)。
MIG输出到app接口上的时钟ui_clk为1200M/4=300M。
UI时钟频率ui_clk为DDR时钟频率的1/4,也就是一个用户时钟周期(两个边沿)对应8个DDR时钟边沿。
Run Connection Automation:
对生成的网络进行一下修改:
1、时钟
双击
根据自己输入系统时钟,选择时钟频率和差分还是单端模式:
去除reset和locked选项:
删除多余的端口重新Run Connection Automation
2、复位
将DDR复位信号和rst_clk_wizIP的复位删除,引入常量IP将其连接
进行设计检查:
Great HDL Wrapper:
约束:
对管脚以及DDR端口进行约束
注意:DDR4的diff_clock_rtl_1这个时钟输入为100MHz的差分时钟输入,根据自己的板子
生成bit流文件
导入SDK,记得包含bit文件:
2.SDK工程
新建一个hello word 工程
在.hdf文件中查看DDR3的地址范围位为0x8000_0000-0x9FFF_FFFF
寻址空间为1FFF_FFFF即536870912Byte=512MB。
将数据0-99写入DDR,并读出。
介入以下测试代码:
#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xparameters.h"
#include "xgpio.h"int main()
{u32 i;u32 j;u32 DDR_BUFF[100];init_platform();u32 *DDR_ADDR;u32 *LED_ADDR;DDR_ADDR = (u32 *)0x80000000;LED_ADDR = (u32 *)0x40000000;for(i=0;i<100;i++){*(DDR_ADDR+i) = i;}for(i=0;i<100;i++){DDR_BUFF[i] = *(DDR_ADDR+i) ;}cleanup_platform();return 0;
}
调试:先进行调试设置
结果:
2.1 不断电重新读数据
关闭写操作,未断电在改地址进行读数据
#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xparameters.h"
#include "xgpio.h"int main()
{u32 i;u32 j;u32 DDR_BUFF[100];init_platform();u32 *DDR_ADDR;u32 *LED_ADDR;DDR_ADDR = (u32 *)0x80000000;LED_ADDR = (u32 *)0x40000000;// for(i=0;i<100;i++)
// {
// *(DDR_ADDR+i) = i;
// }for(i=0;i<100;i++){DDR_BUFF[i] = *(DDR_ADDR+i) ;}cleanup_platform();return 0;
}
结果
注意 cleanup_platform();函数会释放内存,断点设置在此函数前面,或者不用此函数。
★★★如有错误欢迎指导!!!
Xilinx MicroBlaze软核驱动DDR4相关推荐
- Xilinx MicroBlaze软核驱动DDR3
Xilinx MicroBlaze软核驱动DDR3 说明:通过Vivado生成MicroBlaze工程导入SDK实现DDR3的读写. 环境:Vivado2018.3. IP核:MicroBlaze. ...
- Xilinx MicroBlaze软核的使用-Uartlite
Xilinx_MicroBlaze的使用-Uartlite 说明:通过Vivado生成MicroBlaze工程导入SDK实现LED的控制.串口与PC的通信,以及如何灵活使用Vivado分配的地址信息. ...
- MicroBlaze:Xilinx官方软核学习与一些实验测试
目录 一.引言 二.HelloWorld实验 三.AXI_GPIO实验 四.一些注意 一.引言 1.MicroBlaze简介. 用于做嵌入式处理操作的软核,来加速系统设计.与传统独立CPU相比,软核嵌 ...
- MicroBlaze软核介绍
0 本章目录 1)FPGA简介 2)MicroBlaze软核处理器简介 3)结束语 1 FPGA简介 1)现场可编程门阵列(FPGA),FPGA是可重新编程的硅芯片. 2)FPGA优点:与DSP和AR ...
- microblaze软核处理器及其ip核调用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yundanfengqing_nuc/a ...
- ISE中开发XPS microblaze软核与BootLoader功能的实现
XILINX公司的FPGA中集成了硬PPC控制器,在ISE开发环境中嵌入XPS microblaze软核后添加BootLoader.elf文件实现boot功能. 最终实现的条件就是生成download ...
- ISE创建Microblaze软核(三)
第七步 进入SDK开发环境 编译完成后弹出如下对话框,选择SDK的工作目录.在MicroblazeTutor中创建一个Workspace文件夹,并选择该文件夹为SDK的工作目录. 进入SDK主界面. ...
- PYNQ-Z2调试笔记:在Microblaze软核中编程运行C程序
本篇主要介绍,通过Jupyter在Microblaze Subsystems上使用C语言编程,实现一些简单的功能. 目录 前言 正文 一.软核PMODA.PMODB.RPI.ARDUINO 二.在软核 ...
- MicroBlaze软核处理器简介
更多精彩内容,请微信搜索"FPGAer俱乐部"关注我们. MicroBlaze™ 是 Xilinx 嵌入式产品系列的重要组件.MicroBlaze 是功能齐全的.更少指令集的 FP ...
最新文章
- Project Chameleon Work In Progress 10
- python爬取高考各高校分数线_Python 爬取高校历年分数线
- 怎么让图片一直转圈_鼠标为什么一直在转圈?如何强制关闭程序?
- ThreadLocal使用和原理
- 鸟哥的Linux私房菜(基础篇)-第一章、Linux是什么(一.1.Linux是什么)
- html让a标签左右一样宽,button和a标签设置相同的css样式,但是宽度不同
- 京东发布双11首份战报:手机品类18秒销量突破万台
- cacti的安装和配置
- File存对象--android 的File存储到SD卡();
- MySQL 第六次练习(索引)
- HDOJ--1269--迷宫城堡
- 解决Shape数据形状数与表记录数不一致的问题
- Linux大批量文件rm命令无效
- [FOI2020]楼房搭建
- IEEEtran 的使用及 bibtex的文献类型
- 主题黑板.html,黑板报主题
- 我的世界:命名牌暗藏众多彩蛋,老玩家:原来还能这样玩啊!
- 博客园技术系列文章目录
- 融跃教育登陆湖南卫视!揭秘融跃是个什么样机构!CFA/FRM/ACCA
- mysql 全文检索_MySQL全文检索