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

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

3天内不再提示

FPGA设计流程及原理

e9Zb_gh_8734352 来源:FPGA技术联盟 作者:FPGA技术联盟 2020-11-12 18:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

01

FPGA的设计流程

FPGA是可编程芯片,因此FPGA的设计内容包括硬件设计和软件设计两部分。硬件包括FPGA芯片电路、 存储器、输入输出接口电路以及其他设备,软件即是相应的HDL程序以及最新才流行的嵌入式C程序。

FPGA的开发流程即是利用EDA开发软件以及编程工具对FPGA芯片进行开发的过程。EDA ( Electronic Design Automation,电子设计自动化)是充分发挥LSI性能的关键技术。理论上,一款FPGA所能达到的性能上限是由制程等物理因素决定的,而在实际应用中用户电路的性能很大程度上取决于器件的架构和EDA工具。这就像汽车一样,无论引擎(制程)多么强劲,都需要配合适当的车体(架构)和驾驶技术( EDA工具)才能发挥出极限速度。尤其是与电路实现直接相关的EDA工具,其对性能的影响不可估量。

FPGA的设计流程由HDL源代码的逻辑综合开始,经过工艺映射、逻辑打包、布局布线等过程,最终生成比特流。逻辑综合将HDL描述转换为门级网表,工艺映射将这个网表转换为查找表级别的网表。逻辑打包是将多个查我表和触发器集合到一个逻辑块的过程。布局布线工具先决定逻辑块在器件上的位置,然后通过布线结构实现逻辑块之间的连接。最终,基于这些布局布线信息可以决定FPGA中各个开关的连接关系,以此生成比特流。

器件上查找表的输入数是既定的(查找表能实现输人数不大于自己的任意逻辑),而FPGA的设计就是要从目标电路的逻辑函数中不断分离出既定输入数之内的逻辑,并将其映射到查找表上。然后将这些查找表通过布线相连, 就可以在FPGA 上实现目标电路。

FPGA和ASIC的区别在于,ASIC通过组合使用标准单元库中的逻辑实现电路,而FPGA则使用统一构造的查找表。这种区别也体现在了EDA工具上。下面我们就对这种不同于ASIC的EDA技术原理进行详细介绍,具体包括上述的工艺映射、逻辑打包、布局布线。

02

工艺映射

工艺映射是指将不依赖于任何工艺的门级网表转换为由特定FPGA逻辑单元所表示的网表的过程。这里所说的逻辑单元依赖于特定的FPGA架构,是由查找表或MUX等逻辑电路实现的FPGA上的最小逻辑单位。工艺映射是从HDL开始的逻辑转换的最后一步,因此对最终电路实现的质量(面积、速度、功耗等)至关重要。下面我们就通过工艺映射最具代表性的工具FlowMap,来讲解工艺映射的原理。Flow Map是由加州大学洛杉矶分校丛京生教授(Jason Cong)的研究团队开发的工艺映射算法。将目标电路网表转换到k输入的查找表(k-LUT)的工艺映射过程由下面两个步骤组成。

(1)分解:门级网标实际上都是以布尔网络的形式来表示的。先将布尔网络的各个节点不断分解,直至输人数小于查找表的输人数k。

(2)覆盖:基于过程(1)所得到的布尔网络,使用某种基准对输入进行切分,使用k-LUT覆盖多个节点。

FlowMap第(2)步的覆盖过程,是一种可以在多项式时间内找到逻辑层数最优解的方法。

03

3、逻辑打包

目前,主流FPGA的逻辑块都具有多个查找表,因此将查找表高效地打包到逻辑块的过程是不可或缺的。逻辑打包主要有两个要点:第一,逻辑块内部布线(局部布线)和逻辑块外部布线(布线通道中的布线)的延迟相差很大;第二,如果逻辑块中有查找表空闲,资源使用率就会降低(增加逻辑块的使用量),因此要尽量在每个逻辑块内填装更多逻辑。

之前世界上出现了许多可以实现多种性能优化的打包工具,但他们的装箱算法都只能处理单一的查找表结构。近些年的逻辑块包含了自适应查找表等更为复杂的结构。自适应查找表不仅需要在工艺映射时选择最佳输入数的查找表,对装箱算法也有很大影响。比如,在打包自适应查找表的网表时为了改善布通率和延迟,不能只考虑逻辑块中查找表的数量,还要考虑主输入数量、逻辑块所允许的查找表模式组合等因素。因此要找到同时满足逻辑块数最少、延迟最小、布线数最少的解是非常困难的。

