zynq基础知识学习(1)

Zynq和FPGA区别——快速认识Zynq开发-CSDN博客

zynq的结构

什么是ZYNQ?ZYNQ简介-CSDN博客

ZYNQ简介-CSDN博客

ZYNQ基础知识-CSDN博客

ZYNQ相关的常见概念-CSDN博客

zynq:组合了一个双核ARM Cortex-A9处理器和一个现场可编程门阵列(FPGA)逻辑部件。

PL和PS端通过AXI接口连接。

PL端

可编程输入/输出单元

基本可编程逻辑单元:查找表(LUT)和寄存器(Register)组成。查找表一般完成纯组合逻辑功能,FPGA依赖寄存器完成同步时序设计。

嵌入式块RAM(Block RAM)

布线资源:连通FPGA内部的所有单元。连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。

底层嵌入功能单元:通用程度较高的嵌入式功能模块,如PLL、DLL、DSP、CPU等。

内嵌专用硬核:通用性相对较弱,不是所有FPGA器件都包含硬核。zynq的PL端有一个数模混合模块XADC,就是一个硬核。XADC包含两个模数转换器(ADC),一个模拟多路复用器,片商温度和片上电压传感器等。可以利用该模块监测芯片温度和供电电压,也可以用来测量外部的模拟电压信号。

PS端

是以处理器为核心的系统。其中集成了内存控制器和大量的外设,使Cortex-A9处理器可以完全独立于可编程逻辑单元。

在zynq中,PS和PL端的供电电路是独立的。

使用FPGA的可编程逻辑资源搭建的处理器称之为“软核”处理器。zynq中是一颗“硬核”处理器。

可以使用PL的逻辑资源搭建一个Microblaze软核处理器,和ARM迎合处理器协同工作

系统中除了ARM外,还有一个应用处理单元(APU),扩展外设接口、Cache存储器、存储器接口、互联接口和时钟发生电路等。

PL-PS通信

【干货分享】ZYNQ开发基本流程-CSDN博客

PS和PL的通信通过两个通路完成:GP(General Purpose) Ports 和HP(High Performance) Ports。

GP Ports包含两个Master和两个Slave接口,AXI协议数据位宽32bit。

HP Ports包含四个接口,均是PL为Master。有两个专用的连接到DDR Controller的接口和一个连接到OCM(On-chip Memory)的接口。

HP与GP相比,有额外的FIFIO作为Buffer,可以提高传输效率和数据吞吐量。

因此,GP主要用于寄存器的读写以及小数据量的传输;HP用于大量数据的传输,主要是Memory数据的读写。

设计思路

zynq最常用的设计思路是将主程序放在PS中,PL作为PS的外设,设计相应的逻辑功能

将逻辑设计封装成IP,且每个IP都包含一个标准的AXI-Lite接口。

PS对于逻辑设计的控制是通过控制逻辑设计的功能寄存器,进而控制逻辑设计进行相应的操作,同时将工作情况通过状态寄存器返回给PS端。

运行zynq

zynq启动模式详解及启动过程详解_zynq fsbl-CSDN博客

FSBL

first stage boot loader

fsbl.elf是zynq启动第一阶段的加载程序。经过这一阶段,才可以运行裸奔程序或者引导操作系统的u-boot。

zynq的启动流程

(Stage 0) BootROM阶段  --> (Stage 1) FSBL阶段  -->  (Stage 2) SSBL阶段

Stage 0

Stage 0:在ARM核上电后,第一时间读取BootROM中固化的程序,完成对芯片的最初始化的配置。        (Read-only Memory)        

zynq由MIO[6:2]配置,其中MIO[2]配置JTAG,MIO[5:3]选择启动方式(SD、QSPI Flash等),MIO[6]是PLL使能控制。

BootROM先对SD等进行初始化,然后要通过读取MIO[6:2]的引脚配置情况,决定如何加载Stage 1需要的启动镜像。之后再将启动镜像加载到OCM(片上内存)中。

BootROM阶段不对PL进行配置。

