0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA的内部架构和设计流程

FPGA研究院 来源:Java学研大本营 2024-08-06 11:31 次阅读

本文帮助你理解FPGA相关知识。

1、引言

之前大多数软件都是与它们各自的硬件一起发布,没有办法对其进行更改。但随着技术的成熟,制造商找到了在现有硬件上更新软件以增加附加功能的方法。

现在,想象一下未来硬件更新也成为可能——不是很有趣吗?

那么,这种可编程硬件,其子系统配置甚至在制造后也可以修改,属于可重构系统的范畴。而支持可重构计算的最主要的集成电路是FPGA,即可编程门阵列的缩写。

FPGA使您可以编程产品功能,适应新标准,并在产品安装在现场后针对特定应用重新配置硬件——因此称为“现场可编程”。而“门阵列”指的是其架构中存在的二维逻辑门阵列。

所有现代个人计算机,包括台式机、笔记本、智能手机和平板电脑,都是通用计算机的例子。通用计算采用“冯·诺依曼”方法,即指令获取和数据操作不能同时发生。因此,它们是顺序机器,其性能也受到限制。

另一方面,我们有应用特定集成电路(ASIC),这些电路是为特定任务定制的,例如数字语音记录器或高效的比特币矿工。ASIC使用空间方法来实现只实现一个特定应用程序,并将电路中的元件针对该应用程序进行了高度优化,提供了最大的性能。但是由于ASIC的电路结构非常专门化,它只能用于执行被设计的特定任务,不能用于其他任务。

2769a254-494d-11ef-b8af-92fbcf53809c.png

那么,为了获得ASIC的高性能,是否需要牺牲通用处理器的灵活性呢?

实际上FPGA处于这两种架构范式之间,具有一定的灵活性和可重构性!

虽然FPGA具有可重新编程和相对较低的NRE(非重复性工程)成本等优势,但与ASIC相比,FPGA的能源效率较低(指在完成特定计算任务时所消耗的能量与计算任务完成的速度之比),且不适用于大规模生产。

因此,ASIC和FPGA具有不同的优势和价值主张。通常,大多数设备制造商会使用FPGA进行原型设计,因为它们可以快速迭代和测试不同的设计,且具有一定的灵活性。而在确定了最终的设计之后,制造商通常会使用ASIC进行大规模生产,以获得更高的性能和更低的成本。

2773af56-494d-11ef-b8af-92fbcf53809c.png

过去,FPGA通常被用于较低速度和复杂设计,因为FPGA的电路结构相对复杂处理速度相对较低;且其可编程性和灵活性使FPGA更适用于那些需要实现较为复杂设计的场合。但是现在随着FPGA技术的不断发展和改进,FPGA已经能够实现更高的处理速度和更优化的电路结构。目前,FPGA已经可以轻松地实现超过500MHz的处理性能基准。

2、FPGA的内部架构

1985年,一家名为Xilinx的半导体制造公司发明了第一个商业化的FPGA芯片XC2064。另一家在2015年被英特尔收购的公司Altera也推动了市场的发展,并与Xilinx一起推动了FPGA技术的发展。

FPGA起源于相对较简单的技术,如可编程只读存储器(PROM)和可编程逻辑器件(PLD),如PAL、PLA或复杂PLD(CPLD)。

FPGA由三个主要部分组成:

可配置逻辑块 - 实现逻辑功能。

可编程互联 - 实现路由功能。

可编程输入/输出块 - 与外部元件连接。

278b2956-494d-11ef-b8af-92fbcf53809c.png

逻辑块实现设计所需的逻辑功能,由各种组件组成,例如晶体管对、查找表(LUT)、触发器和多路复用器

您可以将逻辑块视为单独的模块,就像乐高积木一样,并且可以并行操作。但与乐高积木不同的是,逻辑块是可配置的,即其内部状态可以进行控制,并且可以通过编程互联将它们连接在一起以构建有意义的东西。

可编程互联的层次结构用于在可配置逻辑块(CLB)之间分配资源;其中路由路径包含可通过反熔丝或基于存储器的技术连接的具有不同长度的电线段。

每个CLB都与交换矩阵相结合,以访问通用路由结构。交换矩阵提供可编程的多路复用器,用于选择给定路由通道中的信号,并因此连接垂直和水平线。

