《數字信號處理》課件1第10章_第1頁
《數字信號處理》課件1第10章_第2頁
《數字信號處理》課件1第10章_第3頁
《數字信號處理》課件1第10章_第4頁
《數字信號處理》課件1第10章_第5頁
已閱讀5頁,還剩162頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第10章數字信號處理的硬件實現10.1基于DSP芯片的硬件實現

10.2基于FPGA芯片的硬件實現

10.3應用舉例

10.1基于DSP芯片的硬件實現

數字信號處理芯片是一種特別適合于進行數字信號處理運算的微處理器,主要用于實時快速實現各種數字信號處理的算法。在20世紀80年代以前,由于受實現方法的限制,數字信號處理的理論還不能得到廣泛的應用。直到20世紀80年代初,世界上第一塊單片可編程DSP芯片的誕生,才使理論研究成果廣泛應用到實際的系統中,并且推動了新的理論和應用領域的發展。可以毫不夸張地講,DSP芯片的誕生及發展對近幾年來通信、計算機、控制等領域的技術發展起到了十分重要的作用。10.1.1

DSP芯片及其特點

1.DSP芯片的發展

DSP芯片誕生于20世紀70年代末,至今已經得到了突飛猛進的發展,并經歷了以下三個階段。

第一階段為DSP的雛形階段(1980年前后)。在DSP芯片出現之前,數字信號處理只能依靠通用微處理器(MPU)來完成。由于MPU處理速度較低,難以滿足高速實時處理的要求。1965年,庫利(Cooley)和圖基(Tukey)發表了著名的快速傅里葉變換FFT算法,極大地降低了傅里葉變換的計算量,從而為數字信號的實時處理奠定了算法的基礎。與此同時,伴隨著集成電路技術的發展,各大集成電路廠商都為生產通

用DSP芯片作了大量的工作。1978年,AMI公司生產出第一片DSP芯片S2811。1979年,美國Intel公司發布了商用可編程DSP器件Intel2920,由于內部沒有單周期的硬件乘法器,使芯片的運算速度、數據處理能力和運算精度受到了很大的限制。此階段DSP的運算速度約為單指令周期200~250ns,應用僅局限于軍事或航空航天領域。這個時期的代表性器件主要有Intel2910(Intel)、μPD7720(NEC)、TMS32010(TI)、DSP16(AT&T)、S2811(AMI)、ADSp-21(AD)等。值得一提的是,TI公司的第一代DSP芯片——TMS32010,它采用了改進的哈佛結構,允許數據在程序存儲空間與數據存儲空間之間傳輸,大大提高了運行速度和編程靈活性,在語音合成和編/解碼器中得到了廣泛的應用。第二階段為DSP的成熟階段(1990年前后)。這個時期,許多國際上著名集成電路廠家都相繼推出自己的DSP產品。例如,TI公司的TMS320C20、30、40、50系列,Motorola

公司的DSP5600、DSP9600系列,AT&T公司的DSP32等。這個時期的DSP器件在硬件結構上更適合于數字信號處理的要求,能進行乘法、FFT變換和單指令濾波處理,其單指令周期為80~100ns。如TI公司的TMS320C20,它是該公司的第二代DSP器件,采用了CMOS制造工藝,其存儲容量和運算速度成倍提高,為語音處理、圖像硬件處理技術的發展

奠定了基礎。20世紀80年代后期,以TI公司的TM5320C30為代表的第三代DSP芯片問世,伴隨著運算速度的進一步提高,其應用范圍逐步擴大到通信、計算機領域。第三階段為DSP的完善階段(2000年以后)。這一時期各DSP制造商不僅使信號處理能力更加完善,而且使系統開發更加方便,程序編輯調試更加靈活,功耗進一步降低,成本不斷下降。尤其是各種通用外設集成到片上,大大地提高了數字信號處理能力。這一時期的DSP運算速度可達到單指令周期10ns左右,最快甚至達到1ns,可在Windows環境下直接用C語言編程,使用方便靈活,使DSP芯片不僅在通信、計算機領域得到了廣泛的應用,而且逐漸滲透到了人們的日常消費領域。目前,DSP芯片的發展非常迅速。硬件結構方面主要是向多處理器的并行處理結構、便于外部數據交換的串行總線傳輸、大容量片上RAM和ROM、程序加密、增加I/O驅動能力、外圍電路內裝化、低功耗等方面發展。軟件方面主要是綜合開發平臺的完善,使DSP的應用開發更加靈活、方便。

2.DSP芯片的特點

數字信號處理不同于普通的科學計算與分析,它強調運算的實時性。因此,DSP除了具備普通微處理器所強調的高速運算和控制能力外,針對實時數字信號處理的特點,在處理器的結構、指令系統、指令流程上作了很大的改進,其主要特點如下。

(1)采用哈佛結構。

DSP芯片普遍采用數據總線和程序總線分離的哈佛結構或改進的哈佛結構,比傳統處理器的馮·諾依曼結構具有更快的指令執行速度。①馮·諾依曼(VonNeumann)結構。該結構采用單存儲空間,即程序指令和數據共用一個存儲空間,使用單一的地址和數據總線,取指令和取操作數都是通過一條總線分時進行的。當進行高速運算時,不但不能同時進行取指令和取操作數,而且還會造成數據傳輸通道的瓶頸現象,其工作速度較慢。圖10.1.1給出了馮·諾依曼結構。圖10.1.1馮·諾依曼結構②哈佛(Harvard)結構。該結構采用雙存儲空間,程序存儲器和數據存儲器分開,有各自獨立的程序總線和數據總線,可獨立編址和獨立訪問,可對程序和數據進行獨立傳輸,使得取指令操作、指令執行操作、數據吞吐并行完成,大大地提高了數據處理能力和指令的執行速度,非常適合于實時的數字信號處理。微處理器的哈佛結構如圖10.1.2所示。圖10.1.2哈佛結構③改進型的哈佛結構。該結構是采用雙存儲空間和數條總線,即一條程序總線和多條數據總線。其特點如下:允

許在程序空間和數據空間之間相互傳送數據,使這些數據可以由算術運算指令直接調用,增強了芯片的靈活性;提供了存儲指令的高速緩沖器(Cache)和相應的指令,當重復執行這些指令時,只需讀入一次就可連續使用,不需要再次從程序存儲器中讀出,從而減少了指令執行所需要的時間。例如,TMS320C6200系列的DSP,整個片內程序存儲器都可以配置成高速緩沖結構。

(2)采用流水線技術。

DSP芯片中指令的執行采用流水線方式,圖10.1.3是三級流水線的示意圖。DSP在第n個時鐘周期內完成對第N條指令取指的同時,還將完成對第N-1條指令的譯碼,并同時執行第N-2條指令。在下一個時鐘周期n+1,將同時完成對第N+1條指令的取指,對第N條指令的譯碼及對第N-1條指令的執行。這樣的執行方式將依次進行下去,這種在一個時鐘內同時完成多個任務的流水線工作方式將大大提高運算的速度。圖10.1.3

DSP指令執行的流水線方式

(3)配有專用的硬件乘法-累加器。

為了適應數字信號處理的需要,當前的DSP芯片都配有專用的硬件乘法-累加器,可在一個周期內完成一次乘法和一次累加操作,從而可實現數據的乘法和累加操作。例如,可實現卷積計算、FIR和IIR濾波、FFT變換等專用信號的處理。

