为什么大批的人会觉得FPGA难学?这些道理你都知道吗?

>2019-08-14 16:08:58 来源:硬件十万个为什么
标签:

问:本人零基础,想学FPGA,求有经验的人说说,我应该从哪入手,应该看什么教程,应该用什么学习板和开拓板,看什么书等,盼望有经验的好心人可以或许或许给我一些引导。

 

如果想速成,那就上网看视频吧,如许重要是面对应用的,一个小时内让你的板子运行起来。早期起来的快,活学活用,便是后期没有体系实践支撑,会有些吃力,分外是大项目,那完全是个悲剧。国内做的可以或许的,我知道的便是周建功了,艾米电子也可以或许吧。这两家都有学习板,不过后者的教程抄袭前者的。前者功底深厚些,资金不重要就买前者吧。速成的话,数电书一定一定必备,边看边学比较好。其余的书可以或许适量买点。

 

其实只要有兴趣,慢慢学,入门也不难,板子就去网购吧,我去华强北逛了好屡次了,都没什么好板子。网购大把的!

 

总结几点

1、看代码,建模子

只要在脑海中树立了一个个逻辑模子,懂得FPGA内部逻辑布局实现的基础,能力明白为什么写Verilog和写C全体思绪是不一样的,能力懂得顺序履行语言和并行履行语言的设计办法上的差异。在看到一段简略程序的时候应该想到是什么样的功效电路。

 

2、用数学思维来简化设计逻辑

学习FPGA不只逻辑思维很重要,好的数学思维也能让你的设计化繁为简,所以啊,那些看见高数就头疼的童鞋必要看重一下这门课哦。举个简略的例子,比如有两个32bit的数据X[31:0]与Y[31:0]相乘。当然,不管Altera还是Xilinx都有现成的乘法器IP核可以或许调用,这也是最简略的办法,但是两个32bit的乘法器将消耗大批的资源。那么有没有节省资源,又不太复杂的办法来实现呢?咱咱咱们可以或许稍做修改:

 

将X[31:0]拆成两部分X1[15:0]和X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],则X1左移16位后与X2相加可以或许获得X;同样将Y[31:0]拆成两部分Y1[15:0]和Y2[15:0],令 Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],则Y1左移16位后与Y2相加可以或许获得Y;则X与Y的相乘可以或许转化为X1和X2 分离与Y1和Y2相乘,如许一个32bit*32bit的乘法运算转换成为了四个16bit*16bit的乘法运算和三个32bit的加法运算。转换后的占用资源将会削减很多,有兴趣的童鞋,不妨综合一下看看,看看两者差多少。

 

3、时钟与触发器的相干

“时钟是时序电路的节制者”这句话太经典了,可以或许说是FPGA设计的圣言。FPGA的设计重要因此时序电路为主,因为组合逻辑电路再怎么复杂也变不出太多名堂,懂得起来也不没太多艰难。但是时序电路就制缌,它的统统举动都是在时钟一拍一拍的节奏下改变触发,可以或许说时钟便是全体电路的节制者,节制不好,电路功效就会混乱。

 

打个比方,时钟就相当于人体的心脏,它每一次的跳动便是触发一个 CLK,向身体的各个器官供血,维持着机体的正常运作,每个器官体统正常工作少不了构造细胞的构成,那么触发器就可以或许或许比作基本单位构造细胞。时序逻辑电路的时钟是节制时序逻辑电路状况转换的“发动机”,没有它时序逻辑电路就不能正常工作,因为时序逻辑电路重要是利用触发器存储电路的状况,而触发器状况变换必要时钟的上升或下降沿!由此可见时钟在时序电路中的中央感化!

 

末了简略说一下体会吧,归结起来便是多实践、多思虑、多问。实践出真知,看100遍别的计划不如自己去实践一下。实践的能源一方面来自兴趣,一方面来自压力,我小我觉得后者更重要。有需要会容易构成压力,也便是说最佳能在实的项目开拓中锻炼,而不是为了学习而学习。在实践的过程中要多思虑,多想想成就出现的原因,成就解决后要多问几个为什么,这也是经验积聚的过程,如果有写项目日志的习惯更好,把成就及原因、解决的办法都写进去。末了还要多问,碰到成就思索后还得不到解决就要问了,毕竟小我的力量是有限的,问同学共事、问搜索引擎、问网友都可以或许,一篇文章、同伙咱咱们的点拨都可能帮助自己疾速解决成就。

 

