導航:首頁 > 操作系統 > epld和單片機

epld和單片機

發布時間:2025-03-03 10:17:29

『壹』 如何快速掌握FPGA

任何一個硬體工程師對FPGA都不會陌生,就好比C語言對於軟體工程師來說是必修課程一樣,只要是電子相關專業的學生,都要學習可編程邏輯這門課程。 FPGA的英文全稱是Field Programmable Gate Array,即現場可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎上進一步發展的產物。

從表象看,Programmable這個單詞確實能夠很好的描述FPGA的特點,但這也使得很多初學者走了不少彎路。一說到編程,大家不免聯想到 coding,因為軟體編程的思想對工程師來說已經是根深蒂固了。因此,很多初學者都會問一個相同的問題,兩種硬體編程語言VHDL和Verilog,應該學哪個?即使明確了要學習哪種設計語言,也會一頭扎進浩瀚的語嫌物空法中,走向歧途。有些初學者寫了大量的代碼,在Demo板上跑了n個試驗,可還是覺得不懂 FPGA,甚至搞不清楚它和單片機的區別。這是為什麼?其實,這都歸結一個原因,就是被「可編程」這3個字給迷惑了,也就是說,沒有弄清楚FPGA的本質是什麼。因此,對於FPGA的學習也就不著法門,事倍功半,浪費了不少時間,卻仍然達不到效果。

FPGA是作為專用集成電路(ASIC)領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。因此,從底層來看,FPGA還是屬於集成電路的范疇。就當前的技術而言,使用FPGA開發項目還是全部基於數字電路設計的,所以,FPGA的「可編程」也就是實現不同的數字電路邏輯。這與所謂的軟體編程有著本質的區別!歸根結底,FPGA設計就是電路設計,因此,對於每個FPGA工程師來說,在做設計時必須在腦中有電路的模樣,這很重要!那麼,到底該如何有效地學習FPGA呢?其實,很簡單,只要從以下7點著手,循序漸進,日積月累,就完全能夠對FPGA設計游刃有餘。

1. 首先,必須了解FPGA的結構和性能。不同廠家,不同系列的FPGA晶元都有不同的結構和性能,但是萬變不離其中。剛開始,從掌握幾款典型的高端晶元開始,例如Altera公司的Stratix III和Xilinx公司的Virtex 5。之後,再去了解其它系列的晶元就很容易了。至於Lattice和Actel公司的晶元,當使用時再了解也不遲,因為學習主流的東西才會更加有效!許多有關FPGA的教科書都會以幾款常用的晶元為例,講述FPGA的基本結構和原理。初學者看了後,總覺得過於抽象,有點不知所雲的感覺。因此,為了深刻理解 FPGA,必須要有扎實的數字電路基礎!在數字電路里,最基本的就是邏輯和時序。工程師必須明白FPGA內部邏輯結構和數字電路基本電路結構的關系。例如,任何4個輸入信號的組合邏輯都可以通過FPGA提供的4輸入LUT來實現。如果使用Xilinx的晶元,移位寄存器既可以通過多個觸發器級聯實現,也可以通過LUT來實現。通常,初學者可以設計出正確的邏輯,但卻很容易忽略時序。在I/O口的設計中,與時序相關的缺陷對於產品是致命的,會影響產品的可靠性。因此,在掌握了結構後,還必須關注晶元的一些重要時序參數,例如I/O口時鍾的建立時間、保持時間和從觸發器到輸出的延遲時間,以及晶元內部工作時鍾的最高頻率等等。只有充分掌握了所使用晶元的結構和性能,才能設計出一個合理的系統,才能保證FPGA的設計可靠穩定。FPGA廠商提供的大量文檔是一個不錯的學習資料。

2. FPGA既然是「可編程」,自然離不開編程語言。其實,早期的工程師大多使用原理圖輸入方式進行邏輯設計,這是一種更接近於電路設計的設計方芹瞎式。這種設計方式對設計者要求較高,而且也不利於移植和維護,因此VHDL和Verilog才漸漸流行起來。這兩種語言,無所謂孰優孰劣,只不過Verilog發展的比VHDL好,螞慎而且和將來可能一統天下的SystemVerilog比較接軌。它們都是硬體描述語言。既然叫硬體描述語言,自然是和軟體世界裡的編程不一樣,所以,初學者不能把它當作軟體編程語言來學習,否則就會捨本逐末。如果僅僅只是從事FPGA邏輯設計和做簡單的功能模擬,只需學習最簡單的語法就夠了。那些用於寫驗證腳本的語法,完全不用學,基本用不上。語言僅僅只是一個工具,尤其在硬體設計里,代碼寫得漂不漂亮,並不重要,最關鍵的是設計思想。記住,FPGA工程師是在設計電路,而不是在「編程」!

3. 很多工程師會談到演算法的重要性,認為必須懂得很多演算法。沒錯,好的演算法對於設計來說猶如利器一般。可是,研究演算法和如何實現演算法是兩個不同的概念,研究演算法是在做數學題,實現演算法才是工程師的職責。這里並不是說FPGA工程師不用去研究演算法,而是強調職責所在。不同的演算法,我們對其原理的研究和理解的要求也是不同的。例如8B/10B編碼,只要你懂得在哪裡需要使用它就夠了,現成的IP Core可以直接調用。但是,諸如FEC編解碼這樣的演算法,則只有了解了基本原理後才可能懂得如何實現。對於演算法,FPGA工程師的重點就是在於「如何實現」!。另外,演算法之外,邏輯設計里常用的設計方法必須懂得,例如,乒乓操作、流水線設計和分時復用等等。還有常用的邏輯模塊,如非同步FIFO、狀態機,這些其實都是數字電路里最基礎的東西,但是對於初學者來說,在做FPGA設計時未必會正確的使用。

