【【萌新的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核中 去读数据

相关推荐
rannn_1119 分钟前
【MySQL学习|黑马笔记|Day3】多表查询(多表关系、内连接、外连接、自连接、联合查询、子查询),事务(简介、操作、四大体系、并发事务问题、事务隔离级别)
数据库·笔记·后端·学习·mysql
醉卧红尘的鱼20 分钟前
最优估计准则与方法(5)加权最小二乘估计(WLS)_学习笔记
学习·算法
leafpipi1 小时前
【机器学习】pycharm使用SSH SFTP 远程连接 ubuntu服务器 进行开发+调试+数据训练
服务器·学习·算法·ubuntu·pycharm·ssh
Chef_Chen1 小时前
从0开始学习R语言--Day62--RE插补
开发语言·学习·r语言
★YUI★2 小时前
学习游戏制作记录(冻结敌人时间与黑洞技能)7.30
学习·游戏·unity·c#
sealaugh322 小时前
aws(学习笔记第五十课) ECS集中练习(2)
笔记·学习·aws
正经教主2 小时前
【n8n】如何跟着AI学习n8n【02.5】:第一部分总练习
人工智能·学习·教程·n8n
ATaylorSu2 小时前
排序算法入门:直接插入排序详解
笔记·学习·算法·排序算法
野原鑫之祝2 小时前
嵌入式开发学习———Linux环境下数据结构学习(五)
linux·c语言·数据结构·学习·vim·排序算法·嵌入式
hello_ world.3 小时前
RHCA学习概述
学习