[X]关闭

20 FPGA知识_初识FPGA

文档创建者:FPGA课程
浏览次数:245
最后更新:2024-08-15
FPGA基础知识
FPGA基础: FPGA编程语言 » Verilog编程入门
软件版本:无

操作系统:WIN10 64bit

硬件平台:适用所有系列FPGA

板卡获取平台:https://milianke.tmall.com/

登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!

1FPGA技术背景
笔者也是在偶然的机缘下接触到FPGA,当初只有感性的认识就是FPGA速度快,而笔者是一个初出茅庐的电子技术爱好者,觉得越快越好,就去学习FPGA了,学习了FPGA才知道FPGA真不简单。

一晃8年多时间过去了,在摩尔定律下,FPGA也是从逻辑资源上不断刷新记录,笔者用过的FPGA从XILINX家族的spartan2e、spartan3e、spartan6到artix7、kintex7、zynq7000再到ultrascale、ultrascale+ MPSOC。这些年,见证了XILINX公司的从FPGA领域和Altera平分天下,到目前一家独大,感概当初运气好,当初选择了XILINX的FPGA方案。但是国际形式风云变幻,从2018年开始的中美贸易战开始,美国政府逐步禁售FPGA芯片给华为、海康威视等国内FPGA使用的大客户,逐步也让笔者感到了作为一个FPGA技术爱好者和从业者的渺小,也认识到了作为半导体技术的明珠之一”FPGA”技术,国内的FPGA差距与国外差距巨大。差距不仅仅体现在半导体工艺,还有巨大的专利壁垒。

目前Xilinx(赛灵思)、Altera(阿尔特拉)、Lattice(莱迪思)、Microsemi(美高森美)等几家,其中,Xilinx 与 Altera占有近 90% 的市场份额,专利达到 6000 余项之多。

                                                                                        图片1.jpg

                                                                                        图片2.jpg

在目前的情况下,不管是硬件成熟度、软件成熟度、生态完善,国内FPGA厂家都是无法比拟的,在这种情况下我们仍然有必要学习国外先进FPGA技术。这也是对于就业和职业最好的选择。当然笔者也在准备推广国产化的FPGA技术方案,相信在不久的将来,也许是5-10年后,国产的FPGA和配套的EDA软件也能达到目前国外FPGA巨头的水平。

2 搞清楚是否有必要学习FPGA
对于很多初次接触FPGA的读者来说,FPGA是陌生而神秘,对于学习了一段时间的读者来说,感觉FPGA强大,无所不能,而自己的技术能力却一无所能。这是很多初学者必须面对的困难,也是必须要搞清楚的问题:

1)、FPGA是什么?

2)、FPGA的优缺点是什么?

3)、FPGA的应用领域是什么?

4)、我是否有必要学习FPGA?

5)、学习FPGA的困难是什么?

6)、有什么方法与捷径?

带着这些笔者提出来的疑问,或许也是你们正在阅读这篇文章的疑问,笔者以自己从业多年的认识来为你们解答这些问题。

2.1FPGA是什么东西
早在FPGA出现前,还有CPLD,通常CPLD就是逻辑门电路芯片,而随着技术发展,新的工艺的出现,才出现了FPGA技术。FPGA虽然在功能上也是实现了逻辑门,但是实现的方式和CPLD却大不一样。由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM工艺的查找表结构。
                                                                                                    图片3.jpg



LUT本质上就是一个RAM。它把数据事先写入RAM后, 每当输入一个信号就等于输入一个地址进行查表,找出地址对应的内容,然后输出。FPGA不仅内部的逻辑功能可以通过软件编写,FPGA的IO功能也可以根据硬件电路需求重新分配定义。对于硬件电路板设计工程师,只要掌握了FPGA的硬件特性,可以在不需要和软件工程师进行复杂的沟通前提下就可以完成对硬件的设计。然后软件工程师,通过软件定义FPGA的外设功能引脚。

所以可以把FPGA就是通过程序可以实现不同的逻辑功能的芯片,而且这种方式不同于CPU的指令调度方式。下一个问题中,我们讨论FPGA和CPU的对比。

