首页专栏详情
打赏
FPGA的设计艺术(9)FPGA开发技巧与工程管理
易百纳技术社区 李锐博恩 2021-03-13 01:55:14

前言

阅读一段话:

产品开发工程师对公司的未来成功与产品对当前的成功一样重要。将工程师,受过高等教育的技术专家视为商品,会降低团队士气,并不可避免地影响项目进度和质量。在竞标一个项目以赢得业务的情况下,期望或要求工程师无偿加班来弥补差额并不是公司长期成功的途径。

是不是深有同感,这是工程管理理念的一部分,本文最后提出了一系列值得每个公司管理者需要长远考虑的问题,你要打造一个什么样的团队乃至公司?你要如何管理? 在此之前,还是先看有关FPGA开发有关的内容,这是工程师、开发者的日常。

设计技巧和常见错误

FPGA开发包括数字设计,代码设计和印刷电路板(PCB)设计元素。以下段落介绍了这些领域中的一些最佳做法和常见错误。

PCB设计

  • 设备配置:确定FPGA配置源和JTAG访问的方法。 JTAG链中允许有多个设备(当链中的设备不是来自同一家族或制造商时,请格外小心)。确保访问配置模式控制引脚。

  • 时钟输入引脚:专用时钟输入引脚可轻松访问内部全局时钟布线资源。

  • 供应商IP引脚:在PCB布局之前构建供应商IP。诸如DRAM控制器之类的复杂IP具有非常特殊的时序和PCB布局约束。 PCB设计人员使用工具生成的引脚分配,并进行尽可能少的更改。任何更改都将反馈到综合工具以验证可接受性。在PCB制造之前执行此操作。

  • 数据流。考虑通过FPGA传输的数据。某些FPGA架构在一定方向上的数据传输效率更高,例如从左到右,进位从上到下移动。分配用于物理架构的引脚可以提高资源使用效率。

  • 电气标准。尽管FPGA有多个IO库,但是在单个库中可以混合使用哪些IO标准是有限制的。尝试在FPGA Bank中混合不兼容的IO标准是一个常见错误,在PCB布局完成后很难发现。

  • 同步开关输出(SSO):每个IO bank的汲取电流量受到限制。如果同时更改太多输出,则bank可能需要的电流超过可用电流。使用Xilinx Virtex-4 FPGA的同步开关输出(SSO)分析是对此主题的一个很好的展示。

上述链接截图: 截图

  • 功耗分配:阅读并注意有关电源电压,sequencing和去耦的制造商建议。

  • 调试支持:测试连接器与设计中最大的总线一样大,加上一些控制信号,可以在integration过程中提供令人难以置信的洞察力。

数字设计

有些工程师似乎认为,HDL让他们编写的软件可以神奇地成为FPGA中的数字设计。其实不然。数字设计技术是开发FPGA的关键技能。无论使用哪种工具或语言,糟糕的数字设计都会导致糟糕的产品。

下面给出几条数字设计的建议:

  • 层次结构:将设计分成足够小的单元,以用描述其作用的名称进行标记。

  • 模块设计:一个常见的错误是无效的模块或接口定义。

  • 跨时钟域(CDC)。每个设计单元或组件应具有一个时钟(如果设计单元具有多个时钟,则需要跨时钟)。在设计单元之间移动数据和/或信号需要特别注意CDC。

  • 同步设计:FPGA需要同步设计技术。所有FPGA制造商都建议同步设计。如果您的设计不同步,则制造商的支持人员将竭诚为您提供帮助。同步设计消除了通过不同逻辑路径与速度变化相关的问题。通过以规定的时间间隔对信号进行采样,可以以简单的方式处理快路径和慢路径。它们在各种工艺,电压和温度(PVT)的变化中都能很好地工作,并且易于迁移到新技术。 Bob Zeidman在《 CPLD和FPGA设计简介》中介绍了一套简洁的同步设计规则。

  1. 同步设计简单的说就是所有的数据都通过组合逻辑和触发器,同步到一个时钟上。
  2. 延迟始终由触发器控制,而不是组合逻辑。
  3. 任何由组合逻辑产生的信号,如果不先经过同步触发器,就不能反馈到同一组组合逻辑中。
  4. 时钟不能被门控--换句话说,时钟必须直接进入触发器的时钟输入,而不需要经过任何组合逻辑。
  5. 系统只有一个时钟。不要为实体或进程提供其他实体或进程的输出时钟。(这里是VHDL里的说法,在Verilog中可以理解为一个模块(无论多小的模块)的输出不能作为另一个模块的时钟)。
同步设计计数器示例:纹波计数器

纹波计数器使用一个电路的数据输出作为另一电路的时钟输入。这违反了规则5;不要为另一个电路的输出提供时钟。这种非同步设计使用较少的逻辑进行计数,并且在时钟速度较慢时还可以,但在时钟速度较高时可能会造成灾难性的后果。考虑到在Fclk = 100MHz(Tclk = 10ns)和Tpd = 1ns的情况下,一个12级波纹计数器将在多个时钟周期内改变位!产生的故障输出是确定性的。

波纹计数器

减少编码时的不确定性。

避免这样做,因为它会导致潜在的缺陷。在开始在HDL中编码设计之前,你应该对你想要的功能有一个清晰的了解。

Verilog/VHDL编码

  • 推断的锁存器:推断的锁存器警告是工具告诉你,设计者没有有效地传达他们的意图。为了完成所描述行为的等式,工具必须添加一个设计者没有要求的内存元素! 通过在进程中为信号分配默认值(case),并在if语句中加入 else子句来避免这种情况。
  • 敏感列表
  • 变量:可合成的HDL不是软件。变量可以是功能强大的工具,但它们可以吸引那些无所顾忌的人来编写软件,而不用描述数字设计。如果有变量,请查找错误。

