FPGA工程师必备的技能(一):毛刺的产生原因及其消除办法

最近做项目做得有点头晕,没学好的矩阵来报复我来了。
之前有看过对于不同层次FPGA开发者的技术要求,于是决定新开一个系列从简单到困难逐个讲解FPGA工程师的必备技能。

第一期:数字电路稳定性

数字电路存在不稳定的原因,归根到底是“信号的传输速率是非理想的”这个原因造成的:因为温度、工艺、路径、逻辑门的各种影响,传输速率不是理想的,所以就会造成某些信号在我们想让他为高的时候它还是低,或者反之,进而就会影响数字电路的输出结果。

我们把出现了信号到达端口的时间不一样这种状况成为“竞争”,把它产生的输出错误的现象叫做“冒险”。竞争可能引起冒险

错误造成的输出信号,一般在电气特性上表现为高频率的尖脉冲信号,所以我们把它叫做毛刺
在这里插入图片描述
在组合时序电路和异步时序电路中我们经常能见到毛刺

①先说组合逻辑电路:

在这里插入图片描述

就拿与门举个例子,比如我们设定一个时间轴t,A,B初态皆为0,原本按照我的设计,A,B应该在5ns的时候同时翻转为1,那么Y也应该在t=5ns时从0翻转为1。但是由于A,B信号源存在差异,导致A比B提前2ns,那么我们的高电平起始时间就会变化,持续时间也会变化。

那么在组合逻辑电路中我们该如何消除毛刺呢?
在数电课程中我们书本上可能讲到过:
1.增加冗余项 2.输出端增加电容
首先这两个办法,其一,冗余项只能消除逻辑险象,不能消除功能险象,其二,增加电容会导致系统速度变慢。而且,在FPGA设计中,这两种办法显然是不可行的,所以我们要介绍另一种方法:

选通法:
在这里插入图片描述
也就是增加额外的选通脉冲,运用与门的结构来实现的数字开关,对输入或者输出信号进行管理,这样就从源头上防止了毛刺的产生。

②然后说一下异步时序电路中的毛刺:
在这里插入图片描述

产生原因:若多个状态寄存器同时变化,那么时序电路就已经处于竞争之中,而当电路最终的稳态与状态寄存器变化的先后次序有关,那么此时就已经产生了竞争了。

解决办法:
1.延迟元件法:直接让某个状态寄存器延迟,以达到我们想要的输出。这个方法没有直接解决毛刺问题,只是利用了竞争。
2.多次转移法:如果A->D有竞争,那么我们可以尝试A->C->D(此时两个步骤都没有竞争冒险存在)
3.改造为同步电路:经过刚刚两个方法,大家可能会理解:异步电路没办法做到真正意义上的毛刺消除,只能改造为同步电路才能处理毛刺问题。在ASIC中同步时序比异步时序占用的面积大,但是在FPGA中,电路面积意味着逻辑单元,这样的话,同步和异步电路的资源差不多,不会造成不可承受的浪费。

本期的介绍就到这里,谢谢观看。

  • 8
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 想成为一个FPGA工程师,你需要具备以下几方面的知识和技能: 1. 熟练掌握计算机科学基础知识,包括计算机系统结构、计算机网络、算法分析和设计、数据结构等。 2. 熟悉FPGA的基本原理和工作原理,了解FPGA的硬件架构和编程模型。 3. 熟练掌握至少一种硬件描述语言(HDL),如VHDL或Verilog。 4. 具备良好的编码能力和调试技巧,能够使用综合工具将HDL代码编译为FPGA可执行文件,并能够进行功能和性能测试。 5. 熟悉至少一种高级编程语言(如C/C++、Java、Python等),能够编写程序来控制FPGA和与之交互。 6. 具备良好的沟通能力和团队合作能力,能够与客户和同事进行有效沟通。 7. 不断学习新技术和知识,保持对FPGA领域的前瞻性思考。 ### 回答2: 要成为一个FPGA工程师,首先要学习并专注于数字电子技术和计算机体系结构的基础知识。 1. 学习数字电子技术:了解数字电路基础知识,包括逻辑门、触发器、计数器等。掌握数字系统设计和综合技术。 2. 熟悉计算机体系结构:了解并掌握CPU、存储器、总线等计算机核心组件的工作原理,了解指令集体系结构和存储器层次结构等。 3. 学习硬件描述语言(HDL):熟悉至少一种HDL,例如Verilog或VHDL。学习如何使用HDL描述硬件逻辑电路。 4. 掌握FPGA开发工具:熟悉主流FPGA开发工具,如Xilinx ISE、Vivado或Altera Quartus。学习如何使用这些工具进行FPGA设计、仿真和综合。 5. 实践项目:参与各种FPGA项目,掌握FPGA设计的实际应用。可以从简单的项目开始,逐渐挑战更复杂的设计。 6. 深入学习高级主题:学习高级设计技术,如时序分析、时钟域转换、时钟约束等。了解FPGA的时序优化和资源优化方法。 7. 不断学习和更新知识:保持关注FPGA技术领域的最新发展,参加研讨会、培训课程和相关行业活动。不断更新自己的技术知识和技能。 除了以上技术方面的学习,也要发展良好的团队合作能力和解决问题的能力。沟通和合作能力对于在实际项目与团队成员和其他工程师合作至关重要。 总之,成为一个FPGA工程师需要广泛而深入的技术知识基础,并通过实际项目实践掌握相关技能。持续学习、不断更新技术知识也是非常重要的。 ### 回答3: 要成为一个FPGA工程师,需要掌握以下几个关键步骤: 1. 学习和掌握数字电路设计:了解数字电路的基本原理和常见的数字电路设计技术,如布尔代数、逻辑门、组合与时序电路等。可以通过学习相关课程、阅读教材和参加线上课程等方式,来提高自己的数字电路设计能力。 2. 学习FPGA原理和工具:熟悉FPGA(现场可编程门阵列)的工作原理、架构和常见的外设。掌握FPGA设计工具,如Xilinx的Vivado或Altera的Quartus等,这些工具可用于编写和仿真FPGA设计代码,以及将代码编译和下载到FPGA芯片上。 3. 学习HDL编程语言:掌握至少一种硬件描述语言(HDL),如VHDL或Verilog。这些语言用于描述和设计FPGA的数字电路。通过编写HDL代码来实现功能和性能要求,然后进行仿真和验证,最终实现FPGA的设计。 4. 参与项目和实践:参与和完成FPGA相关的项目可以提供实践经验和增长技能的机会。可以尝试利用FPGA实现一些小型的数字电路设计或参与开源项目,这样可以锻炼自己的设计和熟悉FPGA的实际应用。 5. 持续学习和更新知识:FPGA技术在不断发展和改变,要成为一个有竞争力的FPGA工程师,需保持持续学习和跟进最新的FPGA技术动态,学习新的工具和设计方法。 总之,要成为一个FPGA工程师需要系统学习和掌握数字电路设计、FPGA原理和工具、HDL编程语言,并通过参与项目和实践来提高自己的技能和经验。同时,持续学习和更新知识也是非常重要的,以跟上FPGA技术的发展和变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值