初识ZYNQ结构

article/2025/9/24 18:46:48

本文介绍了zynq的结构,简述了PS中的APU。

处理器系统

所有的 Zynq 芯片都有相同的基本架构。作为处理器系统的基础,所有的芯片都包含了一颗双核 ARM Cortex-A9 处理器。这是一颗 “ 硬 ” 处理器 —— 它是芯片上专用而且优化过的硅片元件。

作为比较,我们来看一下硬件处理器以外的另一种方案,就像 Xilinx 的MicroBlaze这样的“软”处理器,这是由可编程逻辑部分的单元组合而成的[27]。也就是说,一个软处理器的实现和部署在 FPGA 的逻辑结构里的任何其他 IP 包是等价的。一般来说,软处理器的优势是处理器实例的数量和精确实现是灵活的。从另一方面来说,硬处理器可以获得相对较高的性能,Zynq 的 ARM 处理器正是如此。第四章会更详细地讨论这个问题。

值得指出的是,可以在 Zynq 的 PL 部分配上一个或多个 MicroBlaze 软处理器,用来和 ARM 处理器协同工作。比如这些 MicroBlaze 处理器可以负责协调特定的底层功能与系统之间的配合,这些要求不高的任务可以从主的 ARM Cortex-A9 处理器上脱离出来,从而提升整体的性能。换句话说,系统中存在的 ARM 处理器并不会妨碍软处理器的使用,甚至很多应用能因采用了此种类型的处理模式(软、硬处理器并存)而受益。

图 2.1 指出了 Zynq 芯片上的 ARM 和 MicroBlaze 处理器的位置,ARM 是专用的资源,而 MicroBlaze 位于逻辑部分。

重要的是,Zynq 的处理器系统里并非只有 ARM 处理器,还有一组相关的处理资源,形成了一个应用处理器单元 (Application Processing Unit,APU),另外还有扩展外设接口、cache 存储器、存储器接口、互联接口和时钟发生电路 [8]。图2.2 所示是 PS 部分架构框图,其中高亮的部分就是 APU。

应用处理器单元 (APU)

应用处理器单元 (APU)图 2.3 所示是 APU 的简化框图。APU 主要是由两个 ARM 处理核组成的,每个都关联了一些可计算的单元:一个 NEONTM 媒体处理引擎(Media Processing Engine,MPE)和浮点单元 (Floating Point Unit,FPU);一个内存管理单元 (Memory Management Unit,MMU);和一个一级 cache 存储器(分为指令和数据两个部分)。APU 里还有一个二级 cache 存储器,再往下还有片上存储器(on chip memory,OCM)

最后,由一个一致性控制单元 (Snoop Control Unit,SCU)在 ARM 核和二级 cache 及 OCM 存储器之间形成了桥连接,这个单元还部分负责与 PL 对接,图中没有标出这个接口。

根据具体的 Zynq 芯片型号(详见 2.5 节),其中的 ARM Cortex-A9 最高工作频率可达到 1GHz。两个核中的任意一核分别包含一个一级数据 cache 和一个一级指令cache,每个都是 32KB。一般情况下,这样就能在本地存储常用的数据和指令,实现快速的访问时间和优化的处理器性能。两个核另外还共用了一个 512KB 的二级cache 来存放指令和数据,再往下在 APU 里还有一个 256KB 的片上存储器。MMU 的主要责任是在虚拟地址和物理地址之间做翻译 (参见 23.3 节关于 Linux 操作系统里的内存管理的讨论)。

一致性 (窥视)控制单元 (SCU)从事的是一些和两个处理器与一二级 cache存储器之间的接口相关的任务 (“ 窥视 ” 是保证 cache 一致性的几种机制之一,也就是管理在共享的 cache 资源上的数据的一致性 [13])。SCU 负责维持两个处理器的数据 cache 存储器 —— 就是图 2.3 上标着 L1(D) 的 —— 和共享的二级 cache存储器之间的存储一致性。它还初始化并控制对二级 cache 的访问,在必要的时候仲裁从两个核来的访问请求[8][33]。SCU 还要通过加速器一致端口(AcceleratorCoherency PortACP)来管理在 PS 和 PL 之间的访问会话。在简化版的 APU 图(图2.3)上没有出现这个端口,不过在图 2.2 的右侧可以看到。再往下,在 APU 里还有一些定时器和一个中断控制器这种控制块,有关这些的更多详情在 [8] 可以找到。