4. FPGA設計必須有一個好的設計流程來支撐。代碼寫完後,花大量時間做完善的功能模擬和驗證是很有必要的。可是一些工程師並不重視模擬和驗證,而是迫不及待的上板調試。碰到BUG後就在代碼上修修補補,運氣好的話,BUG表面上是解決了,可真正深層次的原因卻未必發現,給產品留下了隱患。一個好的設計流程要求大多數BUG在前期工作中必須解決掉,功能模擬和驗證則是一個很有效也很重要的步驟。除了模擬驗證,綜合和布線也必須重視,這要求我們必須仔細瀏覽編譯報告和時序報告,因為,許多時序問題都能通過報告反映出來。有時候,一些工程師碰到時序問題,僅僅做時鍾反相來調整數據和時鍾的相位關系,或者修改綜合和布線的參數,仍無法解決問題。尤其是在用了高速時鍾的設計里,大多數情況,我們只有修改代碼里的邏輯才能滿足設計的時序要求。這些也只有仔細分析了報告後,才能對症下葯。另外,對於大多數同步邏輯設計來說,時序模擬是沒有必要的,這一步完全可以省略。

5. 現階段,FPGA發展的三大方向就是SOC,高速I/O和DSP。在有限的時間里,選擇一個領域進行主攻是有必要的,只有明確了目標,才會更加投入。 SOC設計要求設計者對軟體編程、CPU原理甚至是操作系統比較了解才行,因為SOC就是一個軟硬體結合的系統。高速I/O設計則要求設計者掌握許多模擬電路的基本知識以及一些常用的通信協議,例如,SDH、GbE、PCI-E等等。FPGA在DSP領域的使用是近幾年興起的一個發展方向。FPGA由於其內在的並行特性,能以很高的效率實現DSP演算法中計算量較大的模塊,非常適合視頻和圖像處理等對DSP性能要求越來越高的新興應用,設計者需要掌握數字信號處理常用演算法。這3個方向完全不同,切勿囫圇吞棗,一切通吃!「術業有專功」,資深的高級工程師也很難在多個方向都取得成就。當然,若能在一個領域有較深的研究,同時,對另外兩個領域也有一定的了解,那就更好了。

6. 一個優秀的FPGA工程師,必須做到「一專多能」。所謂的「一專」當然是指在FPGA設計領域的專業深度,而「多能」則是要求工程師對其它專業領域也要有所了解和掌握。例如,對於設計一個SOC系統來說,C語言就必須學習,否則對於片上系統的架構就可能不合理。另外,對於設計高速I/O口的工程師來說,電路板原理設計和PCB設計則需要有所了解。只有掌握了預加重、均衡以及阻抗匹配等這些與模擬電路相關的概念,才可能在設計和調試中得心應手。

7. 最後一點,也是最難的一點,這也是邁向高級工程師的關鍵,就是FPGA的設計需要一個好的系統架構方案和合理的模塊化分。這有助於FPGA的調試和維護,也便於多人共同開發,尤其是在使用大規模FPGA時,這也就是常說的Top-Down設計方式。把一個龐大的、復雜的設計化分成若干個小模塊,而且層次要分明,不能扁平化,這需要設計者對設計必須有全面深刻的理解。一個雜亂無序的設計對於後期的維護是災難性的,尤其是對於接手者來說,若要修改某個邏輯,可以說是苦不堪言。從這一點看,初學者的問題都可以在這里找到答案。FPGA學什麼?就是學習系統級的電路設計。所以,FPGA工程師的發展方向就是系統工程師。

以上7點若能有深刻理解,則就能看清FPGA的本質了。市場的瞬息變化,要求電子產品必須對市場具有高敏感性,產品從方案設計到市場投放的時間越來越短,FPGA在其中功不可沒。另外,在面對Cost Down時,FPGA也起著不可或缺的作用。在當今時代,FPGA已經在通信、數據處理、網路、儀器、工業控制、軍事和航空航天等眾多領域得到了廣泛應用。隨著功耗和成本的進一步降低,FPGA還將進入更多的應用領域,相信FPGA工程師也必將會有一個更加廣闊的施展空間。

推薦一本書《基於VHDL的FPGA開發快速入門·技巧·實例》

加油吧!

閱讀全文

與epld和單片機相關的資料

熱點內容
韋哲python編程 瀏覽:171
亳州機器人編程培訓哪家好 瀏覽:479
python寫入文件變成中文 瀏覽:447
梁加密規定 瀏覽:926
程序員駐場外包多少錢 瀏覽:190
linux退出mysql 瀏覽:424
假期和工資演算法 瀏覽:607
30歲開始做程序員 瀏覽:480
python將字元重復多次 瀏覽:476
燕窩溯源碼真假 瀏覽:753
華商雲app怎麼轉發朋友圈 瀏覽:730
javajdbc使用 瀏覽:174
團隊解壓放鬆游戲 瀏覽:164
u盤被序列號加密了怎麼解除 瀏覽:314
php關鍵技術 瀏覽:531
農信app上怎麼交醫療保險 瀏覽:43
如何恢復伺服器環境 瀏覽:622
遠景壓縮比是多少 瀏覽:887
oa辦公系統伺服器地址 瀏覽:690
六項精進pdf 瀏覽:499