大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天给大侠带来Zynq:用PS控制DDR3内存读写,话不多说,上货。

本篇文章的目的主要用简明的方法对DDR3进行读写,当然这种方式每次读写都需要CPU干预,效率是比较低的,但是这是属于学习的过程,还是可以经历经历的。

本系列文章尽可能的让每一个实验都相对独立,过程尽可能保证完整性,保证实验的可重现性。但是用到的模块或者IP的具体作用和用法不保证都重复详细的介绍。

本文所使用的开发板是兼容zedboard

PC 开发环境版本:Vivado 2015.4 Xilinx SDK 2015.4。

生成硬件系统

1、新建vivado工程。

2、选择Zedboard。

3、新建Block Design。

4、添加ZYNQ PS。

5、点击Run Block Automation,让vivado自动配置好zedboard相关的默认的信息,点击OK。

6、双击ZYNQ,在此可以去掉一些不用的外设。

7、设置好的Block Design如图所示。

8、在block design上右击,选择Create HDL Wapper。

9、完成后,在block design上右击,选择Generate Output Prouducts,在弹出的对话框选择 Generate。

10、点击 Generate Bitstream。

11、完成后,选择File->Export->Export Hadfware,选中 Include bitsteam。

12、File -> Launch SDK,把硬件架构导出到软件工程。

编写软件程序

1、新建Hello工程

2、DDR3的地址

建好后,在mem_demo_bsp->ps7->cortexa9_0的路径下,打开xparameters_ps.h这个头文件,这个头文件是cortexA9可以直接控制的外设地址的宏定义。在里面可以找到DDR的地址,可以看到如下代码:

/* Canonical definitions for DDR MEMORY */ #define XPAR_DDR_MEM_BASEADDR 0x00000000U #define XPAR_DDR_MEM_HIGHADDR 0x3FFFFFFFU

等会我们要使用这个地址,对DDR3进行读写操作。

3、读写操作函数

在mem_demo_bsp->ps7->cortexa9_0的路径下,打开xil_io.h这个头文件,这个头文件是cortexA9可以直接控制的内存映射或者映射到了地址空间的IO。在里面可以看到如下代码:

//从某个地址读数据 u8 Xil_In8(INTPTR Addr); u16 Xil_In16(INTPTR Addr); u32 Xil_In32(INTPTR Addr);//向某个地址写数据。void Xil_Out8(INTPTR Addr, u8 Value); void Xil_Out16(INTPTR Addr, u16 Value); void Xil_Out32(INTPTR Addr, u32 Value);

OK,有了这些就可以简单的对DDR进行续写操作了。

代码实现

#include "stdio.h"#include "platform.h"#include "xparameters.h"#include "xparameters_ps.h"#include "xil_printf.h"#include "xil_io.h"#define DDR_BASEARDDR      XPAR_DDR_MEM_BASEADDR + 0x10000000 int main(){    init_platform();     int i;    int rev;     xil_printf("Hello World\n\r");     for(i=0; i<32; i++)    {        Xil_Out32(DDR_BASEARDDR+i*4,i);    }     for(i=0; i<32; i++)    {        rev = Xil_In32(DDR_BASEARDDR+i*4);        xil_printf("the address at  %x data is : %x \n\r" ,DDR_BASEARDDR+i*4, rev);    }     cleanup_platform();    return 0;}

烧写测试

串口终端的结果如下:

Hello World the address at 10000000 data is : 0 the address at 10000004 data is : 1 the address at 10000008 data is : 2 the address at 1000000C data is : 3 the address at 10000010 data is : 4 the address at 10000014 data is : 5 the address at 10000018 data is : 6 the address at 1000001C data is : 7 the address at 10000020 data is : 8 the address at 10000024 data is : 9 the address at 10000028 data is : A the address at 1000002C data is : B the address at 10000030 data is : C the address at 10000034 data is : D the address at 10000038 data is : E the address at 1000003C data is : F the address at 10000040 data is : 10 the address at 10000044 data is : 11 the address at 10000048 data is : 12 the address at 1000004C data is : 13 the address at 10000050 data is : 14 the address at 10000054 data is : 15 the address at 10000058 data is : 16 the address at 1000005C data is : 17 the address at 10000060 data is : 18 the address at 10000064 data is : 19 the address at 10000068 data is : 1A the address at 1000006C data is : 1B the address at 10000070 data is : 1C the address at 10000074 data is : 1D the address at 10000078 data is : 1E the address at 1000007C data is : 1F

END后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

FPGA技术江湖广发江湖帖

无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。

FPGA技术江湖微信交流群

加群主微信,备注职业+方向+名字进群

FPGA技术江湖QQ交流群

备注地区+职业+方向+名字进群