VTR(Verilog-to-Routing)中集成的AAPack(ArchitectureAware Packer)就是为了挑战这个问题而诞生的。VTR系统使用XML的形式建立器件的架构模型。其架构的定义分为单元结构( physical block,相当于逻辑块内的逻辑单元)和布线结构( interconnect,相当于physical block间的连接关系和连接方式)。单元结构的描述方式为嵌套式,可以描还含有多个逻辑单元的逻辑块。使用模式单元还可以表达具有多种模式的结构,例如将多输入查找表拆分为多个少输人的查找表(多种模式)等。

AAPack实现了对上述架构模型的支持,其装箱算法如下所示。

(1)如果有未打包的查找表,则选其作为种子并确定要插入的逻辑块。

(2)按照如下算法向当前逻辑块填装查找表。

(a)寻找可填装的候补查找表。

(b)将选择的查找表填入逻辑块。

(c)如果逻辑块还有空位,返回到步骤(2)的(a)。

(3)将装箱完毕的逻辑块输出到文件,返回到步骤(1)。

综上,AAPack可以对结构复杂的逻辑块实现查找表打包功能。

04

布局布线

布局布线是FPGA设计流程的最后一个步骤——在物理上确定逻辑块的位置和信号连接路径。一般来说首先会确定逻辑块的布局,然后再对逻辑块间的连接进行布线。

多数FPGA的逻辑块都呈二维阵列状排列,因此逻辑块布局问题可以视为标准的二次分配问题。然而,此类问题也被公认为是NP问题,通常只能使用SA ( Simulated Annealing)等算法获取近似解。

布线过程中主要使用两种布线方法:全局布线和详细布线。全局布线阶段主要决定线网的布线路径,例如通过哪些通道形成连接。详细布线则基于全局布线所得的信息,确定路径具体使用了哪些布线资源、通过了哪些开关等。

下面我们使用由多伦多大学开发、在学术界被广泛应用的布局布线工具VPR(Versatile Place and Route)进行介绍。VPR的布线过程如下。

(1)先将逻辑块、I/O块随机放置。

(2)计算当前布局的布线拥挤度。

(3)随机选择两个逻辑块并对调其位置。

(4)计算对调后的布线拥挤度。

(5)比较对调前后拥挤度的数值,决定是否接受新的布局。

目前,作为最主要的开源FPGA设计框架,VPR已经发展到了7.0的版本了,其中也加入了一些更加实用的功能和工具,例如支持进位信号等专用连接、多时钟域时序分析、功耗分析等。

责任编辑:xj

原文标题:FPGA设计原理

文章出处:【微信公众号:FPGA技术联盟】欢迎添加关注!文章转载请注明出处。

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

    关注

    462

    文章

    53536

    浏览量

    459148
  • FGPA
    +关注

    关注

    1

    文章

    27

    浏览量

    16439

原文标题:FPGA设计原理

