FPGA第 5 篇,FPGA技术优略势,FPGA学习方向,FPGA学习路线(FPGA专业知识的学习方向,FPGA现场可编程门阵列学习路线和方向)

news2024/11/16 17:58:20

前言

前几篇讲了一下FPGA的发展和应用,以及未来前景。具体详细,请看

FPGA发展和应用,以及未来前景icon-default.png?t=N7T8https://blog.csdn.net/weixin_65793170/category_12665249.html

这里我们来,记录一下,FPGA专业知识的学习路线


一. FPGA技术优势

        首先,我们了解一下 FPGA 的技术优势,来为我们学习提供动力

可重构 / 可编程                              速度快 / 低延时   

                                            
效率高                                            接口丰富

          
开发方便、灵活                              应用广泛

        当然 FPGA 优势与劣势并存,首先是开发难度,需要掌握专门的硬件设计知识和工具,如Verilog 语言和 VIVADO 等工具,其次就是专业性较强,学历门槛较高,同时还有频率功耗、算力成本等一系列问题存在。  


二. FPGA学习路线

        学习 FPGA 开发专业知识的学习路线,大致可分为以下,请看(具体学习路线不固定,自己斟酌)

  1. 数字电路基础

  2. 硬件描述语言

  3. 设计调试工具

  4. FPGA架构

  5. FPGA开发流程

  6. 时序分析与约束

  7. 仿真技术

  8. IP核使用

  9. 嵌入式系统设计

  10. 高级设计技巧


三. FPGA学习内容

        FPGA 专业知识的学习内容,包括但不限与以下,请看

1. 数字电路基础

  • 布尔代数
  • 逻辑门
  • 组合逻辑电路
  • 时序逻辑电路

学习逻辑门、组合逻辑电路、时序逻辑电路等基础知识,是理解FPGA设计的核心。

2. 硬件描述语言

  • Verilog
  • VHDL

学习Verilog和VHDL等语言,用于描述和设计FPGA中的逻辑电路。 

3. 设计调试工具

  • Xilinx(赛灵思):Xilinx Vivado

  • Altera(阿尔特拉):Intel Quartus Prime

学习如何使用Xilinx Vivado、Intel Quartus Prime开发工具(以国外知名大厂开发工具为例),进行编码和调试,以验证设计的正确性。

4. FPGA架构

  • 可编程逻辑单元
  • 互连资源
  • I/O块
  • 存储资源

理解FPGA内部结构,包括逻辑单元、布线资源、存储单元等。

5. FPGA开发流程

  • 设计输入
  • 综合
  • 实现
  • 配置

学习设计输入、综合、实现、时序分析、编程与配置等完整的开发流程。

6. 时序分析与约束

  • 静态时序分析
  • 时序约束

学习如何进行时序分析,确保设计在规定时间内正确工作,以及如何施加约束。

7. 仿真技术

  • 功能仿真
  • 时序仿真

学习使用仿真工具(如ModelSim)对设计进行功能仿真和时序仿真。

8. IP核使用

  • 常用IP核
  • IP核集成

学习如何使用和集成现成的IP核(如FIFO、PLL),提高设计效率。

9. 嵌入式系统设计

  • 软核处理器
  • 硬件加速

学习如何将处理器嵌入FPGA中,进行软硬件协同设计,

并使用ARM Cortex内核。

10. 高级设计技巧

  • 流水线设计
  • 并行处理

学习优化设计、降低功耗、提高速度、复用设计等技巧。


四. FPGA学习内容,简单认识

        数字电路基础、硬件描述语言和设计调试工具,以及 FPGA 架构等,请看

