數(shù)字電路設計方案中DSP與FPGA的比較與選擇
數(shù)字信號處理技術和大規(guī)模集成電路技術的迅猛發(fā)展,為我們設計數(shù)字電路提供了新思路和新方法。當前數(shù)字系統(tǒng)設計正朝著速度快、容量大、體積小、重量輕的方向發(fā)展。DSP和FPGA技術的發(fā)展使這一趨勢成為可能和必然。
本文引用地址:http://m.butianyuan.cn/article/151328.htm和計算機一樣,數(shù)字信號處理的理論從60年代崛起以來,到80年代DSP產(chǎn)生,它飛速發(fā)展改變了信號處理的面貌。今天DSP已廣泛應用在語音、圖像、通訊、雷達、電子對抗、儀器儀表等各個領域。DSP起了十分關鍵的作用,成為數(shù)字電路設計的主要方法。
二十世紀80年代以來,一類先進的門陣列——FPGA的出現(xiàn),產(chǎn)生了另一種數(shù)字電路設計方法,具有十分良好的應用前景?;?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/FPGA">FPGA的數(shù)字電路設計方式在可靠性、體積、成本上的優(yōu)勢是巨大的。
除了上述兩種方案,還有DSP+FPGA方案,以及選擇內(nèi)部嵌入DSP模塊的FPGA實現(xiàn)系統(tǒng)的方案。
1 DSP和FPGA的結(jié)構特點
1.1 DSP的結(jié)構特點
DSP是一種具有特殊結(jié)構的微處理器。DSP芯片的內(nèi)部采用程序和數(shù)據(jù)分開的哈佛結(jié)構,具有專門的硬件乘法器,廣泛采用流水線操作,提供特殊的DSP 指令,可以用來快速地實現(xiàn)各種數(shù)字信號處理算法。根據(jù)數(shù)字信號處理的要求,DSP芯片一般具有如下的一些主要特點:
(1)在一個指令周期內(nèi)可完成一次乘法和一次加法;
(2)程序存儲器和數(shù)據(jù)存儲器是兩個相互獨立的存儲器,每個存儲器獨立編址,可以同時訪問指令和數(shù)據(jù);
(3)片內(nèi)具有快速RAM,通??赏ㄟ^獨立的數(shù)據(jù)總線在兩塊中同時訪問;
(4)具有低開銷或無開銷循環(huán)及跳轉(zhuǎn)的硬件支持;
(5)快速的中斷處理和硬件I/O支持;
(6)具有在單周期內(nèi)操作的多個硬件地址產(chǎn)生器;
(7)可以并行執(zhí)行多個操作;
(8)支持流水線操作,使取指、譯碼和執(zhí)行等操作可以重疊執(zhí)行。
1.2 FPGA的結(jié)構特點
FPGA的結(jié)構是由基于半定制門陣列的設計思想而得到的。從本質(zhì)上講,FPGA是一種比半定制還方便的ASIC(Application Specific Integrated Circuit 專用集成電路)設計技術。
FPGA的結(jié)構主要分為三部分:可編程邏輯塊、可編程I/O模塊、可編程內(nèi)部連線??删幊踢壿媺K和可編程互連資源的構造主要有兩種類型:即查找表類型和多路開關型。
查找表型FPGA的可編程邏輯單元是由功能為查找表的SRAM(Static Random Access Memory 靜態(tài)隨機存取存儲器)構成函數(shù)發(fā)生器,由它來控制執(zhí)行FPGA應用函數(shù)的邏輯。SRAM的輸出為邏輯函數(shù)的值,由此輸出狀態(tài)控制傳輸門或多路開關信號的通斷,實現(xiàn)與其它功能塊的可編程連接。多路開關型可編程邏輯塊的基本構成是一個多路開關的配置。利用多路開關的特性,在多路開關的每個輸入接到固定電平或輸入信號時,可實現(xiàn)不同的邏輯功能。大量的多路開關和邏輯門連接起來,可以構成實現(xiàn)大量函數(shù)的邏輯塊。
FPGA由其配置機制的不同分為兩類:可再配置型和一次性編程型。近幾年來,FPGA因其具有集成度高、處理速度快以及執(zhí)行效率高等優(yōu)點,在數(shù)字系統(tǒng)的設計中得到了廣泛應用。
2 DSP與FPGA性能比較
DSP內(nèi)部結(jié)構使它所具有的優(yōu)勢為:所有指令的執(zhí)行時間都是單周期,指令采用流水線,內(nèi)部的數(shù)據(jù)、地址、指令及DMA(Direct Memory Access直接存儲器存取)總線分開,有較多的寄存器。
與通用微處理器相比,DSP芯片的通用功能相對較弱些。DSP是專門的微處理器,適用于條件進程,特別是較復雜的多算法任務。在運算上它受制于時鐘速率,而且每個時鐘周期所做的有用操作的數(shù)目也受限制。例如TMS320C6201只有兩個乘法器和一個200 MHz 的時鐘,這樣只能在每秒完成400M的乘法。
將模擬算法、具體指標要求映射到通用DSP中,比較典型的DSP通過匯編或高級語言如C語言進行編程,實時實現(xiàn)方案。如果DSP采用標準C程序,這種C代碼可以實現(xiàn)高層的分支邏輯和判斷。例如通信系統(tǒng)的協(xié)議堆棧,這是很難在FPGA上實現(xiàn)的。從效果來說,采用DSP器件的優(yōu)勢在于:軟件更新速度快,極大地提高了系統(tǒng)的可靠性、通用性、可更換性和靈活性,但DSP的不足是受到串行指令流的限制。
FPGA有很多自由的門,通過將這些門連接起來形成乘法器、寄存器、地址發(fā)生器等等。這些只要在框圖級完成,許多塊可以從簡單的門到FIR(Finite Impulse Response 有限沖激響應)或FFT(Fast Fourier Transform 快速傅里葉變換)在很高的級別完成。但它的性能受到它所有的門數(shù)及時鐘速度的限制。例如,一個具有20萬門的Virtex 器件可以實現(xiàn)200MHz時鐘的10個16位的乘法器。
FPGA包含有大量實現(xiàn)組合邏輯的資源,可以完成較大規(guī)模的組合邏輯電路設計;與此同時,它還包含有相當數(shù)量的觸發(fā)器,借助這些觸發(fā)器,FPGA又能完成復雜的時序邏輯功能。通過使用各種EDA (Electronic Design Automatic 電子設計自動化)工具,設計人員可以很方便地將復雜的電路在FPGA中實現(xiàn)。象微處理器一樣,許多FPGA可以無限的重新編程,加載一個新的設計方案只需要幾百毫秒。甚至現(xiàn)場產(chǎn)品可以很簡單而且快速的實現(xiàn)。這樣,利用重配置可以減少硬件的開銷。
超過幾MHz的取樣率,一個DSP僅僅能完成對數(shù)據(jù)非常簡單的運算。而這樣簡單的運算用FPGA將很容易實現(xiàn),并且能達到非常高的取樣速率。在比較低的取樣速率時,整體上很復雜的程序可以使用DSP,這對于FPGA來講是很困難的。
對于較低速的事件,DSP是有優(yōu)勢的。可以將它們排隊,并保證它們都能執(zhí)行,但是在它們處理前可能會有些時延。而FPGA不能處理多事件,因為每個事件都有專用的硬件,但是采用這種專用硬件實現(xiàn)的每個事件的方式可以使各個事件同時執(zhí)行。
如果需要主工作環(huán)境進行切換,DSP可以通過在程序里分出一個新的子程序的方式來完成,而對于每種配置FPGA需要建立專門的資源。如果這些配置是比較小的,那么在FPGA中可以同時存在幾種配置;如果配置較大則意味著FPGA需要重新配置,而這種方法只在某些時候可以采用。
最后,FPGA是以框圖方式編程的,這樣很容易看數(shù)據(jù)流。DSP是按照指令的順序流來編程的。大多數(shù)的單處理系統(tǒng)都是以某種框圖方式開始設計的。實際上,系統(tǒng)設計者大多認為將框圖移植給FPGA比將其轉(zhuǎn)化為DSP的C代碼更容易。
評論