从零开始学ZYNQ(FPGA)笔记二 | 认识学习内容

这篇具有很好参考价值的文章主要介绍了从零开始学ZYNQ(FPGA)笔记二 | 认识学习内容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 认识FPGA

什么是FPGA

FPGA的编程过程

 2. 认识ARM

什么是ARM

ARM与FPGA的区别

ARM与Linux

3. 认识ZYNQ

ZYNQ与FPGA的区别

ZYNQ的"ARM"和"FPGA"

关于PL

关于PS

4. 学习用板载资源

5. 总结


1. 认识FPGA

  • 什么是FPGA

        FPGA是一种集成电路,它可以在制造后由客户或设计者根据需要配置电路功能 。FPGA的内部由可编程逻辑、专用功能块和可编程互连组成。FPGA的结构可以根据不同的厂商和型号有所差异,但一般包括以下几种主要元素:

  • 可配置逻辑块(CLB):是FPGA的基本单元,可以实现任意的逻辑功能。每个CLB由一些查找表(LUT)、触发器、多路复用器等组成;
  • 数字信号处理(DSP)块:是FPGA的专用功能块之一,可以高效地实现数字信号处理的功能,如滤波、乘法、累加等;
  • 收发器(Transceiver):是FPGA的专用功能块之一,可以实现高速的串行数据的发送和接收,支持多种协议和标准;
  • 块随机存取存储器(BRAM):是FPGA的专用功能块之一,可以提供片上的存储空间,支持多种访问模式和配置方式;
  • 可编程互连:是FPGA的重要组成部分,可以实现不同的CLB和功能块之间的连接和通信,支持多种拓扑结构和路由算法;

FPGA的应用领域非常广泛,主要包括以下几类:

  • 通信和网络:FPGA可以实现高速的数据传输和处理功能,支持多种通信协议和标准,如5GWiFiEthernet等;
  • 数据中心和云计算:FPGA可以实现高效的数据加密和压缩功能,支持多种云服务和平台,如AWSAzure等;
  • 人工智能和机器学习:FPGA可以实现高性能的神经网络和深度学习功能,支持多种模型和算法,如CNNRNN等;
  • 嵌入式系统和物联网:FPGA可以实现低功耗的智能控制和传感功能,支持多种嵌入式操作系统和物联网协议,如LinuxMQTT等;
  • 数字信号处理和图像处理:FPGA可以实现高精度的信号采集和分析功能,支持多种信号处理和图像处理算法,如FFTDCTOpenCV等;
  • 工业控制和汽车电子:FPGA可以实现高可靠的工业控制和汽车电子功能,支持多种工业总线和汽车标准,如CANFlexRay等;

        学习FPGA可以提高自己的硬件设计能力和创新能力,可以实现自己的想法和算法,可以解决实际的问题和挑战,可以参与到前沿的技术和项目中; 

  • FPGA的编程过程

        FPGA编程通过使用硬件描述语言(HDL)或其他工具来定义和配置FPGA上的逻辑电路。FPGA编程的主要步骤包括:

  • 硬件架构设计:确定FPGA的输入输出接口,时钟频率,资源利用率等;
  • 设计:使用HDL(如VHDLVerilog)或其他工具(如MATLABSimulink)来描述硬件逻辑,实现算法功能;
  • 验证:使用仿真或测试平台来检查设计是否符合预期,是否存在错误或缺陷;
  • 综合:将HDL代码转换为适合FPGA的逻辑门电路,优化性能和资源消耗;
  • 集成:将设计与FPGA的固有资源(如引脚,时钟,ADC等)以及外部设备(如内存,传感器等)进行连接和配置;
  • 实现:将综合后的逻辑门电路映射到FPGA的物理资源上,并进行布局和布线,生成可以下载到FPGA的比特流文件;
  • 实验测试和调试:将比特流文件下载到FPGA上,并使用真实或测试输入来运行和观察结果,发现并解决问题;

 2. 认识ARM

  • 什么是ARM

        ARMAcorn RISC Machine)是一家英国的半导体公司,它设计和授权处理器IP,提供了多种性能、功耗和成本需求的处理器。ARM的处理器包括:                   

  • Cortex-A系列:面向性能密集型系统的应用处理器内核;
  • Cortex-R系列:面向实时应用的高性能内核;
  • Cortex-M系列:面向各类嵌入式应用的微控制器内核;
  • Neoverse:满足大型互联网HPC高性能计算应用需求的高性能内核;
  • Ethos:专门用于加速人工智能机器学习的神经处理器内核;
  • SecurCore:基于Cortex-M3核的高安全性微控制器内核;

        ARM的处理器广泛应用于智能手机、平板电脑、物联网设备、云计算、汽车电子、嵌入式系统等领域;

  • ARM与FPGA的区别

        ARM与FPGA的区别主要有以下几点:

  • ARM的功能主要是执行软件指令,实现数据处理、事务管理、界面显示、应用程序等功能,它可以运行多种操作系统和开发环境,也可以调用多种现成的硬件资源;
  • FPGA的功能主要是实现硬件逻辑,实现数据加速、并行处理、信号处理、图像处理等功能,它可以根据不同的需求和设计来配置电路功能,也可以通过添加软核或硬核来实现处理器功能;
  • ARM和FPGA的功能可以相互补充,也可以相互竞争,取决于具体的应用场景和性能要求。一般来说,ARM更适合控制类的应用,而FPGA更适合计算类的应用;
  • ARM与Linux

        Linux是一种开源的操作系统,可以根据不同的需求和环境来定制和优化,具有灵活性高、兼容性强、稳定性好等特点,适用于多种应用场景,如嵌入式系统、物联网设备、数据中心等。在ARM上运行Linux可以充分利用ARM的处理能力和节能特性,可以提高系统的性能和效率,可以降低系统的成本和功耗,可以增加系统的功能和可扩展性;

        在ARM上运行的Linux系统有很多种,例如:

  • Arch Linux ARM:基于Arch Linux的分支,提供了一个轻量级、灵活、可定制的Linux系统,支持多种ARM设备;
  • Debian ARM:基于Debian的分支,提供了一个稳定、成熟、兼容的Linux系统,支持多种ARM设备;
  • Armbian:基于Debian或Ubuntu的分支,专门为ARM开发板定制的Linux系统,提供了优化的性能和稳定性;
  • Linux Mint Debian Edition (LMDE):基于Debian Testing的分支,提供了一个友好、美观、功能丰富的Linux系统,支持多种ARM设备;
  • Manjaro ARM:基于Manjaro的分支,提供了一个快速、现代、易用的Linux系统,支持多种ARM设备;
  • Ubuntu Server ARM:基于Ubuntu Server的分支,提供了一个适用于云计算和边缘计算的Linux系统,支持多种ARM服务器设备;