2.2FPGA的优缺点
FPGA有很多优点,比如并行处理能力强,速度快,由于FPGA硬件是可编程的特点,在一些ASIC芯片还没出现的领域或者行业,FPGA具有通过编程快速达到方案预期的好处,也可以在一些不知道去研发专用ASIC电路的领域,或者最佳的成本优势。比如通信、安防、医疗、工业、军事、航天领域,FPGA都是这些行业的明星,而且高端的FPGA技术几乎被国外技术垄断。另外和PC以及GPU相比,FPGA的综合功耗更低。

FPGA的缺点:

1)、从成本角度,FPGA不适合一些量非常大的领域使用,量非常大的领域一般有专用的ASIC芯片供应。所以如果量大,建议读者先去考虑是否有专用的ASIC芯片可以解决方案。

2)、从开发难度来说,FPGA需要很强的专业背景,以及基础的底层通信协议的编写能力,使用FPGA没有库函数给你调用的,所以基本上一切的接口都要自己去写,如果一些标准的IP或者公司自己的IP,也要掌握接口的时序调用。

3) debug困难,FPGA的有一套自己的debug方式,可以通过RTL的仿真,初步验证自己的代码逻辑是否正确,然后通过板级验证,证明在指定的FPGA芯片上看是否运行正确。而且有一些潜在的bug可能无法发现,需要大量的测试和验证。所以选择成熟的FPGA芯片以及成熟的EDA开发软件非常重要,否则入坑了,不容易出来。

4) 编译时间特别长,这是非常不幸的,即便是用目前最好的电脑,用的也是目前最好的EDA开发工具,依然非常慢,对于一个中等规模的项目开发,FPGA的编译时间可能在20~30分钟左右,一天8小时的工作时间,没多少次编译就要下班了,所以加班是经常的事情。

2.3FPGA的应用领域
FPGA广泛应用于通信、安防、医疗、工业、军事、航天领域。这些领域,当然不是全部要使用FPGA,而是一些方面不会有现成的ASIC芯片供应,说白了就是量不够大,但是对成本又不是非常敏感的行业。没错,基本上用FPGA的公司都是很有钱的公司,如果你是FPGA从业者,你的就业面基本上就是去一些大型的通信公司,或者研究所。比如华为的通信设备,很多都需要用到FPGA做通信使用,海康威视的设备很多需要用FPGA做图像加速处理、阿里云的云服务器也有用FPGA加速的,工业领域的通信、运动控制、工业摄像头等非常大量的使用FPGA,军事领域的导弹,雷达等,也都是需要用到FPGA去采集高速的AD信号,并且做并行加速,通常来说,美国的芯片是禁售给军工企业的。

目前新兴的领域比如加速运算,FPGA方案和GPU方案也是各有千秋,而且从长远看,笔者也是更看好FPGA的技术,因为FPGA的并行算法能力,可以突破摩尔定律的影响。GPU不可能无限制提高主频的,但是FPGA可以通过增加逻辑门的数量,提高并行处理的速度,从而获得更高的性能。并且在一些专业的加速算法,深度算法领域,FPGA具备更好的功耗,更低的功耗就意味着更低的使用成本。

2.4是否有必要学习FPGA
前面分析的内容,已经初步告诉你是否要学习FPGA了。除了以上的分析,还有一定的机缘。如果机缘让你遇到FPGA,请好好把握,FPGA是非常有趣的事物,需要学习的知识非常多,并且具备很大的挑战。如果对于一个学生,已经掌握了单片机,你可以选择一条往ARM方向,LINUX方向的发展路径,也可以选择一条往FPGA的通信、并行加速发展方向;但是不管如何,都需要你有专业背景,也就是把你专业领域的东西,通过这些先进的技术可以发挥作用。如果你是一个工程师,如果你们的公司要求你掌握FPGA,你就的去学习FPGA,如果你是工程师,你已经厌倦了ARM或者LINUX的枯燥,你更喜欢FPGA的并行处理能力,对FPGA的并行加速方案非常痴迷,你可以选择学习FPGA。如果你犹豫不绝,毅力不够鉴定,还是不知道自己学习FPGA的目的,那就不要学习FPGA.