最后,输入/输出块(IOB)用于将CLB和路由架构与外部元件接口

在早期的FPGA芯片中,没有处理器来运行任何软件,实现应用程序意味着从头设计电路。因此,我们可以将FPGA配置得像OR门一样简单,也可以像多核处理器一样复杂。

但是自XC2064以来,FPGA的基本架构已经通过添加更多专门的可编程功能块(如ALU、块RAM、多路复用器、DSP-48和微处理器)而得到发展。

3、FPGA设计流程

设计流程描述了在物理板上实现和编程任何给定逻辑的流程。于该流程与软件开发生命周期(SDLC)类比,我将其称为 FPGA 开发生命周期(FDLC)。

FPGA架构设计流程包括设计输入、逻辑综合、设计实现、设备编程和设计验证等步骤。然而,具体步骤因制造商而异。

279acece-494d-11ef-b8af-92fbcf53809c.png

4、设计输入

逻辑的描述可以使用原理图编辑器、有限状态机(FSM)编辑器或硬件描述语言(HDL)来制作。这是通过从给定库中选择组件并将设计函数直接映射到所选的计算块来完成的。

当设计具有大量功能时,图形化管理变得困难,此时可以使用HDL以结构化或行为方式捕捉设计。除了已经成为最常用的HDL语言之一的VHDL和Verilog之外,还有一些类似于C语言的HDL语言可供选择,如Handel-C、Impulse C和SystemC等。

使用HDL进行设计描述,可以更直观地表达设计的结构和行为,并方便设计的复用和修改。同时,HDL还可以进行仿真验证,确保设计的正确性和可靠性。因此,HDL在FPGA设计中具有广泛的应用价值。

5、 逻辑综合

这个过程将上述VHDL代码翻译成设备网表格式,以描述具有逻辑元素的完整电路。综合过程涉及检查代码语法和分析设计体系结构的层次结构。接下来是将代码与优化一起编译,并将生成的网表保存为.ngc文件。

6、设计实现

设计实现过程包括以下步骤:

27b1d01a-494d-11ef-b8af-92fbcf53809c.png

翻译:合并所有输入网表到逻辑设计文件中,生成 .ngd 文件。用户约束文件为端口指定物理元素。

27caf874-494d-11ef-b8af-92fbcf53809c.png

映射:将.ngd文件中定义的逻辑映射到FPGA器件的组件上,并生成 .ncd 文件。

27e0f4f8-494d-11ef-b8af-92fbcf53809c.png

布局布线:按照约束条件,将上述过程中的子块放置到逻辑块中,然后连接这些块。

7、设备编程

将上述路由好的设计加载并转换为FPGA支持的格式。将路由好的.ncd文件传递给BitGen程序,生成一个包含所有FPGA编程信息的比特流文件。

8、设计验证

这个过程是与设计流程一起完成的,以确保逻辑行为符合预期。这个过程涉及以下仿真:

行为仿真(RTL仿真)

功能仿真

静态时序仿真

通过为设计提供各种输入测试模式,并观察输出,这些仿真可以模拟设计的行为,从而验证其正确性和可靠性。设计验证过程是确保设计质量的关键步骤,可以在设计实现之前或之后进行。

9、FPGA的未来

产业趋势将FPGA推向在异构计算范例中越来越重要的作用。这里的异构计算是指使用多种类型的处理器来执行各自的专门处理能力的系统。而所有这些不同的处理器,包括FPGA,都可以通过OpenCL进行编程——这是一个行业标准的开发平台。

FPGA提供了成本效益的并行计算能力,适用于快速原型制作。在测试神经网络时,FPGA有时也能够超越GPU。虽然GPU对于训练来说可能很好,但当涉及实时应用时,FPGA更加适应。微软已经在通过Microsoft Azure云服务加速AI时使用了英特尔Stratix FPGA。

来源: 本文转载自Java学研大本营公众号

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21729

    浏览量

    603017
  • 集成电路
    +关注

    关注

    5387

    文章

    11534

    浏览量

    361650
  • 计算机
    +关注

    关注

    19

    文章

    7488

    浏览量

    87855

原文标题:入门FPGA及其架构