3. 认识ZYNQ

  • ZYNQ与FPGA的区别

        ZYNQzynq-7000 All Programmable SoC)是Xilinx推出的新一代全新可编程片上系统,在传统FPGA芯片的基础上集成了1-2个ARM处理器,同时具备了软件可编程和硬件可编程的特性,将ARM的控制能力和FPGA的计算性能完美结合,提供无与伦比的系统性能、灵活性和可扩展性;

        ZYNQ与FPGA的区别主要有以下几点:

  • ZYNQ相比FPGA,具有更强的处理能力和灵活性,可以利用ARM处理器实现复杂的软件功能和控制逻辑,也可以利用可编程逻辑实现硬件加速和算法优化;
  • FPGA相比ZYNQ,具有更高的自由度和定制性,可以根据不同的需求和设计来配置电路功能,也可以通过添加软核或硬核来实现处理器功能;

        除此之外,ZYNQ内部ARM部分和FPGA部分的完美结合,是普通FPGA无法做到的;

  • ZYNQ的"ARM"和"FPGA"

        ZYNQ具备ARM Cortex-A9内核和28nm Artix 7 FPGA结构,在ZYNQ片内被称为PS和PL:

  • PSProcessing System)是指处理系统,它包括双核ARM Cortex-A9处理器和一系列的片上外设,如内存控制器、DMA控制器、USB控制器、以太网控制器等;
  • PLProgrammable Logic)是指可编程逻辑,它包括基于Artix-7或Kintex-7的可编程逻辑单元,如可配置逻辑块、DSP块、BRAM块等;
  • ZYNQ的PS和PL之间通过多种AXI接口进行连接和通信,可以实现软硬件协同设计,提高系统的性能和灵活性;

        PL和PS虽是ZYNQ片内的两个主要部分,但二者既可以协同工作,又可以独立工作;

  • 关于PL

        了解PL首先要了解什么是PLD,早期生产的数字集成电路逻辑功能都是固定不变的。要想改变它的逻辑功能,就必须改变内部各单元电路之间的连接,而这种连接在集成电路制作过程中已经固定下来了。

        为了提高灵活性,出现了允许用户自行修改内部连接的集成电路:可编程逻辑器件PLD(Programmable Logic Device)

  • PLD内部的电路结构可以通过写入编程数据来设置;
  • 写入PLD的编程数据还可以擦除重写;

        FPGA是一种PLD,除FPGA(现场可编程门阵列)外,CPLD(复杂可编程逻辑器件)也属于PLD,二者的本质区别是:

  • CPLD:基于“乘积项”的与或逻辑阵列;
  • FPGA:基于“查找表”(LUT,Look UP Table)的CLB阵列;

        PL与FPGA的结构相同

