草庐IT

ZYNQ中PS、PL的含义

Jeffery_fan 2023-04-26 原文

在刚学习ZYNQ的过程中,看到学习文档上有下面这样一句话:

GPIO可以通过 MIO连接到 PS端的引脚,也可以通过 EMIO连接到 PL。本章将介绍如何使用GPIO外设通过 MIO控制 PS端的 LED。

上面这句话中提到了PS、PL、MIO、EMIO,在后续的学习中还会看到APU、TTC、WDT、SWDT、SCU。相信很多人都会一脸懵逼,这都是个啥?

下面给大家详细介绍一下这几个缩写:

PS:(Processing System),ZYNQ可以大概分为ARM和FPGA两部分,PS就是ARM的SOC部分,是整块板子的处理系统。

PL:(Progarmmable Logic),意为可编程逻辑,也就是ZYNQ上的FPGA部分。

MIO:(Multiuse I/O),多功能IO引脚,如果学过单片机可以把它理解为引脚复用,属于PS部分,也就是ARM部分。值得一提的是,MIO 信号对 PL部分是不可见的,所以对 MIO 的操作可以看作是纯 PS 的操作。

EMIO:(Extendable Multiuse I/O),可拓展多功能IO引脚,依然属于PS部分,但是连接到了PL上,再从PL的引脚连到芯片外面实现数据输入输出。如果MIO不够用的话, PS 可以通过驱动 EMIO 控制 PL 部分的引脚 。EMIO 有 64 个引脚可供我们使用。

APU:(Application Processor Unit),应用处理器单元,曾经AMD公司用它来特指加速处理器(Accelerated Processing Units),但是在ZYNQ上的意思就截然不同,注意区分。APU包含了双ARM-CortexA9核,加上高速缓冲,DMA,定时器,中断控制,浮点和NEON协处理,可以类比51单片机中的MCU,Cortex-M系列的STM32上的MPU来理解。

但是APU这个称呼还是有说法的,没有了M就说明意图摆脱微处理器Micro的名头,换上Application就不简单了,说明在上面可以跑应用程序, 暗示着这个系统是需要全尺寸的操作系统的。

TTC:(Triple Time Counter),直译就是三倍时间计数器,其实是这个计数器内有3个独立通道,可以独立计数。挂在APB上,为系统或外设提供定时或计数服务的。

WDT:看门狗定时器,有两个, 分别监视ARM-Cortex A9用的。  如果软件跑飞,无法清定时器,一段时间后,看门狗就复位。一般没什么用,学STM32时就觉得这功能还挺厉害,能一直监视程序有没有跑飞,后来发现跑飞的几率太小了,现在的板子稳定性都很好,以至于我现在都没见到过看门狗起作用,不过也算是个风险保障。

SWDT:系统级看门狗定时器, 这个看门狗的时钟和复位信号,都可以来自于芯片外部, 这样,即使系统有严重故障,比如时钟频率本身都有问题了,仍然可以通过与系统无关的外部信号计数,计数满就复位。

SCU:(Snoop Control Unit),用来保持双核之间的数据Cache的一致性,两个ARM-Cortex A9,如果一个写存储时只写进缓存,没写进主存,如果第二个A9读操作,涉及到第一个写脏了的数据段, SCU要保证第二个A9的缓存里是最新的数据。 SCU的存在,才使得两个核成互相联系的“双核”,才能成为MPsoc。