1. 数字电路基础

        数字电路基础是学习FPGA开发的根本,也是FPGA设计的核心。它包括布尔代数、逻辑门(如与门、或门、非门等)、组合逻辑电路(如加法器、编码器)、和时序逻辑电路(如触发器、寄存器)。这些知识是理解和设计复杂数字系统的根本,它涵盖了理解和设计数字系统所需的基本概念和技巧。 

  • 布尔代数

    • 定义与基本运算: 布尔代数是一种用于处理逻辑变量的数学体系。它包括基本运算,如与(AND)、或(OR)、非(NOT)等,以及更复杂的运算如异或(XOR)。
    • 逻辑表达式: 通过布尔代数表达逻辑电路的功能。学习如何将复杂的逻辑问题表示为布尔表达式,并通过简化表达式优化逻辑电路。

  • 逻辑门

    • 基本逻辑门: 基本的逻辑门有与门、或门、非门、异或门等。每个门实现布尔代数的基本运算。
    • 派生逻辑门: 通过组合基本逻辑门,可以得到更复杂的逻辑门,如异或门(XOR)、同或门(XNOR)、与非门(NAND)等。
    • 逻辑门符号与真值表: 学习逻辑门的符号和真值表,用于描述逻辑门的输入输出关系。

  • 组合逻辑电路

    • 概念: 组合逻辑电路的输出仅由当前输入决定,不依赖于过去的状态。
    • 常见组合电路: 了解加法器、减法器、编码器、解码器、多路复用器(MUX)、比较器等常见的组合逻辑电路及其实现方法。
    • 卡诺图简化: 学习使用卡诺图来简化逻辑表达式,从而优化组合电路设计。

  • 时序逻辑电路

    • 概念: 时序逻辑电路的输出不仅取决于当前输入,还取决于过去的状态(即记忆功能)。
    • 触发器: 触发器是时序逻辑电路的基本单元,常见的类型包括D触发器、JK触发器、T触发器等。
    • 寄存器与计数器: 学习如何设计寄存器(用于数据存储)和计数器(用于计数和计时),它们都是由触发器构成的复杂时序电路。
    • 状态机设计: 通过设计有限状态机(FSM),实现复杂的时序逻辑功能。状态机在FPGA设计中非常常见,通常用于控制信号流和操作流程。


2. 硬件描述语言

        首先,硬件描述语言 HDL 是用于描述和实现数字电路设计的语言,是硬件描述语言的总称,其中 Verilog 和 VHDL 是用来描述FPGA内部逻辑电路的语言工具。它们用于编写可以直接合成为硬件的代码,是设计、仿真和实现FPGA电路的关键。

  • HDL

    • 简介:HDL 是硬件描述语言的总称,包括 Verilog、VHDL 等。这些语言用于描述数字系统的硬件行为,可以用于 FPGA、ASIC(专用集成电路)等的设计。
    • 特点
      • 描述能力:支持从高层次的行为描述到低层次的门级描述。
      • 仿真能力:支持设计的仿真验证。
      • 综合能力:可以将描述转换为实际的硬件电路。

  • VHDL

    • 语言概述: VHDL是一种早期的硬件描述语言,全称为VHSIC(超高速集成电路)硬件描述语言。它具有强类型定义,适合于复杂设计。
    • 基本语法: 学习VHDL的基本语法,包括数据类型(如BIT, STD_LOGIC)、信号、变量、常量的定义与使用。
    • 结构化设计: 通过学习VHDL中的实体(Entity)和架构(Architecture)概念,进行模块化设计,分离接口和实现。
    • 行为描述与结构描述: 学习如何使用行为描述(Behavioral)和结构描述(Structural)两种方式实现电路功能。行为描述注重功能的实现,结构描述注重电路的具体实现。

  • Verilog

    • 语言概述: Verilog是一种更接近编程语言的HDL,使用简洁的语法,广泛用于工业界。
    • 基本语法: 学习Verilog的基本语法,包括数据类型(如reg, wire)、模块定义、初始块(initial)、始终块(always)等。
    • 连续赋值与过程赋值: 了解Verilog中assign语句的连续赋值特性和always块中过程赋值的区别,用于组合逻辑和时序逻辑电路的实现。
    • 模块化设计: 学习如何在Verilog中定义模块,并通过实例化实现层次化设计,使设计更易于管理和调试。


3. 设计调试工具

        主流FPGA开发工具如Xilinx Vivado和Intel Quartus Prime是进行FPGA设计、调试和验证的重要软件平台。掌握这些工具的使用,可以高效地进行电路综合、布局布线、时序分析等任务。

