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