为什么大批的人会觉得FPGA难学?

1、不认识FPGA的内部布局,不了解可编程逻辑器件的基本原理

FPGA为什么是可以或许或许编程的?恐怕很多菜鸟不知道,他咱咱们也不想知道。因为他咱咱们觉得这是无关紧要的。他咱咱们潜意识的认为可编程嘛,确定便是像写软件一样啦。软件编程的思想根深蒂固,看到Verilog或许VHDL就像看到C语言或许其它软件编程语言一样。一条条的读,一条条的阐发。如果这些菜鸟咱咱们不停拒绝去了解为什么FPGA是可以或许或许编程的,不去了解FPGA的内部布局,要想学会FPGA 恐怕是天方夜谭。虽然如今EDA软件已经非常先辈,像写软件那样照猫画虎也能综合出点东西,但也许只要天知道EDA软件末了综合进去的到底是什么。也许点个灯,跑个马还行。如许便是为什么很多菜鸟学了N久以后依然是一个菜鸟的原因。那么FPGA为什么是可以或许或许“编程”的呢?首先来了解一下什么叫“程”。启示 “程”只不过是一堆具有一定含义的01编码而已。

 

编程,其实便是编写这些01编码。只不过咱咱咱们如今有了很多开拓对象运算或许是其它操纵。所以软件是一条一条的,通常都不是间接编写这些01编码,而因此高级语言那槭来编写,末了由开拓对象转换为这种01编码而已。对付软件编程而言,处理器会有一个专门的译码电路逐条把这些01编码翻译为各种节制信号,然后节制其内部的电路实现一个个的读,因为软件的操纵是一步一步实现的。而FPGA的可编程,本质也是依靠这些01编码实现其功效的改变,但制的是FPGA之所以可以或许或许实现制的功效,不是依靠像软件那样将01编码翻译进去再去节制一个运算电路,FPGA里面没有这些东西。

 

FPGA内部重要三块:可编程的逻辑单位、可编程的连线和可编程的IO?椤可编程的逻辑单位是什么?其基本布局某种存储器(SRAM、 FLASH等)制成的4输入或6输入1输入地“真值表”加上一个D触发器构成。任何一个4输入1输入组合逻辑电路,都有一张对应的“真值表”,同样的如果用这么一个存储器制成的4输入1输入地“真值表”,只必要修改其“真值表”内部值就可以或许等效出任意4输入1输入的组合逻辑。这些“真值表”内部值是什么?便是那些01编码而已。如果要实现时序逻辑电路怎么办?这不又D触发器嘛,任何的时序逻辑都可以或许转换为组合逻辑+D触发器来实现。但这毕竟只实现为了4输入1输入的逻辑电路而已,通常逻辑电路的规模那是相当的大哦。

 

那怎么办呢?这个时候就必要用到可编程连线了。在这些连线上有很多用存储器节制的链接点,颠末过程改写对应存储器的值就可以或许或许确定哪些线是连上的而哪些线是断开的。这就可以或许或许把很多可编程逻辑单位组合起来构成大型的逻辑电路。末了便是可编程的IO,这其实是FPGA作为芯片级应用必需要注意的。

 

任何芯片都必然有输入引脚和输入引脚。有可编程的IO可以或许任意的定义某个非公用引脚(FPGA中有专门的非用户可应用的测试、下载用引脚)为输入还是输入,还可以或许对IO的电平模范停止设置。总归一句话,FPGA之所以可编程是因为可以或许颠末过程分外的01代码制作成一张张 “真值表”,并将这些“真值表”组合起来以实现大规模的逻辑功效。

 

不了解FPGA内部布局,就不能明白最终代码如何变到FPGA里面去的。也就无法深入的了解如何可以或许或许充足利用FPGA。如今的FPGA,不单单是有前面讲的那三块,另有很多公用的硬件功效单位,如何利用好这些单位实现复杂的逻辑电路设计,是菜鸟迈向高手的路上必必要克服的障碍。而这统统,还是必需先从了解FPGA内部逻辑及其工作原理做起。

 

2、错误懂得HDL语言,怎么看都看不出硬件布局