First. Xilinx(赛灵思):Xilinx Vivado(全功能集成开发环境IDE)

  1. 逻辑分析仪:Xilinx ChipScope
    • 功能:用于在线调试 FPGA 内部信号,包括集成逻辑分析仪 (ILA) 和集成控制核 (ICON)。
    • 使用方法
      • 设计阶段:在 FPGA 设计中添加必要的 ChipScope 核心。
      • 配置:配置触发条件、采样率等参数。
      • 捕获:当满足触发条件时,ILA core 捕获信号数据并存储在 Block RAM 中。
      • 读取数据:通过 JTAG 接口将数据传输到 PC 上。
      • 分析:使用 ChipScope Analyzer 查看和分析信号波形。
  2. 高级调试工具:Xilinx Vivado Debugger
    • 功能:支持在 RTL 层级进行调试。
    • 使用方法:设置断点、单步执行、观察变量值等。

Second. Altera(阿尔特拉):Intel Quartus Prime(全功能集成开发环境IDE)

  1. 逻辑分析仪:Intel SignalTap II Logic Analyzer
    • 功能:与 Xilinx ChipScope 类似,用于在线调试 FPGA 内部信号。
    • 使用方法
      • 设计阶段:在 FPGA 设计中添加必要的 SignalTap II 核心。
      • 配置:配置触发条件、采样率等参数。
      • 捕获:当满足触发条件时,捕获信号数据并存储在 FPGA 的 Block RAM 中。
      • 读取数据:通过 JTAG 接口将数据传输到 PC 上。
      • 分析:使用 SignalTap II Analyzer 查看和分析信号波形。
  2. 高级调试工具:Intel In-Circuit Debugger (ICD)
    • 功能:提供交互式的调试环境,在设计运行时访问和修改寄存器状态。
    • 使用方法:使用 ICD 可以实时观察和修改寄存器值。

Third. Mentor Graphics(明导国际):ModelSim(仿真工具)

        ModelSim 是一种专注于硬件描述语言 (HDL) 的仿真工具,广泛用于 Verilog 和 VHDL 设计的功能仿真和时序仿真。它帮助设计工程师在合成前验证和调试设计逻辑,是设计流程中的关键环节。虽然 ModelSim 是由 Mentor Graphics 开发的,但它也集成在其他工具如 Quartus 和 Vivado 中。

  • 功能:功能仿真、时序仿真、调试 HDL 代码、波形分析、代码覆盖率分析。
  • 用途:主要用于验证和调试设计的功能性,确保设计在合成之前是正确的。

        这里的 ModelSim 是仿真工具,专注于验证和调试 HDL 代码,而Vivado 和 Quartus Prime 是完整的集成开发环境 (IDE),涵盖从设计输入到物理实现的整个流程。Vivado 专用于 Xilinx 的 FPGA,而 Quartus Prime 专用于 Intel 的 FPGA。

        而Mentor Graphics 是一家提供电子设计自动化 (EDA) 软件和硬件的公司。该公司成立于 1981 年,总部位于美国俄勒冈州威尔逊维尔。Mentor Graphics 在 2016 年被西门子公司收购,成为其旗下的一个业务部门。Mentor Graphics 提供广泛的工具和服务,用于帮助工程师设计和验证电子系统,包括集成电路 (IC)、印刷电路板 (PCB) 和电子系统级 (ESL) 设计。

Fourth. EDA 和 IDE

1. 电子设计自动化 (EDA) 详解(EDA是什么)

        电子设计自动化 (EDA) 行业是半导体和电子系统设计的核心支撑产业,提供软件和硬件工具,帮助设计工程师高效地设计、验证和制造复杂的电子系统和集成电路 (IC)。EDA 工具在芯片设计流程中不可或缺,涵盖从电路设计、仿真、验证、到物理实现的整个流程。随着半导体技术的进步,EDA 工具也在不断演进,支持更高的集成度和更复杂的设计需求。

