白话微机:8.解释FPGA以及一些考研面试问题

 一. 前言(更新世界观)

        在“微机世界”,普通的城市(单片机)里,又有一个别的名字叫做“数据”,人有0有1;人们也有住房,这些住房在这个世界叫做“存储器”;地上有路,这些叫做“数据总线”,交通系统则统称为总线;这里也有行政部门,比如公安局之类的,又有个名字叫“寄存器”;有中央政府,政府又叫做“中央处理器(CPU)”,这里也会发生的一些自然灾害(内部中断)和人为活动(外部中断), I/O接口是城市(单片机)的城门和检查站,串行接口是连接城市与乡村的小路

        随着科学技术的进步,诞生了一种现代化城市诞生:RTOS(实时多任务操作系统),它有一个高效的城市管理系统:一整套完善的任务管理、调度和资源管理机制,能够同时处理多个任务,并根据任务的优先级和需求进行合理的调度和分配资源。除此以外,还诞生了一种专门的高科技工业园区——DSP数字信号处理器),这个园区专注于处理和改造一种特殊的资源——“信号”。这个工业园区配置有高效的专用机械,能够快速、精确地处理来自各地(输入设备)的原始信号材料,这些原始信号就是未经加工的天然资源,比如矿石或原油,它们需经过这个园区内的精炼和加工,才能转化为有用的材料或产品。

        而本篇文章介绍的是在科技更加发达的时代,诞生的一座可变式城市——FPGA(现场可编程门阵列),在这座城市里,所有设施都是由许多可变换形态的机器人组成的,在同一块土地上这些“变形金刚”能够接受特定的设计蓝图(配置文件),然后自己重组内部结构(逻辑门和布线),从而组成住宅区、商业区、工业区等不同功能的区域,并且随意更改。有一点抽象,三种城市概念图对比如下所示。

 二. FPGA(可变式城市)

        [1]FPGA/CPLD有什么特点?各包含几个基本组成部分?二者在存储逻辑信息方面有什么区别?在实际使用中什么时候选用FPGA?什么时候选用CPLD?

        (1)结构上:

        FPGA(现场可编程门阵列)是一座灵活且功能强大的可变式城市,用于大规模、复杂的逻辑设计,因为其内部有大量的可编程逻辑单元和连线,能够实现复杂的功能和高性能由三个基本组成部分构成:

  1. 可编程逻辑单元(PLU):这些相当于小型、灵活的“变形金刚”式住宅,(组成单元小,可以组成更复杂的建筑,类似于搭积木中的每一块积木很小)可以根据居民(数据和逻辑功能)的需求进行重建和配置。
  2. 可编程输入/输出单元(I/O):即城门(同普通的单片机),是城市与外界交流的门户,可以根据外部的路径和需求进行调整。
  3. 可编程连线:这些是城市内部的道路,可以根据交通流量的变化进行重新布线,以确保数据流动的高效和灵活。

        CPLD(复杂可编程逻辑设备)则是相对简单的城市区域,也有三个基本组成部分,通常用于简单或中等复杂度的逻辑设计,生产量不大的项目。因为其结构较为简单,编程较为方便,通常拥有较快的固定传输延迟(搭积木搭得快):

  1. 可编程逻辑单元(PLM):是预置的大型“变形金刚”,(组成单元大,可操作性较小,类似于搭积木中的每一块积木很小),可以进行一定程度的自定义和编程。
  2. 可编程输入/输出单元(I/O):同上。
  3. 可编程连线:同上

        (2)存储信息上:

  • FPGA城市的机器人数量多、体积小、密度大(有更高的密度和更多的逻辑单元),所以可以搭建的房屋数量也多(可以存储更多的逻辑信息),掉电后会丢失配置信息,因此需要在上电时从外部存储器(如ROM)重新加载配置。
  • CPLD城市的机器人数量小、体积大、密度小,所以可以搭建的房屋数量也少且结构简单,但搭得快(存储的逻辑信息较少,但其结构简单,通常掉电后依然保留配置信息,这使得它们在上电时启动更快)。

        (3)实际使用中:

  • 选择FPGA通常是因为需要高度灵活性和处理复杂逻辑功能的能力,或者项目的设计经常更改。
  • 选择CPLD更适合于较小规模、逻辑简单、启动速度要求快、生产批量不大的应用场景。

    [2]ASIC与FPGA在概念上有什么区别?

       (1)ASIC城市可以理解为早期发展的FPGA城市,城市里也有许多可变化的“变形金刚”式的住房,但是这里的机器人只听一次命令,即城市在建造之初规划的住房功能和结构,一旦建成,道路、建筑和设施就固定下来,无法更改

       (2)FPGA城市里的机器人(可编程逻辑单元)可以按照特定需求配置和编程随时更改

    [3]在FPGA和CPLD的应用开发中应该考虑哪些因素?

  1. 器件的逻辑资源量的选择: 即选择一个城市建设用地的面积,你需要确保城市(器件)有足够的土地(逻辑资源)来建造所有必要的建筑(实现所需的逻辑功能)。如果逻辑复杂,你就需要更多的土地(FPGA),而对于简单的功能,一个小型的地块(CPLD)就足够了。

  2. 芯片速度的选择: 即规划城市的交通系统。一个现代化的大都市(高速FPGA)需要快速的公路和交通网络来保证数据流动和处理速度,而小城镇(低速CPLD)的道路就不需要那么发达,因为交通(数据流)不那么繁忙。

  3. 器件功耗的选择: 在确定一个城市的电力需求时,一个大都市(高功耗FPGA)会需要一个大型的电站,而小城镇(低功耗CPLD)则可能只需要一个小型发电机。功耗直接影响着运营成本和能源效率,这在电子产品设计中尤为关键。

  4. FPGA/CPLD的选择看开发项目本身的需要): 根据项目需求,就像规划城市一样,如果需要快速建设和灵活性(FPGA),或者是预算有限并且对性能要求相对较低(CPLD),选择合适的器件就如同选择建设一个大都市或小镇。

  5. FPGA和CPLD封装的选择: 即建筑设计中选择正确的建筑材料和风格,封装决定了器件在物理空间中的占用和与其他器件的互连方式。其中包括封装的大小、引脚数以及热管理等因素。

  6. 其它因素的选择(各家公司产品各不相同): 即选择建筑承包商,不同的产品供应商可能会提供不同的服务和产品特性。这包括技术支持、成本、交付时间、器件的性能和易用性等。你会选择最适合你的城市(项目)需求的合作者。

    [4]现代EDA技术的特点有哪些?

        现代EDA(电子设计自动化)技术是一种高效的城市规划和管理工具,它帮助城市(电子系统)规划者和管理者(设计工程师)创建、测试、优化并实现复杂的城市结构(电路设计)。主要有以下四个特点:

  1. 采用硬件描述语言(HDL) 进行设计: 即城市规划师使用特定的蓝图语言来详细描绘建筑设计,硬件描述语言(HDL)允许工程师以文本形式描述电子系统的硬件功能和结构,从而指导“变形金刚”(FPGA等可编程硬件)如何根据这些描述改变它们的结构。HDL使得设计可以在高层次进行抽象,而不是仅仅在物理层面上操作。

  2. 逻辑综合与优化: 即将城市蓝图转化为实际的建筑物,并进行优化以确保效率和成本效益,逻辑综合工具将HDL描述转化为可以在实体硬件上实现的逻辑网表。这包括选择最适合的逻辑元件、布局和连接方式,以确保电路在速度、资源使用和功耗方面是优化的。

  3. 开放性和标准化: 建筑标准和城市规划准则确保不同建筑师设计的结构能够和谐共存,EDA工具的开放性和标准化确保了不同设计师和团队可以共享、理解和重用彼此的设计。标准化的设计和模块化方法促进了更广泛的协作和兼容性,同时也加速了创新。

  4. 更完备的库(Library): 一个城市拥有各种公共设施和服务库,以便居民和建筑师可以利用,EDA工具提供了一个丰富的组件库。这些库包含了许多预先设计和优化的模块,如标准的逻辑门、寄存器、存储器元素等,设计师可以调用这些模块来快速构建复杂的系统,而不需要从头开始设计每个部分。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