zynq 和fpga区别,从零开始学FPGA,fpga开发,笔记

图1 FPGA架构

        FPGA的架构是指FPGA内部的组成和连接方式,它决定了FPGA的功能和性能。根据图1,FPGA的基本架构包括以下几个部分:

  • 可编程IO单元(I/O):这些物理端口将数据输入和输出FPGA,可以根据不同的信号标准和电压水平进行配置;
  • 可编程逻辑单元(LC):这些是执行逻辑运算的基本单元,通常由查找表(LUT)、触发器(FF)和多路复用器等组成。LUT可以存储任意的逻辑函数,FF可以存储LUT的结果。不同的FPGA有不同数量和类型的输入的LUT,如输入LUT、输入LUT等;
  • 布线资源:这些是将各种元件彼此连接的导线和开关,可以实现不同的信号路径。布线资源的数量和质量影响了FPGA的逻辑密度和时序性能。
  • 嵌入式块式 RAM(BRAM):这些是用于存储数据的内存模块,可以配置为不同的位宽和深度,也可以级联成更大的内存空间。BRAM可以提供高速、低功耗、低延迟的数据访问。
  • 数字时钟管理模块(CMT):这些是用于产生、分配和调整时钟信号的模块,包括相位锁定环(PLL)、延迟锁定环(DLL)、时钟缓冲器等。CMT可以提供多种频率和相位的时钟信号,实现时钟域之间的转换和同步。
  • 内嵌专用硬核:这些是用于实现特定功能的硬件模块,如乘法器、累加器、DSP切片、PCI Express接口等。内嵌专用硬核可以提高FPGA的计算能力和接口兼容性,降低逻辑资源和功耗的消耗。
  • 底层内嵌功能单元:这些是用于实现一些底层功能的单元,如配置逻辑、JTAG接口、电源管理等。底层内嵌功能单元可以保证FPGA的正常工作和可靠性。

        ZYNQ系列的PL结构如图2所示,可以与FPGA的结构进行对照;

zynq 和fpga区别,从零开始学FPGA,fpga开发,笔记

 图2 ZYNQ的PL结构

        ZYNQ7010和7020都使用了Artix-7的结构,可以看到,除了基本的结构,ZYNQ系列的PL还具备了如GTX transceiver和PCIE等独特结构,但ZYNQ7010和7020不包含这些结构;

  • 关于PS

PL与PS在片内的结构如图3所示,可以看到两个结构基本是分开的

zynq 和fpga区别,从零开始学FPGA,fpga开发,笔记

 图3 PL和PS的片内结构

PS最重要的部分是图3中的应用处理单元APU(Application Processing Unit),如图4所示zynq 和fpga区别,从零开始学FPGA,fpga开发,笔记

 图4 APU结构

        可以看到,APU内部不仅有Cortex-A9内核,还包含了FPU浮点运算单元,NEON SIMD (Single Instruction Multiple Data 单指令多重数据) 指令集,MMU存储管理单元,一级cache(I代表指令cache,D代表数据cache),窥探控制单元SCU(Snoop Controller),私有看门狗AWDT,定时器TIMER,二级cache(双核公用),片上内存OCM,中断控制器GIC,直接存储器访问DMA等;

        PS内部APU外部,结合图片分析,就可以理解APU与外部的连接方式,比较重要的是Central interconnect模块,负责控制APU与各模块之间的连接,除控制通信接口,还包含了对动态存储器访问(DDR3)和静态存储器(QSPI Flash)访问;

        PS连接外部,结合图片分析,PS与PL的连接,GP接口(General-Purpose Port),HP接口(High-Performance Ports)和ACP(Accelerator Coherency Port)都属于AXI片内通信协议,图5描述了GP接口和ACP的结构