Stage 1

Stage 1:PS初始化 --> 加载PL的bit流文件,配置PL --> 加载SSBL引导程序 / ARM的裸跑程序到DDR --> 跳转执行SSBL / 裸跑程序

初始化PS:包括DDR、MIO等。

非JTAG模式下,PL无法自行配置。

SSBL是运行操作系统时才进行加载

Stage 2

Stage 2(可选):操作系统在启动过程中的引导程序boot loader。

对linux而言,zynq的SSBL阶段核u-boot的作用相同。是将zynq所需要的操作系统加载到DDR内存中

其他

AXI

ZYNQ-嵌入式系统开发学习笔记-概况篇_zynq嵌入式开发-CSDN博客

AXI接口:实现PS-PL的高速便捷交互。

【学累了,休息会~~】

串口

万变不离其宗之ZYNQ串口介绍_zynq串口通信-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目总结(一)docker总结

目录 一、引言 二、docker ------>2.1、docker介绍 ------>2.2、与虚拟机的区别 ------>2.3、Docke基本概念 ------>2.4、Docker内部结构 ------>2.5、Windows上使用docker ------>2.6、Linux上使用Docker ------>2.7、Docker常用命令 ------&g…

太速科技-基于6U CPCIe的TMS320C6678+KU060的信号处理板卡

基于6U CPCIe的TMS320C6678KU060的信号处理板卡 一、板卡概述 基于6U CPCIe的C6678KU060的信号处理板卡是新一代FPGA的高性能处理板卡。板卡采用一片TI DSP TMS320C6678和一片Xilinx公司 XCKU060-2FFVA1156I作为主处理器,Xilinx 的Aritex XC7A200T作为辅助处…

数据结构——栈的应用

数据结构——栈的应用 括号匹配中缀转后缀什么是中缀后缀中缀表达式 (Infix Notation)后缀表达式 (Postfix Notation, Reverse Polish Notation, RPN) 加减,乘除运算处理括号后缀转中缀 我们今天来看栈的应用: 括号匹配 栈一个经典的应用就是括号匹配&…

set_input_delay的理解

1,set_input_delay约束理解 input_delay是指输入的数据到达FPGA的pad引脚时相对于时钟边沿的延迟有多大,单位是ns,数值可以是正,也可以是负。通过set_input_delay约束告诉编译器输入时钟和输入数据的相位关系。如下图所示假设时钟…

数字IC后端先进工艺设计实现之TSMC 12nm 6Track工艺数字IC后端实现重点难点盘点

大家知道咱们社区近期TSMC 12nm ARM Cortexa-A72(1P9M 6Track Metal Stack)已经开班。这里小编要强调一点:不要认为跑了先进工艺的项目就会很有竞争力!如果你仅仅是跑个先进工艺的flow,不懂先进工艺在数字IC后端实现上的不同点,为何有这样的不…

推荐一个wordpress免费模板下载

首页大背景图,首屏2张轮播图,轮换展示,效果非常的炫酷,非常的哇噻,使用这个主题搭建的wordpress网站,超过了200个,虽然是一个老主题了,不过是经得起时间考验的,现在用起来…

[iOS]使用CocoaPods发布公开库

1.检查库名是否已被占用 选择库名时,尽量选择具有描述性并且独特的名字,这不仅可以避免命名冲突,还可以帮助用户更好地理解库的用途和功能。 在实际创建和发布 CocoaPods 库之前,确实应该检查库名是否已经被占用,以避…

clickhouse升级

参考链接: clickhouse 版本升级(rpm 安装包)_软件包 clickhouse-common-static-22.2.2.1-2.x86_64.rpm-CSDN博客

敏捷之Scrum开发

目录 一、什么是 Scrum 1.1 Scrum 的定义 二、Scrum 迭代开发过程 2.1 迭代开发过程说明 2.1.1 开发方法 2.1.1.1 增量模型 2.1.1.1.1 定义 2.1.1.1.2 模型方法说明 2.1.1.2 迭代模型 2.1.1.2.1 定义 2.1.1.2.2 模型方法说明 2.1.2 迭代过程 2.1.2.1 产品需求Produ…

