zynq板zedboard+vitis设计(四)基于bram的ps与pl交互

Zynq——PL_BRAM_PS数据传输 前言 开发环境:vivado 2020.2 vitis windows10 黑金开发板 基于板厂给的模板,修改文件,实现以下功能: PS端向PL端发送数据(写至BRAM),PL端对数据进行处理,处理后将数据写回BRAM,接着PS端读取BRAM并通过串口发送至win10,win10下使用串口接收数据并利用python导出数据保存。 1.原板厂例程 https://download.youkuaiyun.com/download/wxkhturfun/77297149 内容包含vivado工程、vitis工程、说明 阅读详情

前言

本文简单介绍通过bram在ps和pl间进行数据的传输以及命令的交互

1.pl部分 

1.1设计文件代码

module bram_pl
 (
  input            clk,                          
  input            rst,  																		   
  input [31:0]     bram_dout,                   

  output           bram_en,
  output[31:0]     bram_din,
  output[3:0]      bram_we,
  output[31:0]     bram_addr                                                  
  );

reg[31:0] addrb;
reg[1:0]  bram_st;
reg[3:0]  web;
reg[31:0] data;   
always@(posedge clk)begin 
  if(rst)begin
    addrb <= 32'h000003fc;
    bram_st <= 2'd0;
    web <= 4'b0000;
  end else begin
    case(bram_st)
    0:begin
      if(bram_dout == 32'h0000_00ff)begin
        bram_st <= 2'd1;
        addrb <= 32'h00000400;
      end else begin
        bram_st <= 2'd0;
        addrb <= 32'h000003fc;
      end
    end
        
    1:begin
      addrb <= addrb + 4;
      if(addrb == 32'h000007fc)begin
        bram_st <= 2'd3;
      end 
      else begin
        bram_st <= 2'd2;       
      end
    end
       
    2:begin
      bram_st <= 2'd1;
    end 
    
    3:begin
      bram_st <= 2'd3;
    end       
            
    endcase
  end     
end

assign bram_we    = (bram_st == 2'd1) ? 4'b1111 : 4'b0000;
assign bram_en    = 1'b1;
assign bram_addr  = (bram_st == 2'd2) ? addrb - 4 : addrb;
assign bram_din   = bram_dout + 1;

endmodule

1.2block design

添加zynq模块,打开AXI master接口

添加block memory generate模块,配置如下,这里选择真双端口,一个用于PS读写数据,另一个用于PL读写数据,注意mode选择bram controller

 添加bram ctrl模块,配置如下

 将设计文件作为模块添加到block design。注意设计文件的模块命不能和block design相同,否则可能添加不了,也要注意设计文件的正确性,如果设计文件有问题,编译不了,同样不能作为模块添加到block design内

 如图进行连线,注意需要手动的接连自己添加的模块与block  memory generate之间的端口

 生成比特流并导出platform

2.ps部分

PS部分代码如下

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xil_io.h"


int main()
{
    init_platform();
    u32 Addr;
    u32 i;
    u32 bram_base_addr = 0x40000000;

    print("bram app start...\n\n\r");
    print("bram ps write...\n\r");

    for(i = 0; i < 256; i = i + 1){
    	Addr = bram_base_addr + 4*i;
    	Xil_Out32(Addr,i);
    	if(i == 255)
    		print("bram write end\n\r");
    }
    print("bram app end\n\r");

    cleanup_platform();
    return 0;
}

ps先向bram内写如数据,从0开始写到256,地址每次加4,最后一位地址是3fc,当pl端检测到ps部分数据写完后,即检测到3fc地址上的数为256后,开始向后面继续写256个数。

需要注意的是,在PL端控制BRAM时,地址是从0x00000000开始的,在PS端控制BRAM时,地址是从0x40000000开始的,这里0x40000000的地址是zynq自己分配的,可以在bd内查看,也可以自己手动分配地址和大小。

 

Zynq-7000 Vivado设计流程全解析:从工程创建到比特流生成 在FPGA开发中,Zynq-7000凭借ARM+FPGA异构架构成为嵌入式系统热门平台。其设计流程涉及Vivado工程创建、Block Design搭建、PS配置、PL逻辑编写、约束文件、综合实现及比特流生成等关键环节。理解AXI总线互联与软硬协同原理,能显著提升开发效率,避免常见报错。本文基于实际工程实践,系统梳理Zynq-7000的Vivado基本设计流程,涵盖器件选型、PS7配置、XDC约束、时序收敛及硬件导出等核心步骤,为开发者提供从零到比特流的完整指南。 阅读详情

相关推荐

基于ZYNQ的一站式信号处理平台构建:从ADC采集到数据滤波全流程解析

信号处理是嵌入式系统的核心任务,涉及模拟信号采集、数字信号处理与算法实现。其基本原理是将现实世界的连续信号通过ADC转换为离散数字信号,再利用FPGA或处理器进行滤波、变换等处理,以提取有用信息。这项技术的价值在于能够实现高精度、实时的数据采集与分析,广泛应用于工业控制、医疗设备、通信系统和消费电子等领域。本文以Xilinx ZYNQ异构SoC为核心,深入探讨如何构建一个集成ADC驱动、AXI DMA数据传输和C语言滤波算法的完整信号处理平台,为开发者提供从硬件设计到软件实现的清晰路径,有效解决工具链分散、

weixin_33898876的博客 410

ZYNQ 资源介绍

目录 1、简述 2、PS 资源 2.1、应用处理器单元 APU (Application Processing Unit) 2.2、存储器接口 2.2.1、DDR控制器 2.2.2、Q-SPI 控制器 2.2.3、静态存储器控制器(Static Memory Controller, SMC) 2.3、I/O 外设 2.3.1、GPIO 2.3.2、ETH X 2 2.3.3、...

StephenZhou 1万+

ZYNQ7020移植LVGL 9.5:嵌入式GUI开发全流程实践

嵌入式图形用户界面(GUI)开发是连接硬件与用户交互的关键技术,其核心在于如何在资源受限的微控制器(MCU)或片上系统(SoC)上实现流畅、美观的视觉体验。其原理通常涉及帧缓冲区管理、图形渲染流水线以及高效的事件处理机制。对于嵌入式开发而言,一套优秀的GUI方案能显著提升产品交互品质与开发效率。LVGL(Light and Versatile Graphics Library)作为一款开源、轻量且功能丰富的嵌入式图形库,正是为此而生,它通过精心设计的内存管理和丰富的控件集,使得在有限内存和算力下构建现代UI

weixin_34129696的博客 329

BRAM 仿真笔记

mem.v module mem( input clk, input en, input we, input [5:0]addr, input [16-1:0]din, output reg [16-1:0]dout ); reg[16-1:0]mem[63:0]; always@(posedge clk) i...

不解不惑 1222

SoC FPGA音频开发套件实战:从架构到调试全解析

随着音频处理需求日益复杂,传统MCU和DSP在并行计算与系统集成方面逐渐吃力。SoC FPGA将ARM处理器与可编程逻辑融合,通过AXI总线实现高带宽数据交互,为多通道音频采集、实时FFT、算法加速提供了高吞吐、低延时的硬件平台。在基于Zynq的音频开发套件上,开发者可借助Vivado搭建I2S到DMA的完整数据链路,并结合Vitis或Linux ALSA框架快速验证算法。本文围绕音频与处理应用的SoC FPGA开发套件,解析硬件架构、工具链流程与调试经验,帮助硬件工程师从MCU/DSP思路平滑迁移到FPG

weixin_34101229的博客 390

从零搭建FPGA高速结构光计算相机:硬件设计、算法实现与系统集成实战

结构光三维测量是一种通过投射特定光图案并分析其形变来获取物体三维坐标的非接触式高精度技术,其核心原理是三角测量。该技术因其高精度、全场测量和速度快的特点,在工业检测、逆向工程和机器人视觉等领域有广泛应用。传统基于PC的方案常受限于数据传输速度和软件解算延迟。FPGA(现场可编程门阵列)凭借其并行处理能力和硬件可编程性,能够实现像素级并行计算和纳秒级同步控制,从而构建出高度集成的“计算相机”,将感知与计算在硬件层面深度融合,极大提升了三维重建的速度与精度。本文以【四步相移法】和【相位解算】为核心,详细阐述了基

weixin_33802505的博客 403

Verilog语法点滴

Verilog语法点滴

qq_45020064的博客 1020

ZYNQ开发实战:从ARM+FPGA架构到软硬协同设计全解析

在嵌入式系统与高性能计算领域,异构计算平台通过整合不同架构的处理单元,实现了性能与灵活性的平衡。其核心原理在于将通用处理器(如ARM CPU)与可编程逻辑(如FPGA)深度融合,通过高效互联总线(如AXI)进行数据交换与任务协同。这种架构的技术价值在于能够针对特定工作负载进行硬件加速,同时保持软件编程的便利性。典型的应用场景包括实时图像处理、高速数据采集和低延迟控制等。本文以Xilinx ZYNQ平台为例,深入剖析其PS(处理系统)与PL(可编程逻辑)的协同工作机制。通过详解AXI总线协议、Vivado硬件

weixin_33850015的博客 343

Zynq7000 PL 程序固化失败?从 Vivado 到 Vitis 的完整避坑指南(基于 2019.2 版本)

本文详细解析了Zynq7000 PL程序在Vivado 2019.2和Vitis环境下固化失败的常见问题及解决方案。从硬件配置、Vivado工程构建到Vitis工程配置,提供了23个关键陷阱的避坑指南,特别针对QSPI Flash启用、SD卡引脚冲突等典型问题给出实战验证的修复方法,帮助开发者高效完成FPGA程序固化。

weixin_30824599的博客 405

FPGA实现暗通道先验图像去雾:26套工程源码与硬件优化详解

图像去雾是计算机视觉与图像处理领域的关键技术,旨在从受大气散射影响的图像中恢复清晰场景。其核心原理基于大气散射物理模型,通过估算场景透射率与大气光分量来复原图像。在工程实践中,FPGA因其并行处理能力和低延迟特性,成为实现实时视频去雾的理想硬件平台。本文将暗通道先验这一经典算法进行硬件化,涉及滑动窗口滤波、定点数运算和流水线架构等关键技术,有效平衡了处理速度与资源消耗。该技术可广泛应用于安防监控、自动驾驶及无人机视觉等对实时性要求严苛的场景。本文提供的26套FPGA工程源码,覆盖Xilinx与Intel主流

weixin_33801856的博客 333

ZYNQ 使用AXI_BRAM实现PS与PL 数据交互数据交互

有时CPU需要与PL进行小批量的数据交换,可以通过Block RAM实现。通过Zynq 的GP Master 接口读写PL端的 BRAM,实现PS与PL的交互。加入自定义的 FPGA 程序,并利用 AXI4 总线进行配置,通知何时读写 BRAM。CPU通过 AXI BRAM Controller 读取 BRAM 数据,CPU 仅配置自定义的 PL BRAM Controller 的寄存器,不通过它读写数将BRAM与socket进行联合使用,将电脑的数据发到PS端,PS端放在PL端,PL端再发给PS端,P据。

wangjie36的博客 1万+

从纯逻辑到全可编程SoC:硬件加速与软硬件协同设计实战指南

在嵌入式系统与芯片设计领域,可编程逻辑器件(如FPGA)和片上系统(SoC)是构建高性能、定制化硬件平台的核心技术。其基本原理在于通过硬件描述语言(如Verilog/VHDL)定义数字电路,将特定算法或功能以并行、确定性的硬件逻辑实现,从而突破传统处理器顺序执行的性能瓶颈。这一技术价值在于实现了性能、功耗与灵活性的极致平衡,尤其适用于算法密集、接口多样或需要快速迭代的应用场景。例如,在边缘AI推理和实时信号处理中,通过将计算密集型任务从可编程的“软件逻辑”迁移到可编程的“硬件逻辑”,可以获得数量级的性能提升

weixin_30312563的博客 367

ZYNQ YNQ 7010与OV5640嵌入式视觉系统:从FPGA逻辑到PYNQ软硬件协同设计实战

嵌入式视觉系统是计算机视觉在资源受限设备上的关键应用,其核心在于通过专用硬件实现高效图像处理。FPGA(现场可编程门阵列)凭借其并行处理能力和可重构特性,成为实现低延迟、高能效视觉算法的理想平台。ZYNQ SoC将ARM处理器与FPGA逻辑紧密结合,通过软硬件协同设计,既能运行复杂操作系统,又能利用硬件加速处理图像数据流。这种架构特别适合实时视频处理、边缘计算等场景,其中OV5640摄像头传感器因其性价比高、接口简单而广泛应用。本文以ZYNQ 7010和OV5640为例,深入探讨如何构建完整的视频采集与处理

weixin_33910460的博客 430

ZYNQ7020 FPGA上轻量级神经网络端到端部署实战

轻量级神经网络指参数量少、计算开销低、适合资源受限边缘设备的模型,其核心原理在于通过结构剪枝、定点量化与硬件协同设计,在精度与效率间取得工程平衡。技术价值体现在降低功耗、提升实时性、规避操作系统开销,尤其适用于工业传感器节点、嵌入式AI摄像头等无DDR、无Linux的裸机场景。本文聚焦ZYNQ7020异构平台,深度融合PyTorch量化训练与Verilog可综合RTL实现,覆盖从MNIST数据预处理、Q3.4定点权重导出、AXI-Stream接口IP生成,到裸机SDK中断驱动与时序约束调优的完整闭环,为FP

weixin_33874713的博客 194

Vivado入门本质是系统环境治理与工程思维构建

FPGA开发中的Vivado并非普通软件,而是一个深度耦合操作系统、硬件驱动、许可证服务与时序约束的工业级EDA平台。其核心原理在于:安装过程实为系统级适配(如WinPcap/Npcap驱动加载、FlexNet License Server启动、注册表与服务清理),环境异常直接导致后续综合、调试、比特流生成等环节静默失败。技术价值体现在规避‘伪成功’——例如综合无报错但端口被优化、Hardware Manager Scan无响应、ILA捕获乱码等,均源于底层环境或架构决策偏差。典型应用场景包括高校FPGA实

weixin_34161029的博客 450

xilinx:IP Processor Block RAM (BRAM) Block (v1.00a)

xilinx DS 444:IP Processor Block RAM (BRAM) Block (v1.00a)

Vitis HLS入门:从数组求和例程跑通C仿真到综合导出IP

高层次综合(HLS)作为FPGA开发中的关键方法,支持开发者使用C/C++描述算法并自动生成RTL硬件逻辑。Vitis HLS是Xilinx统一软件平台的重要组成部分,其核心理念在于将软件化的循环、数组与函数调用映射为可并行的硬件电路,从而兼顾开发效率与硬件性能。对于从事信号处理、图像加速或嵌入式系统优化的工程师而言,掌握HLS能够大幅缩短从算法到上板的验证周期。本文从最基础的数组求和例程入手,覆盖工程创建、接口约束编写、C仿真、综合报告解读到IP导出的完整流程,帮助初学者在FPGA上快速建立硬件直觉。通过

weixin_34292402的博客 186

5款高性价比LDO芯片实测对比:从TPS7A4501到LM2940,哪款更适合你的项目?

本文通过实测对比了TPS7A4501、TPS72301、LM2937、LM2940等五款高性价比LDO芯片的核心性能。文章详细分析了跌落电压、输出噪声、静态电流及热性能等关键指标,并结合电池供电物联网节点、高精度数据采集等典型应用场景,提供了清晰的选型指南,帮助工程师根据项目需求选择最合适的LDO芯片。

weixin_29305337的博客 114

ZYNQ千兆网UDP通信实战:从Vivado配置到LWIP调优的完整指南

UDP协议凭借无连接、低延迟特性,在嵌入式实时数据传输中广泛应用。其性能取决于硬件加速与协议栈优化,如校验和卸载、DMA对齐及内存管理。在FPGA+ARM异构平台中,千兆网通信需协调DDR带宽、中断模式与PHY配置,以突破吞吐瓶颈。典型场景包括工业控制、视频流传输及高速数据采集。本文聚焦ZYNQ平台,深入解析Vivado GEM配置、LWIP参数调优及DDR带宽分配,分享从ping不通到跑满带宽的排查经验与踩坑案例。

weixin_34387468的博客 370

​开源大模型实战:GLM-4.1V-Thinking本地部署教程(附API调用代码)

​在AI应用从“能用”向“好用”进阶的当下,​的需求愈发强烈:企业需保障数据安全(如医疗影像、金融报告不外传),开发者追求定制化能力(如微调模型适配垂直场景),科研团队则依赖离线环境处理敏感数据。智谱AI开源的​(10B级参数,支持图像、视频、文档多模态推理)凭借的优势,成为本地部署的热门选择。不过,对于“不想折腾技术”的普通用户或快速验证需求的团队而言,​,无需安装配置,打开即用,堪称“零门槛”体验的捷径。本文将分为两部分:先手把手教你​(适合有技术背景的用户),再对比介绍。

gogoMark的博客 1339

第133章 PCL OrientedBoundingBox 有向包围盒

中文叫有向包围盒,是一种旋转过的包围盒。特点:不像AABB那样固定朝向坐标轴能更紧密地包裹物体适用于复杂姿态的物体,比如倾斜、旋转的物体通常通过PCA、惯性矩等算法确定方向。

yumeiguo的博客 263
上一篇: Verilog语法入门 (一) 数值表示,数据类型及运算符
下一篇: vitis 报错(2)[Common 17-53] User Exception: Unable to get hpfm file from project
EfunStudy
博客等级 码龄5年 184粉丝 31原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值