FPGA對于硬件工程師以及高校師生來說是非常重要的一項技能,其重要性甚至要超過PCB設計,不僅是因為在電子產品系統中(尤其是通信、音視頻相關產品)可編程器件是非常重要的組成部分;IC設計也離不開HDL編程、通過FPGA設計、驗證等;更重要的是“數字邏輯”的概念是每個硬件工程師必須具備的思維方式。
可現實呢?幾乎所有高校畢業的電子類學生,除了少數參與過一些競賽項目或做與FPGA相關的畢業設計的,幾乎沒有人講得清楚什么是FPGA;即便是高校從事研發工作的碩士/博士同學們,也只是對自己正在用的型號、有限的功能有一定的掌握;企業的工程師?還好一些,畢竟在實戰的項目中得到了體驗,但這個比例是非常的小。
我國高校每年有至少100萬的本科學生(除了電子、電氣、自動化之外,還有計算機、物理、物聯網等專業)要學習數字電路這門課程,70%以上的學校仍然在面包板上用分立的門電路來做數字電路課程實驗;70%以上的學校仍然用8086/8088/8255/8251來做微機原理與接口技術/計算機系統結構的實驗;EDA課程基本上也都是若干年前Altera或Xilinx通過大學計劃提供的教學套具(很強大、很貴的設備),常見的模式是學生按照實驗手冊上的流程走一遍過場,編寫幾行代碼,而至于這玩意是怎么工作的,實事求是地講,多數負責教學的老師都未必知道。
同在高校如火如荼的“嵌入式系統”課程、人人都可以號稱懂“嵌入式”相比,為什么FPGA成了這么高冷的一門技能呢?
我認為主要是在學習和應用FPGA的過程中存在以下幾個誤區:
FPGA很難學- 這是學生以及工程師在談到FPGA的時候第一反應,因為他們看到的都是上千塊甚至幾千塊錢一個的板子,配一個幾百塊錢的編程器;板子上安裝的都是幾百個管腳、看起來非常牛b閃閃的器件,據數據手冊上說支持著各種自己從來都沒聽說過的技術術語 - xx總線、xx接口、多少個CLB、掛著各種高速的DDR、USB、PCIe,據說還能跑什么軟核、硬核,初學的菜鳥們臉立馬漲的通紅,我是不是太無知了?根本與他們擁有的知識結構對應不起來;軟件?光下載個安裝包就要10GB,安裝需要半天時間,還經常蹦出來個錯誤信息,還是英文的;運行個案例試試?剛買的高性能的電腦也要跑十幾分鐘,出去上趟廁所回來,編譯的進度條還停留在80%上。。。。哇,太強大了!學習中遇到問題請教老師,老師無奈地搖搖頭:我也不懂,你問問你大師兄xxx吧,旁邊大神級的師兄酷酷地走過來,修改幾行代碼,搞定,這一切都讓你懷疑自己,懷疑你是不是學習FPGA的那塊磚。其實我要說的是,學習FPGA比學會PCB設計都要容易的多 - 你已經學了數字電路,具備了數字邏輯的理論基礎,比抽象的PCB庫、原理圖、網表、布局、布線要容易理解得多吧?編程語言,Verilog的語法太簡單了,常用的都不到一頁,比C語言不知道要簡單幾個量級;只要你學會了如何將要實現的功能從邏輯上描述清楚,再用HDL描述出來,基本就能讓這個“萬能芯片”給你表演一些很神奇的東西出來了。
我要買塊高大上的開發板- 當我們給初學者推薦小腳丫FPGA的時候,多數情況下都會招到他們的鄙視,你們這玩意能學FPGA么?也配叫FPGA開發板?就像一個攝影菜鳥總覺得卡片相機不是相機,一定要抱著一個能裝配各種鏡頭的、價格必須上萬元的單反才能學到攝影技術。基于對各種技能成長的觀察,大概率事件 - “器材黨”一般都是水平不行的,真正的高手基本都是在非常基礎、淺陋的器材上成長起來的,因為只有最基礎、淺陋的條件才能讓他們聚焦在最核心的東西上,從而能夠快速滴掌握真諦。
我需要很多教程才能學- 在淘寶上觀察一下你會發現,那些暢銷的板卡并不是因為它設計的多么合理、適用或者價格便宜,而是在其產品描述頁面羅列了一張長長的清單 - 贈送xxx個案例、xxx張光盤的視頻教程等等。誠然這些參考學習資料對于初學者來講有一定的幫助,尤其是心理上有更多的安全感,但我認為要真想學會一項技能,太多的參考并沒有什么正面的幫助,尤其是一些游擊隊員提供的不規范的設計資料,反而讓新手養成同樣不規范的習慣。學習過程最重要的是自己發現問題、解決問題,自己會通過各種手段找到答案,而不是拿來別人已經做好的在上面修改。
我只學Xilinx、Altera的FPGA- 這就像你想學開車,認為一定要用寶馬、大奔才能學會開車一樣,這種觀念是非常錯誤的,是被某些勢力嚴重誤導了的。真正學習駕駛技能,你需要的是“大眾”、“本田”,因為它們性價比高,比較適合學習用,當然對于不差錢的土豪來講,他用瑪莎拉蒂來學車也無可非議。重要的是我們普通的工程師要知道這個世界上除了Xilinx和Altera之外,還有Lattice、Microchip(原Actel的產品)提供更大眾化的FPGA產品,他們的用量巨大而且價格便宜,在你初期的3、4年里,用這些公司的產品已經綽綽有余了,學會替你的老板省點錢,替你自己省點錢,也是做產品必須培養的優秀品質。
像C一樣寫Verilog- 對于玩過單片機、嵌入式系統、軟件編程的工程師來講,他們把Verilog當成了C來寫,這真的是暴殄天物,是對FPGA的“A”極大不敬。相對于MCU/MPU來講,FPGA最值得傲嬌的就是這個“A”,海量的門陣列,十萬雄兵,你不能就讓他們排著隊干一件事情吧?學會并行處理、時序以及針對每個bit進行操作是學習FPGA的精髓。
不關心資源配置- 用高檔開發板習慣了,就像富二代的公子哥,根本沒有成本這一概念,只要能實現功能就可以了,我管它用了多少LUT,耗費了多少RAM呢?哥不Care!這是不行滴,因為在實際的項目中,你的老板不同意你這么做,即便是他不懂,看不到這些問題,那你的設計一定比別人花費更大的代價,付出更高的成本,也就意味著在市場上不會有競爭力而被淘汰。如果從一開始就沒有養成重視資源配置,盡一切努力優化自己的邏輯達到最佳資源利用的好習慣的話,最終你就會像一個紈绔子弟一樣敗家、敗項目。就像淘寶、逛街的魅力在于你能從花最少的錢買到最多的東西中獲得莫名的快感一樣,用FPGA的時候通過你自己的設計節省了多少n個寄存器、少用了m%的存儲器,也是讓人感到非常愉悅的體驗,何不養成這種習慣,在快樂中成長呢?
限于篇幅就先說到這幾點吧,日子還長,我們要交流的還很多,慢慢來吧。。。。
-
FPGA
+關注
關注
1629文章
21754瀏覽量
604203 -
pcb
+關注
關注
4322文章
23120瀏覽量
398475 -
系統
+關注
關注
1文章
1017瀏覽量
21375
原文標題:學用FPGA的幾大誤區
文章出處:【微信號:xiaojiaoyafpga,微信公眾號:電子森林】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論