《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 定點DSP芯片TMS320F2812實現(xiàn)快速算法
定點DSP芯片TMS320F2812實現(xiàn)快速算法
摘要: TMS320F2812是TI公司的一款用于控制的高性能、多功能,、高性價比的32位定點DSP芯片,。該芯片兼容TMS320LF2407指令系統(tǒng)最高可在150MHz主頻下工作,,并帶有18k×16位0等待周期片上SRAM和128k×16位片上FLASH(存取時間36ns)。其片上外設主要包括2×8路12位ADC(最快80ns轉換時間),、2路SCI,、1路SPI、1路McBSP,、1路eCAN等,,并帶有兩個事件管理模塊(EVA、EVB),,分別包括6路PWM/CMP,、2路QEP、3路CAP,、2路16位定時器(或TxPWM/TxCMP),。另外,該器件還有3個獨立的32位CPU定時器,,以及多達56個獨立編程的GPIO引腳,,可外擴大于1M×16位程序和數(shù)據(jù)存儲器。TMS320F2812采用哈佛總線結構,,具有密碼保護機制,,可進行雙16×16乘加和32×32乘加操作,因而可兼顧控制和快速運算的雙重功能,。
關鍵詞: DSP TMS320F2812
Abstract:
Key words :

1 TMS320F2812簡介
  
      TMS320F2812是TI公司的一款用于控制的高性能,、多功能、高性價比的32位定點DSP芯片,。該芯片兼容TMS320LF2407指令系統(tǒng)最高可在150MHz主頻下工作,,并帶有18k×16位0等待周期片上SRAM和128k×16位片上FLASH(存取時間36ns)。其片上外設主要包括2×8路12位ADC(最快80ns轉換時間),、2路SCI,、1路SPI,、1路McBSP、1路eCAN等,,并帶有兩個事件管理模塊(EVA,、EVB),分別包括6路PWM/CMP,、2路QEP,、3路CAP、2路16位定時器(或TxPWM/TxCMP),。另外,,該器件還有3個獨立的32位CPU定時器,以及多達56個獨立編程的GPIO引腳,,可外擴大于1M×16位程序和數(shù)據(jù)存儲器,。TMS320F2812采用哈佛總線結構,具有密碼保護機制,,可進行雙16×16乘加和32×32乘加操作,,因而可兼顧控制和快速運算的雙重功能。
  
      通過對TMS320F2812定點DSP芯片合理的系統(tǒng)配置和編程可實現(xiàn)快速運算,,本文著重對此加以說明,。
  
2 TMS320F2812基本系統(tǒng)配置
  
2. 1 TMS320F2812時鐘
  
      TMS320F2812的片上外設按輸入時鐘可分為如下4個組:
  
(1)SYSOUTCLK組:包括CPU定時器和eCAN總線,可由PLLCR寄存器動態(tài)地修改,;
  
(2)OSCCLK組:主要是看門狗電路,,由WDCR寄存器設置分頻系數(shù);
  
(3)低速組:有SCI,、SPI,、McBSP,可由LOSPCP寄存器設置分頻系數(shù),;
  
(4)高速組:包括EVA/B,、ADC,可由HISPCP寄存器設置分頻系數(shù),。
  
      為了使系統(tǒng)具有較快的工作速度,,除了定時器和SCI等少數(shù)需要低速時鐘的地方,其它外設均可以150MHz時鐘工作,。
  
2.2 存儲空間
  
      圖1 所示是TMS320F2812的內部存儲空間映射圖,。TMS320F2812為哈佛(Harvard)結構的DSP,即在同一個時鐘周期內可同時進行一次取指令,、讀數(shù)據(jù)和寫數(shù)據(jù)的操作,。在邏輯上有4M×16位程序空間和4M×16位數(shù)據(jù)空間,但物理上已將程序空間和數(shù)據(jù)空間統(tǒng)一為一個4M×16位的存儲空間,,各總線按優(yōu)先級由高到低的順序為:數(shù)據(jù)寫,、程序寫,、數(shù)據(jù)讀、程序讀,。其中由CY7C1041擴展的256k×16位SARAM位于Zone 6(0x100000~0x13FFFF),,存取時間不小于12ns;128k×16位FLASH空間(0x3D8000~ 0x3F7FFF)取指時間不小于36ns,。為了盡可能提高器件的工作速度,,在對FLASH寄存器編程使其在較高速度下工作的同時,可將時間要求比較嚴格的程序(如時延計算子程序,、FIR濾波子程序等)、變量(如FIR濾波器系數(shù),、自適應算法的權向量等)各堆??臻g搬移到H0、L0,、L1,、M0、M1空間來運行,。

2.3 中斷
  
      TMS320F28x系列DSP片上都有非常豐富的外設,,每個片上外設均可產生1個或多個中斷請求。中斷由兩級組成,,其中一級是PIE中斷,,另一級是CPU中斷。CPU中斷有32個中斷源,,包括RESET,、NMI、EMUINT,、ILLEGAL,、12個用戶定義的軟件中斷USER1~USER12和16個可屏蔽中斷(INT1~INT14、RTOSINT和DLOGINT),。所有軟件中斷均屬于非屏蔽中斷,。由于CPU沒有足夠的中斷源來管理所有的片上外設中斷請求,所以在TMS320F28x系列DSP中設置了一個外設中斷擴展控制器(PIE)來管理片上外設和外部引腳引起的中斷請求,。
  
      PIE中斷共有96個,,被分為12個組,每組內有8個片上外設中斷請求,,96個片上外設中斷請求信號可記為INTx.y(x=1,2,…,,12;y=1,2,…,8)。每個組輸出一個中斷請求信號給CPU,,即PIE的輸出INTx(x=1,2,…,…12)對應CPU中斷輸入的INT1~INT12,。TMS320F28x系列DSP的96個可能的PIE中斷源中有45個被TMS320F2812使用,,其余的被保留作以后的DSP器件使用。
  
      ADC,、定時器,、SCI編程等均以中斷方式進行,可提高CPU的利用率,。
  