zynq 和fpga区别,从零开始学FPGA,fpga开发,笔记

图5 GP接口的结构 

        由图5看出,ACP用于访问SCU实现PL和PS二级cache与SRAM的高速存取,GP接口用于通用的PL和PS通信,并且区分M(Master)和S(Slave)通信机制,HP接口用于高速通信,并且通信自带FIFO,连接在存储仲裁器(memory interconnect),可用于访问DDR3,适合大量数据流传输;

接口名称 接口描述 主设备 从设备
M_AXI_GP0 通用接口(AXI_GP) PS PL
M_AXI_GP1 PS PL
S_AXI_GP1 通用接口(AXI_GP) PL PS
S_AXI_GP1 PL PS
M_AXI_ACP ACP 缓存(cache)一致性传输 PL PS
M_AXI_HP1 带有读写FIFO的高速接口(需要注意HP有时被称为AXI FIFO interface[AXI FIFO接口],或者AFIs) PL PS
M_AXI_HP1 PL PS
S_AXI_HP1 PL PS
S_AXI_HP1 PL PS

        AXI是高级微控制器总线架构(AMBA3.0/4.0)的一部分,全称高级扩展接口(Advanced Extensible Interface),ZYNQ使用的是AMBA4.0标准中的AXI-4,分为memory map,stream和lite三种,如图6所示;

zynq 和fpga区别,从零开始学FPGA,fpga开发,笔记

图6  AMBA与AXI 

        除了AXI接口之外,还包含了IO拓展EMIO,XADC(来自PL硬核),DMA,IRQ,AEX/SHA配置(此配置用于PS配置PL的启动,代表了PS和PL不是完全独立的,ZYNQ整个设计是以ARM处理器为中心的,PS端的ARM内核可以独立于PL端运行,值得注意的是,虽然PL端也可以独立于PS端运行,但是PL的配置是由PS端完成的,所以不能采用传统的固化FLASH的方式固化PL端程序)等连接;


4. 学习用板载资源

  1. 主芯片 ZYNQxc7z010  677M(-1) 28k Programmable Logic Cells
  2. 512MB DDR3   (4Gbit)
  3. TF卡槽(可负责TF启动)
  4. 128Mbit(16MB)QSPI FLASH(可负责启动)
  5. 一路EEPROM 2KB (PS)
  6. 两路 LED 灯(PL)
  7. 两个按键   (PL) +一个控制系统POR复位的按键
  8. 一路UART(PS)
  9. 一路板载XILINX 下载器 JTAG
  10. 一路USB   可作USB SLAVE 或USB HOST
  11. 引出 68路GPIO 
  12. 千兆以太网(PL)
  13. HDMI 输出接口 支持1080P 60hz
  14. 1.47寸 彩色LCD 显示屏  172X320 (PL)
  15. 50M有源晶振(PL)

5. 总结

        笔记对应课程:

  • 第1.1讲 ZYNQ简介(第一讲)
  • 第1.2讲 ZYNQ简介(第二讲)

        图片来自正点原子课程PPT,笔记中有自己理解的内容,如有错误,欢迎指正文章来源地址https://www.toymoban.com/news/detail-714137.html