2. 全功能集成开发环境 (IDE)详解(IDE是什么)

        全功能集成开发环境(IDE)中的“IDE”是“Integrated Development Environment”的缩写,中文通常翻译为“集成开发环境”。IDE是一种用于软件开发的应用程序,提供了一套集成的工具和功能,以简化编程过程和提高开发效率。

Fifth. Xilinx(赛灵思)和Altera(阿尔特拉)详细,请看

Xilinx(赛灵思)和Altera(阿尔特拉)icon-default.png?t=N7T8https://blog.csdn.net/weixin_65793170/article/details/141018445


4. FPGA架构

        FPGA架构是FPGA设计中物理实现的基础,FPGA的架构包括可编程逻辑单元(PLUs)、互连资源、I/O块、存储资源等。这些组件共同构成了FPGA的硬件基础,理解它们有助于设计者优化电路并提高性能。

  • 可编程逻辑单元(CLB)

    • 组成与功能: 可编程逻辑单元(CLB)是FPGA的基本构建模块,通常包含查找表(LUT)、触发器和多路复用器(MUX)。
    • LUT的工作原理: LUT用于实现逻辑函数,学习如何通过配置LUT实现任意的组合逻辑。
    • 可配置选项: 了解CLB中的触发器配置选项,如同步/异步复位、时钟使能等。

  • 互连资源

    • 互连网络: FPGA内的互连资源用于连接不同的CLB、I/O块等单元。互连网络的设计决定了信号的传输延迟和整体性能。
    • 可编程互连: 了解FPGA中如何通过配置开关矩阵实现逻辑单元间的连接,并优化路径以降低延迟。
    • 布线策略: 学习如何在FPGA设计中有效利用互连资源,避免过多的长路径和拥塞。

  • I/O块

    • 功能与配置: I/O块用于FPGA内部电路与外部设备的接口,支持多种电压标准和信号类型。
    • I/O标准: 了解常用的I/O标准(如LVDS, LVCMOS)及其应用场景。
    • 引脚分配与约束: 学习如何合理分配I/O引脚,并施加引脚约束(Pin Constraints),确保设计能够正确连接外部电路。

  • 存储资源

    • 嵌入式存储器: FPGA中通常包含嵌入式存储器,如块RAM(BRAM),用于存储数据或实现缓存。
    • 存储器配置: 学习如何在设计中使用FPGA的存储资源,如配置RAM/ROM、FIFO等。
    • 分布式存储器: 除了BRAM,FPGA还可以通过LUT实现小容量的分布式存储器,了解其应用场景和优缺点。


5. FPGA开发流程

        FPGA的开发流程涵盖从设计输入(使用HDL描述电路)到综合(将代码转化为门级电路)、实现(布局布线)、配置(加载到FPGA中)的完整过程。这些步骤确保了设计的逻辑性和硬件可行性。

  • 设计输入

    • 使用 Verilog 或 VHDL 描述设计。
    • 可以使用文本编辑器或图形化工具进行设计输入。

  • 综合

    • 将高级描述转换为门级网表。
    • 优化设计以减少面积、提高性能或降低功耗。

  • 实现

    • 映射到具体的 FPGA 架构。
    • 布局布线:确定逻辑单元的位置并连接它们。

  • 配置

    • 将最终设计下载到 FPGA 中。
    • 配置 FPGA 使其执行设计的功能。


6. 时序分析与约束

        时序分析是确保FPGA设计在规定时钟周期内正确工作的关键。通过施加时序约束(如时钟约束),设计者可以控制电路的时序性能,避免信号竞争和时序违例。

  • 静态时序分析 (STA)

    • 检查设计是否满足建立时间、保持时间等要求。
    • 识别时序违规并进行修正。

  • 时序约束

    • 定义最大时钟频率、路径延迟等时序要求。
    • 通过约束指导综合和实现工具优化设计。


7. 仿真技术

        仿真技术用于验证设计的功能性和时序性。功能仿真确保设计逻辑的正确性,而时序仿真结合时序信息,验证电路在真实硬件时序下的行为,是发现和解决潜在问题的重要手段。

  • 功能仿真

    • 验证设计的逻辑功能。
    • 不考虑延迟和时序关系。

  • 时序仿真

    • 验证设计在实际时序条件下的行为。
    • 考虑延迟和时序关系。