2.4 復位引導
  
      圖2所示是TMS320F2812的片上引導ROM空間映射,。其此導程序配置在圖2中的0x3FFC00~0x3FFFBF,根據(jù)圖1,設置VMAP=1,,MP/MC=0,,ENPIE=0,復位向量指向片上0x3FFFC0,,而片上0x3FFFC0中內容為0x3FFC00,即指向圖2中的引導程序,。配置表2中的GPIOF4(SCITXDA)=1,則轉向FLASH中的0x3F7FF6開始執(zhí)行程序,,最后在0x3F7FF6片設置跳轉指令指向用戶程序的開始處,,以開始運行用戶程序。由于在實際應用中使用了PIE中斷,,因此,,在用戶應用程序中,應首先初始化PIE中斷向量表,,然后使能PIE,。

  
3 編程設計
  
      編程是實現(xiàn)系統(tǒng)正常工作和快速運算必不可少的重要環(huán)節(jié)。在系統(tǒng)配置合理的條件下,,用定點芯片實現(xiàn)快速運算的關鍵用整數(shù)取代浮點數(shù)進行計算處理,。用C編譯器時,為產生最優(yōu)代碼,,應遵循以下原則:
  
(1)將除法轉換為乘法,,盡量使編譯器產生MAC指令,以充分利用DSP的硬件乘法器資源進行快速運算,,且應使MAC的操作數(shù)為局部變量以分配到寄存器中(或到一個累加器中),。
  
(2)盡可能使用靜態(tài)直接插入函數(shù),以節(jié)省函數(shù)調用的額外開銷,。
  
(3)對FOR循環(huán)的上限,,使用常數(shù)或具有常數(shù)屬性的變量可產生重復指令RPT。
  
3.1 ADC編程
  
      TMS20F2812帶有兩個8選1多路切換器和雙采樣/保持器的12位ADC,,模擬量輸入范圍為0~3V,,最快轉換速率為80ns,選用10kSPS采樣率,,并采用EVA的定時器(0.1ms)自動觸發(fā)方式,,可同時采樣4個通道,,并采用每次轉換結束的中斷方式來紀錄采樣結果(右移4位)。
  
      轉換結果=(212 -1)×(輸入的模擬信號-ADCLO)/3
  
      ADC轉換時,,首先初始化DSP系統(tǒng),,然后設置PIE中斷矢量表,再初始化ADC模塊,,接著將ADC中斷的入口地址裝入中斷矢量表并開中斷,,然后再啟動0.1ms定時器,同時等待ADC中斷,,最后在ADC中斷中讀取ADC轉換結果,,并用軟件啟動下一次中斷。
  
3.2 FIR濾波器編程
  
      目標信號對某些低頻干擾非常敏感,,它將直接響應到定位結果和數(shù)據(jù)的有效性,。為了在濾波后不影響時延數(shù)據(jù)的計算,可采用線性相位的FIR濾波器,。濾波器系數(shù)h(i)用MATLAB的產生,并在變成整形然后固化到程序中,,這樣做(而不是單獨計算濾波器系數(shù))的目的是為了實現(xiàn)快速濾波而不會過多增加整個測量系統(tǒng)定位計算的時間,。
  
3.3 定位算法的移植
  
      由于定位算法采用自適應時延估計法,因此計算量非常龐大,,對DSP芯片性能要求較高,。TMS320F2812具有32位硬件乘法器和累加器,其RPT指令非常適合循環(huán)計算,,處理能力可達150MIPS,,因而具有較高的性能。但它是一款定點處理芯片,,需要使用定點算法來解決處理量大的問題,。因此,對初始數(shù)據(jù),、權矢量應采用16位整形變量(Q=12:由ADC轉換精度決定),,而循環(huán)計算中產生的中間結果則使用32位整形變量(Q=20:在結果不溢出的情況下盡量滿足計算精度);至于對三角函數(shù)等的運算,,可用查表法并利用圖2中的表格來進行快速計算,。
  
      C編譯器帶有浮點運算庫,因此可將浮點算法和定點算法的結果進行比較,,對于4路各1024點數(shù)據(jù)處理,,用浮點算法實現(xiàn)約需3.6秒,而用定點算法只需1.3秒,。
  
      另外,,還可對算法進行優(yōu)化,。第一是將經(jīng)常使用的中間變量配置到等待周期為0的內存中;第二是采用FLASH加速技術(使能FOPT寄存器的ENPIPE位實現(xiàn)預指機制的FLASH流水線模式),,這樣可以達到100~120MIPS的處理能力,,大大高于其本身36ns的讀取能力。需要注意的是,,由于TMS320F2812的保護機制,,對FLASH寄存器進行存取的這段程序必須搬移到L0、L1中執(zhí)行,。盡管這樣,,將這段對時間要求比較荷記得的算法移植到內存H0中,可以達到最高150MIPS的處理速度,,并能使用函數(shù)memcpy()完成程序的搬移,。
  
4 結束語
  
      在計算量較大時,通常選用浮點DSP芯片,。實際上,,為了充分利用定點DSP芯片的片上資源,也能利用本文所介紹的方法選用定點芯片來達到較高的計算速度,,這樣可節(jié)省硬件設計費用和周期,,并降低功耗。

此內容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載,。