【【萌新的SOC学习之基于BRAM的PS和PL数据交互实验】】

萌新的SOC学习之基于BRAM的PS和PL数据交互实验

基于BRAM的PS和PL的数据交互实验

先介绍 AXI BRAM IP核控制器的简介

AXI BRAM ip核 是xilinx提供的一个软核 这个ip核被设计成 AXI的一个从机接口 用于AXI互联的集成

系统的主设备和本地的RAM进行通信 (我们可以通过这个IP核 和本地的RAM进行通信)

这个IP核支持单次或是突发的传输

概述部分 :

AXI BRAM的ip核 可以配置成单端口或是双端口 和 BRAM进行通信 通过的是AXI4或是AXI4_Lite 接口

AXI BRAM 也支持 ECC 数据纠错功能 这个功能我们平时很少会去用

我们来看系统框图

也可以将左边配置成AXI4接口 这样它读写的传输速度会快于 AXI4_lite

实验任务 : 本章的实验任务是 PS 将串口接收到的数据写入 BRAM,然后从 BRAM 中读出数据,并通过串口打印出来;与此同时,PL 从 BRAM 中同样读出数据,并通过 ILA 来观察读出的数据与串口打印的数据是否一致。

系统框图

我们看的PS端的UART这就是 我们利用串口来进行打印的部分

我们需要在PL端添加一个BRAM的ip核

我们还需要添加一个AXI BRAM Controller (AXI BRAM控制器 这个控制器完成对BRAM的读写操作

这个控制器是 PS端添加的 PS端正是 通过了这样的一个控制器才完成了对BRAM的读写操作的

而我们的PL是怎么从BRAM读出数据呢 我们需要添加一个自定义的IP核 pl_bram_rd这个IP核的目的就是从BRAM中读出数据

究竟是哪个地址读数据 读多少 都是根据我们AXI4 接口来控制的

开始搭建

搭建完成的框图

我们观察系统框图以及自己创建的IP核我们会发现

对于这个自定义的IP核 我们添加了一个与BRAM交互的RAM端口

我们的这个RAM端口,可以传输单字节或者多字节的数据

因为RAM端写数据是32位的( 31_24 , 23_16 , 15_8 , 7_0 )

我们的写控制信号是4bit 正好控制 这32位的四个数据

output wire ram_clk , //RAM时钟

input wire [31:0] ram_rd_data, //RAM中读出的数据

output wire ram_en , //RAM使能信号

output wire [31:0] ram_addr , //RAM地址

output wire [3:0] ram_we , //RAM读写控制信号

output wire [31:0] ram_wr_data, //RAM写数据

output wire ram_rst , //RAM复位信号,高电平有效

自定义IP之后封装 再添加 进行连接

接下来我们来编写c代码

c代码目的是先来接收串口的数据, 接收到数据后 把数据写进BRAM内, 写完之后再把它读出来

我们可以通过串口,来比较写入的和打印的值是否一致

同时我们也要对自定义的ip核进行操作 确定什么时候读 读什么

我们接下来就用的这两个对BRAM进行读写

第一个数据是basedaaress 基地址 第二个数据是相对于base address 的偏移量 第三个是data 也就是我们真正需要写入的数据了

对于我们自定义的ip核 有两个代码 -两个功能

朝自定义IP核 写数据 朝自定义IP核中 去读数据

相关推荐
恰薯条的屑海鸥20 分钟前
零基础在实践中学习网络安全-皮卡丘靶场(第十五期-URL重定向模块)
学习·安全·web安全·渗透测试·网络安全学习
moxiaoran57532 小时前
uni-app学习笔记三十--request网络请求传参
笔记·学习·uni-app
嘉陵妹妹3 小时前
深度优先算法学习
学习·算法·深度优先
乖乖是干饭王3 小时前
Linux系统编程中的_GNU_SOURCE宏
linux·运维·c语言·学习·gnu
待什么青丝4 小时前
【TMS570LC4357】之相关驱动开发学习记录2
c语言·arm开发·驱动开发·单片机·学习
行云流水剑4 小时前
【学习记录】如何使用 Python 提取 PDF 文件中的内容
python·学习·pdf
虾球xz5 小时前
CppCon 2015 学习:CLANG/C2 for Windows
开发语言·c++·windows·学习
蓝婷儿6 小时前
6个月Python学习计划 Day 17 - 继承、多态与魔术方法
开发语言·python·学习
持续前进的奋斗鸭7 小时前
Postman测试学习(1)
学习·postman
hello kitty w7 小时前
Python学习(7) ----- Python起源
linux·python·学习