FPGA入門(mén)學(xué)習(xí)網(wǎng)絡(luò)講座: “柏氏”7步FPGA快速入門(mén)學(xué)習(xí)法
第三部分:最偷懶的編程
可編程芯片的開(kāi)發(fā),很重要的環(huán)節(jié)就是對(duì)芯片的編程。編程,似乎是一個(gè)很復(fù)雜的問(wèn)題,但我們打“穿插”時(shí),只能找最偷懶的捷徑,很多可編程芯片的廠家都提供的編程開(kāi)發(fā)平臺(tái)。對(duì)于FPGA/CPLD芯片,XILINX有ISE 11平臺(tái),Altera也有類(lèi)似的平臺(tái),單片機(jī)芯片,如MSP430和AVR等,用IAR平臺(tái)的也不少這些平臺(tái)現(xiàn)在都已經(jīng)很成熟,很完善,使用很方便。 它們操作的很多步驟是類(lèi)似的:
1. 創(chuàng)建項(xiàng)目并選擇芯片,平臺(tái)會(huì)根據(jù)你選擇的芯片設(shè)置相應(yīng)的參數(shù)
2. 選擇相應(yīng)的開(kāi)發(fā)語(yǔ)言,單片機(jī)可以選C語(yǔ)言,F(xiàn)PGA/CPLD可以選Verlog HDL語(yǔ)言。
3. 編程,編程的內(nèi)容是越簡(jiǎn)單越好,沒(méi)有編程基礎(chǔ)的FPGA/CPLD學(xué)員可以先選用XILINX的ISE平臺(tái),這個(gè)平臺(tái)會(huì)給編程人員創(chuàng)造最簡(jiǎn)單的環(huán)境,而且對(duì)于簡(jiǎn)化的程序系統(tǒng)會(huì)在后續(xù)的操作中自動(dòng)做一些內(nèi)部調(diào)整。當(dāng)然,F(xiàn)PGA的開(kāi)發(fā)平臺(tái)用來(lái)輸入設(shè)計(jì)內(nèi)容的方法很多,語(yǔ)言編程只是方法之一。
編程的內(nèi)容要簡(jiǎn)單,如果是FPGA/CPLD的編程,可以只做兩個(gè)賦值語(yǔ)句,如C=A; D=B; 等等,如果是單片機(jī)的編程,直接用IN , OUT指令寫(xiě)兩條輸入輸出語(yǔ)句就可以了
4. 編譯,因?yàn)槊钪挥袃尚?,編譯一般很容易通過(guò)。
以上四個(gè)步驟對(duì)單片機(jī)和FPGA/CPLD都是類(lèi)似的,以下5,6兩步是FPGA/CPLD特有的
5. 指定管腳,設(shè)定編程時(shí)的變量A,B,C,D分別對(duì)應(yīng)哪個(gè)管腳
6. 綜合,把編譯玩的代碼在指定的管腳和特定的芯片形成最終目標(biāo)代碼
7. 下載,把最終代碼通過(guò)下載線下載到芯片中
以上步驟中,編譯和綜合的操作,系統(tǒng)能夠自動(dòng)完成,能不能下載成功,主要看自制的開(kāi)發(fā)板電源及JTAG的接線是否正確,也要看一看下載線在計(jì)算機(jī)一端的連接和設(shè)置。這個(gè)學(xué)習(xí)環(huán)節(jié)似然叫編程,并不是單單是只學(xué)習(xí)編程,還涉及到其它要學(xué)習(xí)了解的內(nèi)容,包括:開(kāi)發(fā)平臺(tái)的應(yīng)用,開(kāi)發(fā)環(huán)境的設(shè)計(jì),設(shè)計(jì)手段的了解(編程只是其一),針對(duì)芯片的操作,編譯綜合問(wèn)題,下載和校驗(yàn)等等。
這諸多的環(huán)節(jié),在入門(mén)階段不一定展開(kāi)講述,但要潛移默化地把關(guān)鍵知識(shí)點(diǎn)告知學(xué)員。編程的內(nèi)容,越簡(jiǎn)單越好,更利于理解和驗(yàn)證。另外要強(qiáng)調(diào)的一點(diǎn)是,要讓學(xué)員對(duì)邏輯電路和時(shí)序電路的特點(diǎn)和區(qū)別有一個(gè)清楚的了解這對(duì)以后的開(kāi)發(fā)學(xué)習(xí)很重要。
FPGA入門(mén)學(xué)習(xí)網(wǎng)絡(luò)講座: “柏氏”7步FPGA快速入門(mén)學(xué)習(xí)法--第四部分:檢驗(yàn)入門(mén)成果
下載完成后的,就可以檢驗(yàn)“速成”的開(kāi)發(fā)板是否按照設(shè)計(jì)正常工作了,檢驗(yàn)很簡(jiǎn)單,只要把相應(yīng)的輸入端與電源或地相接,然后再查一下輸出端的電位就可以了。如果有人對(duì)直接把電源或地線連接到輸入管腳有顧慮,可以串接一個(gè)1K左右的電阻,這樣即使是學(xué)員把電源或地錯(cuò)接到其它管腳上,也不會(huì)造成芯片管腳的損壞。因?yàn)榫幊痰膬?nèi)容很簡(jiǎn)單,所以驗(yàn)證起來(lái)也會(huì)很容易,這個(gè)只有最簡(jiǎn)單功能的自制開(kāi)發(fā)板,可以作為學(xué)員“穿插式”快速入門(mén)的“戰(zhàn)利品”,也是最好的入門(mén)證書(shū)。
在入門(mén)學(xué)習(xí)階段,學(xué)員可以得到兩個(gè)方面的收獲:
1. 明白流程,以后再深入學(xué)習(xí)各個(gè)環(huán)節(jié)會(huì)有所側(cè)重
2. 建立自信,不會(huì)再存在擔(dān)心學(xué)不會(huì),也不再為學(xué)習(xí)安排的先后輕重問(wèn)題擔(dān)心為了加強(qiáng)效果,學(xué)員可以多次地變化第三步的編程內(nèi)容并通過(guò)第四步加以驗(yàn)證學(xué)員還可以在這個(gè)開(kāi)發(fā)板的基礎(chǔ)上逐步增加各種外部信號(hào)或顯示部件,如按鍵,發(fā)光二極管,液晶數(shù)碼屏等等,當(dāng)然,也可以對(duì)邏輯電路和時(shí)序電路的概念。展開(kāi)循序漸進(jìn)的學(xué)習(xí)。
以上四個(gè)步驟既適用于FPGA開(kāi)發(fā)的學(xué)習(xí),也適用于單片機(jī)的學(xué)習(xí),能夠?yàn)閷W(xué)員的下一步自學(xué)或培訓(xùn)學(xué)習(xí)打下基礎(chǔ)。包括知識(shí)上的基礎(chǔ)和心理上的自信,下篇部分可以讓學(xué)員們了解到,F(xiàn)PGA有哪些潛力和發(fā)展空間。
(下篇: 展望篇)
FPGA入門(mén)學(xué)習(xí)網(wǎng)絡(luò)講座: “柏氏”7步FPGA快速入門(mén)學(xué)習(xí)法--第五部分:FPGA及實(shí)現(xiàn)技巧
借助FPGA技術(shù)實(shí)現(xiàn)的片上系統(tǒng)有以下幾個(gè)特點(diǎn):
1. 結(jié)構(gòu)更緊湊,一個(gè)FPGA芯片就可以實(shí)現(xiàn)一個(gè)臺(tái)式機(jī)主板加CPU的所有功能。
2. 擴(kuò)充更方便,F(xiàn)PGA有獨(dú)特的接口性能優(yōu)勢(shì)和管腳數(shù)量?jī)?yōu)勢(shì),特別是在高速接口方面,遠(yuǎn)遠(yuǎn)領(lǐng)先,而無(wú)論是單片機(jī)還是臺(tái)式機(jī),在接口和實(shí)時(shí)信號(hào)處理方面都還遠(yuǎn)遠(yuǎn)不夠。
3. 可以運(yùn)行開(kāi)放軟件系統(tǒng)平臺(tái)LINUX,免費(fèi)的優(yōu)勢(shì)不需多說(shuō),F(xiàn)PGA構(gòu)建的系統(tǒng)可以在移動(dòng)終端,信息處理,通訊和智能控制等方面,有廣闊的開(kāi)拓空間。
學(xué)習(xí)或應(yīng)用FPGA技術(shù),對(duì)很多人是一個(gè)實(shí)實(shí)在在的挑戰(zhàn)??鐚?zhuān)業(yè),跨平臺(tái),如何有效學(xué)習(xí)如何快速實(shí)施,需要有個(gè)清晰的思路。首先在系統(tǒng)架構(gòu)上,要以存儲(chǔ)部件為中心進(jìn)行設(shè)計(jì),而不是以CPU為中心。
在這點(diǎn)上,F(xiàn)PGA構(gòu)成的系統(tǒng)與傳統(tǒng)的臺(tái)式機(jī)有所不同。臺(tái)式機(jī)的目標(biāo)定位是運(yùn)行程序,它自然選擇了以CPU為核心FPGA構(gòu)成的系統(tǒng)是為了處理外來(lái)信息,CPU的作用是輔助性地管理或處理信息。
針對(duì)這些特點(diǎn),可以以存儲(chǔ)為中心來(lái)進(jìn)行設(shè)計(jì),多用BUFFER,F(xiàn)RAME的方式來(lái)組織和處理數(shù)據(jù),這種思路對(duì)學(xué)習(xí)者以后的實(shí)際構(gòu)建自己的系統(tǒng)會(huì)有幫助。另外,要更充分地利用FPGA的很多特有優(yōu)勢(shì)。如果你熟悉總線,就知道實(shí)際直連總線要比分時(shí)復(fù)用總線效率高,易管理。
FPGA豐富的布線資源,可以方便地建立多組專(zhuān)用總線
FPGA豐富的硬件資源(如數(shù)以萬(wàn)計(jì)的硬件乘法器等),可以為設(shè)計(jì)一些快速的硬件處理模塊提供了有利的條件。這些硬件模塊在設(shè)計(jì)上應(yīng)該能有數(shù)據(jù)存儲(chǔ)單元(Buffer或Frame)直接相連。CPU是智能系統(tǒng)不可或缺的部件,與傳統(tǒng)的計(jì)算機(jī)有所不同,在一個(gè)FPGA技術(shù)構(gòu)成的系統(tǒng)中,CPU最大的優(yōu)勢(shì)是作為一個(gè)智能管理者的角色,在人機(jī)界面,處理策略,資源調(diào)配等方面,起重要作用,而對(duì)信息的實(shí)際處理上,一些硬件或?qū)S媚K,可能會(huì)與依靠CPU的軟件處理模塊,并駕齊驅(qū),甚至硬件模塊更能出風(fēng)頭。
從一開(kāi)始,就不要拘泥于傳統(tǒng)的以CPU為中心的計(jì)算機(jī)架構(gòu)里,這一點(diǎn)很重要。還有一種信息,是大流量的實(shí)時(shí)數(shù)據(jù)流,傳統(tǒng)計(jì)算機(jī)原來(lái)幾乎完全來(lái)不及處理。
這種數(shù)據(jù)對(duì)象在FPGA系統(tǒng)中,被作為實(shí)時(shí)“流數(shù)據(jù)”(Stream)來(lái)對(duì)待,這些“流數(shù)據(jù)”往往包含著很多經(jīng)過(guò)數(shù)字化的應(yīng)用信息(如視頻音頻等),它們?nèi)缤谏a(chǎn)線上正在被加工的產(chǎn)品,在FPGA系統(tǒng)中被傳輸,控制,處理和存儲(chǔ)。只有在被存儲(chǔ)后,CPU和傳統(tǒng)的軟件模塊才把它們作為數(shù)據(jù)進(jìn)行處理,而這些傳統(tǒng)的處理方式,效率往往并不是最高的。有人知道互聯(lián)網(wǎng)上很多內(nèi)容也是以信息流的形式傳輸?shù)模瑫?huì)占用大量的計(jì)算機(jī)處理能力。
舉一個(gè)例子,在網(wǎng)絡(luò)上傳送視頻,往往會(huì)被壓縮,以減少數(shù)據(jù)傳輸量和處理量。而很多以FPGA為核心實(shí)現(xiàn)的系統(tǒng)中,要求的不但是無(wú)壓縮,而且要“過(guò)采樣”至于傳輸鏈路的帶寬問(wèn)題,利用FPGA技術(shù)來(lái)解決,更有優(yōu)勢(shì)?,F(xiàn)在的FPGA芯片,單個(gè)接口的速度就可以達(dá)到28Gbps,而FPGA本身就管腳多,通道多。
將來(lái)設(shè)計(jì)高帶寬傳輸器件和系統(tǒng),將成為FPGA行業(yè)的一大熱門(mén)。FPGA技術(shù)除了以上特定優(yōu)勢(shì)外,在傳統(tǒng)的計(jì)算機(jī)能夠?qū)崿F(xiàn)的功能,也不遜色。FPGA借助可以執(zhí)行“縮減指令”的CPU,得以運(yùn)行開(kāi)放式平臺(tái)LINUX系統(tǒng)。本人認(rèn)為,將來(lái)在LINUX平臺(tái)上的軟件,要比WINDOWS平臺(tái)上更豐富。
WINDOWS就難以處理。
再舉個(gè)例子:要設(shè)計(jì)一個(gè)可以處理10路實(shí)時(shí)信號(hào)輸入,10路輸出的交換矩陣,用傳統(tǒng)的計(jì)算機(jī)來(lái)講,它處理不了,而對(duì)于FPGA來(lái)講,卻是小菜一碟。FPGA構(gòu)成的系統(tǒng),不但在應(yīng)用覆蓋范圍上有優(yōu)勢(shì),在整體系統(tǒng)成本上優(yōu)勢(shì)也很明顯,本人接觸過(guò)一個(gè)可以勝任WINDOW終端的FPGA產(chǎn)品,其硬件成本只有100元人民幣左右。
功能的可擴(kuò)充性,成本的優(yōu)勢(shì),會(huì)讓FPGA產(chǎn)品不斷地蠶食,覆蓋傳統(tǒng)的計(jì)算機(jī)產(chǎn)品領(lǐng)域和信息產(chǎn)品領(lǐng)域,現(xiàn)在很多攝像機(jī),數(shù)碼相機(jī)的核心處理芯片都已經(jīng)使用FPGA。
本節(jié)比較繁瑣,重點(diǎn)是一個(gè)建議:要根據(jù)數(shù)據(jù)處理流程來(lái)構(gòu)建FPGA系統(tǒng)!
FPGA入門(mén)學(xué)習(xí)網(wǎng)絡(luò)講座: “柏氏”7步FPGA快速入門(mén)學(xué)習(xí)法
第六部分:專(zhuān)業(yè)產(chǎn)品的開(kāi)發(fā)
FPGA與專(zhuān)業(yè)的信號(hào)處理芯片結(jié)合,可以開(kāi)發(fā)出很多專(zhuān)業(yè)產(chǎn)品,如廣播電視,通訊,數(shù)據(jù)傳輸?shù)群芏囝I(lǐng)域,都是FPGA的用武之地。用FPGA和專(zhuān)業(yè)芯片開(kāi)發(fā)產(chǎn)品,關(guān)鍵是在接口環(huán)節(jié),這包括幾個(gè)方面:
1. 硬件信號(hào)接口
2. 數(shù)據(jù)接口
3. 信息數(shù)據(jù)格式接口
用FPGA開(kāi)發(fā)專(zhuān)業(yè)產(chǎn)品,可以做三個(gè)層面的工作:
1. 利用專(zhuān)業(yè)接口芯片處理專(zhuān)業(yè)信號(hào)
2. 利用FPGA的處理能力替代專(zhuān)業(yè)芯片的功能
3. 設(shè)計(jì)專(zhuān)業(yè)接口IP
搞專(zhuān)業(yè)產(chǎn)品的開(kāi)發(fā),需要扎實(shí)的FPGA開(kāi)發(fā)方面的基礎(chǔ),也還要有應(yīng)用專(zhuān)業(yè)領(lǐng)域的相應(yīng)知識(shí),這雖然很難,但對(duì)那些原來(lái)就從事相關(guān)專(zhuān)業(yè)的人員,或者較早關(guān)注相關(guān)領(lǐng)域的FPGA開(kāi)發(fā)人員,卻是一個(gè)難得的先機(jī)。與民用消費(fèi)品相比,專(zhuān)業(yè)產(chǎn)品的設(shè)計(jì)要求會(huì)高一些,不過(guò)競(jìng)爭(zhēng)的人也可能會(huì)少一些。專(zhuān)業(yè)產(chǎn)品開(kāi)發(fā),是一個(gè)巨大的,潛在的FPGA應(yīng)用市場(chǎng)。
FPGA入門(mén)學(xué)習(xí)網(wǎng)絡(luò)講座: “柏氏”7步FPGA快速入門(mén)學(xué)習(xí)法
第七部分:個(gè)人奮斗 — 特定IP的開(kāi)發(fā)
在FPGA的開(kāi)發(fā)中,常用到一種稱(chēng)為IP 的模塊,隨著FPGA開(kāi)發(fā)市場(chǎng)的逐步擴(kuò)大,對(duì)各式各樣的IP 的需求會(huì)越來(lái)越多,例如在視頻壓縮方面,MPEG II,H.264等IP就已經(jīng)廣泛應(yīng)用。一個(gè)優(yōu)秀的開(kāi)發(fā)工程師,可以根據(jù)自己的特長(zhǎng),開(kāi)發(fā)一些有特色的IP。
開(kāi)發(fā)IP 模塊,不需要太苛刻的開(kāi)發(fā)環(huán)境,不需要太多的市場(chǎng)資源,比較適合個(gè)人奮斗,特別是對(duì)于善于接受新事物的年輕人來(lái)講,可以充分發(fā)揮敏銳度和爆發(fā)力方面的優(yōu)勢(shì)。無(wú)論是個(gè)人奮斗,還是小型團(tuán)體的合作,直至跨國(guó)公司的大師,大家的開(kāi)發(fā)條件都是一樣的,起點(diǎn)也是一樣的,誰(shuí)能勝出,只看創(chuàng)造力。
一個(gè)開(kāi)發(fā)人員能有如此機(jī)會(huì),當(dāng)年的比爾蓋茨和喬布斯也不過(guò)如此。
以上7部分,前四部分追求的是“跑得快,打得贏”,后三部分是“站得高,看得遠(yuǎn)”,這些學(xué)習(xí)方法與眾不同,卻是針對(duì)當(dāng)代年輕人的性格特點(diǎn)量身定做。同時(shí)也是為了悼念單片機(jī)領(lǐng)域門(mén)里門(mén)外眾多的犧牲者和拯救那些茫然的掙扎者。更給關(guān)注過(guò)這個(gè)帖子的年輕人留下點(diǎn)印象,也許幾年后,你會(huì)想起:
曾經(jīng)有個(gè)帖子,告訴你可以很快地學(xué)會(huì)FPGA的開(kāi)發(fā)。對(duì)于已能熟練開(kāi)發(fā)單片機(jī),但卻時(shí)時(shí)為外圍電路設(shè)計(jì)發(fā)愁的人來(lái)講需要兩天時(shí)間,只需兩天,就能讓你的單片機(jī)如虎添翼(用CPLD)而你,也將立即就對(duì)FPGA愛(ài)不釋手。
評(píng)論