从编程的角度看,对 ARM 指令的支持是由 Xilinx 软件开发包 (SoftwareDevelopment Kit,SDK)来实现的,它包含了开发部署在 ARM 处理器上的软件所需的全部内容。编译器支持 ARM 和 Thumb® 指令集(16 位或 32 位),在特定的状态下还支持 8 位的 Java 字节码 (用于 Java 虚拟机)。关于指令集选项和细节的进一步信息请阅读 [5]。

作为主 ARM 处理器的附加功能,NEON 引擎实现了单指令多数据 (SingleInstruction Multiple Data,SIMD)功能来实现媒体和DSP类算法的战略加速[9]。NEON 指令是对标准 ARM 指令集的扩展,可以直接使用,也可以通过写出遵循特定的格式的 C 代码,来让编译器产生 NEON 指令 [15]。SIMD 术语意味着 NEON 引擎可以对输入向量中的多组数据,同时执行相同的运算来得到对应的输出向量。这种计算范式很好地迎合了像图像和视频处理这样的应用,可以同时对大量的数据样本(像素点)做运算,也适合天生具有并行性的常用的信号处理函数,比如有限脉冲响应(Finite Impulse Response,FIR)滤波和快速傅立叶变换(Fast Fourier Transforms,FFT)。

图 2.4 描绘了 NEON 引擎的计算。有两个输入寄存器,A 和 B,每个里面有 N 组独立输入向量。这 N 组输入之间,定义了单个运算来产生对应的输出向量,然后写到输出寄存器去。向量的大小是可变的,也就是构成每个寄存器的向量的数量是可变的。重要的特征是每个 “ 道 ” 会用相同的运算产生结果,也就是同一时间对多组不同的输入数据做运算,这就是单指令多数据这个术语的意思。

NEON 支持多种数据类型,包括有符号和无符号的整数、单精度浮点书和半精度浮点数,但是不支持双精度的 [9]。如果需要双精度计算,要用到浮点数单元 (不具有 SIMD 能力)。

在 NEON 之外,还有对浮点单元 (FPU)的扩展,叫做 “ 浮点扩展 ”,也有的地方因为历史的缘故叫做 “VFP (Vector Floating Point,向量浮点)扩展 ”。这个单元实现了与 IEEE 754 标准 [11] 兼容的浮点运算的硬件加速,支持单精度和双精度格式,另外还部分支持半精度和整数转换。就所支持的功能而言有少量限制,具体的描述在文献 [7] 和 [5],不过不会影响和标准的兼容。


http://chatgpt.dhexx.cn/article/1enwlCBp.shtml

相关文章

zynq中断

在zynq中选择中断信号后: 只能看到一个[0:0]的向量,完全无法对应中断号: 且属性栏目没有配置选项,一般可以看到有些连接图如下: 如果看成最低位的话就是61,那么其它中断号怎么使用呢:查到的资料如下&#x…

ZYNQ基础知识

1.ZYNQ介绍 全称为Zynq-7000 All Programmable Soc 1.Zynq是赛灵思(Xilinx)推出的新一代全可编程片上系统,将处理器的软件可编程性和FPGA的硬件可编程性完美结合。具有较强的系统性能、灵活性与可扩展性。 2.旨在为视频监控、汽车驾驶员辅助…

一、ZYNQ简介