(4)有豐富的片內外設資源。

為了方便數據的讀、寫及與片外設備的通信,DSP芯片上一般都集成有DMA控制器,同時片上還集成有串行通信口、定時器及中斷處理器等。由于DSP通常具有較高的速度,外設的速度相對較慢,因此片上還集成有和不同速度存儲器相連接的硬件和軟件等待狀態發生器。

(5)具有特殊的DSP指令。

為了滿足數字信號處理的需要,在DSP指令系統中,設計了一些完成特殊功能的指令。如TMS320C54x中的FIRS和LMS指令,專門用于完成系數對稱的FIR濾波器和LMS算法。

為了實現FFT、卷積等運算,當前的DSP大多在指令系統中設置了“循環尋址”、“碼位倒置”和其它特殊指令,使得在進行這些運算時,其尋址、排序及計算速度大大地提高。

(6)快速的指令周期。

由于采用哈佛結構、流水線操作、專用的硬件乘法器、特殊的指令及集成電路的優化設計,DSP芯片一般具有很高的時鐘速度和極快的運算能力。例如,TI公司推出的TMS320C6000T系列的DSP最大時鐘速度可達1GHz,因此時鐘周期僅為1ns,其并行運算能力可達8000MIPS(MIPS是指每秒百萬條指令)。

總之,先進周密的硬件設計、方便完整的指令系統、配套的開發工具以及高速、實時信號處理市場的巨大需要,使得DSP微處理器在飛速發展的通信、計算機等領域中異軍突起,大放光彩。

3.定點與浮點DSP

按計算機中數的表示方式,DSP可分為定點和浮點兩種。早期的DSP大都為定點的,一般為16bit或32bit。采用定點數來實現數值運算時,其操作數大都采用整型數來表示。整型數的大小取決于所用的字長,字的位數越多,所能表示的數的范圍越大。例如,對16bit字長,其表示的數的最大范圍是-32768~32767。在運算過程中,如果兩個數的和或積超過這一范圍,就要產生數據的溢出,從而帶來較大的誤差。當然,定點DSP也可以實現小數運算,不過小數點的位置是由編程人員指定的。一個32bit定點制格式如圖10.1.4(a)所示,與此相對應,IEEE754標準定義的單精度浮點格式如圖10.1.4(b)所示。圖10.1.4數的表示圖10.1.4中,s是符號位,為第31位。s=0表示正數,s=1表示負數。對定點制,一個數x可表示為

x=(-1)s×.f

f為第0位至第30位,共31位,至于小數點在什么位置,由使用者指定。例如,一個正的十六進制數40000000H,若小數點在第0位后面,則x=1073741824,這時表示的數最大,但“分辨率”為1;若小數點在第31位后面,則x=0.5,表示的數最小,“分辨率”為1/231。若小數點在其它位置,同一個十六進數將又會是另一個十進制數??傊?,在定點制中,小數點越靠近高位,能表示的數的范圍越小,但精度越高;反之,小數點越靠近低位,能表示的數的范圍越大,但精度越低。一個浮點數x可以表示為指數和尾數的形式:

x=m×2e

式中,e稱為指數,m稱為尾數。尾數通常用歸一化數表示。

對圖10.1.4(b)的浮點制,e是指數,為第23~30位,共8位,因此其取值范圍為0~255。m是尾數的分數部分,為第0~22位,共23位。因此,一個浮點數x可以表示如下:

(1)若0<e<255,則x=(-1)s×2(e-127)×(1+.m)。

(2)若e=0,m≠0,則x=(-1)s×2-126×(0.m)。

(3)若e=0,m=0,則x=0。同樣對十六進制數x=40000000H,s=0,e=27=128,m的23位全為零,所以十進制的x=2。當s=0,e=254,且m全為1時,該浮點制表示的數最大,這時x=2128。由此可以看出,對同樣的字長,浮點制所能表示的數的范圍大大擴大,從而有效地避免了溢出。此外,在浮點制中,數的精度是一樣的,且數的表示相當容易,因此采用浮點制非常有利于編程。但浮點制CPU的結構要比定點制復雜,因此價格也高,這就是目前的DSP多是以定點制為主的原因。另外需要指出的是,不同廠家的DSP所采用的浮點格式不盡相同。在TI公司的產品中,C1X、C2X、C5X與C2000中的C20X、C24X以及C5000系列都是16bit定點DSP;而C3X、C4X是32bit浮點DSP。C2000中的C28X以及C6000中的C62X、C64X是32bit的定點DSP,而C67X是浮點DSP,它可工作在32bit/64bit兩種狀態。10.1.2典型DSP芯片的結構及其主要性能

盡管不同系列的DSP產品具有不同的特點,但在內部結構、工作方式等方面具有相似性。下面就以IT公司的TMS320C54x系列為例,對DSP芯片的結構及主要性能進行介紹。TMS320C54x是TI公司為實現低功耗、高性能而專門設計的定點DSP芯片,目前在國內外被廣泛應用。TMS320C54x芯片為典型的改進型哈佛結構,圖10.1.5為其結構圖。圖10.1.5

TMS320C54x的結構圖

C54x芯片的主要特點及性能如下:

·操作性能高達100MIPS,其中TMS320VC5416高達160MIPS;

·25/20/15/12.5/10/6.25ns機器指令周期;

·整合維特比操作;

·備有3個掉電模式;

·整合隨機存儲器及只讀存儲器配置;

·自動緩沖串口;

·HPI接口;

·超薄包裝(100腳、128腳、144腳TQFP及144腳BGA包裝);

·1.8V、2.5V、3.3V及5V操作;

·40bit加法器及兩個40bit累加器,用于支持并行指令;

·40bit算術邏輯單元;

·17bit×17bit乘法器,允許16bit帶符號或不帶符號的乘法;

·采用多總線結構,內部共有8組總線;

·8個輔助寄存器及一個軟件棧,允許使用定點DSPC語言編譯器。

1.中央處理單元

C54x芯片的CPU包括:

(1)40bit的算術邏輯單元(ALU)。

TMS320C54x使用了40bit的ALU和兩個40bit的累加器(ACCA和ACCB)來完成二進制補碼的運算,同時ALU可完成邏輯運算。在狀態寄存器ST1中的C16位置1時,可同時完成兩個16bit的運算。

(2)40bit的累加器(ACCA和ACCB)。

如圖10.1.6所示,累加器ACCA和ACCB存放從ALU或乘法器/加法器單元輸出的數據,另外它也能輸出到ALU或乘法器/加法器中。累加器可分為三個部分:

·保護位:bit39~32。

·高位字:bit31~16。

·低位字:bit15~0。圖10.1.6累加器保護位用來作為計算的前部留空,防止在迭代運算中產生溢出,

(3)桶形移位寄存器。

C54x的桶形移位寄存器主要用于累加器或數據區操作數的定標。有一個與累加器或數據存儲器(CB、DB)相連接的40bit輸入,和一個與ALU或數據存儲器(EB)相連接的40bit輸出,能把輸入的數據進行0~31bit的左移和0~16bit右移,所移位數由ST1中的移位數域(ASM)或暫存寄存器(TREG)決定。移位輸出的最低位填0,最高位可以填0或進行符號擴展,由ST1中的符合擴展方式位(SXM)決定。

(4)乘累加單元MAC。

