很多FPGA初學(xué)者,都會(huì)懷疑學(xué)習(xí)FPGA有沒(méi)有前途,發(fā)展前景怎么樣,到底該怎樣學(xué)習(xí)FPGA???各種迷茫,導(dǎo)致無(wú)法踏踏實(shí)實(shí)、全身心投入FPGA學(xué)習(xí)與開(kāi)發(fā)工作中。下面請(qǐng)看看一個(gè)死磕FPGA 15年的大神給大家的肺腑之言,相信看完之后的你不在徘徊、不再猶豫、能夠勇往直前。
作為一個(gè)從事了15年FPGA行業(yè)的大齡工程師。期間接也觸過(guò)一些項(xiàng)目管理和技術(shù)支持之類(lèi)的工作,但總覺(jué)得自己更適合死磕技術(shù)。在FPGA的領(lǐng)域找到未來(lái)的指引。”
做FPGA不只是寫(xiě)寫(xiě)代碼
“FPGA作為數(shù)字系統(tǒng)的主角兒,經(jīng)過(guò)近20年的突飛猛進(jìn)發(fā)展,大家都明白這個(gè)領(lǐng)域的工程師對(duì)經(jīng)驗(yàn)是非常看重的,屬于典型的入門(mén)簡(jiǎn)單,若要精深就很難,做FPGA開(kāi)發(fā)不只是會(huì)寫(xiě)寫(xiě)verilog和VHDL代碼這么簡(jiǎn)單,而是要設(shè)計(jì)芯片,如果按照芯片的設(shè)計(jì)要求,才能提高自身的能力。”
“硬件開(kāi)發(fā)語(yǔ)言是用來(lái)設(shè)計(jì)芯片的,而數(shù)字芯片也就是0/1的翻轉(zhuǎn),HDL能夠逐漸映射出一個(gè)個(gè)與非門(mén)、觸發(fā)器、存儲(chǔ)器,以及他們之間的時(shí)序關(guān)系,時(shí)時(shí)刻刻考慮怎樣設(shè)計(jì)才能保證面積小、延遲低。功能做對(duì)了還要考慮時(shí)序優(yōu)化,即使功能設(shè)計(jì)的再完美,代碼寫(xiě)的再簡(jiǎn)潔,設(shè)計(jì)的時(shí)候沒(méi)有考慮時(shí)序,一切都是花架子、空擺設(shè)。”
FPGA是數(shù)字系統(tǒng)的主角
“FPGA逐漸從粘合邏輯轉(zhuǎn)變?yōu)橄到y(tǒng)級(jí)角色。開(kāi)始的時(shí)候主要用于做接口、做通信,也就是偏向硬件。如此,最基本的接口協(xié)議便很重要,不懂接口協(xié)議FPGA就是孤家寡人,沒(méi)有數(shù)據(jù)的交互,什么都干不了,故一個(gè)成熟的FPGA工程師不是熟悉FPGA就好。”
后來(lái),F(xiàn)PGA開(kāi)始逐漸用來(lái)做做算法、做控制,如果要用FPGA做算法,還需要學(xué)習(xí)更高級(jí)的語(yǔ)言做仿真和驗(yàn)證,更重要的是要把算法映射到FPGA的硬件資源或者外設(shè),并基于速度、面積和功能做平衡,做優(yōu)化。還是挺有挑戰(zhàn)呢。
現(xiàn)在,隨著人工智能、機(jī)器視覺(jué)的崛起,F(xiàn)PGA更加偏向系統(tǒng)級(jí)設(shè)計(jì),有了軟件算法的異構(gòu),能夠替代GPU和CPU”.
所以,已經(jīng)在路上的不用回頭,也許你面前溝溝坎坎很難走,甚至有一堵墻遮光蔽日,但是,前途是絕對(duì)光明的。
01、FPGA入門(mén)之道
對(duì)于新手學(xué)習(xí)FPGA設(shè)計(jì),要從基礎(chǔ)開(kāi)始做,基礎(chǔ)牢,才有成為高手的可能。
以下幾步是初學(xué)者必須要踏實(shí)走過(guò)的:
step 1:
了解FPGA結(jié)構(gòu),F(xiàn)PGA到底是什么東西,芯片里面有什么,不要開(kāi)始就拿個(gè)開(kāi)發(fā)板照著別人的東西去編程。只有了解了FPGA內(nèi)部的結(jié)構(gòu)才能明白為什么寫(xiě)Verilog和寫(xiě)C整體思路是不一樣的。
step2:
了解了FPGA的結(jié)構(gòu)和設(shè)計(jì)流程才有可能知道怎么去優(yōu)化設(shè)計(jì),提高速度,減少資源,不要急躁,不要再為選擇什么語(yǔ)言和選擇哪個(gè)公司的芯片上下功夫。語(yǔ)言只是一種表達(dá)的方式,重要的是你的思維模式,沒(méi)有好的指導(dǎo)思想,語(yǔ)言用得再好,不過(guò)是個(gè)懂語(yǔ)言的人。
step3:
開(kāi)始學(xué)習(xí)代碼了。一定要系統(tǒng)的,由淺入深的去學(xué)習(xí)FPGA。
step4:
template很重要。能不能高效利用fpga資源,一是了解fpga結(jié)構(gòu),二是了解欲實(shí)現(xiàn)的邏輯功能和基本機(jī)構(gòu),三是使用正確的模板。FPGA內(nèi)部器件種類(lèi)相對(duì)較單一,用好模板,你的邏輯才能被高效的綜合成FPGA擅長(zhǎng)表達(dá)的結(jié)構(gòu)。
做fpga主要是要有電路的思想,作為初學(xué)者,往往對(duì)器件可能不是熟悉,但對(duì)于數(shù)字電路的知識(shí)應(yīng)該很熟悉,fpga中是由觸發(fā)器和查找表以及互聯(lián)線(xiàn)等基本結(jié)構(gòu)組成的,其實(shí)我們?cè)诖a里面能夠看到的就是與非門(mén)以及觸發(fā)器,切記不要把verilog和c語(yǔ)言等同起來(lái),沒(méi)有什么可比性,根本就是不同的東西,在寫(xiě)一句FPGA程序的時(shí)候應(yīng)該想到出來(lái)的是一個(gè)什么樣的電路,計(jì)數(shù)器,選擇器 ,三態(tài)門(mén)等等,理解時(shí)序,邏輯是一拍一拍的東西,如果在設(shè)計(jì)初期想的不是很清楚,可以先畫(huà)畫(huà)時(shí)序圖,這樣思路會(huì)更加的清晰。
仿真很重要,不要寫(xiě)完程序就去往fpga中去加載,首先要仿真,尤其是對(duì)較大型的程序,想像自己是在做asic,是沒(méi)有第二次機(jī)會(huì)的,所以一定要把仿真做好。
很多新手對(duì)于語(yǔ)言的學(xué)習(xí)不知道選vhdl好還是verilog好,個(gè)人偏好verilog,當(dāng)然不是說(shuō)vhdl不好,反正寫(xiě)出來(lái)的都是電路,那當(dāng)然就不要在語(yǔ)言的語(yǔ)法上面花太多的功夫了,verilog 言簡(jiǎn)意賅assign always case if else 掌握這些幾乎可以寫(xiě)出90%的電路了。
02、FPGA設(shè)計(jì)者需修煉的5項(xiàng)基本功
成為一名說(shuō)得過(guò)去的FPGA設(shè)計(jì)者,需要練好5項(xiàng)基本功:仿真、綜合、時(shí)序分析、調(diào)試、驗(yàn)證。練好這5項(xiàng)基本功,與用好相應(yīng)的EDA工具是同一過(guò)程,對(duì)應(yīng)關(guān)系如下:
仿真:Modelsim, Quartus II(Simulator Tool) riple,ISim
綜合:Quartus II (Compiler Tool, RTL Viewer, Technology Map Viewer, Chip Planner),ISE,Vivado
時(shí)序:Quartus II (TimeQuest Timing Analyzer, Technology Map Viewer, Chip Planner),ISE,Vivado
調(diào)試:Quartus II (SignalTap II Logic Analyzer, Virtual JTAG, Assignment Editor),Chipscope
驗(yàn)證:Modelsim, Quartus II(Test Bench Template Writer)
掌握HDL語(yǔ)言雖然不是FPGA設(shè)計(jì)的全部,但是HDL語(yǔ)言對(duì)FPGA設(shè)計(jì)的影響貫穿于整個(gè)FPGA設(shè)計(jì)流程中,與FPGA設(shè)計(jì)的5項(xiàng)基本功是相輔相成的。對(duì)于FPGA設(shè)計(jì)者來(lái)說(shuō),用好“HDL語(yǔ)言的可綜合子集”可以完成FPGA設(shè)計(jì)50%的工作——設(shè)計(jì)編碼。用好“HDL語(yǔ)言的驗(yàn)證子集”,可以完成FPGA設(shè)計(jì)另外50%的工作——調(diào)試驗(yàn)證。
練好仿真、綜合、時(shí)序分析這3項(xiàng)基本功,對(duì)于學(xué)習(xí)“HDL語(yǔ)言的可綜合子集”有如下幫助:
通過(guò)仿真,可以觀(guān)察HDL語(yǔ)言在FPGA中的邏輯行為。
通過(guò)綜合,可以觀(guān)察HDL語(yǔ)言在FPGA中的物理實(shí)現(xiàn)形式。
通過(guò)時(shí)序分析,可以分析HDL語(yǔ)言在FPGA中的物理實(shí)現(xiàn)特性。
搭建驗(yàn)證環(huán)境,通過(guò)仿真的手段可以檢驗(yàn)FPGA設(shè)計(jì)的正確性。
全面的仿真驗(yàn)證可以減少FPGA硬件調(diào)試的工作量。
把硬件調(diào)試與仿真驗(yàn)證方法結(jié)合起來(lái),用調(diào)試解決仿真未驗(yàn)證的問(wèn)題,用仿真保證已經(jīng)解決的問(wèn)題不在調(diào)試中再現(xiàn),可以建立一個(gè)回歸驗(yàn)證流程,有助于FPGA設(shè)計(jì)項(xiàng)目的維護(hù)。
編輯:hfy
-
FPGA
+關(guān)注
關(guān)注
1626文章
21667瀏覽量
601838 -
工程師
+關(guān)注
關(guān)注
59文章
1566瀏覽量
68441
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論