任何領(lǐng)域從新手到專(zhuān)家都分5個(gè)階段:
探索期? ?入門(mén)期? ?勝任期? ?高手期? ?專(zhuān)家期
從入門(mén)期到勝任期再到高手期都是可以通過(guò)項(xiàng)目歷練而達(dá)到,但是從高手器到專(zhuān)家期一般由人的思維而決定。
這其中最難的就是入門(mén)期的新手入門(mén)階段,由于新手期的迷茫,特別是沒(méi)有高人指點(diǎn)的情況下,新手的學(xué)習(xí)狀態(tài)曲線(xiàn)呈現(xiàn)出波蕩起伏的趨勢(shì):
新手學(xué)習(xí)曲線(xiàn)
新手們憑著興趣一腔熱血扎入到FPGA和Verilog的學(xué)習(xí)中去,一個(gè)個(gè)的難點(diǎn)使之挫折,直至厭惡懷疑:我為什么要學(xué)這?如果還能堅(jiān)持,經(jīng)過(guò)了這段低谷期后,你開(kāi)始慢慢找到感覺(jué),然后逐漸開(kāi)竅:不過(guò)如此嘛!此刻激情已然褪去,自滿(mǎn)導(dǎo)致麻木,但是在你接觸到更多的項(xiàng)目后你才會(huì)領(lǐng)悟到:我還差得遠(yuǎn)呢!此刻你已經(jīng)入下一個(gè)快速提升期。
起步之后的專(zhuān)家之路同樣是起伏的曲線(xiàn):
專(zhuān)家之路
緩慢起步期:往往對(duì)什么都有興趣,但是都不能深入的去學(xué)習(xí),一個(gè)個(gè)的攔路虎使我們知難而退,大多數(shù)人熬不過(guò)緩慢起步期,起步期對(duì)應(yīng)的就是我們的入門(mén)階段。
快速提升期:在這一階段,已經(jīng)克服了第一個(gè)困難,成功地發(fā)現(xiàn)了學(xué)習(xí)的方法,是提升最快的階段。
高原期:只有極少數(shù)的人能夠進(jìn)入這個(gè)階段,因?yàn)榇蠖鄶?shù)人依賴(lài)原有的學(xué)習(xí)方法,不能建立屬于自己的方法論,思維限制了他們的進(jìn)步。
2
FPGA學(xué)習(xí)之路
FPGA的學(xué)習(xí)之路是一個(gè)模仿、學(xué)習(xí)、動(dòng)手、創(chuàng)新、設(shè)計(jì),不斷迭代的過(guò)程。
初學(xué)者往往是從模仿別人的代碼開(kāi)始,學(xué)習(xí)語(yǔ)法、學(xué)習(xí)建模方法、學(xué)習(xí)代碼風(fēng)格等等,在學(xué)習(xí)的基礎(chǔ)上動(dòng)手修改出自己的代碼,熟練后開(kāi)始加入自己的創(chuàng)新點(diǎn),可以獨(dú)立的做自己的設(shè)計(jì)。
FFPGA初學(xué)者會(huì)常見(jiàn)現(xiàn)象:
數(shù)字電路理論不扎實(shí),概念不清。這個(gè)是最要命的,因?yàn)閿?shù)字邏輯是FPGA的基礎(chǔ),就像是你要建一座房子,你可以不會(huì)用斧子、鏟子等工具,但你不能不知道房子長(zhǎng)什么樣子。
Verilog語(yǔ)法不精,Verilog HDL語(yǔ)法書(shū)翻了一遍又一遍,學(xué)了忘,忘了學(xué),循環(huán)往復(fù),直至興趣殆盡。這個(gè)現(xiàn)象的根源是沒(méi)有在實(shí)踐中學(xué)習(xí)。Verilog HDL就是為開(kāi)發(fā)FPGA而開(kāi)發(fā)的一款工具而已,就像是蓋房子用的斧子錘子一樣,要多動(dòng)手才能精通。
工具軟件不會(huì)用。Xilinx、Altera(已被Intel收購(gòu))等FPGA廠(chǎng)家都有各自的開(kāi)發(fā)軟件,雖然軟件不同,但是開(kāi)發(fā)流程都是一致的,學(xué)會(huì)一種,另外一種自然而然的也會(huì)了,因?yàn)樗季S指導(dǎo)行動(dòng),一精百通。以后我會(huì)以ISE和ModelSim為例,教大家學(xué)習(xí)Verilog和FPGA。
最后一點(diǎn)就是用軟件的思維去寫(xiě)Verilog代碼,其實(shí)這個(gè)和第一點(diǎn)是一個(gè)問(wèn)題。以后會(huì)在教程中給大家具體的講解。
3
FPGA與ASIC?
說(shuō)到FPGA,往往離不開(kāi)介紹ASIC。從字面意思上來(lái)說(shuō):
FPGA(Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門(mén)陣列;
ASIC(ASIC,Application Specific Integrated Circuit)是用于供專(zhuān)門(mén)應(yīng)用的集成電路芯片技術(shù)。
我的理解是FPGA是可編程的ASIC,F(xiàn)PGA是一個(gè)百變星君,可以孫悟空的七十二變,在FPGA內(nèi)部資源允許的情況下,F(xiàn)PGA可以實(shí)現(xiàn)ASIC芯片的功能,反之,ASIC內(nèi)部的邏輯都是定死的,只能實(shí)現(xiàn)固定的功能,ASIC遠(yuǎn)沒(méi)有FPGA靈活。打個(gè)比方:如果說(shuō)ASIC是一塊磚,那么FPGA就是水泥,可以揉捏成任意的形狀。
FPGA與ASIC的本質(zhì)
從FPGA和ASIC的實(shí)物圖片可以看出:FPGA和ASIC也沒(méi)有什么區(qū)別嘛,從外觀上看都是芯片嘛!恭喜你答對(duì)了,他們都是芯片,FPGA和ASIC的本質(zhì)的都是由晶體管組成,所以他們看著差不多。
?
去掉芯片的保護(hù)外殼(封裝),會(huì)漏出里面的的裸片(die),芯片的管腳就是從裸片上的PAD用金線(xiàn)連接出來(lái)的。
?
裸片是從晶圓上一片片的切下來(lái)的,晶圓的樣子如下圖所示,
?
晶圓是指硅半導(dǎo)體集成電路制作所用的硅晶片,由于其形狀為圓形,故稱(chēng)為晶圓。在硅晶片上可加工制作成各種電路元件結(jié)構(gòu),而成為有特定電性功能的集成電路產(chǎn)品。上圖中的晶圓,每一個(gè)長(zhǎng)方形就是一片芯片的裸片,每一個(gè)裸片將來(lái)都可以封裝成一塊芯片。
芯片是如何在硅晶片生產(chǎn)出來(lái)的呢?這幾需要集成電路的版圖了,版圖就好比PCB文件,只不過(guò)集成電路版圖用于指導(dǎo)芯片的生產(chǎn),PCB用于印制電路板的生產(chǎn)。下圖就是一個(gè)芯片的版圖,周?chē)S色的方形就是將來(lái)封裝芯片時(shí),用金線(xiàn)連接芯片管腳的PAD。
像PCB一樣,版圖也是分層的立體結(jié)構(gòu)。
以一個(gè)或非門(mén)為例,它的版圖結(jié)構(gòu)如下所示:
一個(gè)芯片的版圖就是由千千萬(wàn)萬(wàn)個(gè)類(lèi)似于或非門(mén)的基礎(chǔ)電路搭建而成,門(mén)級(jí)電路又是由更基本的單元:PMOS和NMOS組成。
MOS管的剖面結(jié)構(gòu)如下所示:
綜上所述:任何的數(shù)字芯片都是由晶體管組成的
5
為什么芯片的邏輯可以用晶體管搭建而來(lái)?
數(shù)電中我們學(xué)過(guò)卡諾圖化簡(jiǎn)邏輯表達(dá)式的方法:
可以得知,任何的數(shù)字邏輯表達(dá)式最終都可以化簡(jiǎn)成與或非組合的形式。
非門(mén)、與非門(mén)、或非門(mén)由晶體管級(jí)的PMOS和NMOS組成,組成電路如上圖所示。
所以,任何的數(shù)字組合邏輯電路都可以有晶體管組成。
6
FPGA的原理與結(jié)構(gòu)
FPGA的原理是基于SRAM的查找表結(jié)構(gòu)。通俗的講就是:可以將FPGA看做是一片SRAM,利用開(kāi)發(fā)工具軟件計(jì)算出所有的輸入組合排列對(duì)應(yīng)的輸出結(jié)果,然后將輸入組合作為SRAM的地址,該地址中存放的是與輸入組合對(duì)應(yīng)的輸出。當(dāng)輸入信號(hào)變化時(shí),到相應(yīng)的地址中讀取提前計(jì)算好存入的結(jié)果,然后輸出。
FPGA結(jié)構(gòu)組成包括以下:
可編程輸入輸出單元(IOB)?
可配置邏輯塊(CLB)
嵌入式塊RAM(BRAM)?
豐富的布線(xiàn)資源
底層內(nèi)嵌功能單元
內(nèi)嵌專(zhuān)用硬核
其中1-5是FPGA必須具備的,6、7一些低級(jí)的FPGA可能不具備。具體不再細(xì)講,幾乎每一本FPGA的書(shū)籍都會(huì)有詳細(xì)的講述。
FPGA結(jié)構(gòu)示意
?
FPGA就像積木一樣,只要合理運(yùn)用,通過(guò)使用不同的結(jié)構(gòu)進(jìn)行搭配組合,可以得到你想要的。
7
Verilog HDL概述
如何將一堆積木零件搭建出我們想要的結(jié)構(gòu)呢(將FPGA配置成我們所需要的電路)?這就需要我們的Verilog HDL登場(chǎng)了。
Verilog HDL是一種硬件描述語(yǔ)言,可以抽象的描述硬件電路。硬件描述語(yǔ)言同樣可以用于ASIC設(shè)計(jì)和FPGA設(shè)計(jì)。
常用的硬件描述語(yǔ)言還有VHDL,關(guān)于VHDL和Verilog HDL,我的總結(jié)就是:VHDL語(yǔ)法嚴(yán)謹(jǐn)(潛臺(tái)詞:規(guī)矩多),適用與大型電路設(shè)計(jì);Verilog HDL語(yǔ)法靈活,上手快。所以建議新手學(xué)習(xí)Verilog HDL。即使沒(méi)學(xué)過(guò)VHDL,但是精通Verilog HDL也照樣能夠看懂VHDL,因?yàn)榻K枷攵际且粯拥模乱材懿聜€(gè)八九不離十。
8
如何快速上手Verilog HDL?
你必須知道的,Verilog的所有語(yǔ)法中:
?Verilog語(yǔ)法中30%的語(yǔ)言用于電路設(shè)計(jì)(可綜合,可產(chǎn)生實(shí)際電路)?
?70%的語(yǔ)言用于功能仿真,也就是測(cè)試
也就是說(shuō),你沒(méi)必要掌握所有的語(yǔ)法。有的同學(xué)抱著本Verilog語(yǔ)法書(shū)從頭到尾一直不拉的啃,妄想著學(xué)會(huì)說(shuō)有語(yǔ)法后再去設(shè)計(jì)電路,殊不知他拿著80%的時(shí)間去學(xué)習(xí)著70%的可能用不到的語(yǔ)法。我并不是說(shuō)仿真的語(yǔ)法不重要,我的意思是先掌握基本的簡(jiǎn)單語(yǔ)法,四個(gè)字:先干起來(lái)。
學(xué)習(xí)Verilog就像是蓋房子,妄圖掌握所有語(yǔ)法的人想著我一定要把地基打牢,所以花費(fèi)了巨量的經(jīng)歷和時(shí)間磨語(yǔ)法,就一直在打地基。而先干起來(lái)的同學(xué)雖然房子不完整,但是輪廓已經(jīng)起來(lái)了,以后修修補(bǔ)補(bǔ),就能完工。
先干起來(lái)
9
總結(jié)
在學(xué)習(xí)一門(mén)技術(shù)之前我們往往從它的編程語(yǔ)言入手,比如學(xué)習(xí)單片機(jī)時(shí),我們往往從匯編或者C語(yǔ)言入門(mén)。所以不少開(kāi)始接觸FPGA的開(kāi)發(fā)人員,往往是從VHDL或者Verilog開(kāi)始入手學(xué)習(xí)的。但我個(gè)人認(rèn)為,若能先結(jié)合《數(shù)字電路基礎(chǔ)》系統(tǒng)學(xué)習(xí)各種74系列邏輯電路,深刻理解邏輯功能,對(duì)于學(xué)習(xí)HDL語(yǔ)言大有裨益,往往會(huì)起到事半功倍的效果。
當(dāng)然,任何編程語(yǔ)言的學(xué)習(xí)都不是一朝一夕的事,經(jīng)驗(yàn)技巧的積累都是在點(diǎn)滴中完成,F(xiàn)PGA設(shè)計(jì)也無(wú)例外。
我后續(xù)推出的快速入門(mén)Verilog HDL及FPGA視頻教程的學(xué)習(xí)方式將是:
??編輯:黃飛
?
評(píng)論
查看更多