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