有关ZYNQ中PS、PL的含义的更多相关文章

  1. ruby -\b 在 Ruby 正则表达式中的真正含义是什么? - 2

    我有一个文件,其中包含诸如“CanyonSt/27thWay”之类的短语,我正试图使用​​Ruby正则表达式将其转换为“CanyonStand27thWay”。我使用file=file.gsub(/(\b)\/(\b)/,"#{$1}and#{$2}")进行匹配,但我我对\b的真正含义以及为什么$1包含斜线之前的单词边界之前的所有字符以及为什么$2包含从下一个单词开始的单词边界之后的所有字符感到有点困惑。通常,我希望正则表达式括号中的任何内容都在$1和$2中,但我不确定单词边界周围的括号真正意味着什么,因为从单词字符到字符的转换之间确实没有任何内容一个空白字符。

  2. ruby - 如何在不使用文本的情况下找到 Ruby 运算符的含义? - 2

    您如何找到有关代码中运算符用法的信息(最好是通过Google)?在这种情况下,我想找到这段代码在Ruby中的含义。x=[1,2,3]x.send:[]=,0,2x[0]+x.[](1)+x.send(:[],2)我要你教我如何钓鱼——不要告诉我运算符(operator)是做什么的。当我去Google并尝试搜索符号时,我得到的示例或教程没有涵盖特定的用法。https://stackoverflow.com/questions/1165786/how-to-search-for-punctuation-that-gets-ignored-by-google表示谷歌驳回了这种表示法;我寻找“

  3. ruby - `+` 在 `*` 之后的含义,当后者在正则表达式中用作量词时 - 2

    今天我遇到了下面的正则表达式,想知道Ruby会用它做什么:>"#a"=~/^[\W].*+$/=>0>"1a"=~/^[\W].*+$/=>nil在这种情况下,Ruby似乎忽略了+字符。如果这是不正确的,我不确定它在做什么。我猜它没有被解释为量词,因为*没有转义并且被用作量词。在Perl/Ruby正则表达式中,有时当一个字符(例如,-)在不能被解释为特殊字符的上下文中使用时,它会被视为文字。但如果在这种情况下发生这种情况,我希望第一个匹配失败,因为左值字符串中没有+。这是对+字符的巧妙正确使用吗?以上行为是错误吗?我是否遗漏了一些明显的东西? 最佳答案

  4. ruby - 为 PostgreSQL 8.3 安装 PL/Ruby - 2

    这是为了能够使用嵌入的ruby代码开发postgres函数,但我一直无法构建它。根据建议http://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql我正在尝试从ftp://moulon.inra.fr/pub/ruby/提供的最新版本(plruby-0.5.3.tar.gz)构建所需的plruby.so我已经弄清楚我的本地postgres设置在哪里,并将调用调整为:rubyextconf.rb--with-pgsql-include=/usr/postgresql-

  5. ruby - 调用 ObjectSpace.count_objects 时哈希键的含义是什么? - 2

    在Ruby1.9(YARV)中,您可以获得所有当前已分配对象的计数,如下所示:ObjectSpace.count_objects它返回一个像这样的散列{:TOTAL=>1226560,:FREE=>244204,:T_OBJECT=>26141,:T_CLASS=>9819,:T_MODULE=>1420,:T_FLOAT=>287,:T_STRING=>260476,:T_REGEXP=>4081,:T_ARRAY=>72269,:T_HASH=>14923,:T_STRUCT=>4601,:T_BIGNUM=>7,:T_FILE=>16,:T_DATA=>54553,:T_MATC

  6. 科研中论文常见数学符号及其含义(科研必备,建议收藏) - 2

    论文常见数学符号及其含义(科研必备)返回论文和资料目录数学符号在数学领域是非常重要的。在论文中,使用数学符号可以使得论文更加简洁明了,同时也能够准确地描述各种概念和理论。在本篇博客中,我将介绍一些常见的数学符号及其含义(省去特别简单的符号),希望能够帮助读者更好地理解数学论文。高等数学∑i=1nxi\sum_{i=1}^nx_i∑i=1n​xi​(求和符号):表示将x1,x2,…,xnx_1,x_2,\dots,x_nx1​,x2​,…,xn​中的所有数相加,例如∑i=1nxi\sum_{i=1}^nx_i∑i=1n​xi​表示将x1,x2,…,xnx_1,x_2,\dots,x_nx1​,x

  7. ruby-on-rails - `*` 用作参数时的含义(不像*arg,只是*) - 2

    这个问题在这里已经有了答案:nakedasteriskasparameterinmethoddefinition:deff(*)(1个回答)关闭9年前。当我在阅读Rails代码时,我发现了这个defsave(*)create_or_update||raise(RecordNotSaved)end*有什么作用?:O我知道当我们像*args一样使用它时会发生什么,但在这种情况下,它只是普通的*。引用https://github.com/rails/rails/blob/master/activerecord/lib/active_record/persistence.rb#L119

  8. ruby - Ruby 中百分号 + 管道运算符的含义是什么,如 "%|"? - 2

    我正在尝试理解thissite上呈现的脚本:#!/usr/bin/envrubyrequireENV['TM_SUPPORT_PATH']+'/lib/escape.rb'defterminal_script_filepath%|tellapplication"Terminal"activatedoscript"jsc-i#{e_as(e_sh(ENV['TM_FILEPATH']))}"endtell|endopen("|osascript","w"){|io|io最重要的是,函数terminal_script_filepath开头的部分:%|……|…以及它被“解析”的位置:{|io

  9. ruby-on-rails - ActiveRecord::Base中的::Base部分含义 - 2

    Person 最佳答案 ::Base是模块ActiveRecord中的一个类。模块所做的其中一件事是在Ruby中提供命名空间。在Ruby中,您不继承模块,但可以使用include语句将其混合。我可以建议拿起Pickaxe书或阅读Why's(Poignant)GuidetoRuby. 关于ruby-on-rails-ActiveRecord::Base中的::Base部分含义,我们在StackOverflow上找到一个类似的问题: https://stackov

  10. ruby-on-rails - 在 Rails 中使用 object_id 列的含义 - 2

    关于Object本身包含object_id并覆盖它的模型(对于多态关联)具有object_id/object_type的含义是什么(http://ruby-doc.org/core-2.3.1/Object.html#method-i-object_id)?classEventbelongs_to:object,polymorphic:true#object_id/object_typeend 最佳答案 当我在我的一个Rails项目(包括所有Gem)的整个代码库中搜索object_id时,我可以看到超过200个匹配项。仅在Rails

随机推荐