文章出处:【微信号:gh_873435264fd4,微信公众号:FPGA技术联盟】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于瑞芯微 RK3588 的 ARM 与 FPGA 交互通信实战指南

    本文围绕创龙科技研发的 TL3588-EVM 评估板,详解瑞芯微 RK3588 与 FPGA 基于 PCIe 总线的通信案例,包括 DMA 与非 DMA 两种方式。涵盖案例功能、测试流程、编译步骤
    的头像 发表于 11-04 16:09 263次阅读
    基于瑞芯微 RK3588 的 ARM 与 <b class='flag-5'>FPGA</b> 交互通信实战指南

    FPGA板下载运行调试流程

    今天主要介绍一下整个FPGA板下载运行调试流程。 1、首先,参考网址https://doc.nucleisys.com/hbirdv2/soc_peripherals/ips.html#gpio 第
    发表于 10-29 06:57

    FPGA板下载调试流程

    今天主要介绍一下整个FPGA板下载运行调试流程。 1、首先,参考网址https://doc.nucleisys.com/hbirdv2/soc_peripherals/ips.html#gpio 第
    发表于 10-29 06:37

    京微齐力新版福晞软件工具全面优化FPGA设计环境

    FPGA 设计开发过程中,软件是工程师必不可少的工具,好的软件开发环境可以简化设计者的设计流程,缩短开发时间,提升整体设计效率。
    的头像 发表于 10-23 17:48 4690次阅读
    京微齐力新版福晞软件工具全面优化<b class='flag-5'>FPGA</b>设计环境

    一文详解xilinx 7系列FPGA配置技巧

    本文旨在通过讲解不同模式的原理图连接方式,进而配置用到引脚的含义(手册上相关引脚含义有四、五页,通过本文理解基本上能够记住所有引脚含义以及使用场景),熟悉xilinx 7系列配置流程,以及设计原理图时需要注意的一些事项,比如flash与FPGA的上电时序。
    的头像 发表于 08-30 14:35 8897次阅读
    一文详解xilinx 7系列<b class='flag-5'>FPGA</b>配置技巧

    智多晶FPGA设计工具HqFpga接入DeepSeek大模型

    在 AI 赋能工程设计的时代浪潮中,智多晶率先迈出关键一步——智多晶正式宣布旗下 FPGA 设计工具 HqFpga 接入 DeepSeek 大模型,并推出 FPGA 设计专属 AI 助手——晶小助!这是
    的头像 发表于 06-06 17:06 1128次阅读

    适用于Versal的AMD Vivado 加快FPGA开发完成Versal自适应SoC设计

    设计、编译、交付,轻松搞定。更快更高效。 Vivado 设计套件提供经过优化的设计流程,让传统 FPGA 开发人员能够加快完成 Versal 自适应 SoC 设计。 面向硬件开发人员的精简设计流程
    的头像 发表于 05-07 15:15 1044次阅读
    适用于Versal的AMD Vivado  加快<b class='flag-5'>FPGA</b>开发完成Versal自适应SoC设计

    FPGA芯片选型的核心原则

    本文总结了FPGA选型的核心原则和流程,旨在为设计人员提供决策依据,确保项目成功。
    的头像 发表于 04-30 10:58 1193次阅读

    FPGA设计调试流程

    调试,即Debug,有一定开发经验的人一定会明确这是设计中最复杂最磨人的部分。对于一个庞大复杂的FPGA工程而言,出现问题的概率极大,这时如果没有一个清晰的Debug思路,调试过程只能是像无头苍蝇一样四处乱撞。
    的头像 发表于 03-04 11:02 1652次阅读
    <b class='flag-5'>FPGA</b>设计调试<b class='flag-5'>流程</b>

    【国产FPGA入学必备】国产FPGA权威设计指南+配套FPGA图像视频教程

    》。 本书系统地介绍紫光同创FPGA的开发与应用,详细阐述FPGA开发的各个方面,从基础原理到实际应用,从设计流程到开发工具的使用,力求为读者提供一套完整的学习和参考体系。通过阅读本书,读者不仅可以掌握紫光
    发表于 02-20 15:08

    【国产FPGA必备教程】——紫光同创FPGA图像视频教程,适用于小眼睛FPGA盘古全系列开发板

    案例、时序约束及收敛方法等,教程内容丰富,从入门到应用提高,覆盖紫光同创FPGA开发全流程,教程适用于小眼睛科技盘古系列、泰坦系列全开发套件。目前,小眼睛科技基于FPGA赛事配套紫光同创FPG
    发表于 02-19 15:44

    NX CAD软件:数字化工作流程解决方案(CAD工作流程)

    NXCAD——数字化工作流程解决方案(CAD工作流程)使用西门子领先的产品设计软件NXCAD加速执行基于工作流程的解决方案。我们在了解行业需求方面累积了多年的经验,并据此针对各个行业的具体需求提供
    的头像 发表于 02-06 18:15 746次阅读
    NX CAD软件:数字化工作<b class='flag-5'>流程</b>解决方案(CAD工作<b class='flag-5'>流程</b>)

    PLD设计流程的详细步骤

    PLD(Programmable Logic Device,可编程逻辑器件)设计流程是指从设计概念到最终实现的一系列步骤,用于创建和验证可编程逻辑器件的功能。 1. 需求分析(Requirement
    的头像 发表于 01-20 09:46 1814次阅读

    【米尔-Xilinx XC7A100T FPGA开发板试用】Key-test

    硬件: 一Xilinx XC7A100T FPGA开发板 二12V电源适配器 三下载器 四 win10笔记本 软件: 一Vivado (指导手册有详细的安装下载流程) 二官方按键示例工程 按键示例
    发表于 01-09 16:08

    大多数FPGA的程序存储器(FLASH)为什么都放在外面呢?FPGA的主要应用

    FPGA的主要应用:  FPGA由于其较高的价格和成本,决定了FPGA不能像单片机那样被广泛的使用,FPGA的针对于高端处理市场(类如:手机处理器,平板,工业控制系统)或许你会有些疑问
    的头像 发表于 12-24 11:04 1844次阅读
    大多数<b class='flag-5'>FPGA</b>的程序存储器(FLASH)为什么都放在外面呢?<b class='flag-5'>FPGA</b>的主要应用