2.5学习FPGA的困难
每个领域对于不会的人来说,都是难的,但是对于高手来说都是不难的。所以这个难是相对的,是相对于初学者的。

1)、你所认识的身边学习FPGA的人少,FPGA的圈子小,所以你要由做独行侠的心里准备。

2)、软件安装和使用超级复杂,一各软件都要20G以上,这还不算安装一堆软件,别人搞STM32的安装一个200多M的MDK就可以了。

3)、学习成本高,学习成本不仅仅包括硬件的投入,低端的硬件,学习的内容有限,打基础没问题,真要去公司露几手,是不行的,FPGA做的都是一些高尖端的领域,必须由几手绝活才可以吹牛。另外就是时间投入,由于很多需要基础学习,比如一个I2C,一个UART通信都要靠自己敲入每行代码,这是多痛苦 事情,别人搞STM32的以一条库函数就搞定了,你作为一个初学者,可能一个I2C或者一个UART写了1周,2周都没写稳定。

4)、大量的接口协议需要学习,比如AXI4总线,光通信、PCIE通信、接口协议不是证明你FPGA技术是否多高的,但是没有接口协议,你的自己写的控制代码,或者算法,无法借用别人已经做好的功能模块。

5)、需要会时序分析,自己每写的一行代码都要精确知道,在某一个时刻发生了什么,别人STM32库函数调用那要计算花费了多少时间,具体哪一个时刻执行了什么呢?你可能因为一个时序的代码没有精准控制,导致你花费了几天调试才找到问题。

6)、需要会看英文手册,而且会大量的无效信息中提取有用的信息,搞FPGA由中文的教程那是你的福音,更多时候需要肯英文文档,关键很多时候还没理解透彻

7)、全能通,你需要会C/C++,你需要比STM32学者更强,需要掌握microblaze SOC使用,现在出现的ZYNQ以及MPSOC,你还需要会ARM 会LINUX底层驱动的开发,调试上位机

8)、硬件分析能力,有些硬件工程师设计的硬件有问题,你还要帮忙分析测试硬件问题

9)、初学者写的代码问题很大,FPGA编译时间很长,你会经常需要加班

10)、有一台非常强大的电脑,配置当下最好的CPU,单核主频越高越好,内存越大越好,所以对于手头紧张的学生来说,还是要节省开销,配个好点电脑的,尽量不要因为硬件的问题浪费宝贵的时间。遥想笔者上学期间的穷苦潦倒,FPGA真是有点玩不起的。可以参考以下参数配置。
                                                                                       图片4.jpg


2.6方法与捷径
方法与捷径是就是如何花费更少的时间达到最佳的结果。

1)、如果你学习过C或者其他嵌入式编程的最佳了,有点基础总比没有基础的小白好

2)、FPGA编程语言选择verilog好了,虽然VHDL也是FPGA的编程语言,你能看懂VHDL就可以了,因为现在学习verilog编程语言的人多,数据也多,参考资料就多了。

3)、选择一款国内开发板,国内的开发板产业已经相对完善,适合初学者使用,配套的中文教程容易阅读,配套的例子一般也容易上手。但是国内的开发板还存在以下问题:,资料的更新比不上国外的,一些新的技术没有在教程中体现,当你完成基础的学习后,还是最好去学习国外的资料,一些FPGA最新的技术国内开发板厂家需要一定延迟才会更新,如果你总是满足于开发包板学到的内容,你得技术肯定不是最先进的,肯定也不是领先的。

4)、多加QQ群,多和别人交流,活跃的气氛有利于带动一些技术大牛和你分享他们的技术经验。

3总结
虽然我们米联客的主要盈利手段还是售卖FPGA开发板,但是我们的教程尽量不出现广告,还是纯粹探讨技术,笔者以一个FPGA爱好者,开发者的角度给大家分享自己的经验和米联客团队掌握的FPGA技术,希望能给读者在未来的FPGA从业之路起到积极的帮助,也希望大家可以更多和米联客团队分享自己的学习经验。我们米联客团队的成长离不开广大读者的参与,我们的技术分享也离不开广大FPGA开发者的分享。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则