HDL语言的英语全称是:Hardware Deion Language,注意这个单词Deion,而不是Design。老外为什么要用Deion这个词而不是Design呢?因为HDL确切不是用用来设计硬件的,而仅仅是用来描述硬件的。描述这个词精确地反映了HDL语言的本质,HDL语言不过是已知硬件电路的文本表示情势而已,只是将以后的电路用文本的情势描述进去而已。而在编写语言之前,硬件电路应该已经被设计进去了。语言只不过是将这种设计转化为文字表达情势而已。但是很多人就不懂得了,既然硬件都已经被设计进去了,间接拿去制作部就完了,为什么还要转化为文字表达情势再颠末过程EDA对象这些麻烦的流程呢?其实这便是很多菜鸟没有了解设计的形象层次的成就,任何设计包含什么打扮、机械、广告设计都有一个形象层次的成就。就拿广告设计来说吧,末了的设计也许便是一个概念,设计出这个概念也是便是一个点子而已,离最终拍成广告还差得很远。

 

硬件设计也是有分歧的形象层次,每个层次都必要设计。最高的形象层次为算法级、然后依次是体系布局级、存放器传输级、门级、物理版图级。应用HDL的好处在于咱咱咱们已经设计好了一个存放器传输级的电路,那么用HDL描述以后转化为文本的情势,剩下的向更低层次的转换就可以或许让EDA对象去做了,这就大大的低落了工作量。这便是可综合的概念,也便是说在对这一形象层次上硬件单位停止描述可以或许被EDA对象懂得并转化为底层的门级电路或其余布局的电路。

 

在FPGA设计中,便是在将这以形象层级的意见描述成HDL语言,就可以或许颠末过程FPGA开拓软件转化为成就1中所述的FPGA内部逻辑功效实现情势。HDL也可以或许描述更高的形象层级如算法级或许是体系布局级,但目前受限于EDA软件的睁开,EDA软件还无法懂得这么高的形象层次,所以 HDL描述如许形象层级是无法被转化为较低的形象层级的,这也便是所谓的不行综合。所以在阅读或编写HDL语言,分外是可综合的HDL,不应该看到的是语言自己,而是要看到语言眼前所对应的硬件电路布局。如果看到的HDL不停是一条条的代码,那么这种人永久摆脱不了菜鸟的宿命。假如哪一天看到的代码不再是一行行的代码而是一块一块的硬件模块,那么恭喜脱离了菜鸟的级别,进入不那么菜的鸟级别。

 

3、FPGA自己不算什么,统统皆在FPGA之外,这一点恐怕也是很多学FPGA的菜鸟最难懂得的地方

FPGA是给谁用的?很多黉舍解释为给学微电子专业或许集成电路设计专业的门生用的,其实这不过是很多黉舍受资金限制,买不起专业的集成电路设计对象而用FPGA对象替代而已。其实FPGA是给设计电子体系的工程师应用的。这些工程师通常是应用已有的芯片搭配在一路实现一个电子设备,如基站、机顶盒、视频监控设备等。当现有芯片无法称心体系的必要时,就必要用FPGA来疾速的定义一个能用的芯片。

 

前面说了,FPGA里面无法便是一些“真值表”、触发器、各种连线和一些硬件资源,电子体系工程师应用FPGA停止设计时无非便是考虑如何将这些以后资源组合起来实现一定的逻辑功效而已,而不必像IC设计工程师那样不停要存眷到末了芯片是不是可以或许或许被制作进去。本质上和利用现有芯片组合成分歧的电子体系没有差别,只是必要存眷更底层的资源而已。要想把FPGA用起来还是简略的,因为无非便是那些资源,在懂得了前面两点再搞个试验板,跑跑试验,做点简略的东西是可以或许或许的。而真正要把FPGA用好,那光懂点FPGA知识就远远不够了。因为最终要让FPGA里面的资源如何组合,实现何种功效能力称心体系的必要,那就必要懂得更多更普遍的知识。

 

目前FPGA的应用重要是三个偏向:

第一个偏向,也是传统偏向重要用于通讯设备的高速接口电路设计,这一偏向重要是用FPGA处理高速接口的协定,并实现高速的数据收发和交换。这类应用通常请求采纳具有高速收发接口的 FPGA,同时请求设计者懂得高速接口电路设计和高速数字电路板级设计,具有EMC/EMI设计知识,和较好的模拟电路基,必要解决在高速收发过程中发生的信号完备性成就。FPGA末了和到目前最广的应用便是在通讯领域,一方面通讯领域必要高速的通讯协定处理办法,另外一方面通讯协定随时在修改,非常不得当成成专门的芯片。因此可以或许或许机动改变功效的FPGA就成为首选。到目前为止FPGA的一半以上的应用也是在通讯行业。

 

