ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备
1.一些术语,缩写和概念:
1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC
2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board)
3)ARM:处理器架构,基于RISC(精简指令集),对比X86架构基于CISC(复杂指令集)
4)ASIC:Application-specific Integrated Circuit(专用集成电路);
5)SOPC:System-on-Programmable-Chip(可编程片上系统);
6)APSOC:All-Programmable-SoC(全可编程片上系统)——软件(arm)和硬件(门阵列)都可编程,ZYNQ就属于APSOC;
2.常见可编程逻辑器件
2.1 CPLD
全称Complix Pragrammable Logic Device,CPLD通常由几个较小的、具有高度并行处理能力的逻辑块组成。每个逻辑块包含多个逻辑门、触发器和其他数字电路。 CPLD的结构比较“扁平化”,即它们的内部连接较为固定,支持逻辑操作的资源比较有限。它的内部连接较简单,且配置时需要对电路进行一定的优化。 CPLD的最大特点是它的逻辑块之间是通过专用的可编程互联网络连接起来的。
CPLD性能相对较低,适合需要低功耗和低复杂度的应用。CPLD的工作速度通常较慢,逻辑容量也较小(通常只有几千到几十千个逻辑门)。 由于其资源有限,CPLD通常用于一些小型的控制应用、简单的逻辑运算、状态机、解码器等。
2.2 FPGA
全称Filed Programable Gate Array,FPGA采用的是更加复杂的结构,通常由成千上万个较小的逻辑单元(称为逻辑块)组成,每个逻辑块可以执行基本的逻辑运算。这些逻辑块通过更为复杂的路由网络连接起来,支持更大的设计和更复杂的功能。 FPGA支持更灵活的连接和更高的并行度,可以实现更多的定制化电路,适合更复杂的应用。
FPGA一般有可编程IO,可编程逻辑单元,底层嵌入功能单元,嵌入式Block RAM,布线资源和硬核,其中可编程IO、嵌入式Block RAM和可编程逻辑单元在不同的FPGA芯片中只有数量上的区别,而底层嵌入功能单元是一些常用的功能单元,不同FPGA芯片上其数量和功能都有所不同,硬核也是具有特定功能的单元,其功能是专用的功能,不是所有FPGA芯片都有硬核。
FPGA性能非常高,能够处理极为复杂的逻辑操作,支持的逻辑容量非常大,通常有数百万个逻辑门或更多。 FPGA广泛应用于要求高速运算和大量并行计算的领域,如视频处理、图像处理、通信系统、数据加速等。
二、ZYNQ解析
ZYNQ实际是一种APSOC,它是组合了一个双核ARM Cortex-A9处理器(PS部分)和一个传统的FPGA门阵列逻辑部件的片上系统(PL部分)。ARM架构的处理器赋予了它软件编程的能力,可以运行例如linux这样的完整的操作系统,而FPGA门阵列则赋予了其硬件编程的能力可以构建各种定制化外设电路,PS和PL两个部分都可以单独使用,也可以结合起来使用(通过AXI接口)。
结构示意图如下:
1. PS(processing system):
PS部分主要包含搭载双核ARM架构处理器的APU以及一些外部集成电路;
1.1 APU
APU中的部分常用资源说明如下:
①两个ARM Cortex-A9处理器:核心处理器;
②两个浮点运算单元(FPU):进行浮点运算;
③两个并行运算引擎NEON Engine:常用于图像中像素点的并行处理;
④两个存储管理单元MMU;
⑤两套一级缓存(cache):每一套都包含一个32K的指令cache(I-cache)和一个32K的数据cache(D-cache);
⑥一个512K的共用二级缓存和一个片上存储(OCM)互联:这两个部分都通过SCU(snoop Controller Unit)一致性控制单元接收两个处理器的控制;
⑦一个中断控制器(GIC);
⑧一个直接内存访问(DMA):允许外部设备(如硬盘、网络接口、图形处理单元(GPU)、音频设备等)直接与系统内存(RAM)交换数据,而不需要通过中央处理器(CPU)的干预。
1.2外部集成电路:
外部集成电路主要包含以下内容:
① 中央互联:不同组件之间的通信骨架,负责将各个模块有效连接起来,并管理它们之间的数据流,主要包括:处理器核心与外设之间的互联、CPU和外设对内存访问的管理、总线仲裁;
② 与外界互联的接口(USB、SD/SDIO、GPIO、UART等)以及可配置映射的多功能输入输出接口(MIO,即直接与外设进行通信的引脚共54个);
③ 复位管理和时钟生成器;
④ 其他互联;
2.PL(Programmable Logic):
PL部分可以看作是一个FPGA模块,这部分允许用户通过硬件描述语言(如VHDL或Verilog)定义硬件电路,实现自定义的逻辑功能。PL是高度可编程的,能够为特定应用提供极大的灵活性。
PL部分包含以下内容:
① 可扩展引脚(EMIO):用于PS的MIO不够时进行扩展,也可以使用这些EMIO与ps进行一些交互;
② XADC数模转换接口:外设通过该接口可直接访问XADC硬核;
③ DMA接口:实现PL直接访问PS的DMA模块;
④ AXI接口;
⑤ 可编程逻辑单元;
3.AXI接口
AXI(Advanced Extensible Interface)接口是一种由 ARM 公司开发的高性能、可扩展的 总线协议,它是AMBA总线的一部分,主要用于高带宽、低延迟的数据传输。它被广泛应用于 ARM 处理器和各种嵌入式系统中的数据传输,特别是在 Zynq 等集成了 ARM 处理器 和 FPGA 的 SoC(System on Chip)系统中。
PS和PL的协同工作就依赖于该接口,AXI接口包含通用接口(GP接口,General purpose interface),加速器一致接口(ACP接口——Accelerator Coherency Port,S_AXI_ACP),高性能接口(HP接口——High Performance interface,S_AXI_HP)三个部分,其中GP接口又有主(master)接口M_AXI_GP[1:0]和从(slave)接口S_AXI_GP[1:0]分别承担发起通信和响应通信的作用,这里M和S都表示PS部分的角色是主还是从;ACP接口直接访问SCU实现PL对PS中的OCM和二级cache的通信,通过ACP接口可以使PL访问OCM和二级cache的速度和CPU访问这两个模块的速度相当;HP接口连接PS的数据存储区,其高性能体现在每一个HP接口都有一个FIFO缓冲区,且接口的数据传输速度和吞吐量都很大。在HP接口通信和ACP通信过程中都是PL做主机,PS做从机。
AMBA总线的框架结构如下图所示:
其中Memory Map、Stream和Lite是不同的AXI类别属于AMBA4.0分别表示存储映射、数据流、轻量化访问,而AMBA3.0只有一种AXI。
相关文章:

ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...

自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...

高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...

使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...

软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...

spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...

算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...

Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

【深度学习新浪潮】什么是credit assignment problem?
Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...

论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...

实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...