到了这里,关于从零开始学ZYNQ(FPGA)笔记二 | 认识学习内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ZYNQ学习笔记——高速ADDA实验

    D/A: 就是将_数字量转换成模拟量_ A/D: 就是将_模拟量转换成数字量_,模拟量可以是电压电流等电信号也可以是声、光、压力、湿度等连续变化的非电物理量,但是这些非电物理量最终都要通过一定手段转换成电信号 分类 DAC 网络权电阻DAC(本次实验所用类型) 倒梯形电阻网络

    2024年02月06日
    浏览(37)
  • Xilinx ZYNQ 7000学习笔记三(小结)

    ZYNQ 7000的启动模式由外部引脚决定的,5个模式引脚MIO[6:2]用于配置NAND flash、并行NOR flash、Serial NOR (Quad-SPI)、SD flash以及JTAG 一共5种启动模式。具体而言就是复位时,zynq-7000 SOC对下述引脚进行连续3个时钟周期采样。复位采样MIO[6:2]并将采样的模式值保存到系统级控制寄存器SL

    2024年02月09日
    浏览(44)
  • Xilinx ZYNQ 7000学习笔记一(复位和启动)

    参考文献:Zynq-7000 SoC Technical Reference Manual (UG585)-ch26 Reset System zynq7000复位信号源包括硬件复位、看门狗定时器、JTAG控制器复位信号和软件复位信号。其中,硬件复位引脚由上电复位信号PS_POR_B和系统复位信号PS_SRST_B驱动。在PS中,有3个看门狗定时器可用来产生复位信号;JTA

    2024年02月06日
    浏览(81)
  • Zynq-Linux移植学习笔记之62- PL挂载复旦微flash

    现在为了全国产化需要,之前所有的进口flash全部要换成国产flash 其中EFM25QU256和EFM25QL256对标winbond的w25q256 nor flash     复旦微flash只支持单线模式,当使用PL侧的IP核访问时,需要设置模式为standard   内核中修改m25p80.c,设置兼容的flash型号     同时复旦微flash推荐使用jffs2文件

    2024年02月15日
    浏览(41)
  • 【ZYNQ】Linux驱动之梦开始的地方

    软件版本:Vivado2021.1 操作系统:WIN10 64bit、Ubuntu18.04 硬件平台:ZYNQ UltraScale 在 PS 端接有两个 LED 灯,这些灯接在了 MIO 上,而 MIO 可以复用成为 GPIO,因此控制 GPIO 其实就是控制了 LED 等器件。本文通过读写寄存器来实现对 GPIO 的控制。 1.2.1寄存器查询手册   使用 GPIO 需要设

    2024年02月14日
    浏览(33)
  • 从零开始学运算放大器笔记一 | 认识运算放大器

    1. 运算放大器简介  2. 运算放大器的分析前提 3. 运算放大器的重要参数和测量方法(一)          运算放大器(又称”运放“,英文全拼为Operation Amplifier,缩写为OP AMP)是一种模拟电路模块,它采用差分电压输入,产生单端电压输出。它可以对输入信号进行放大以及加、

    2024年02月14日
    浏览(42)
  • ZYNQ之FPGA 片内ROM读写测试实验

    FPGA本身是SRAM架构的,断电之后程序就会消失,那么如何利用FPGA实现一个ROM呢,我们可以利用FPGA内部的RAM资源实现ROM,但这不是真正意义上的ROM,而是每次上电都会把初始化的值先写入RAM。Vivado软件中提供了ROM的IP核 , 我们只需通过IP核例化一个ROM,根据ROM的读时序来读取R

    2024年02月07日
    浏览(43)
  • ZYNQ(FPGA)与DSP之间SRIO通信操作

    一、基于XQ6657Z35-EVM平台ZYNQ与DSP之间通信例程 1.1ZYNQ 与DSP之间SRIO通信 1.1.1例程位置 ZYNQ例程保存在资料盘中的DemoZYNQPLsrio_gen2_0_ex文件夹下。 DSP例程保存在资料盘中的DemoDSPXQ_SRIO_x4LANE_5Gbps文件夹下。 1.1.2功能简介 实现DSP与ZYNQ之间SRIO接口传输功能。 DSP与ZYNQ之间SRIO通道宽度

    2024年02月09日
    浏览(47)
  • S7---FPGA- ZYNQ7100板级原理图硬件实战

    ZYNQ7100板级系统硬件实战01_哔哩哔哩_bilibili 板卡主要由ZYNQ7100主芯片,6片DDR3,1片eMMC,2个QSPI FLASH和一些外设接口组成。ZYNQ7100 采用Xilinx公司的Zynq7000系列的芯片,Xilinx ARM + FPGA芯片型号为XC7Z100-2FFG900。 ZYNQ710 芯片可分成处理器系统部分Processor System(PS)和可编程逻辑部分Pro

    2024年03月11日
    浏览(42)
  • zynq学习之fpga篇(三)状态机的使用

    可乐机每次投1枚一块硬币,每瓶可乐3块钱,投3个硬币就可以出可乐。 状态转移图 分析 一个简单的状态转移图,由此编写代码。  这篇想找一个简单的状态机实例,没有找到,下一篇开始进一阶,数码管驱动。 不啻微芒,造炬成阳。

    2024年02月22日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包