FPGA已成為現(xiàn)今的技術(shù)熱點(diǎn)之一,無(wú)論學(xué)生還是工程師都希望跨進(jìn)FPGA的大門(mén)。網(wǎng)絡(luò)上各種開(kāi)發(fā)板、培訓(xùn)班更是多如牛毛,仿佛在告訴你不懂FPGA你就OUT啦。那么我們要玩轉(zhuǎn)FPGA必須具備哪些基礎(chǔ)知識(shí)呢?下面我們慢慢道來(lái)。
(一) 要了解什么是FPGA
既然要玩轉(zhuǎn)FPGA,那我們首先最重要的當(dāng)然是要了解什么FPGA。FPGA(Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門(mén)陣列??吹骄幊虄蓚€(gè)字碼農(nóng)就笑了,不就是編程嘛,那可是我們的強(qiáng)項(xiàng)。且慢,此編程非彼編程。一定要把FPGA的編程和軟件編程區(qū)分開(kāi)來(lái)。軟件的編程,處理器會(huì)逐條的把語(yǔ)言翻譯成各種控制信號(hào),去控制內(nèi)部電路完成一個(gè)個(gè)運(yùn)算或操作。那么FPGA的編程是怎么實(shí)現(xiàn)的呢?無(wú)論Altera家還是Xlinix家的FPGA,叫法有什么差異,基本單元都相似,都是由真值表和D觸發(fā)器構(gòu)成。改變真值表的值就改變了邏輯功能,再通過(guò)和D觸發(fā)器組合來(lái)實(shí)現(xiàn)任何時(shí)序邏輯。所以我們對(duì)FPGA的編程,實(shí)際上就是去修改這些真值表和連接關(guān)系,使他們組成一張專(zhuān)門(mén)的真值表,去實(shí)現(xiàn)特定的功能。這和軟件編程一步步運(yùn)行程序有本質(zhì)的區(qū)別。要想玩轉(zhuǎn)FPGA,就必須理解FPGA內(nèi)部的工作原理,學(xué)習(xí)如何利用這些單元實(shí)現(xiàn)復(fù)雜的邏輯設(shè)計(jì)。
(二) 正確理解HDL語(yǔ)言
HDL(Hardware Description Language),硬件描述語(yǔ)言。通過(guò)名稱(chēng)我們能看出來(lái),HDL語(yǔ)言是一種“描述”語(yǔ)言,這一點(diǎn)和C語(yǔ)言是有本質(zhì)區(qū)別的。正確理解描述的含義,對(duì)學(xué)好HDL語(yǔ)言很有幫助。HDL語(yǔ)言只是用文本的方式把硬件電路描述出來(lái)。我們?cè)陂喿xHDL程序的時(shí)候,在腦子里應(yīng)該能反映出一個(gè)完整的硬件電路結(jié)構(gòu)。從另一方面說(shuō),我們?cè)诰帉?xiě)HDL語(yǔ)言之前,就已經(jīng)對(duì)要實(shí)現(xiàn)的電路有清晰的概念。所以HDL語(yǔ)言只是一個(gè)描述我們頭腦中具體電路的工具,玩轉(zhuǎn)FPGA的根本不是語(yǔ)言而是邏輯電路設(shè)計(jì)。不要再糾結(jié)于我應(yīng)該學(xué)習(xí)VHDL還是Verilog,那種語(yǔ)言更好學(xué)這些問(wèn)題。如果把學(xué)習(xí)FPGA的重點(diǎn)放在學(xué)習(xí)語(yǔ)言上,死記硬背一些語(yǔ)法,那自然是抓錯(cuò)了重點(diǎn)。語(yǔ)言在日常使用中會(huì)越用越熟練,不需要花很長(zhǎng)的專(zhuān)門(mén)時(shí)間去學(xué)習(xí)。當(dāng)然一本好的參考資料可以隨時(shí)方便查詢(xún)會(huì)是很有幫助的。