1 ZYNQ简介 (1)ZYNQ简介 ​ ZYNQ全称Zynq-7000 All Programmable SoC,是赛灵思公司(Xilinx)推出的新一代全可编程片上系统((APSoC)(全可编程指的是硬件和软件都可以编程…

ZYNQ简介

目录 1.ZYNQ简介 2.片上系统,板上系统,可编程片上系统,全可编程上系统 (1)板上系统 (2)片上系统(SOC) (3)可编程片上系统(SOPC&a…

【ZYNQ】从入门到秃头01 初识ZYNQ(PS和PL之间连接)

文章目录 从嵌入式Linux到ZYNQZYNQ简介PL简介常用的可编程逻辑器件:PL结构 PS简介AXIAXI4 StreamAXI4 ZYNQ芯片开发流程的简介学习ZYNQ要具备哪些技能 从嵌入式Linux到ZYNQ 之前的学习领域一直是ARM,从STM32到NXP iMX6, 从裸机开发到Linux操…

css-输入框和文本域样式调整

输入框去掉选中后的边框变化效果 选中后边框变化: 去掉变化效果方法:添加css属性- - - outline: none; 文本域去掉右下角拖拽图样 默认文本域右下角有个拖拽的图样,将鼠标移动到右下角可以进行拖拽实现放大缩小: 代码示例&#x…

HTML5-列表框、文本域和文件域

<!--下拉框&#xff0c;列表框selected 默认选择--><p>国家&#xff1a;<select name"列表名称" ><option value"china">中国</option><option value"us">美国</option><option value"eth&qu…

【多行文本输入框--文本域】(html,css)

<style>textarea{width: 300px;height: 300px;resize: none;/* resize:重新设置大小&#xff0c;vertical,horizontal,both,none */} </style> <body><div>多行文本输入框--文本域</div><div><!-- placeholder--提示文字 --><!--…

JTextArea:文本域组件

文本域与文本框的最大区别就是文本域允许用户输入多行文本信息。在 Swing 中使用 JTextArea 类实现一个文本域&#xff0c;其常用构造方法如下。 JTextArea()&#xff1a;创建一个默认的文本域。JTextArea(int rows,int columns)&#xff1a;创建一个具有指定行数和列数的文本…

html文本域

<!DOCTYPE <!DOCTYPE html><html><head><meta charset"utf-8"/><title>文本域</title></head><body>用户留言:<br/><form action"mailto:minriqq.com" name"invest" method"p…

文本域textarea

文本域 CreateTime--2017年5月23日15:12:08Author:Marydon 二、文本域 &#xff08;一&#xff09;语法 <textarea></textarea> &#xff08;二&#xff09;用法介绍 2.2.1 页面展示 内容一定要写在标签体内&#xff0c;即&#xff1a; <textarea>页面要展示…

textarea文本域,多行文本输入

当用户需要在表单中输入大段文字时&#xff0c;需要用到文本输入域。 语法&#xff1a; <textarea rows"行数" cols"列数">默认出现文本</textarea> 注意&#xff1a; rows,cols这两个属性可用css样式的width和height来代替&#xff1a;co…

为文本域(textarea)中的个别字体设置不同的样式

文章目录 将textarea文本域用可编辑的div来代替相关JavaScript代码效果显示参考链接 将textarea文本域用可编辑的div来代替 将contenteditable设置为true后可将div模拟成textarea <div id"" class"" contenteditable"true"></div>…

Vue3文本域(Textarea)

APIs 参数说明类型默认值必传width文本域宽度string | number‘100%’falseallowClear可以点击清除图标删除内容booleanfalsefalseautoSize自适应内容高度boolean | {minRows?: number, maxRows?: number}falsefalsedisabled是否禁用booleanfalsefalsemaxlength最大长度numb…

HTML 文本框输入框 列表文本框和文本域 等等

初识表单和get提交 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>登录注册</title> </head> <body><!--表单form action: 表单提交的位置&#xff0c;可以是网站&#xff0c;也…

LayUI富文本域使用案例

LayUI富文本域是一款轻量级的富文本编辑器&#xff0c;页面设计比较简约。之前写项目时因为用的是LayUI框架&#xff0c;所以富文本域当时就用的LayUI富文本编辑器&#xff0c;这里整理一下。 先来看一下效果图&#xff0c;页面效果图。 访问效果图&#xff1a; 首先需要引入L…

文本域(可输入多行文本)

1&#xff09;和文本、密码输入框一样&#xff0c;文本域的代码也是在<form></form>标签内部的。 语法如下&#xff1a; <textarea rows"行数" cols"列数">文本</textarea>如&#xff1a; <!DOCTYPE HTML> <html> <…

文本域、标签、密码域、文本区、滚动窗格——文本输入

文本域 将文本域添加到窗口的常用办法就是将它添加到面板或者其他的容器中&#xff1a; JPanel panel new JPanel(); JTextField textField new JTextField("Default input", 20); panel.add(textField);上面的代码添加一个文本域&#xff0c;同时传递“Default …

第十三篇、文本框、密码框和文本域。

文章目录 前言一、文本框、密码框和文本域之间的对比二、代码示例1.文本框2.密码框3.文本域 总结 前言 上一篇我们共同学习了下拉框和列表框&#xff0c;本篇我们将学习文本框、密码框和回顾我们之前学习的文本域。 一、文本框、密码框和文本域之间的对比 文本框&#xff1a;…

java:文本域的简单使用

文本域的简单使用 一、关键代码二、简单说明三、流程图四、源码&#xff08;一&#xff09;、源码A&#xff08;二&#xff09;、源码A的运行效果 五、结语六、定位日期 一、关键代码 常见的创建类方式&#xff0c;创建文本域。需要注意添加相关的包类&#xff0c;具体可看源码…