乘累加單元MAC包括1個17bit×17bit乘法器和1個40bit專用加法器。MAC在一個流水線周期內可以完成1次乘法運算和1次加法運算。

(5)比較、選擇和存儲單元CSSU。

CSSU單元完成累加器的高位字和低位字之間的最大值比較,即選擇累加器中較大的字并存儲在數據存儲器中,不改變狀態寄存器ST0中的測試/控制位和傳送寄存器(TRN)的值,專門用于Viterbi譯碼操作中的相加、比較、選擇操作。

(6)狀態和控制寄存器。

C54x有3個狀態和控制寄存器,分別為:狀態寄存器ST0和ST1,處理器方式狀態寄存器PMST。其中ST0和ST1包括了各種條件和方式的狀態,PMST包括了存儲器配置狀態和控制信息。

2.C54x的存儲器組織

C54x存儲器由3個獨立的可選擇空間組成:程序、數據和I/O空間。所有芯片均有隨機訪問存儲器(RAM)和只讀存儲器(ROM),RAM分為雙訪問RAM和單訪問RAM,ROM是用來存放固化程序的。

(1)片內ROM。

標準的C54x片內ROM中有一個引導程序,它可以將用戶代碼調入到程序存儲器的任何一個位置,若MP/MC在硬件復位時為低電平,執行從單元FF80H開始,此單元存有轉移到引導程序開始處的轉移指令。

(2)片內RAM。

片內分為雙訪問RAM(DARAM)和單訪問的RAM(SARAM)。DARAM存儲器在一個周期里能被訪問兩次,在復位時,DARAM被映射到數據存儲器空間,DARAM也可以通過設置PMST中的OVLY位映射到程序/數據空間。片內的SARAM由幾塊組成,每塊在一個機器周期里只能訪問一次,SARAM優先存儲數據,也可以映射到程序空間來存儲程序代碼。

3.C54x的總線結構

C54x的總線結構由8組16bit總線(4組程序/數據總線,4組地址總線)構成。

(1)程序總線(PB)傳送從程序存儲器來的指令代碼和立即數。

(2)3組數據總線(CB、DB及EB),CB和DB總線傳送從數據存儲器讀出的操作數,EB總線傳送寫入到存儲器中的數據。

(3)4組地址總線(PAB、CAB、DAB和EAB)傳送執行指令所需的地址。

4.C54x的寄存器

C54x擁有眾多的寄存器,有輔助寄存器、暫存寄存器、過渡寄存器、堆棧指針寄存器、循環緩沖大小寄存器、塊

循環寄存器、中斷寄存器等。

(1)輔助寄存器(AR0~AR7)。

8個16bit的輔助寄存器能被ALU訪問,也能被輔助寄存器算術單元(ARAUs)修改,其主要功能是產生16bit的數據空間,但也能用來作為通用寄存器和計數器。

(2)暫存寄存器(TREG)。

暫存寄存器為乘法指令和乘/累加指令存放一個乘數,帶移位操作的指令,如ADD、LD或SUB指令中存放一個動態的移位計數,也可作為BITT指令存放一個動態位地址。EXP指令把計算出的數值存入TREG,而NORM指令將TREG的值歸一化。

(3)過渡寄存器(TRN)。

過渡寄存器是一個16bit的寄存器,用來得到新的度量值存放中間結果,以完成Viterbi算法,CMPS(比較、選擇和存儲)指令在累加器高位字和低位字進行比較的基礎上修改TRN的內容。

(4)堆棧指針寄存器(SP)。

堆棧指針寄存器是存放棧頂地址的16bit寄存器,SP總是指向壓入堆棧的最后一個數據,中斷、調用、返回、PUSHED、PUSHM、POPD、POPM等指令都要進行堆棧處理。

(5)循環緩沖大小寄存器(BK)。

循環緩沖大小寄存器由ARAUs用來在循環尋址中確定數據塊的大小。

(6)塊循環寄存器(BRC、RSA、REA)。

塊循環寄存器(BRC)在塊循環時確定一代碼所需循環的次數,塊循環開始地址(RSA)是需要循環的程序的開始地址,塊循環尾地址(REA)是循環程序塊的結束地址。

(7)中斷寄存器(IMR、IFR)。

中斷寄存器(IMR)在需要的時候獨立地屏蔽特定的中斷,中斷標志寄存器(IFR)用來指明各個中斷的當前狀態。

5.C54x的片內外設

C54x芯片有以下外設:通用I/O引腳(BIO和XF)、軟件可編程等待狀態發生器、可編程的塊切換邏輯、主機接口(HPI)、硬件定時器、時鐘發生器和串口等。

(1)通用I/O引腳。

每一種C54x芯片都有兩個通用I/O引腳BIO和XF。BIO是用來監測外部設備狀態的輸入管腳。在對時間要求很嚴格的循環不能被外部中斷所打斷的時候,可以用BIO腳來代替中斷與外設相連,根據BIO輸入的狀態來執行一個轉移。XF用于發信號給外部設備,可以通過編程控制。

(2)軟件可編程等待狀態發生器。

軟件可編程等待狀態發生器可以把外部總線周期擴展到7個機器周期,從速度上和較慢的片外存儲器和I/O設備相匹配,它不需要任何的外部硬件,只由軟件控制。

(3)可編程塊切換邏輯。

可編程塊切換邏輯在訪問越過存儲器塊邊界,或從程序存儲器跨越到數據存儲器時,能自動插入一個周期,此額外的周期允許存儲器器件在其它器件開始驅動總線之前釋放總線,以此來防止總線競爭。用于存儲器塊切換的塊大小由切換控制寄存器(BSRC)確定。

(4)主機接口。

主機接口(HPI)是一個8bit的并口,提供C54x與主處理器的接口,C54x和主處理機都可以訪問C54x的片內存儲器,并且通過它進行信息交換。

(5)硬件定時器。

C54x有一個帶有4bit預分頻器的16bit的定時電路,定時計數器在每一個時鐘周期中減1,每當計數器減至0時產生一個定時中斷,可以通過設置特定的狀態來使定時器停止,恢復運行、復位或禁止。

(6)時鐘發生器。

時鐘發生器由一個內部振蕩器和一個鎖相環電路組成,可以通過晶振或外部的時鐘驅動。鎖相環電路能使時鐘源乘上一個特定的系數,得到一個內部CPU時鐘,故可以選擇一個頻率比CPU時鐘低的時鐘源。

(7)串口。各種C54x的芯片配有不同的串口,但不外乎以下三種:同步、緩沖和時分多路。同步串行I/O口:高速、全雙工串口,提供與編碼器、A/D轉換器等串行設備之間的通信。當一個C54x芯片有多個同步串口時,它們是相互獨立的,每個串口都能工作到1/4的時鐘頻率(CLKOUT)。同步串口為收、發雙向緩沖的,單獨由可屏蔽的外部中斷信號控制,數據可以按字節或字傳送。

緩沖串口(BSP):在同步串口的基礎上增加了一個自動緩沖單元,最大以CLKOUT頻率工作。它也是全雙工和雙緩沖的,能提供靈活的數據串長度,自動緩沖單元支持高速傳送并降低服務中斷開銷。

時分多路串口(TDM):允許數據時分多路的同步串口,既能工作于同步方式,也能工作于TDM方式下,在多處理器中得到廣泛的應用。

6.外部總線接口