文章出处:【微信号:FPGA研究院,微信公众号:FPGA研究院】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA内部详细架构解析

    FPGA 芯片整体架构如下所示,大体按照时钟域划分的,即根据不同的工艺、器件速度和对应的时钟进行划分。
    发表于 10-20 09:58 1962次阅读

    FPGA开发流程

    如图1.6所示。这个流程图是一个相对比较高等级的FPGA开发流程,从项目的提上议程开始,设计者需要进行FPGA功能的需求分析,然后进行模块的划分,比较复杂和庞大的设计,则会通过模块划分
    发表于 01-28 04:24

    【设计技巧】FPGA架构设计漫谈

    ,满负荷边界测试,量产、环境试验等一系列稳定可靠。而在架构设计中,就选择成熟的接口,能有效的避免后续流程中的问题,从源头保证产品的质量。(三)时钟和复位接口确定以后,FPGA内部如何规
    发表于 08-02 08:30

    FPGA 内部详细架构 精选资料分享

    FPGA 内部详细架构FPGA 芯片整体架构1.可编程输入输出单元(IOB)(Input Output Block)2.可配置逻辑块(CLB
    发表于 07-30 08:10

    Alter FPGA的设计流程以及DSP设计

    Alter FPGA的设计流程以及DSP设计.
    发表于 03-16 15:52 127次下载
    Alter <b class='flag-5'>FPGA</b>的设计<b class='flag-5'>流程</b>以及DSP设计

    FPGA的学习流程

    FPGA的学习流程,有需要的朋友下来看看
    发表于 05-10 10:46 23次下载

    FPGA设计流程指南

    FPGA设计的流程,步骤,选型,仿真,软硬件设计,调试流程
    发表于 05-11 14:33 29次下载

    FPGA的设计流程是怎么样的?FPGA设计流程指南详细资料免费下载

    本文档的主要内容详细介绍的是FPGA的设计流程是怎么样的?FPGA设计流程指南详细资料免费下载内容包括了:1.基于HDL 的FPGA 设计
    发表于 10-17 17:50 31次下载
    <b class='flag-5'>FPGA</b>的设计<b class='flag-5'>流程</b>是怎么样的?<b class='flag-5'>FPGA</b>设计<b class='flag-5'>流程</b>指南详细资料免费下载

    FPGA设计流程及原理

    01 FPGA的设计流程 FPGA是可编程芯片,因此FPGA的设计内容包括硬件设计和软件设计两部分。硬件包括FPGA芯片电路、 存储器、输入
    的头像 发表于 11-12 18:22 6564次阅读

    如何使用FPGA内部的ROM以及程序对该ROM的数据读操作

    FPGA本身是SRAM架构的,断电之后,程序就消失,那么如何利用FPGA实现一个ROM呢,我们可以利用FPGA内部的RAM资源实现ROM,但
    的头像 发表于 02-08 16:30 1.2w次阅读
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>内部</b>的ROM以及程序对该ROM的数据读操作

    FPGA设计流程指南

    FPGA设计流程指南
    发表于 11-02 16:29 11次下载

    licode服务架构流程

    licode服务架构流程
    发表于 12-07 13:36 7次下载
    licode服务<b class='flag-5'>架构</b>及<b class='flag-5'>流程</b>

    FPGA设计流程

    FPGA的设计流程主要包括HDL代码编写、RTL综合、布局布线、静态时序分析、生成下载文件。下面将逐一介绍各部分。下面是FPGA设计的流程图。
    的头像 发表于 07-04 12:06 1381次阅读
    <b class='flag-5'>FPGA</b>设计<b class='flag-5'>流程</b>

    浅谈FPGA芯片架构

    FPGA 芯片架构是非常重要的,如果你不了解 FPGA 芯片内部的详细架构
    的头像 发表于 07-04 14:36 1250次阅读
    浅谈<b class='flag-5'>FPGA</b>芯片<b class='flag-5'>架构</b>

    FPGA的详细开发流程

      FPGA 的详细开发流程就是利用 EDA 开发工具对 FPGA 芯片进行开发的过程,所以 FPGA 芯片开发流程讲的并不是芯片的制造
    的头像 发表于 07-04 14:37 5041次阅读
    <b class='flag-5'>FPGA</b>的详细开发<b class='flag-5'>流程</b>