ps读写ddr3里面的数据 zynq_Zynq:用PS控制DDR3内存读写相关推荐

  1. ps读写ddr3里面的数据 zynq_ZYNQ_PL与PS的DDR交互

    ZYNQ7000系列中PS端与PL端的通信都是通过AXI总线进行连接的,利用好AXI协议是PS与PL交互的基础,因此设计这个实验来进一步了解两者间的通信. 1.实验目的 PL端通过AXI协议访问PS端 ...

  2. 内存读写函数实现进程间通信

    内存读写函数实现进程间通信         上一篇博文讲了使用Windows自定义消息实现进程间的通信,而今天这篇博文讲重点讲解使用内存读写函数实现进程间的通信.          使用内存读写函数实 ...

  3. PL读写DDR3 实现PS和PL间的数据交互 代码分析

    本文是PL读写DDR3 实现PS和PL间的数据交互 的继续,深入分析其代码. 首先分析基本要求,或者需求分析,然后读写流程描述,实测采集的读写过程的波形图,最后分段代码分析,这个代码是上文中利用viv ...

  4. PL读写DDR3 实现PS和PL间的数据交互

    本文构建一个AXI4-Lite Master IP来实现PL读写DDR3.最后用sdk 程序验证pl 读写过程中写入的数据. 本文参考 https://www.eefocus.com/antaur/b ...

  5. 【ZYNQ-7000开发之六】使用PS控制DDR3的读写

    本编文章的目的主要用简明的方法在纯PS里对DDR3进行读写. 本文所使用的开发板是Miz701  PC 开发环境版本:Vivado 2015.4 Xilinx SDK 2015.4 10.0本章难度系 ...

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

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

  7. 使用VIVADO中的MIG控制DDR3(AXI接口)四——MIG配置及DDR3读写测试

    在之前的内容里,讲述了AXI和DDR3的基本知识,也做了一个用AXI IP核读写BRAM的测试实验.接下来,我们就将这些部分结合在一起,做一个用AXI IP核对DDR3进行读写测试的实验.因为DDR3 ...

  8. 后端传输大量log数据_京东智联云MySQL读写分离最佳实践 ,轻松搞定数据库高性能扩展...

    数字化时代,数据库对任何企业而言都是其应用的核心资源.MySQL作为当前最流行的关系型数据库,虽然是开源软件,但是其简单易懂.易于部署管理,且具有ACID特性.强大的SQL查询等特点,被各种业务系统作 ...

  9. C++ MFC界面读写USB HID设备数据程序

    C++ MFC界面读写USB HID设备数据程序 发一个简单易用的界面,用来对USB HID设备(比如说游戏手柄,控制面板等)读写数据,一般情况下面板上有一些LED,可以帮助我们测试读写是否正确.另外 ...

最新文章

  1. 负载均衡策略深入剖析
  2. 智源杯天文数据算法挑战赛开赛,前沿AI技术助力天文科学研究
  3. 【小知识点】解决Chrome动画”卡顿”的办法
  4. 牛客网 在线编程 猫狗收容所
  5. nssl1469-W【dp】
  6. 【2020.12.30更新】信号处理常用公式(一)
  7. Vue项目中使用Echarts(二)
  8. python对编写神经网络作用_神经网络(BP)算法Python实现及应用
  9. nacos配置中心使用_SpringBoot开发案例Nacos配置管理中心
  10. .net framework 4.0 0xc8000247错误解决
  11. Twisted入门教程(10)
  12. 【Centos】【Python】【Flask】阿里云上部署一个 flask 项目
  13. 如何管理计算机的字体,请同事吃了顿饭才要来的字体管理神器,电脑里的几百个字体有救了!...
  14. 医院在线问诊小程序开发制作
  15. 思科模拟器入门基础-静态路由
  16. ERP、APS、MES 三者之间的关系是什么?
  17. 嵌入式接口之TIM定时器与NVIC的STM32模板库函数的一些解释
  18. 【一起来刷Python题】——01.随机生成车牌号
  19. 如何进行项目总结和复盘?
  20. (附源码)计算机毕业设计SSM机械零件生产管理系统

热门文章

  1. 不应该通过类实例访问静态成员 解决方法_今天说一说php中的类与对象
  2. 云控参数下发android,Oldboot鬼影又现,另一例山寨手机中运用云端远控技术的木马...
  3. computed用发_Vue中的computed属性和nextTick方法
  4. java 需要class interface 或enum_阿里P8教你Java注解与反射
  5. SpringCloud Consul Config 配置中心(一)
  6. java跟c 的区别_【c++跟java的区别】java跟c语言的区别
  7. Mac typora自定义编辑界面的配置
  8. 按照两个dataframe的index合并数据
  9. java 各种数据库连接_JAVA连接各种数据库
  10. Python 学习过程问题记录