第二个偏向,可以或许称为数字信号处理偏向或许数学计算偏向,因为很大程度上这一偏向已经大大超出了信号处理的领域。例如早就在2006年就听说老美将FPGA用于金融数据阐发,后来又见到有将FPGA用于医学数据阐发的案例。在这一偏向请求FPGA设计者有一定的数学功底,可以或许懂得并改良较为复杂的数学算法,并利用FPGA内部的各种资源使之可以或许变为实际的运算电路。目前真正度适用的还是在通讯领域的无线信号处理、信道编解码和图像信号处理等领域,其它领域的研究正在睁开中,之所以挥大批适用的重要原因还是因为学金融的、学医学的不了解这玩意。不过最近发现欧美有很多电子工程、计算机类的博士转入到金融行业,睁开金融信号处理,相信跟着转入的人增长,FPGA在其它领域的数学计算功效会更好的发挥进去,而我也有意做一些这些方面的研究。不过国内学金融的、学医的恐怕连数学都很少用到,就不用说用FPGA来帮助他咱咱们实现数学_运算了,这个成就只要再议了。

 

第三个偏向便是所谓的SOPC偏向,其实严厉意义上来说这个已经在FPGA设计的领域之内,只不过是利用FPGA这个平台搭建的一个嵌入式体系的底层硬件环境,然后设计者重要是在上面停止嵌入式软件开拓而已。设计对付FPGA自己的设计时相当少的。但如果触及到必要在FPGA做专门的算法加快,实际上必要用到第二个偏向的知识,而如果必要设计公用的接口电路则必要用到第一个偏向的知识。就目前SOPC偏向睁开其实远不如第一和第二个偏向,其重要原因是因为SOPC以FPGA为主,或许是在FPGA内部的资源实现一个“软”的处理器,或许是在FPGA内部嵌入一个处理器核。但大多数那入式设计却因此软件为中央,以现有的硬件睁开环境来看,多数环境下的接口都已经模范化,并不必要那么大的FPGA逻辑资源去设计太过复杂的接口。

 

而且就目前看来SOPC相干目拓对象还非常的不完善,以ARM为代表的各种嵌入式处理器开拓对象却早已深入民气,大多数以ARM为中央的SOC芯片供给了大多数模范的接口,大批成系列的单片机/嵌入式处理器供给了相干行业所必要的硬件加快电路,必要专门定制硬件场合确切很少。

 

通常是在一些特种行业才会在这方面有非常迫切的必要。即使目前Xilinx将ARM的硬核加入到FPGA里面,相信目前的环境不会有太大改观,不要忘了很多老掉牙的8位单片机还在嵌入式领域混呢,嵌入式重要不是靠硬件的差异而更多的是靠软件的差异来体当价值的。

 

我已经看好的是 cypress的Psoc这一设法主意。和SOPC系列分歧,Psoc的思想史载SOC芯片里面去嵌入那么一小块FPGA,那如许其实可以或许或许称心嵌入式的那些微小的硬件接口差异,比如某个利用必要4个USB,而通常的处理器不会供给那么多,就可以或许或许用这么一块FPGA来供给多的USB接口。而另外一种利用必要6个 UART,也可以或许或许用同样的办法实现。

 

对付嵌入式设计公司来说他咱咱们只必要备货一种芯片,就可以或许或许满意这些设计中各种微小的差异变更。其重要的差异化仍然是颠末过程软件来实现。但目前cypress过于封闭,如果其采纳ARM作为处理器内核,借助其完备的对象链。同时凋谢IP合作,让大批的第三方为它供给IP设计,其实是很有盼望的。但目前cypress的日子怕不太好过,Psoc的思想也不知道什么时候可以或许或许发光。

 

4、数字逻辑知识是基本。不管是FPGA哪个偏向,都离不开数字逻辑知识的支撑。FPGA说白了是一种实现数字逻辑的办法而已。如果连最基本的数字逻辑的知识都有成就,学习FPGA的愿望只是空中楼阁而已。而这,恰恰是很多菜鸟最不乐意去面对的成就。数字逻辑是任何电子电气类专业的专业基础知识,也是必必要学好的一门课。很多人无非是学习了,考个试,完了。

 