C54x有64K的16bit并行I/O尋址,對外部存儲器或I/O的訪問則通過外部總線進行,獨立的空間選擇信號DS、PS和IS允許進行物理上分開的空間選擇。接口的外部ready輸入信號和軟件產生的等待狀態允許處理器與各種不同速度的存儲器和I/O設備相連,接口的保持模式使外部設備能控制C54x的總線。10.1.3基于DSP芯片系統的設計與調試

1.DSP軟件開發工具

隨著運算能力的不斷增強以及片上集成外設的不斷豐富,DSP芯片的功能變得越來越強大,以前需要多塊DSP芯片共同完成的工作現在可能只需要一塊DSP芯片就能勝任。隨著DSP芯片性能的提升,運行在每一塊DSP芯片上的軟件也變得越來越復雜。現在,軟件系統的開發與調試工作會占整個系統開發大約80%的工作量,遠遠超過了硬件系統設計與開發所耗費的時間。在這種情況下,軟件開發工具的重要性就凸顯出來,選擇一個優秀的軟件開發工具將大大加快整個開發的進度。TI公司DSP軟件工具也經歷了由基于匯編語言到基于高級語言,由分散到集成的一個發展過程。

1)TI早期的軟件開發工具

TI早期的DSP軟件開發工具主要可以分為三類:①代碼生成工具(codegenerationtools),如編譯器(compiler)、匯編器(assembler)和連接器(linker);②代碼調試工具,如Csourcedebugger;③仿真工具,如simulator等。

(1)TMS320宏匯編編輯器/編譯器/連接器。

凡是從事過單片CPU開發的讀者都知道,匯編語言程序一般都是用助記符編寫的,因此需要有一個匯編語言的編輯器,即assembler。當將編輯好的匯編語言程序在CPU上執行時,需要將該程序編譯、連接后才能生成可執行的機器碼,也即目標文件,這時需要宏匯編的編譯器/連接器,即compiler/linker。TI公司提供兩類宏匯編的編輯器/編譯器/連接器,一類用于定點DSP芯片,一類用于浮點DSP芯片,它們統稱為代碼生成工具。

(2)TMS320系列最佳的ANSIC編譯器(ANSICcompiler)。

眾所周知,用高級語言編程可讀性強,便于檢查。為此,TI公司提供了對其DSP的C語言編譯器,它可將用標準ANSIC語言編寫的原文件轉換成高效的TMS320系列的匯編語言源文件,該源文件再經TMS320的編譯器/連接器后即可生成可執行的目標文件。TI的C編譯器也分為兩類,一類適用于定點的DSP,另一類適用于浮點的DSP。

(3)代碼調試工具(debugger)。

C語言或匯編語言調試器是一類工作在PC機上的軟件工具,它通過后面要介紹的硬件調試工具(如DSK、EVM板等)實現對所編程序的調試。

(4)軟件仿真器(simulator)。

TMS320系列的軟件仿真器是一個程序軟件,它運行在PC上,可模擬TMS320的整個指令系統,從而達到程序檢驗和開發的目的。其特點如下:

·在主機上非實時地執行用戶編寫的DSP程序;

·可檢查和改寫寄存器的內容;

·對數據和程序存儲器的內容可顯示及讀寫;

·可跟蹤累加器(ACC)、程序計數器(PC)及輔助寄存器(AR0~AR7);

·可單步執行,可在程序中設置斷點,可設置及響應用戶的中斷;

·可仿真外圍設備及緩沖區。

可見,該軟件仿真器可在普通的PC機上模擬DSP芯片的工作,方便了程序的調試。該仿真器在PC的MSDOS環境下,每秒鐘可執行幾百條指令。以上4個軟件開發工具都是各自獨立的工作,并且基本上都不具備友好的人機交互界面。因此,在使用時開發者往往需要輸入很長的命令行,同時經常需要在不同的應用之間頻繁切換,這就給軟件的編寫與調試帶來極大的不便。另外,使用這些開發工具也為實時系統的調試帶來了很多麻煩,因為開發者必須在應用程序中設置斷點,也就是必須中斷DSP上正在運行的程序才能從DSP獲取程序運行的數據,而通過這種方式獲取的信息實際上只是應用程序的一些孤立的靜態運行結果,它們無法真實地反映系統在連續的、實時的情況下的運行狀況。這樣,很多隱藏的問題在調試階段不會被發現,但在實際運行中就可能表現出來。以上所述的種種不足就為DSP的應用帶來了不少的困難。為了滿足日益復雜的DSP應用需求,TI公司推出了eXpressDSP的框架。eXpressDSP是一個開放式的、集成的軟件開發環境,它不但包含了上述的常用工具軟件,并且在功能上大大擴展,而且為使用者提供了良好的人機交互界面。它包含如下4個部分:

·集成開發環境(CodeComposerStudio,CCS);

·實時基礎軟件DSP/BIOS;

·算法標準(eXpressDSPalgorithmstandard,XDAIS);

·由第三方公司提供的模塊,包括插件和算法模塊等。

eXpressDSP技術提供的簡單、易用且功能強大的工具可以大大縮短DSP產品的開發時間,從而使開發者將精力集中到更新應用的發展中。

2)集成開發環境CCS

CCS是一個為TMS320系列DSP設計的高度集成的軟件開發和調試環境,它將DSP工程項目管理、源代碼的編輯、目標代碼的生成、調試和分析都打包在一個環境中提供給用戶。CCS軟件調試窗口如圖10.1.7所示,主要包括以下工具:

·C編譯器、匯編優化器和連接器(代碼生成工具);

·指令集仿真器(simulator);

·實時的基礎軟件(DSP/BIOS);

·主機和目標機之間的實時數據交換(RTDX);

·實時分析和數據可視化。圖10.1.7

CCS軟件調試窗口

CCS提供了一個圖形化的DSP工程項目管理工具,用戶可以方便地瀏覽或管理諸如源文件、庫文件和配置文件等。利用源代碼編輯器,開發人員可以在CCS中直接采用C語言或者匯編語言來編寫源文件。CCS高效的代碼編譯和優化工具可以有效地減少目標代碼的長度,提高目標代碼的執行效率。在CCS中,所有源文件的編譯、匯編和連接只需要一個按鈕就可以完成,用戶不必再輸入冗長的命令行來完成這些操作。經過編譯連接產生的目標代碼可以在CCS的環境下通過硬件仿真工具,如XDS510等,下載到用戶目標系統中進行調試和運行。如果沒有用戶目標系統,還可以將目標代碼裝載到仿真器中運行。仿真器利用計算機的資源模擬DSP的運行情況,可以幫助用戶熟悉DSP的內部結構和指令,并對程序進行簡單的調試。在應用開發的初期,可能目標系統尚未搭建起來,在這種情況下可以利用仿真器對部分程序功能進行非實時驗證,使得系統的軟件開發工作和硬件開發工作可以同步進行。在CCS中,用戶可以利用所提供的數據可視化工具按照數據的自然格式來觀察數據,如眼圖、星座圖、FFT運算結果圖等,CCS還提供了多種格式(如YUV格式或RGB格式等)來讀取內存中的原始圖像數據并加以顯示,這些工具使得位于DSP存儲器中的數據得以形象地表現,從而可以大大加速分析與測試的速度。

2.DSP系統的基本設計流程

與其它系統設計工作一樣,在進行DSP系統設計之前,設計者首先要明確自己所設計的系統用于什么目的,應具有什么樣的技術指標。對于一個實際的DSP系統,設計者應考慮的技術指標主要包括:

