摘 要:介紹FPGA的特點及開發過程,闡述了其與單片機和DSP相結合的技術。<!--摘要CH(結束)←--><!--→關鍵CH(開始)-->
關鍵詞:單片機;數字信號處理器;現場可編程門陣列
<!--關鍵CH(結束)←--><!--→標題EN(開始)-->
<!--關鍵EN(結束)←-->1 FPGA概述
1.1 FPGA的基本結構
FPGA是高密度的PLD,其集成度可達3萬門/片以上。圖1是Xilinx公司的FPGA,它由三種編程單元和一個用于存放編程數據的靜態存儲器構成。這三種可編程單元是IOB(Input/Output Block可編程輸入/輸出單元),CLB(Configurable Logic Block可編程邏輯單元)和IR(Interconnect Resource互連資源)。它們的工作狀態全部由編程存儲器中的數據設定。CLB提供用 戶所需要的邏輯功能。由于這三部分都是可編程的,所以改變芯片的功能除了靠改變各CLB之間的連接,也可以通過改變各個CLB所實現的邏輯功能來完成。 FPGA中的編程信息將存儲在專用的靜態RAM中;RAM觸發器的每一位,存儲一個編程信息。系統上電時,編程信息就由外部傳入到這些存儲單元中, FPGA就可以按照這些信息來形成內部的構造和連接,以實現所需要的功能。
1.2 FPGA編程開發
FPGA中有大量實現組合邏輯的資源,可以完成較大規模的組合邏輯電路設計,而其中相當數量的存儲電路(觸發器)又可完成復雜的時序邏輯電路設計。通過使用各種EDA工具,用原理圖或硬件描述語言,可以很方便地將復雜的電路在FPGA中實現。像典型的數字系統分頻器,數字鐘,數字頻率計等等都可用 FPGA完成。
FPGA的開發系統包括軟件和硬件兩個部分。開發系統軟件指專用的編程語言和相應的匯編程序或編譯程序。開發系統硬件部分包括計算機和編程器。編程器是對FPGA進行寫入和擦除的專用裝置,能夠提供寫入或擦除操作所需要的電源電壓和控制信號,并通過串行接口從計算機接收編程數據,最終寫進FPGA之中。
90年代初Lattice首先推出了一種新型可編程邏輯器件———ISP—PLD(In-SystemProgrammable PLD在系統可編程邏輯器件),將原屬于編程器的寫入/擦除控制電路及高壓脈沖發生電路集成于FPGA中,這樣,在編程時就不必使用編程器,而且由于只需外加5V電壓,所以不必將FPGA從系統中取出,從而實現“在系統”編程。
FPGA設計主要分為設計輸入、綜合、功能仿真(前仿真)、設計實現、時序仿真(后仿真)、配置下載六個步驟。設計輸入包括硬件描述語言HDL、狀態圖與原理圖三種方式。對于簡單的設計,可以使用原理圖或A-BEL進行設計;對于較復雜的設計,可以用行為描述語言(如VHDL語言)和原理圖或二者結合進行設計。功能仿真用來驗證設計的邏輯功能;在設計的過程中,對部分功能或整個設計均可進行仿真。設計實現是指從設計輸入文件到位流文件(只對FPGA而言)。在該過程中,經軟件自動地對設計文件進行映射、布局、布線,產生相應的位流數據文件。時序仿真是在設計實現后,針對器件的布局、布線方案進行時延仿真和分析定時關系。
2 FPGA與單片機
FPGA等大規模可編程邏輯器件可以取代現有的全部微機接口芯片,實現微機系統中的存儲器、地址譯碼等多種功能。利用FPGA可以把多個微機系統的功能電路集成在一塊芯片上。
在功能上,單片機與FPGA有很強的互補性,單片機具有性能價格比高、功能靈活、易于人機對話以及良好的數據處理等特點,而FPGA具有高速、高可靠性以及開發便捷、規范等優點。單片機可用總線方式和獨立方式與FPGA接口。由于其通信工作時序是純硬件行為,對于MCS-51單片機,只需一條單指令就能夠完成所需讀寫時序,也就是最常用的MOV@DPTR,A和MOVA,@DPTR。另外,在FPGA中通過邏輯切換,可使單片機與SRAM或ROM接口,這種方式類似于微處理器系統的DMA工作方式,首先由FPGA與接口的A/D等器件進行高速數據采樣,并將數據暫存于SRAM中,采樣結束后,通過切換,單片機可以與SRAM以總線方式進行數據通信。
目前許多實驗電路板都將FPGA與單片機有機地結合在一起,從而可以完成許多復雜的設計任務。通常單片機負責鍵控、顯示、計算、通信、簡單控制和系統協調,而FPGA負責高速、高精度和高穩定性等指標的實現,也就是說,由單片機負責功能上的設計,FPGA負責指標上的設計。圖2就是一個典型的單片機與 FPGA通信的例子,通過EDA設計(原理圖或硬件描述語言)和單片機匯編語言或C語言的設計,由PC機發命令碼給FPGA,并將FPGA系統上測得的頻率顯示在PC機的屏幕上。這里的單片機起的是通信橋梁作用。
3 FPGA與DSP
數字信號處理(DSP)在許多領域有著廣泛的用途,如雷達、圖像處理、數據壓縮、數字電視和數字通信機等。一般情況下,采取兩種方案進行數字信號系統的設計,一種是用固定功能的DSP器件或FPGA器件,另一種是采用DSP處理器,如TMS320微處理器。
兩種方法中,固定的DSP器件或FPGA器件可以提供很好的實時性能,但其靈活性較差,不適合在實驗室或技術開發環境中的應用;DSP成本低且速度較快,但由于軟件算法在執行時的順序性,限制了它在高速和實時系統中的應用。目前,大規模可編程邏輯器件為數字信號處理提供了第三種解決方案,FPGA與DSP 相結合,能夠在集成度、速度和系統功能方面滿足DSP應用的需要。由于FPGA器件內部提供了RAM,雙口RAM和FIFO—RAM,所以利用FPGA設計DSP系統,同時具備DSP處理器的靈活性和固定功能的DSP芯片的實時性。
3.1 DSP的特點及其與FPGA相比的優劣
DSP是一種具有特殊結構的微處理器。其內部采用程序和數據分開的哈佛結構,具有專門的硬件乘法器,廣泛采用流水線操作,提供特殊的DSP指令,可以用來快速實現各種數字信號處理算法。DSP適用于條件進程,特別是較復雜的多算法任務。在運算上,它受制于時鐘頻率,而且每個時鐘周期所做的有用操作的數目也受到限制。從效果上看,采用DSP軟件更新速度快,可靠性、通用性和靈活性都很強,但DSP受到串行指令流的限制。
FPGA當中有很多自由的門,將這些自由的門連接起來可以形成乘法器、寄存器以及地址發生器等等。這些只要在框圖級完成,許多塊可以從簡單的門到FIR(有限沖激響應)和FFT(快速傅立葉變換)在很高的級別完成。但它的性能受門數及運算速度的限制。
超過幾MHz取樣率,一個DSP僅僅能完成對數據非常簡單的運算,而這樣簡單的運算用FPGA將很容易實現,并能達到很高的取樣速率。在比較低的取樣速率時,整體上很復雜的程序可以使用DSP,而這對于FPGA是很困難的。
在實時視頻處理的應用中,由于其對系統要求極高,只具備簡單功能的DSP無法完成。而FPGA利用并行處理技術實現視頻處理算法,并且只需單個器件就能完成期望的性能。在中值濾波器的應用中,DSP處理器需要67個周期執行算法,而FPGA只需工作在25MHz頻率下,因為FPGA能并行實現該功能,實現上述功能的DSP必須工作在1.5GHz頻率下。在此應用中,FPGA解決方案的處理能力可達到100MHzDSP處理器的17倍。
3.2 FPGA+DSP方案的運用
上面提到,運用DSP受到串行指令流的限制,而利用FPGA的算術邏輯單元與外部存儲器相結合,可以解決線路板面積有限和有些數據處理需要大量存儲空間的矛盾;利用FPGA并行流水的特點解決了數據實時處理和有限DSP處理速度之間的矛盾,而FPGA運行模式的控制和接收上位機的命令、向上位機輸出目標數據的工作由DSP來完成,從而達到了系統的最佳配置。圖3是FPGA+DSP結構典型的例子。
![](http://www.51kaifa.com/upload/eWebUpload/20060420211140456.jpg)
FPGA+DSP的最大特點是結構靈活,有很強的通用性,適用于模塊化設計,從而能夠提高算法的效率;又由于其開發周期較短,系統易于維護和擴展,適用于實時信號處理。在實時信號處理中,低層信號預處理算法所處理的數據量大,對處理的速度要求高,但運算結構相對比較簡單,適用于FPGA硬件實現,這樣同時兼顧速度和靈活性。高層處理算法的特點是所處理的數據量較低層算法少,但算法的控制結構復雜,適用于用運算速度高、尋址方式靈活、通信機制強大的DSP 芯片來實現。
應用將一些能實現基本數字信號處理功能的DSP模塊嵌入FPGA的芯片是數字電路設計的一個趨勢。有些公司已經計劃把基于ASIC的微處理器或DSP 芯核與可編程邏輯陣列集成在一塊芯片上。FPGA提供的性能已經超過1280億MAC/s(乘法累加運算/秒),大大高于傳統的DSP性能。 QuickLogic公司推出的QuickDSP系列,提供了嵌入式DSP構件塊和可編程邏輯器件。除了以前的可編程邏輯和存儲模塊,還包括專用的乘加模塊;這些合成的模塊可以實現DSP功能。
[此貼子已經被作者于2010-11-17 11:59:54編輯過]