如果不能将数字逻辑知识烂熟于心,养成优越的设计习惯,学FPGA到末了仍然是雾里看花水中望月,不停是一场空的。以上四条只是我目前总结菜鸟咱咱们在学习FPGA时所最容易跑偏的地方,FPGA的学习其实就像学习围棋一样,学会如何在棋盘上落子很容易,成为一名高手却是难上加难。要真成为李昌镐那样的神一样平常的选手,除了靠刻苦专研,恐怕还确切得要一点天赋。

 
存眷南京电子资讯网微信 ( ee-focus )
限量版产业观察、行业静态、技术大餐每日推荐
享用快时代的佳构慢阅读
 

 

持续阅读
FPGA是否可以或许脱离CPU自力安排?

作为一种布可重构的体系布局,FPGA经常被用作公用芯片(ASIC)的小批量替代品,跟着全球数据中央的大规模支配,和人工智能应用的落地,FPGA凭仗壮大的计算能力和高度的机动性有了更多的用武之地。

如何寻找并应用一个适用于FPGA的机械学习平台?
如何寻找并应用一个适用于FPGA的机械学习平台?

跟着摄像头推溆嗌璞发生的数据在疾速增长,促使人咱咱们利用机械学习从汽车、安防推溆嘤用发生的影像中提取更多有用的信息。公用器件有望在嵌入式视觉应用中实现高机能机械学习 (ML) 推理。但是此类器件大都处于早期开拓阶段,因为设计职员正在极力寻找最有用的算法,甚至人工智能 (AI) 研究职员也在敏捷推演新办法。

FPGA 设计经验分享

从大学时代第一次接触FPGA 至今已有10多年的光阴,至今记得当初第一次在EDA试验平台上实现数字秒表、抢答器、密码锁等试验时那个兴奋劲。

FPGA小技能:面积换速率的实例讲解
FPGA小技能:面积换速率的实例讲解

在FPGA中,如果要将一个采样率为480MHz,中频频率为302.5MHz的信号变频到零中频的基带信号,要怎么做呢?

践行“数据中央优先”计谋,赛灵思再发U50完善Alveo平台

IDC预测,到2025年,全球将有416亿台物联网设备,并将发生79.4 zettabytes(zb)的数据。虽然数据被看作未来的煤油,但是同样也必要壮大的算力将无序的数据加以提取,构成有用信息,能力给用户带来价值。因为数据在源源赓续发生,只凭仗CPU停止计算已经远远无法称心必要,于是设计职员开端采纳异构架构为数据中央加快,FPGA发挥越

更多资讯
剑指 CPU 和 GPU,FPGA 开拓新战场

在网络、计算和存储领域,越来越多的应用必要公用的架构,以使硬件可以或许和算法停止匹配,从而到达最佳运行效果,或许是提高它的运行速率。如今,网络上有很多分歧的数据,这些数据在运行过程傍边,它的请求是不一样的。

谷歌用了数千块TPU重建出了果蝇大脑神经图,能用来做什么?

研究大脑神经网络,又有新进展。

Xilinx扩大 Alveo 系列产品,推出面向任意效劳器和各种云的业界首款自顺应计算、网络和存储加快器卡

自顺应和智能计算的全球抢先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX))本日宣布推出 Alveo? U50,进一步扩大其Alveo 数据中央加快器卡产品组合。

英特尔联袂 HPE 供给全新可编程加快卡,助力扩大工作负载加快

英特尔本日宣布将与 Hewlett Packard Enterprise* (HPE) 合作,为 HPE ProLiant DL380 Gen10 效劳器供给更强的工作负载加快能力。此举旨在借助全新高机能英特尔? FPGA 可编程加快卡(英特尔? FPGA PAC)D5005 以满意计算密集型市场必要,如流阐发、媒体转码、金融技术和网络安

恰逢其时,Xilinx 拥抱Solarflare SmartNIC

当赛灵思确定公司未来的重点将是实现数据中央加快,和从芯片供给商改变为供给下一代平台公司的时候,赛灵思高层履行团队就已经在着手确定和物色可以或许支撑这些计谋的关键技术和可以或许供给这些关键技术的企业,而Solarflare 公司就在咱咱咱们的候选名单傍边。

友情链接:中国建筑装饰网  日红宝理财网  朗天财经网  中国江苏消防网  家怡园林苗木网  跑步机维修网  辽宁中医药大学附属医院  天成资讯网  优质网络科技资讯网  钓鱼学习网