FPGA 设计中经常犯的 10 个错误

这篇具有很好参考价值的文章主要介绍了FPGA 设计中经常犯的 10 个错误。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文列出了FPGA设计中常见的十个错误。我们收集了 FPGA 工程师在其设计中犯的 10 个最常见错误,并提供了解决方案的建议和替代方案。本文假定读者已经具备 RTL 设计和数字电路方面的基础。接下来让我们深入探讨在FPGA 设计中要避免的 10 大错误。

异步逻辑

FPGA 设计适用于同步系统,即使异步逻辑是可综合的,它也会导致设计中的时序违规(亚稳态)。有 FPGA 工程经验的人往往会避免在他们的 FPGA 设计中使用任何异步逻辑。缓解此问题的一种方法是在驱动 LUT 的设计中同步锁存所有异步逻辑。

设计中的异步循环会增加 FPGA 的功耗,从而增加热量并可能导致不必要的“过热”问题。

以下是使用异步逻辑有益的情况:

  • 在 AXI-stream协议中,最好将“tready”表示为异步,这里可以使用reg slice来减轻异步逻辑,这会增加整个设计的利用率。

  • 基于 DSP slice 的计算。使用 DSP slice 的除法、乘法可以异步完成,对时序几乎没有影响。

碎碎思 csdn,fpga开发

不使用厂商提供的原语

这是 FPGA 初学者常犯的错误。以Xilinx器件为例,Xilinx为时钟缓冲器、CDC、DLL、时钟分频器等提供原语。充分利用器件中现有的原语将带来更高效的设计,并大幅缩短开发时间。

例如:

1、 将 xpm-cdc 用于同步器将减少为其编写 RTL 以及为该信号定义约束的麻烦。

2、使用 bufr 进行时钟分频会自动将生成的时钟放置在时钟树上,并推断生成的时钟约束。

碎碎思 csdn,fpga开发碎碎思 csdn,fpga开发

未充分利用 DSP Slice

在 Xilinx FPGA 中,DSP Slice 能够用作累加器、加法器、减法器、除法器和乘法器。当需要这些功能时,最好使用 DSP slice 而不是 LUT/Fabric 来执行此操作。这将减少花在设计优化以及设计结束时的时序收敛上的时间。

有些设计需要非常高的时钟频率才能工作,在这种情况下,DSP Slice可以大大减少时序问题。

检查设计中推断的锁存器

这是一个可以用例子很好解释的案例。编写状态机时,应该有 1 个同步状态和 2 个异步状态。在异步的 NEXT STATE LOGIC 中,如果忘记考虑所有条件,工具将推断一个锁存器,即 next_state 信号将被预期为设计中的生成时钟,因为它将驱动多个 LUT。盲目忽略这种情况会导致状态机停止,并且在出现故障时无法恢复。

不在每个阶段运行 DRC 检查

DRC 检查是必须的,应该在综合和实现之后进行。应正确分析 DRC 中的任何严重警告,并在设计中加以考虑。如果不这样做,可能会导致系统不稳定,并可能在某个时间点发生故障。

不遵循正确的命名和编码约定

所有 RTL 设计工程师都应遵循其设计的标准命名约定,例如。

  • 为所有输入添加 i_

  • 为所有输出添加 o_

  • 为所有信号添加 s_

  • 为所有常量添加 c_

  • 为所有通用信号添加 g_

  • 时钟应命名为 i_clk_m:例如 i_clk_122m88

  • 复位应命名为 i_rst_<polarity_: 例如 i_rst_n_122m88

所有代码都应正确记录、注释和测试(综合前和综合后)

复位信号的不必要使用

在 Xilinx 设备中,使用复位引脚驱动所有信号并不是首选,因为它会大大增加设计中的扇出。相反,最好将 gsr 引脚用于所有中间信号。

即:当声明信号时,将其本身初始化为复位值。

请参阅“ https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_1/ug974-vivado-ultrascale-libraries.pdf ”第 75 页

碎碎思 csdn,fpga开发

利用率计算

在 FPGA 中,不建议完全利用所有可用资源。开始设计时,选择一个可以容纳设计并有额外 10% 到 20% 可用空间的FPGA。这样做是为了让路由有余地使用其内置逻辑满足建立和保持时间。

如果不这样做,后续的时序很难收敛,就不得不降低系统时钟。

将block design用于大型设计

block design是轻松互连 RTL 的好方法,但对于大型项目,block design在 Xilinx Vivado 中也有很多固有的错误,这会在设计中引起很多不必要的警告。

不检查仿真设置中的记录所有信号选项

在仿真设计时,最好首先检查 vivado 中的记录所有信号选项。这将避免为了向仿真波形添加附加信号而不得不重新运行整个仿真。这适用于与 vivado 结合使用的所有第三方仿真软件。

碎碎思 csdn,fpga开发