·由信號的頻率范圍確定系統的最高采樣頻率;

·由采樣頻率及所要進行的最復雜算法所需的最大時間來判斷系統能否實時工作;

·由以上因素確定何種類型的DSP芯片的指令周期可滿足需求;

·由數據量的大小確定所使用的片內RAM及需要擴展的RAM的大??;

·由系統所需要的精度確定是采用定點運算還是浮點運算;

·根據系統是作計算用還是控制用來確定輸入輸出端口的需求。由以上因素可大體決定應該選TMS320系列中哪一代的產品來實現自己的任務,根據選用的DSP芯片及上述技術指標,還可以初步確定A/D、D/A、RAM的性能指標及可供選擇的產品。當然,在產品選型時,還必須考慮成本、供貨能力、技術支持、開發系統、體積、功耗、工作環境溫度等。

具體進行DSP系統設計時,其一般設計流程圖如圖10.1.8所示。圖10.1.8

DSP系統設計流程圖

DSP系統的設計步驟可大致分為如下幾個階段:

(1)根據需求寫出任務說明書。

(2)算法模擬階段。

在這一階段主要是根據設計任務確定系統的技術指標。首先應根據系統需求進行算法仿真和高級語言(如MATLAB)模擬實現,以確定最佳算法,并初步確定相應的參數。

(3)DSP芯片及外圍芯片的確定階段。

根據算法的運算速度、運算精度和存儲等要求選擇DSP芯片及外圍芯片。

(4)軟硬件設計階段。

首先按照選定的算法和DSP芯片,對系統的哪些功能用軟件實現,哪些功能用硬件實現進行初步分工,如FFT、數字上/下變頻器、RAKE分集接收是否需要專門芯片或FPGA芯片實現,譯碼判決算法是用軟件判決還是硬件判決等等;然后,根據系統技術指標要求著手進行硬件設計,完成DSP芯片外圍電路和其它電路(如轉換、控制、存儲、輸出、輸入等電路)的設計;根據系統技術指標要求和所確定的硬件編寫相應的DSP程序,完成軟件設計。

(5)硬件和軟件調試階段。

硬件調試一般采用硬件仿真器進行。軟件調試一般借助DSP開發工具如軟件模擬器、DSP開發系統或仿真器進行。通過比較在DSP上進行的實時程序和模擬程序執行情況來判斷軟件設計是否正確。

(6)系統集成和測試階段。

硬件和軟件調試完成后,將軟件脫離開發系統,裝入所設計的系統,形成所謂的樣機,并在實際系統中運行,以評估樣機是否達到了所要求的技術指標。若系統測試符合指標,則樣機的設計完畢。但這種情況并不常見,實際上由于軟硬件調試階段的環境是模擬的,因此在系統測試中往往可能會出現諸如精度、穩定性不好等問題。當出現這類問題時,一般要重新檢查軟硬件設計,對其進行修改,以達到系統設計要求。

3.系統調試和評估工具

在DSP系統開發的不同階段需要不同的開發系統,如初學者使用的學習系統,供對所選用的DSP及其它器件進行評估的評估系統,供最后調試的開發系統。TI公司針對這些不同的應用推出了不同類型、不同價位的硬件開發系統,它們是DSP入門套件DSK(DSPStarterKit)、評估模塊EVM(EvaluationModule)和擴展的開發系統XDS(ExtendedDevelopmentSystem)等。

1)DSP入門套件DSK

DSK是TI公司提供給TMS320系列DSP的初學者的開發工具,用戶可以用DSK來作DSP的實驗并進行語音信號的采樣、還原及系統控制等的應用,并可編寫和運行實時源代碼。

DSK是一塊開發板,對不同的系列,其上面有一塊對應的TMS320系列DSP芯片,同時板上集成有A/D、D/A,有擴展到RAM,有時鐘、電源、各種接插件,它可以通過串行/并行或USB方式和PC機連接。因此,在PC機端可實現對DSK的加載、調試與運行,DSK可通過A/D實現對模擬信號的采集、處理并輸出到PC機上。可見該開發工具對學習、研發DSP是非常方便的。

2)評估模塊EVM

TMS320的評估模塊也是一種較為低價的開發板,用于器件評估、標準程序檢查以及有限的系統調試。EVM是一個簡單的PC插件,包括目標處理器、小容量的高速RAM、有限的外設等。

TMS320EVM所提供的基本功能有:

·存儲器和寄存器的顯示和修改;

·匯編器/鏈接器;

·軟件單步運行和斷點功能;

·主機裝入/卸裝功能;

·I/O功能;

·高級語言調試接口等。

3)擴展的TMS320開發系統XDS

擴展的開發系統XDS是可以用來進行系統級的集成調試,是進行DSP硬件和軟件開發的最佳工具。

XDS510是TI公司推出的用戶DSP系統仿真和調試的主要工具,它具有仿真器用戶界面友好,以普通PC為基礎的開發系統,可以對C2xx、C3x、C4x、C5x、C54xx、C8x、C6x等進行全速掃描仿真。用戶可以使用XDS510來調試C程序、匯編語言程序或是兩者的結合。因此,在DSP的開發上該仿真器得到了廣泛的應用,目前國內大部分使用的均為該種仿真器。

(1)XDS510的主要指標。

·通過一個14腳(C3x為12腳)的目標連接器,全速執行目標代碼和監視目標系統中的器件;

·并行處理DSP的全局運行/停止/斷點;

·高級語言調試接口;

·最多可達200個斷點的軟件斷點/跟蹤和定時;

·對所有程序和數據地址作硬件斷點/跟蹤;

·單步執行;

·與C/匯編源代碼接口與調試;

·所有寄存器和存儲器的裝入、檢查和修改;

·時鐘周期執行時間的標準程序檢查。

(2)仿真器接口及仿真線的定義。

除TMS320c3x其仿真頭為12線之外,如圖10.1.9(a)所示,其它仿真器的仿真信號均采用IEEE1194.1定義的JTAG標準。仿真頭一般采用14根信號線,如圖10.1.9(b)所示,表10.1.1為其仿真頭的定義。其中TDO信號與時鐘的下降沿對齊,TMS和TDI在TCK時鐘的上升沿取樣。圖10.1.9

JTAG仿真口的定義表10.1.1

JTAG仿真信號定義 10.2基于FPGA芯片的硬件實現

在過去很長一段時間,DSP處理器(如TI的TMS320系列)是DSP應用系統核心器件的唯一選擇。盡管DSP處理器具有通過軟件設計能適應于不同功能的靈活性,但面對當今迅速變化的DSP應用市場,特別是面對現代通信技術的發展,DSP處理器已顯得力不從心。例如其硬件結構的不可變性導致了其總線的不可改變性,而固定的數據總線寬度,已成為DSP處理器一個難以突破的瓶頸。DSP處理器的這種固定的硬件結構特別不適合于當前許多要求能進行結構特性隨時變更的場合,即所謂面向用戶型的DSP系統,或者說是用戶可定制型,或可重配置型的DSP應用系統(CustomizedDSP或ReconfigurableDSP),如軟件無線電、醫用設備、導航、工業控制等方面。至于在滿足速度要求方面,由于采用了順序執行的CPU架構,DSP處理器則更加不堪重負。面向DSP的各類專用ASIC芯片雖然可以解決并行性和速度的問題,但是高昂的開發設計費用、耗時的設計周期及不靈活的純硬件結構,使得DSP的ASIC解決方案日益失去其實用性。

