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