FPGA的四点入门必备基础
0 2022-01-20

掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性。掌握了FPGA设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但FPGA入门却有一定难度,因为它不像软件设计那样只要有一台计算机,几乎就可以完成所有的设计。

下面总结的四点入门必备基础,希望能对大家在玩转FPGA上有一点帮助。

1、要了解什么是FPGA

既然要玩转FPGA,那我们首先最重要的当然是要了解什么是FPGA。FPGA(Field-Programmable Gate Array),即现场可编程门阵列。看到编程两个字码农就笑了,不就是编程嘛,那可是我们的强项。且慢,此编程非彼编程。一定要把FPGA的编程和软件编程区分开来。

软件的编程,处理器会逐条的把语言翻译成各种控制信号,去控制内部电路完成一个个运算或操作。那么FPGA的编程是怎么实现的呢?无论Altera家还是Xlinix家的FPGA,基本单元都相似,都是由真值表和D触发器构成。改变真值表的值就改变了逻辑功能,再通过和D触发器组合来实现任何时序逻辑。

所以我们对FPGA的编程,实际上就是去修改这些真值表和连接关系,使他们组成一张专门的真值表,去实现特定的功能。这和软件编程一步步运行程序有本质的区别。要想玩转FPGA,就必须理解FPGA内部的工作原理,学习如何利用这些单元实现复杂的逻辑设计。

2、正确理解HDL语言

HDL(Hardware Description Language),硬件描述语言。通过名称我们能看出来,HDL语言是一种“描述”语言,这一点和C语言是有本质区别的。正确理解描述的含义,对学好HDL语言很有帮助。HDL语言只是用文本的方式把硬件电路描述出来。我们在阅读HDL程序的时候,在脑子里应该能反映出一个完整的硬件电路结构。

从另一方面说,我们在编写HDL语言之前,就已经对要实现的电路有清晰的概念。所以HDL语言只是一个描述我们头脑中具体电路的工具,玩转FPGA的根本不是语言而是逻辑电路设计。所以不要再纠结于我应该学习VHDL还是Verilog、哪种语言更好学等这些问题。

如果把学习FPGA的重点放在学习语言上,死记硬背一些语法,那自然是抓错了重点。语言在日常使用中会越用越熟练,不需要花很长的专门时间去学习。当然,准备一本好的参考资料可以随时方便查询会是很有帮助的。

3、数字电路基础

说到底,FPGA就是一堆数字逻辑组合在一起实现特定功能而已,所以数字电路基础知识是根本。如果你连触发器、组合电路、时序电路、竞争、毛刺等基本概念还不清不楚的话,那玩转FPGA只能是痴人说梦了。

我们必须要好好的学好数字电路基础这门课,基本的数字电路要烂熟于心。把这些基础打牢固,再往更深的方向发展。什么时候能够从抽象的算法中提炼算法的结构,再分解成具体的模块并通过硬件电路实现出来,这时候就算从菜鸟级别步入老鸟级别了。

4、硬件设计思想

这一点应该说是重中之重。学习FPGA,一定要有硬件设计思想。在软件编程的时候,比如1秒钟实现了5次乘法运算,那系统要求1秒钟实现50次乘法运算怎么办?我们就要应尽可能地优化代码,让代码更简洁、更高效,或者提高系统主频,让系统跑得更快。

但是在FPGA里面,我们不是这种思维方式。在FPGA里实现一个乘法器不够用,那我就实现两个、实现三个去满足系统要求;我可以进行流水线设计;串行运行方式不够快的话,我可以先串并转换,再并行地做处理……只要FPGA的资源够用,我就可以充分利用资源去满足系统要求。因为在我手里就是一堆硬件资源,我要做的是把它们组合成一个好用的电路。评价硬件描述语言写得好坏的标准和其他软件编程语言的标准是完全不同的。因此一定要摒弃软件编程的一些固有思路,学会用硬件的方式去解决问题。