原生微信小程序开发记录

1. 拿到项目 先构建 2.小程序与普通网页开发的区别 网页开发渲染线程和脚本线程是互斥的,这也是为什么长时间的脚本运行可能会导致页面失去响应,而在小程序中,二者是分开的,分别运行在不同的线程中。网页开发者可以使用到各种浏览…

Git常用命令整理

在介绍安装和简单使用前,先看一下百度百科中的简介吧: ———————————————————————————————————————— Git --- The stupid content tracker, 傻瓜内容跟踪器。 Linux 是这样给我们介绍 Git 的: Git 是用…

Java使用Redis实现消息队列

近期刷Java面试题刷到了“如何使用Redis实现消息队列”,解答如下: 一般使用 list 结构作为队列, rpush 生产消息, lpop 消费消息。当 lpop 没有消息的时候,要适当sleep 一会再重试。若不使用sleep,则可以用…

应急响应实战笔记02日志分析篇(4)

第4篇:MSSQL日志分析 常见的数据库攻击包括弱口令、SQL注入、提升权限、窃取备份等。对数据库日志进行分析,可以发现攻击行为,进一步还原攻击场景及追溯攻击源。 0x01 MSSQL日志分析 首先,MSSQL数据库应启用日志记录功能,默认配…

error: src refspec main does not match any解决办法

一、问题描述: 用GitHub Actions自动部署Hexo,到了最关键的一步;突然报错:error: src refspec main does not match any 1、错误一: main分支应填写为master分支;但是只改这里也会报其他错误 2、错误二&a…