万万没想到,原来这些维生素对帕金森有好处!

亲爱的读者朋友们,今天我们要聊一个特别的群体——帕金森病患者。在面对这一神经系统退行性疾病时,除了遵循医嘱进行药物治疗和康复锻炼,合理的饮食和营养补充也显得尤为重要。那么,究竟哪些维生素是他们不可或缺的呢?…

Maven 构建 Flink 应用程序的最佳实践(根除各种类冲突/类加载问题)

作为开发者,在构建 Flink 应用程序时的体验真是一言难尽,想必大家都曾遇到过各种 ClassNotFoundException、NoSuchMethodError 以及 Could not find any factory for identifier kafka/jdbc/hive/hudi that implements org.apache.flink.table.factories.DynamicTableFactory…

5-用户权限控制(前端)

1.登录成功后,调用状态管理中对应的设置菜单的方法 //调用store中的setMenu函数 this.$store.commit(setMenu,data.data.data)2.将后端返回的菜单数据存入Cookie中 //设置菜单的方法setMenu(state, val) {state.menu valCookie.set("menu", JSON.strin…

go语言实现简单登陆返回token样例

目录 1、代码实现样例: 2、postman调用,获取登陆后的token: 1、代码实现样例: package mainimport ("net/http""time""github.com/dgrijalva/jwt-go""github.com/gin-gonic/gin" )var …

【代码问题】【Pytorch】训练模型时Loss为NaN或INF

解决方法或者问题排查: 加归一化层: 我的问题是我新增的一个模块与原来的模块得到的张量相加,原张量是归一化后的,我的没有: class Module(nn.Module):def __init__(self,dim,):super().__init__()# 新增一个LayerNo…

python学习笔记B-13:序列结构之元组--元组的相关操作

元组的常用相关操作有:获取最大值、获取最小值、获取元组长度、查询是否包好某元素、获取元素索引值、获取元素数量 t (2,4,6,90,34,25,78) print("原元组:",t) print("最大值:",max(t)) print("最小值&#xff1…

matlab新手快速上手3(差分进化算法)

本文用经典差分进化框架模板,对matlab新手友好,快速上手看懂matlab代码,快速应用实践,源代码在文末给出。 差分进化算法定义: 差分进化算法(Differential Evolution,简称DE算法)是…

深入理解前端开发:从基础到实践

导语: 随着互联网技术的飞速发展,前端开发已经成为了Web开发中不可或缺的一部分。本文将带领大家深入了解前端开发的基础知识、技术栈和实践案例,帮助大家提升前端开发技能。 一、前端开发基础知识 1. HTML:网页的骨架 HTML&am…

KUKA机器人如何给IO信号或寄存器添加中文注释信息?

KUKA机器人如何给IO信号或寄存器添加中文注释信息? 如下图所示,首先,我们需要登录专家以上用户权限(默认密码KUKA), 如下图所示,点击“投入运行”—“网络配置”, 如下图所示,此时机器人的IP地址为192.168.1.10, 如下图所示,用一根网线连接机器人控制柜到笔记…

基于SpringBoot+Vue大学生兼职管理系统的设计与实现

目录 一、前言介绍 二、功能需求 三、功能结构设计 四、管理员功能实现 招聘单位管理 用户管理 论坛管理 公告信息管理 五、招聘单位功能实现 职位招聘管理 职位留言管理 简历投递管理 六、用户功能实现 在线论坛 职位招聘信息 简历投递 简历 七、部分核心代码 …

【C语言进阶】程序编译中的预处理操作

📚作者简介:爱编程的小马,正在学习C/C,Linux及MySQL.. 📚以后会将数据结构收录为一个系列,敬请期待 ● 本期内容讲解C语言中程序预处理要做的事情 目录 1.1 预处理符号 1.2 #define 1.2.1 #define定义标识…