大容量、高速度的FPGA的出現,克服了上述方案的諸多不足。在這些FPGA中,一般都內嵌有可配置的高速RAM、PLL、LVDS、LVTTL以及硬件乘法累加器等DSP模塊。用FPGA來實現數字信號處理可以很好地解決并行性和速度問題,而且其靈活的可配置特性,使得FPGA構成的DSP系統非常易于修改、易于測試及硬件升級。10.2.1

FPGA芯片及其特點

FPGA芯片是由大量邏輯宏單元構成的。通過配置,可以使這些邏輯宏單元形成不同的硬件結構,從而構成不同的電子系統,完成不同的功能。正是FPGA的這種硬件重構的靈活性,使得設計者能夠將硬件描述語言(如VHDL或Verilog)描述的電路在FPGA中實現。這樣以來,同一個FPGA能實現許多完全不同的電路結構和功能。如DSL布線器、數字調制解調器、JPEG編碼器、數字通信系統以及網絡接口等。隨著達數百萬門高密度的FPGA的出現,FPGA在原有的高密度的邏輯宏單元的基礎上嵌入了許多面向DSP的專用硬核模塊,結合大量可配置于FPGA硬件結構中的參數化IP核,DSP開發者能十分容易地將整個DSP應用系統實現在一片FPGA中,從而實現了所謂的可編程SOC系統,即SOPC。

FPGA中的面向DSP的嵌入式模塊有可配置的RAM、DSP乘加模塊和嵌入式處理器等,使FPGA能很好地適用于DSP功能的實現。例如Xilinx公司的Virtex系列器件中含有豐富的數字信號處理部件DSP48模塊,該模塊支持多種數字信號處理的功能,包括乘法器、乘累加器(MAC)、后接加法器的乘法器、三輸入加法器、桶形移位器、寬總線多路復用器、比較器和計數器等。該結構還支持多個DSP48模塊的連接,以形成多種算術函數、DSP濾波器以及不使用通用FPGA結構的復雜算法。此外,絕大部分的DSP處理器應用系統是用外部存儲器來解決大數據量的處理的。然而FPGA的嵌入式高速可配置存儲器,在大多數情況下都能滿足相類似的數據處理要求。例如,Virtex5系列內部集成了11.6Mb的塊狀RAM,以及3.2Mb的分布式RAM,塊狀RAM的最高速率可達550MHz。

FPGA中的嵌入式處理器進一步提高了FPGA的系統集成和靈活性,使之成為一個軟件與硬件聯合開發和靈活定制的結合體,可使設計者既能在嵌入式處理器中完成系統軟件模塊的開發和利用,也能利用FPGA的通用邏輯宏單元完成硬件功能模塊的開發。Altera的FPGA器件還為用戶提供了嵌入式處理器軟核與硬核的選擇。嵌入式處理器軟核是由網表文件表達的硬件結構,當同其它設計一同配置于FPGA中后,就成為FPGA芯片中的一個硬處理器核。高效率的SOPC設計能很容易地將軟核連同與該核相關的外圍接口系統一同編程下載進同一片FPGA中。設計者能根據實際應用的需要定制軟核,使之滿足不同的總線數量、總線寬度和總線功能要求,優化總線設計,排除傳統DSP中許多常見的問題。硬核處理器主要指在Excalibur系列FPGA中的ARM核。這種核已預先嵌入在FPGA中,含有完整的外圍接口系統,如SDRAM、存儲器控制單元、UART等。現代的FPGA中含有十分靈活的、針對特定算法的加速器模塊。與傳統的DSP處理器中的加速器模塊不同,FPGA中實現的硬件加速器是可以針對不同應用的,這可以使設計者針對不同的DSP任務實現硬件功能。設計者針對具體任務在FPGA中實現硬件加速器模塊的途徑很多,主要有下述幾種:

·用硬件描述語言HDL完成;

·基于通用邏輯宏單元LCs的HDL設計;

·基于可配置的DSP硬核模塊:存儲器、乘法器、并行加法器、累加器等;

·基于全參數可設置的DSP軟IP核的應用;

·Nois軟核處理器

·ARM硬核處理器等。

在基于FPGA的DSP開發中,面向DSP的IP核的應用是最方便的設計方案。XilinxCOREGenerator軟件生成針對XilinxFPGA優化的可參數化算法,作為完全支持的IP核提供。利用這些參數在性能與硅片面積之間進行權衡,實現高密度的設計,在獲得高性能結果的同時還能縮短設計時間。XilinxCOREGenerator提供的IP核包括:

·基本元素IP核(如比較器、計數器、移位寄存器、存儲器等);

·通信與網絡IP核(如調制器、糾錯編碼、以太網、DDS、串口等);

·數字信號處理IP核(濾波器、卷積器、乘累加器、FFT、CORDIC等);

·圖像處理IP核(如JPEG、DCT等);

·算術函數IP核(如乘法器、除法器、平方根、三角函數等)。以上的每一個IP核都可以利用ISEFoundation中的COREGenerator進行參數設置,以構成針對特定應用的硬件功能模塊。這種通過軟件設置能隨意改變專用硬件模塊功能的技術,極大地提高了FPGA在DSP設計方面的靈活性。IP核的利用,可以使設計者將IP核加入到任何標準硬件描述語言中,完成特定的功能而不改變原來的設計程序;即使在設計中和設計完成后,都能根據實際需要改變嵌入到IP核的技術參數,而不改變整體設計綜合得來的代碼,從而改變DSP系統的技術指標和硬件功能。此外,IP核本身基本不依賴于某種特定的FPGA硬件結構,即具有硬件通用性,這一點與DSP處理器相比有很大不同,為應用設計提供了更大的靈活性。10.2.2典型FPGA芯片的結構及主要性能

FPGA的組成部分主要有可編程輸入/輸出單元、基本可編程邏輯單元、內嵌SRAM、豐富的布線資源、底層嵌入功能單元、內嵌專用單元等,主要設計和生產廠家有Xilinx、Altera、Lattice、Actel、Atmel和QuickLogic等公司,其中最大的是Xilinx、Altera、Lattice三家,本節以Xilinx公司的產品為例,介紹FPGA芯片結構及主要性能。

1.總體結構

FPGA簡化的結構如圖10.2.1所示。FPGA內部最主要的、設計過程中最需要關注的部件是CLB(ConfigurableLogicBlock,可配置邏輯塊)、IOB(Input/OutputBlock,輸入/輸出塊)和BlockRAM(塊RAM)。圖10.2.1

FPGA簡化結構示意圖

CLB是FPGA具有可編程能力的主要承擔者。一個大規模的FPGA可能含有數量巨大的CLB,例如XilinxVirtex-5的XC5VLX330有20000多個CLB,通過配置這些CLB可以讓FPGA實現各種不同的邏輯功能。IOB分布在FPGA的周邊,也具有可編程特性,可以配置支持各種不同的接口標準,如LVTTL、LVCMOS、PCI和LVDS等,使FPGA可以方便地應用在各種場合。BlockRAM是成塊的RAM,可以在設計中用于存儲數據,是重要的設計資源。為大規模的設計選擇FPGA時,RAM資源是否夠用是重要的因素。除了CLB、IOB和BlockRAM以外,FPGA還有很多其它的功能單元,例如布線資源、DCM(DigitalClockManager,數字時鐘管理器)和Multiplier(乘法器)等。布線資源在FPGA內部占用的硅片面積很大,為FPGA部件提供靈活可配的連接;DCM模塊提供各種時鐘資源,包括多種分頻、移相后的時鐘;Multiplier為18bit×18bit硬件乘法器,是高性能的乘法單元,可以在一個時鐘周期內完成乘法運算,對需要大