8. IP核使用

        IP核是预设计好的、可复用的电路模块,如FIFO、PLL等。使用这些IP核可以大大加快开发进度,提高设计的可靠性和效率,并减少重复工作。

  • 常用IP核

    • FIFO:用于数据缓冲。
    • PLL:用于时钟管理。
    • UART、SPI、I2C:用于通信协议。
    • DDR 控制器:用于高速数据传输。

  • IP核集成

    • 使用工具提供的 IP 核集成功能。
    • 遵循 IP 核提供的接口规范。


9. 嵌入式系统设计

        FPGA不仅用于实现逻辑电路,还可以嵌入软核处理器(如MicroBlaze、Nios II),支持软硬件协同设计。通过硬件加速,FPGA可以显著提升嵌入式系统的处理性能,适用于高性能需求的应用。

  • 软核处理器

    • 如 Xilinx MicroBlaze、Zynq PS 中的 ARM Cortex-A9/A7。
    • 用于实现控制逻辑和算法处理。

  • 硬件加速

    • 使用 FPGA 的并行性和低延迟特性来加速特定任务。
    • 与软核处理器协同工作。


10. 高级设计技巧

        高级设计技巧如流水线设计和并行处理是优化FPGA性能的关键。流水线设计通过分解任务并行处理,提高系统的吞吐量,而并行处理则充分利用FPGA的并行计算能力,显著提升系统效率。

  • 流水线设计

    • 将复杂操作分解成多个阶段,每个阶段并行执行。
    • 提高吞吐量,降低延迟。

  • 并行处理

    • 利用 FPGA 的并行性提高性能。
    • 多个操作同时执行。

创作不易,感觉有用,就一键三连,感谢(●'◡'●)

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

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

相关文章

OpenAI remove key access while using AAD authentication

题意:“OpenAI 在使用 AAD 认证时移除了密钥访问权限” 问题背景: I am calling Azure OpenAI API in my python code. To set it up, we need to provide a few parameters, one of which is openai.api_key. There are 2 options to get this value -…

力扣hot100-动态规划

文章目录 概念动态规划基本思想常见步骤常用技巧常见问题类型 动态规划题目题目: 爬楼梯题解 概念 动态规划 动态规划(Dynamic Programming,简称DP)是一种解决问题的算法思想,通常用于优化问题。它的核心思想是将一个…

K8S声明式的管理方式

一、K8S声明式的管理方式: 1、适合对资源的修改操作 2、声明式管理依赖于yaml文件,所有的内容都在yaml文件中声明 3、编辑好的yml文件还是要靠陈述式命令发布到K8S集群中 二、K8S中支持三种声明式的资源管理方式: 1、deployment格式&…

如何用Java SpringBoot Vue搭建创新创业学分管理系统?实战教程

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

GLM大模型 - CogVideoX:5B 开源,2B 转为 Apache 协议

8月6日,我们发布并开源了CogVideoX-2B模型,受到广大开发者的欢迎。 为了促进社区的自主使用和开放式创新,我们现决定将参数规模更大、性能更强的产品级模型 CogVideoX-5B 开源,同时 CogVideoX-2B 的开源协议调整为更加开放的Apac…

阿里云链接远程桌面Ubuntu22.4,出现的各种问题汇总,太艰辛,所以发出来,帮助一下后边的小伙伴

问题一:远程登录桌面计算机名写什么:写ip,公网ip,用户名不要填 问题二 Win10远程连接Ubuntu20.04桌面黑屏的问题 如果你是用浏览器连接上了云服务器,那么请先logout!

算法的学习笔记—从 1 到 n 整数中 1 出现的次数(牛客JZ43)

😀前言 在编程面试中,求解从 1 到 n 的整数中数字 1 出现的次数是一个常见的挑战。该问题的关键在于如何高效地统计数字 1 出现的次数。本文将详细分析该问题的解题思路,并提供一个高效的 Java 实现。 🏠个人主页:尘觉…

