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