参考:

Ripple Counter

仿真

仿真需要花更多的时间,但是投资回报率很高。主要的好处是,在进行上板之前,您知道FPGA功能是正确的。

为什么仿真?

功能仿真证明,HDL描述的设计符合要求。在实验室中验证硬件功能的工作量很大。由于对FPGA的可见性有限,因此很难调试。在仿真过程中,您几乎可以无限了解设计。在仿真过程中查找设计或编码错误要比在实验室上板过程中快得多。

  • 系统模型:当仿真与FPGA外部部件通信的数字设计时,仿真需要外部部件的模型。当开发这些系统模型时,其理念是围绕着合理的真实性。 如果你只是简单地测试一个SPI接口,一个非常简单的模型就可以了。

  • 时序:功能仿真告诉我们故事的第一部分。来自综合工具的静态时序分析表明,设计将或不会以所需的时钟速度运行。这些工具需要与时钟相关的约束定义。

  • 花费多久仿真:在Xilinx Virtex-5设备中使用诸如以太网MAC之类的硬IP时,运行涉及MAC IP的仿真几乎没有意义。这种仿真需要花费大量时间,并且您不能修改IP来纠正任何缺陷。(此外,它已经由制造商和许多设计进行了广泛的测试。)

有关仿真的更多内容,仿真技巧以及注意事项,可以参考我的其他博客: FPGA设计心得(10)关于行为仿真的一点观点

工程管理

工程就是生意,而生意就是关系。因此,成功的工程是关于建立高质量的关系。项目通常不会因为技术原因而失败。他们失败的原因是开发团队中的人的行为。

许多工程师声称他们不关心营销,尽管这是让他们就业的原因。利润是企业持续经营活动的要求,与营销密切相关。一个公司最强的营销是高质量、有良好记录(读作:可维护)的产品。所有的工程师都应该朝着这个目标努力。这就是你如何为你的公司、你的团队、你自己建立声誉。你的声誉强烈地影响着你的下一份工作;或者说缺乏声誉。

制作的文档中出现句子碎片。错别字也会让人怀疑你的专业性。这是一个竞争激烈的世界;不要提供理由来质疑你对细节的关注。

管理工程师

  • 生产力:在PeopleWare中,DeMarco和Lister确定,长时间不间断的活动会大大提高工作效率。在经历了一天的持续中断(会议、电子邮件、电话等)之后,人们可能会一无所获地离开。这损害了计划和预算,但更重要的是它损害了士气。

注: T. DeMarco and T. Lister. Peopleware - Productive Projects and Teams. 1999.

  • 培训:工学院提供科学和数学基础知识,但确实为我们做好了在工作中学习的准备。向工程师提出他不熟悉的问题类型时,讲师指导的培训可以明显缩短学习曲线。
  • 团队。团队凝聚力和个人积极性是项目成功的关键。等于或大于技术挑战。所有学科之间的团队凝聚力至关重要。如果项目失败,那么FPGA的设计完美程度将无关紧要。
  • 公司价值。产品开发工程师对公司的未来成功与产品对当前的成功一样重要。将工程师,受过高等教育的技术专家视为商品,会降低团队士气,并不可避免地影响项目进度和质量。在竞标一个项目以赢得业务的情况下,期望或要求工程师无偿加班来弥补差额并不是公司长期成功的途径。
  • 工作满意度。给工程师一个有趣的问题,一个解决问题的资源,尽可能少的干扰和烦恼,使他们的工作满意度很高。幸运的是,培养工程师的自我价值相对容易。一副大显示器要花几百美元。考虑到由于信息可用性而带来的效率提高以及士气和动力的提高,投资回报率是相当不错的。
  • 时间规划。时间规划预估是有关事件何时发生的最佳猜测。将来距离越远,准确性越低。您必须定期修改长期计划。要求员工付出巨大的个人牺牲才能满足任意计划,这是长期企业灾难的良方。
打赏
共1人已赏
一个努力写作的FPGA爱好者、从业者,CSDN博客专家,CSDN上万关注量,百万
评论
0个
内容存在敏感词
相关专栏
打赏作者
易百纳技术社区
李锐博恩
您的支持将鼓励我继续创作!
打赏金额:
¥1 易百纳技术社区
¥5 易百纳技术社区
¥10 易百纳技术社区
¥50 易百纳技术社区
¥100 易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区 微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

审核成功

发布时间设置
发布时间:

审核失败

失败原因
备注
Loading...
易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区
易百纳技术社区
在专栏模块发布专栏,可获得其他E友的打赏
易百纳技术社区
回答悬赏问答,被题主采纳后即可获得悬赏金
易百纳技术社区
在上传资料时,有价值的资料可设置为付费资源
易百纳技术社区
达到一定金额,收益即可提现~
收益也可用来充值ebc,下载资料、兑换礼品更容易
易百纳技术社区
活动规则
  • 1.周任务为周期性任务,每周周一00:00刷新,上周完成的任务不会累计到本周,本周需要从头开始任务,当前任务完成后才可以完成下一个任务
  • 2.发布的专栏与资料需要与平台的板块有相关性,禁止注水,专栏/资料任务以审核通过的篇数为准
  • 3.任务完成后,现金奖励直接打款到微信账户;EBC/收益将自动发放到个人账户,可前往“我的钱包”查看;其他奖励请联系客服兑换
  • 4.每周最后三个任务将会有以下奖品掉落:社区热卖开发板、小米音响、视频年度会员、京东卡、华为手机等等
易百纳技术社区
升级提醒
易百纳技术社区

恭喜您由入门

社区送出礼品一份

请填写您的收件地址,礼品将在3个工作日寄出

易百纳技术社区