点下【在看】给小编加鸡腿文章来源地址https://www.toymoban.com/news/detail-761858.html

到了这里,关于FPGA 设计中经常犯的 10 个错误的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA 开发必备:从零开始学习 FPGA 设计

    FPGA 开发必备:从零开始学习 FPGA 设计 FPGA 是一种可编程逻辑器件,可以在不用重新设计硬件电路的情况下修改其功能。它是数字电路设计中最重要的组成部分之一。FPGA 的广泛应用领域包括通信、计算机、图像处理、音频处理等。 要想成为一名合格的 FPGA 工程师,你需要了

    2024年02月07日
    浏览(45)
  • 【教程4>第1章>第10节】FPGA浮点与定点设计应用

    本课程目录 1.软件版本 2.FPGA浮点和定点仿真概述 3.FPGA浮点运算方式2 4.FPGA浮点运算方式3 5.视频操作步骤演示 6.参考 欢迎订阅 《★教程1:matlab入门100例》 《★教程2:fpga入门100例》 《★教程3:simulink入门60例》 ​​​​​​《★教程4:FPGA/MATLAB/Simulink联合应用开发入门与进阶X例

    2024年02月19日
    浏览(28)
  • FPGA开发设计

    FPGA是可编程逻辑器件的一种,本质上是一种高密度可编程逻辑器件。 FPGA的灵活性高、开发周期短、并行性高、具备可重构特性,是一种广泛应用的半定制电路。 采用基于SRAM工艺的查位表结构(LUT),LUT用于实现实际逻辑电路的功能,LUT本质上是一个RAM,事先将相应的结果

    2024年01月17日
    浏览(25)
  • FPGA设计开发(基础课题):分频器设计

    一、设计目的 1、掌握分频器的设计原理; 2、用HDL语言设计分频器。 二、设计原理 分频器与计数器类似,也是要对时钟脉冲进行计数,但其输出的不是对时钟脉冲个数的计数值,而是其频率与时钟的频率成固定比例关系的脉冲信号。整数分频是所有分频器中最简单,最容易

    2024年02月13日
    浏览(38)
  • FPGA设计开发(基础课题):七人表决器设计

    一、设计目的 1、熟悉MAX+PLUSⅡ、QUARTUSⅡ软件的使用; 2、熟悉EDA/SOPC、FPGA基本结构; 3、熟悉EDA开发的基本流程。 二、设计原理 所谓表决器就是对于一件事,由多个人投票,如果同意的票数过半,就认为此事可行;否则如果否决的票数过半,则认为此事不行。 七人表决器顾

    2024年02月08日
    浏览(59)
  • 【FPGA零基础学习之旅#10】按键消抖模块设计与验证(一段式状态机实现)

    🎉欢迎来到FPGA专栏~按键消抖模块设计与验证 ☆* o(≧▽≦)o *☆ 嗨 ~我是 小夏与酒 🍹 ✨ 博客主页: 小夏与酒的博客 🎈该系列 文章专栏: FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 📜 欢迎大家关注! ❤️ 🥝 模块设计: 🥝 按键消

    2024年02月12日
    浏览(33)
  • SOC FPGA介绍及开发设计流程

    目录 一、SoC FPGA简介 二、SoC FPGA开发流程 2.1 硬件开发 2.2 软件开发          SOC FPGA是在FPGA架构中集成了基于ARM的硬核处理器系统(HPS),包括处理器、外设和存储器控制器。 相较于传统的仅有ARM处理器或 FPGA 的嵌入式芯片,SOC FPGA既拥有ARM处理器灵活高效的数据运算和事务

    2024年02月15日
    浏览(33)
  • 单周期-开发过程【FPGA模型机课程设计】

    2023-5-25 08:24:28 以下内容源自《【FPGA模型机课程设计】》 仅供学习交流使用 0集中实践环节计划书【FPGA模型机课程设计】 工程迭代过程 README.txt 1FPGA模型计算机整体方案设计【FPGA模型机课程设计】 2模型计算机各功能电路设计【FPGA模型机课程设计】 实现基本20条指令 3模型机

    2024年02月09日
    浏览(31)
  • FPGA设计开发(基础课题):七段数码管设计

    一、设计目的 FPGA驱动七段数码管实现十六进制计数显示。 二、设计原理 七段数码管分共阳极与共阴极两种。共阳极数码管其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。共阴极数码管则与之相反,它是将发光二极管的阴极短接后作为公共阴

    2024年02月07日
    浏览(37)
  • CIC滤波器:原理、设计与FPGA开发

    CIC滤波器,全称为累积积分器滤波器(Cascaded Integrator-Comb Filter),是一种数字滤波器,通常在信号处理和通信系统中使用。本文将详细介绍CIC滤波器的原理、设计方法以及如何在FPGA上实现。 一、CIC滤波器原理 CIC滤波器由级联的积分器和组合器组成,其中积分器用于对输入信

    2024年02月04日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包