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