首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅谈FPGA

FPGA Field Programmable Gate Array)即现场可编程门阵列,是在PAL、GAL、EPLD、CPLD等可编程逻辑器件的基础上发展起来,它是作为ASIC领域中的一种半定制电路而出现。FPGA的应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、网络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。越来越多的设计也开始以ASIC转向FPGA, FPGA正以各种电子产品的形式进入了我们日常生活的各个角落。

在最高层面上,FPGA是可重新编程的硅芯片。使用预建的逻辑块和可重新编程布线资源,用户无需再使用电路试验板或烙铁,就能配置这些芯片来实现自定义硬件功能。用户在软件中开发数字计算任务,并将它们编译成配置文件或比特流,其中包含元器件相互连接的信息。此外,FPGA可完全可重配置,当用户在重新编译不同的电路配置时,能够当即呈现全新的特性。

各行各业纷纷采用FPGA芯片是源于FPGA融合了ASIC和基于处理器的系统的最大优势。 FPGA能够提供硬件定时的速度和稳定性,且无需类似自定制ASIC设计的巨额前期费用的大规模投入。可重新编程的硅芯片的灵活性与在基于处理器的系统上运行的软件相当,但它并不受可用处理器内核数量的限制。与处理器不同的是,FPGA属于真正的并行实行,因此不同的处理操作无需竞争相同的资源。 每个独立的处理任务都配有专用的芯片部分,能在不受其它逻辑块的影响下自主运作。因此,添加更多处理任务时,其它应用性能也不会受到影响。

过去,只有熟知数字硬件设计的工程师懂得使用FPGA技术。 然而,高层次设计工具的兴起正在改变FPGA编程的方式,其中的新兴技术能够将图形化程序框图、甚至是C代码转换成数字硬件电路,大大降低了FPGA开发难度。

FPGA的几大优势:

优势一:更大的并行度

FPGA内部程序并行运行,即多个模块之间可以同时独立进行计算。单片机程序是串行执行的,执行完一条才能执行下一条,在处理突发事件时只能调用有限的中断资源;而FPGA不同逻辑可以并行执行,可以同时处理不同任务,这就导致了FPGA工作更有效率。

优势二:可定制

FPGA 内部通过Lookup Table实现逻辑,可以简单理解为是硬件电路。FPGA 最大的特点就是灵活,可定制指的是在资源允许范围内,用户可实现你想实现的任何数字电路,可以定制各种电路,且不受制于专用芯片的束缚,在设计的过程中可以灵活的更改设计。

优势三:可重构

可重构指的是FPGA内部的逻辑可根据需求改变,减少开发成本。同时,使用FPGA复用资源比使用多个固定的ASIC模块为服务器省下更多的空间。

优势四:运行速度快

FPGA内部集成锁项环,运算速度快,编程简易,可以把外部时钟倍频。相比而言,单片机运行速度就低的多。在高速场合,单片机无法代替FPGA,而且有些高端的FPGA芯片内部给你集成了很多有用的模块,简化了设计。

优势五:开发简单

FPGA管脚多,有丰富的IO资源,可以很容易用不同IO连接各外设。而且FPGA有大量软核,可以方便进行二次开发FPGA甚至包含单片机和DSP软核,并且IO数仅受FPGA自身IO限制,所以,FPGA又是单片机和DSP的超集,也就是说,单片机和DSP能实现的功能,FPGA一般都能实现。

简单来说,FPGA以其灵活性,吸引很多产品以及领域的关注度,FPGA设计师也越来越多,而且都是高收入群体。那接下来我们简单谈谈,如何快速的入门FPGA呢?

如何快速入门FPGA:

第一, 学习数电

上面也说过了,FPGA的设计说白了就是数字电路的设计,那自然首先得明白什么是数字电路,了解数字电路。这个对于绝大多数工科学生,在本科期间基本都已经学习过数字电路,因此,这部分相对就比较简单了。

第二, 学习编程语言

FPGA使用的语言主要有Verilog HDL和VHDL,这两种语言对于开发来说其实没有太大的区别,主要看开发者的习惯。Verilog HDL和VHDL有点类似C语言和汇编语言的区别,Verilog HDL在语法上相对比较简单,易于掌握,而VHDL相对较为复杂。Verilog HDL的语法比较类C,对于学习过C语言的同学,学习起来基本没有难度。

第三, 熟悉开发环境

FPGA的开发环境主要取决于所选用的FPGA芯片厂家,厂家都会提供用户相应的开发环境,功能和流程上大同小异。现在主流的FPGA芯片有Xilinx和Altera,开发环境分别为ISE和Quartus,很多军品和宇航产品还使用Actel的FPGA,对应Libero开发环境。

第四, 掌握简单数字电路设计

待上述知识点掌握后,就可以开始设计简单的数字电路了。在这个阶段,你需要设计简单的数字电路来逐步掌握了解FPGA的整个开发过程,可以先从模仿别人的设计开始,渐渐了解学习。在此,你需要一个开发板来系统的学习,毕竟FPGA原是数字电路,最终需要在硬件上来看设计效果。

第五, 学习调试、仿真工具

FPGA实际上是硬件设计,在调试过程中没有软件那么便捷,可以设置断点来逐步调试。此时,调试工具和仿真就显得格外重要了,一般调试工具使用逻辑分析仪,这个每个开发软件里都具备这项功能。仿真工具一般用Modelsim,可以进行功能、时序仿真。

注:首图来自小脚丫FPGA。

需要添加微信交流讨论群的用户可以添加微信公众号客服并发送消息说明要添加的群(四轴、STM32、ESP8266、PCB设计四个群选择其一),微信公众号客服微信号:electricstudyer,二维码如下:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190128A14NBT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券