<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 定點(diǎn)DSP芯片TMS320F2812實(shí)現快速算法

定點(diǎn)DSP芯片TMS320F2812實(shí)現快速算法

作者: 時(shí)間:2011-08-12 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/257844.htm


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


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



關(guān)鍵詞: TI DSP 低功耗

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>