量數字信號處理的應用(如3G基帶、圖像處理等)至關重要。在高級的FPGA中,還包含了嵌入式處理器、DSP模塊、以太網MAC、高速串行I/O收發器等。例如XilinxVirtex-4包含了PowerPC處理器、XtremeDSP模塊、吉比特以太網MAC和速度高達6.5Gb/s的RocketIO串行收發器。這些都是硬件模塊,性能非常高,而且不占用FPGA內部CLB資源。Xilinx為這些模塊的應用提供了完善的開發環境,使用非常方便。

2.可配置邏輯塊(CLB)

XilinxVirtex-5FPGA的一個CLB包含兩個Slice,如圖10.2.2所示。Slice內部包括4個LUT(查找表)、4個觸發器、多路開關及進位鏈等資源。部分Slice還包括分布式RAM和32bit移位寄存器,這種Slice稱為SLICEM,其它Slice稱為SLICEL。圖10.2.2

Virtex-5CLB結構示意圖

CLB內部的兩個Slice是相互獨立的,各自分別連接開關陣列(SwitchMatrix),以便與通用布線陣列(GeneralroutingMatrix)相連。圖10.2.2中,CIN為進位鏈的輸入,COUT為進位鏈的輸出。

Virtex-5FPGA內部多個CLB和Slice的位置及連接關系如圖10.2.3所示。在XilinxFPGA設計工具中,Slice的位置用“XmYn”表示,其中m為Slice所在橫坐標,一個CLB的兩個Slice的橫坐標分別是m和m+1;n為CLB的縱坐標,一個CLB的兩個Slice有相同的n。Virtex-5FPGA左下角的Slice編號為X0Y0。圖10.2.3

CLB和Slice位置及連接關系示意圖為了方便理解,這里給出SLICEL的部分結構,如圖10.2.4所示。從圖中可以看出,一個Slice的主要組成單元包括4個6輸入查找表(輸入端為A1至A6)、4個觸發器和若干選擇器等。

實際上,查找表類似于一個ROM,容量是64bit,6個輸入作為地址輸入,存儲的內容作為布爾運算的結果。顯然,6輸入查找表可以實現任何6輸入的布爾函數。查找表中的內容由開發工具ISE生成并在FPGA配置時加載進去。圖10.2.4

SLICEL內部結構示意圖

Slice中的觸發器可以配置成多種工作方式,例如觸發器或鎖存器,同步復位或異步復位、復位高有效或低有效等。

CLB內部包含多個選擇器,這些選擇器與一般的不同,它們沒有選擇端。通路的選擇在FPGA配置后固定下來,例如圖10.2.4中左下角與CLK相連的選擇器包含兩個輸入,一個是CLK,另一個是反相后的CLK。如果設計要求觸發器在時鐘下降沿觸發,那么經過綜合、布局布線、生成配置文件并配置到FPGA之后,反相后的CLK將作為該選擇器的輸出。

CLB內部還包含了一個重要的資源——進位鏈,其作用是方便加法器的實現。加法運算是FPGA設計中很常用的功能,最常用且消耗資源最少的是行波加法器。這種加法器的關鍵路徑(即延遲最大的路徑)在進位鏈上,因此為了提高加法器的工作頻率,XilinxFPGA提供了專用的進位鏈。進位鏈貫穿CLB陣列的每一列,以保證相互之間的連線最短。同時ISE在給加法器布局時,會自動布在一列上,以便使用進位鏈資源,使加法器實現最短關鍵路徑,獲得最高的工作頻率。

SLICEM的結構與SLICEL的結構類似,最大的區別是使用了一個新的單元代替SLICEL中的查找表,這個新單元可以配置為LUT、RAM、ROM或移位寄存器,從而可以實現LUT的邏輯功能,也能作存儲單元(多個單元組合起來可以提供更大的容量)和移位寄存器(提供延遲等功能)。

CLB內部查找表、觸發器、多路器等基本單元的配置由ISE自動完成,一般情況下不需要設計者干預。但是,如果認為有必要,設計者可以通過ISE中集成的FPGA底層編輯器(FPGAEditor)直接編輯CLB內部觸發器和多路器的配置。

3.輸入/輸出模塊(IOB)

IOB是FPGA主要組成部分之一,其作用是為FPGA提供內部資源與外圍電路之間的接口,提供輸入緩沖、輸出驅動、接口電平轉換、阻抗匹配、延遲控制等功能。高端FPGA的輸入/輸出模塊還提供了DDR輸入/輸出接口、高速串行接口等功能。輸入/輸出模塊的功能非常豐富,它可以靈活配置成各種工作方式以實現不同的功能,可與CLB一起構成FPGA的主要功能載體,是基本的、必不可少的單元。

XilinxFPGA的輸入/輸出模塊采用SelectIO技術,提供多達960個用戶I/O,支持20多個單端和差分電平I/O標準,如LVTTL、LVCMOS、PCI和LVDS等。單端I/O的速度可以達到600Mb/s,差分I/O的速度可以達到1Gb/s,還支持DDR、DDR-2、SDRAM、QDR-Ⅱ和RLDRAM-Ⅱ等存儲器接口標準。SelectIO具有DCI(DigitallyControlledImpedence,數字控制阻抗),提供有源I/O終端以實現阻抗匹配,這是高速PCB布線不可缺少的。使用片上有源I/O終端代替外部終端電阻,提高了信號的完整性,節省了PCB空間。

4.塊RAM(BlockRAM)

XilinxFPGA內部有成塊的RAM資源,以供用戶存儲數據,RAM資源的多少是FPGA評估、選型的重要考慮因素之一。

XilinxFPGA內部成塊的RAM資源稱為BlockRAM,根據器件系列不同,BlockRAM大小有4096b(Virtex、VirtexE和Spartan系列)、18kb(Virtex-Ⅱ、Spartan-3和Virtex-4系列)和38kb等3種(Virtex-5)。BlockRAM是真正的雙口RAM結構,有兩套讀/寫數據、地址和控制總線。兩套總線的操作是完全獨立的,共享同一組存儲單元。BlockRAM的雙口RAM結構對于邏輯設計至關重要,它有兩套獨立的接口,可以方便地連接兩個其它設計單元,允許一個端口寫入數據的同時,另一個端口讀出數據,提高了數據吞吐率。如果使用單口RAM,很多時候不得不使用三態總線,致使控制復雜且速度減慢。

BlockRAM中的內容除了在電路運行中重寫以外,也可以通過配置文件在FPGA上電配置時清零或初始化為特定數值。寫BlockRAM時,數據輸出端可以輸出新寫入的數據、被覆蓋的數據或保持不變。FIFO是邏輯設計中常用的功能單元,Virtex-5的BlockRAM具有FIFO專用邏輯,因此實現FIFO時將不需要額外的CLB資源,也不需要設計者自行設計FIFO邏輯控制電路,只需對BlockRAM進行配置即可。

5.DSP48E模塊