java 切面日志打印出参入参

切面Controller出入参日志打印 项目结构 切面日志对controller下所有的方法生效 切面代码 Slf4j Aspect Component public class ControllerLogAspect {// 定义一个切点,拦截所有Controller层的public方法Before("execution(public * com.jzt.market.cont…

Android解析异步消息处理机制

文章目录 Android解析异步消息处理机制MessageHandlerMessageQueueLooper Android解析异步消息处理机制 Android中的异步消息处理主要由4个部分组成:Message、Handler、MessageQueue和Looper。其中Message和Handler在上一小节中我们已经接触过了,而Mess…

大数据基础:离线与实时数仓区别和建设思路

文章目录 离线与实时数仓区别和建设思路 一、离线数仓与实时数仓区别 ​​​​​​​二、实时数仓建设思路 离线与实时数仓区别和建设思路 ​​​​​​​一、离线数仓与实时数仓区别 离线数据与实时数仓区别如下: 对比方面 离线数仓 实时数仓 架构选择 传…

ComsolMatlab 两级串联扩张式消声器仿真解与解析解

消声器的声学性能通常要求消声器在工作频率范围内有较大的消声量以及较宽的消声频带。常用的消声器声学性能评价指标通常有传递损失、插入损失、减噪量三种。其中插入损失只能反映整个系统在安装消声器前后声学特性的变化,并不能直接反映消声器本身单独具有的属性。…

计算机毕业设计选题推荐-中药材进存销管理系统-Java/Python项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

假期学习--对象底层结构和继承链

OC本质底层实现转化其实都是C/C代码。 OC对象的本质就是结构体。 NSObject底层是struct objc_object结构体 ;struct objc_class : objc_object { …省略无关代码 // Class ISA; //ISA(从objc_object继承过来的) Class superclass; //指向其父类 cache_t cache…

王伊朵闪耀“快乐阳光”舞台 再夺全国冠军

在近日落幕的“赛克杯”第20届快乐阳光少年儿童歌曲卡拉OK电视大赛全国总决赛中,就读于北京市建华实验学校,年仅11岁的小选手王伊朵以其出色的唱功和卓越的舞台表现,一举夺得全国冠军,成为本次大赛一颗耀眼的小明星。 王伊朵自小对…

基于NNG的六种通信模式

NNG是一个消息传递框架,用来解决常见的消息传递问题。NNG是nanomsg的继任版本,纯c语言开发,工作模式分为一下几种: Pipeline单向管道 此模式可用于解决生产者/消费者问题,包括负载均衡。 消息从推侧流向拉侧。 如果多…

‌U盘闪一下就没了?‌如何有效恢复数据

在日常使用U盘的过程中,‌我们可能会遇到一种突发情况:‌U盘插入电脑后仅仅闪了一下就消失了,‌无法再被识别或访问。‌这种情况下,‌U盘中的数据似乎瞬间变得遥不可及。‌然而,‌不必过于担心,‌因为仍然有…

Kafka消息积压的典型场景及解决方案

Kafka消息积压的典型场景: 1.实时/消费任务挂掉 比如,我们写的实时应用因为某种原因挂掉了,并且这个任务没有被监控程序监控发现通知相关负责人,负责人又没有写自动拉起任务的脚本进行重启。 那么在我们重新启动这个实时应用进行…

【Docker】构建Harbor仓库

下载软件包地址:https://github.com/goharbor/harbor/releases Harbor 是由vmware公司开源的企业级 Docker Registry 项目。 它提供了以下主要功能和特点: 1. 基于角色的访问控制(RBAC):可以为不同的用户和用户组分…

告别繁琐!Xinstall地推码,让App安装统计变得更简单!

Xinstall地推码:开启App推广新篇章 在移动互联网时代,App推广的重要性不言而喻。然而,传统的推广方式往往伴随着繁琐的操作和难以精准统计的数据,让推广者头疼不已。幸运的是,Xinstall作为国内专业的App全渠道统计服务…

EmguCV学习笔记 VB.Net 6.6 图像的矩

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…