书生开源大模型训练营-第3讲笔记

5.Langchain和InternLM搭建知识库 5.1环境 还是一样,开发机中创建镜像,以及所需依赖 pip install modelscope1.9.5 pip install transformers4.35.2 pip install streamlit1.24.0 pip install sentencepiece0.1.99 pip install accelerate0.24.15.2模…

亿赛通-数据泄露防护(DLP)44个接口存在远程命令执行漏洞

文章目录 前言声明一、系统简介二、漏洞描述三、影响版本四、漏洞复现五、整改意见 前言 亿赛通-数据泄露防护是一款专门防止您的私人数据资产在分享、存储过程中,被他人非法窃取或使用的安全产品。亿赛通-数据泄露防护(DLP)44个接口存在远程命令执行漏洞。 声明 …

【类与对象 -2】学习类的6个默认成员函数中的构造函数与析构函数

目录 1.类的6个默认成员函数 2.构造函数 2.1概念 2.2特性 3.析构函数 3.1析构函数的概念 3.2特性 1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,…

芯片的分类

目录 通用处理器数字信号处理器专用处理器 通用处理器 我们常听说的中央处理器CPU就是一种典型的通用处理器(GPP)。这种处理器多使用片上系统(SoC)的设计理念,在处理器上集成各种功能模块,每一种功能都是用…

Authing 身份云入选崔牛会「2024 中国企业服务云图」

近日,B2B 领域知名企业服务平台——崔牛会正式对外发布了「2024 中国企业服务云图」,Authing 身份云凭借在 IDaaS 领域的先进能力和卓越表现,从众多参选企业中脱颖而出,成功入选图谱技术支撑「 IDaaS 」板块,并荣登榜首…

Apache DolphinScheduler数仓任务管理规范

前言: 大数据领域对多种任务都有调度需求,以离线数仓的任务应用最多,许多团队在调研开源产品后,选择Apache DolphinScheduler(以下简称DS)作为调度场景的技术选型。得益于DS优秀的特性,在对数仓…

个人2024年工作计划与目标:用这个待办计划管理工具

春节的喜庆气氛逐渐散去,取而代之的是新的一年奋斗的号角。开工之际,我深知为自己制定一份2024年的工作计划与目标至关重要。这不仅仅是对未来一年的规划,更是对自己的一份承诺和责任。 坐在电脑前,我开始思考如何着手这份计划。…

1.3_2 中断和异常

文章目录 1.3_2 中断和异常(一)中断的作用(二)中断的类型1、内中断2、外中断3、中断分类总结 (三)中断机制的基本原理 总结 1.3_2 中断和异常 (一)中断的作用 CPU上会运行两种程序&…

阿里云香港轻量应用服务器网络线路cn2?

阿里云香港轻量应用服务器是什么线路?不是cn2。 阿里云香港轻量服务器是cn2吗?香港轻量服务器不是cn2。阿腾云atengyun.com正好有一台阿里云轻量应用服务器,通过mtr traceroute测试了一下,最后一跳是202.97开头的ip,1…

ssh连接服务器需要子网掩码吗?

IP寻址需要同时知道IP地址和子网掩码,但是在通过ssh连接服务器时,只需要知道IP地址和端口号就可以了,ssh通讯为什么不需要子网掩码呢。在不知道子网掩码的前提下,可以正确找到IP对应的主机吗? 不需要,SSH&a…

【C++】中类的6个默认成员函数 取地址及const成员函数 学习运算符重载 【实现一个日期类】

文章目录 一、【C】赋值运算符重载1.1 运算符重载【引入】1.2 运算符重载1.3 赋值运算符重载1.4 赋值 二、日期类的实现2.1 判断小于2.2 判断等于2.3 判断小于等于2.4 判断大于2.5 判断大于等于2.6 判断不等于2.7 日期加等天数2.8 获取月份天数2.9 日期加天数2.9.1 日期减等天数…

LeetCode 0590. N 叉树的后序遍历:深度优先搜索(DFS)

【LetMeFly】590.N 叉树的后序遍历:深度优先搜索(DFS) 力扣题目链接:https://leetcode.cn/problems/n-ary-tree-postorder-traversal/ 给定一个 n 叉树的根节点 root ,返回 其节点值的 后序遍历 。 n 叉树 在输入中按层序遍历进行序列化表…

C语言字符串函数strtok

注意: 该函数会将改变原始字符串 str,使其所包含的所有分隔符变成结束标记 ‘\0’ 。由于该函数需要更改字符串 str,因此 str 指向的内存必须是可写的。首次调用时 str 指向原始字符串,此后每次调用 str 用 NULL 代替。示例&#…

Ubuntu本地安装code-server结合内网穿透实现安卓平板远程写代码

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以,这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

Leetcode 283.移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出: […
最新文章