Virtex-5系列FPGA具有出色的DSP性能,與先前FPGA中的DSP模塊相比,所有Virtex-5系列中的DSP48E模塊都便于使用新的DSP算法,并有更高的DSP集成度,同時也提供很低的功耗、很高的性能和高效率芯片利用。DSP48E模塊結構示意圖如圖10.2.5所示,它可以工作在550MHz頻率,而且一片FPGA(XC5VLX330T)可以擁有多達192個DSP48E模塊,總的數字信號處理能力達到驚人的105吉次每秒(乘累加運算),讓設計者可以輕松應對數字信號處理的各種設計挑戰,例如大量中頻-基帶下變頻通道、用于3G擴頻系統的128倍碼片速率處理和高分辨率H.264以及MPEG-4編碼/解碼算法等。圖10.2.5

DSP48E內部結構示意圖

DSP48E模塊的特點介紹如下:

·24bit×18bit乘法器:在更大的動態范圍內實現了更高的精度,能夠以較少的邏輯資源(Slice數)實現單精度浮點運算和多種濾波器。

·增強型二級功能:使用帶寄存器的累加反饋功能,實現了3輸入、靈活的48bit加法器/減法器;設計了模式檢測器,以支持用于飽和算法的收斂性舍入、下溢/上溢檢測以及自動復位計數器/累加器;支持單指令多數據(SIMD)功能。

·40多種用戶控制器操作模式:DSP48E在時鐘周期改變時可以調整功能。

·8bitB輸入級聯布線:支持輸入采樣傳輸。

·新型30bitA輸入級聯布線:支持先進的濾波器設計,并降低了功耗。

·獨立的48bitC輸入:具有乘法、加法、大型三操作數加法或靈活的舍入模式。在整個Slice上消除了C輸入共享,從而提高了利用率,簡化了設計,提升了性能。

·級聯的48bitP總線,支持部分結果的輸出傳輸。

DSP48E模塊是多用途DSP架構的基礎,使設計者可以在系統中有效地增加基于FPGA的DSP功能。芯片中的DSP48E經過定制,可以獨立達到550MHz的性能,或整列組合在一起可以實現DSP功能。DSP48E模塊支持40多種可動態控制的運算模式,包括乘法器、累加器、乘加器/乘減器、3輸入加法器、桶形移位器、多種總線多路復用器、多種計數器和比較器等。DSP48E支持有效的加法鏈結構,能夠高效地執行高性能濾波器和復雜算術運算。10.2.3基于FPGA芯片系統的設計與調試

進行FPGA開發需要專用的FPGA工具軟件,它們的功能包括FPGA程序的編寫、綜合、仿真及下載等。就整體而言,目前的FPGA開發工具可以分為兩類:一類是FPGA芯片生產商直接提供的集成開發環境,如Xilinx公司的FoundationSeriesISE(簡稱ISE)、Altera公司的QuartusⅡ,以及Lattice公司為ispLSI器件提供的ispDesignExpert軟件等,另一類是其它專業的EDA軟件公司提供的輔助軟件工具,統稱為第三方軟件。一般來說,第三方軟件支持多個公司的芯片。這里以Xilinx公司FPGA設計為例,介紹常用的軟件和硬件開發工具,如Xilinx集成開發環境ISE、DSP設計工具SystemGenerator、AccelDSP等,對大多數FPGA設計者來說,掌握這些工具就可以方便地進行FPGA開發和設計。

1.FPGA軟件開發工具

1)集成開發環境

使用Xilinx的FPGA時,ISE是必備的設計工具。ISE可以完成FPGA開發的全部流程,包括設計輸入、仿真、綜合、布局布線、生成BIT文件、配置以及在線調試等,其功能非常強大。對大多數FPGA設計者來說,使用ISE就可以完成設計任務,取得滿意的效果。

ISE是一個集成的開發環境,集成了大量實用工具,包括HDL編輯器(HDLEditor)、IP核生成器(CoreGeneratorSystem)、約束編輯器(ConstraintsEditor)、靜態時序分析工具(StaticTimingAnalyzer)、布局規劃器(FloorPlanner)、FPGA編輯工具(FPGAEditor)和功耗分析工具(Xpower)等。表10.2.1列出了ISE一些實用的工具的用途,這些工具可以幫助設計人員完成設計任務,提高工作效率。使用這些工具可以方便地實現不同復雜程度的設計,對于初學者來說不需要一次都掌握,只需要先掌握ISE集成環境(即ProjectNavigator)、仿真工具ISESimulatorLite(第三方工具ModelSim)、綜合工具XST以及配置工具iMPACT,其它工具可以隨著學習和工作的深入慢慢掌握。

ISE還可以把第三方工具方便地集成起來,如仿真工具ModelSim、綜合工具Synplify等。雖然ISE已經自帶仿真工具ISESimulatorLite和綜合工具XST,但是對于習慣使用ModelSim和Synplify的設計人員,只要在ISE中進行簡單的設置,就可以在ISE開發環境中直接調用第三方工具,非常方便。表10.2.1I

SE集成的工具

2)DSP開發工具

SystemGenerator是Xilinx公司用于DSP設計開發的高級工具,在利用FPGA設計高性能DSP系統時非常有用。工具的提取功能使設計者能利用高性能的FPGA開發高度并行的系統,Simulink與MATLAB提供了系統建模與自動代碼生成。SystemGenerator是XilinxXtremeDSP解決方案的關鍵組成,集成了先進的FPGA、設計工具、知識產權核、合作伙伴及設計與教育培訓服務等。

SystemGenerator工具軟件的功能包括:

·與XilinxEDK緊密集成,以便向DSP硬件添加嵌入式處理器;

·定點RTL生成;

·FPGA資源估計;

·與第三方ESLC綜合工具集成;

·通過硬件協同仿真將仿真性能提高1000倍;

·Xilinx的優化DSP模塊集,通過AccelDSP支持SimulinkMATLAB語言;

·FIR濾波器編譯器;

·生成RTL測試平臺。

3)AccelDSP綜合工具

AccelDSP綜合工具是基于高級MATLAB語言的工具,用于設計針對XilinxFPGA的DSP塊。工具可自動地進行浮點或定點轉換,生成可綜合的VHDL或Verilog,并創建用于驗證的測試平臺,還可以生成定點C++模型或由MATLAB算法得到SystemGenerator塊。AccelDSP綜合工具是XilinxXtremeDSP解決方案的關鍵組成,同樣集成了先進的FPGA、設計工具、知識產權核、合作伙伴以及設計與教育培訓服務等。

AccelDSP工具軟件的功能包括:

·基于MATLAB的算法綜合可生成技術優化的RTL;

·浮點到定點自動轉換;

·IP-Explorer技術允許在算法級對硬件架構進行啟發式選擇;

·全自動驗證流程,可以自動生成測試平臺;

·硬件優化,包括循環折疊/展開、矩陣乘法擴展、RAM/ROM存儲器映射、流水線插入和移位寄存器映射;

·用于Simulink和SystemGeneratorforDSP的模型生成器;

·易用型圖形用戶界面與工具集成。

2.FPGA的基本設計流程

FPGA的設計流程就是利用EDA開發軟件和編程工具對FPGA芯片進行開發的過程。FPGA的開發流程如圖10.2.6所示,包括電路設計、設計輸入、功能仿真、綜合優化、綜合后仿真、實現與布局布線、時序仿真

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論