要时刻提醒自己正在设计的是一个电路,而不是一行行空洞的代码。这是很多做软件编程的人很难跨过的坎。FPGA学了很久,却还在纠结到底是用if_else语句好还是用case语句好,而不能透过这些语句表面看到它们所具体代表的电路。只有建立了硬件设计思想,才有更深入学习FPGA的可能。

FPGA入门简单精通难。要想入门,买一块开发板跟着例程走一遍,很多人都能在很短的时间内熟悉开发软件的操作方法,并且点亮开发板上的LED或者再实现个跑马灯什么的。但是再往后进步往往就进展很慢。

上面提到的这四条是玩转FPGA的基础,只有打好了坚实的基础,后面才能一马平川。 

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • FPGA
  • 可编程
  • PLC
  • verilog
  • 时序图、活动图、状态图、协作图的区别

    [导读]时序图时序图用于描述对象之间的传递消息的时间顺序, 即用例中的行为顺序.当执行一个用例时, 时序图中的每条消息对应了一个类操作或者引起转换的触发事件.在

    8小时前
  • 时序图读写总结

    [导读]一直不是很明白时序图的读写操作,上网搜了很久都找不到一份很好的资料,我故自己知道一点后就来记录一些,经常更新自己对时序图的理解吧,上网搜的时候很多人说时

    8小时前
  • 超声波液体密度计与基于FPGA的控制

    0 引言液体密度是许多工业中的重要参数,它可以直接参与生产过程中的控制和决策,因此对液体密度进行快速而准确的在线检测有着重要的意义。尤其是在石油、化工、食品、医

    05-12
  • PLC 评估板简化工业过程控制系统设计

    工业过程控制系统应用多种多样,范围覆盖从简单的流量控制到复杂的电网,从环境控制系统到炼油厂过程控制。这些自动化系统的智能性依赖于它们的测量和控制单元。可编程逻辑

    05-10
  • 帧同步系统的如何基于FPGA实现其设计

    1、 引言数字通信时,一般以一定数目的码元组成一个个“字”或“句”,即组成一个个“帧”进行传输,因此帧同步信号的频率很容易由位同步信号经分频得出,但每个帧的开头

    04-29
  • 基于CPLD 的微型脉冲供电式光电倒置开关方案

      在应用存储测试技术进行现场测试时,测试系统通常安装在被测体上,由于被测体所处的环境恶劣,对测试系统提出了严格要求:微体积、微功耗、高可靠性、耐高低温、抗高冲

    04-28
  • FPGA 电源排序解决方案

    当采用现场可编程门阵列(FPGA)进行设计时,电源排序是需要考虑的一个重要的方面。通常情况下,FPGA 供应商都规定了电源排序要求,因为一个FPGA所需要的电源

    04-24
  • 在FPGA中直接使用PCIe的IP核实现

    PCIe链路协议使用“端到端的数据传送方式”,发送端和接收端中都含有TX(发送逻辑)和RX(接收逻辑)。PCIe协议采用分层结构,分为事务层、数据链路层和物理层

    04-22
  • FPGA的上电过程和三种常见配置模式

    目前,大多数FPGA芯片是基于 SRAM的结构的, 而 SRAM 单元中的数据掉电就会丢失,因此系统上电后,必须要由配置电路将正确的配置数据加载到 SRAM 中

    04-22
  • FPGA通用CCD驱动设计的4种实现方式

      1引言   电荷耦合器CCD具有尺寸小、精度高、功耗低、寿命长、测量精度高等优点,在图像传感和非接触测量领域得到了广泛应用。由于CCD芯片的转换效

    04-21
  • FPGA 实现 的5 级流水高速浮点乘法器

      摘要:设计了一种支持IEEE754浮点标准的32位高速流水线结构浮点乘法器。该乘法器采用新型的基4布思算法,改进的4:2压缩结构和部分积求和电路,完成Car

    04-21
  • 采用 SD 卡存储配置数据的FPGA配置方案

      摘要:本文首先简略介绍了几种当前对Virtex系列FPGA进行配置的方式和其不足之处,在此基础上提出了一种使用微处理器读取SD卡中的配置数据,并通过SELE

    04-21
下载排行榜
更多
广告