<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 汽車(chē)電子 > 設(shè)計(jì)應(yīng)用 > AURIX? TC4x CDSP Software功能介紹和使用

          AURIX? TC4x CDSP Software功能介紹和使用

          作者: 時(shí)間:2025-01-17 來(lái)源:英飛凌 收藏

          引言

          本文引用地址:http://www.ex-cimer.com/article/202501/466443.htm

          SW(Converter Digital Signal Processor software)是專(zhuān)用于 硬件模塊的軟件包。

          SW 以二進(jìn)制文件和頭文件提供,用戶(hù)通過(guò)配置參數(shù)并將其存儲(chǔ)在 CDSP 的 DCCM 中來(lái)實(shí)現(xiàn)特定的濾波功能,通過(guò)將指令二進(jìn)制代碼存放在CDSP的ICCM來(lái)實(shí)現(xiàn)算法,在 TriCore? 核上運(yùn)行的應(yīng)用程序無(wú)需調(diào)用API 即可實(shí)現(xiàn) CDSP SW 的濾波功能來(lái)對(duì)外部輸入信號(hào)進(jìn)行處理。

          CDSP 結(jié)構(gòu)

          CDSP包括一個(gè) Synopsys DesignWare? ARC? EM5D(ARC) DSP 內(nèi)核,3 KB 指令存儲(chǔ)器 (ICCM)、3 KB 數(shù)據(jù)存儲(chǔ)器 (DCCM) 。

          Figure 1. CDSP architecture

          CDSP 以 f_ADC頻率運(yùn)行(160MHz), CDSP作為一個(gè)外設(shè),由Tricore控制其復(fù)位、運(yùn)行等。

          Figure 2. CDSP input and output interface

          CDSP可以處理來(lái)自DSADC (Δ-Σ ADC)、EXMOD (外部調(diào)制器)、TMADC (分時(shí)復(fù)用 ADC)、CARMAG (載波調(diào)制器) 或GP (通用) 寄存器的信號(hào)。

          CDSP處理完成,產(chǎn)生的結(jié)果存放在結(jié)果寄存器RES0,RES1和RES2或DCCM,并且RES0有一個(gè)深度為4的FIFO用于結(jié)果緩存。

          CDSP的基本的運(yùn)行邏輯為:外部的觸發(fā)信號(hào)(比如輸入的寄存器結(jié)果值更新)觸發(fā)CDSP工作,CDSP計(jì)算完成,產(chǎn)生CDSP結(jié)果,并觸發(fā)Tricore中斷,由Tricore拿到CDSP結(jié)果值進(jìn)行后續(xù)運(yùn)算。

          CDSP SW工作原理

          CDSP SW 正常工作下,CDSP 內(nèi)核會(huì)交替處于休眠和喚醒狀態(tài),以處理輸入采樣。

          在配置好輸入信號(hào)源后(每次只能配置一個(gè)輸入信號(hào)用于喚醒),當(dāng)CDSP 內(nèi)核接收到新的輸入采樣時(shí),就被喚醒并轉(zhuǎn)換到喚醒狀態(tài),以處理新的輸入采樣,處理完成后,生成結(jié)果到結(jié)果寄存器,然后再進(jìn)入休眠。

          Figure 3. CDSP sleep and wake-up

          CDSP_DSPa_DSPCFG 寄存器中的 INPSEL 位選擇哪個(gè)輸入采樣到達(dá)會(huì)喚醒 CDSP 內(nèi)核。例如,如果將 DSADC0 配置為 CDSP 內(nèi)核的喚醒源,那么每個(gè)新的 DSADC0 輸入采樣都將喚醒 CDSP 內(nèi)核。一旦 CDSP 內(nèi)核被喚醒,它就會(huì)開(kāi)始執(zhí)行加載的濾波器鏈 (FC),直到產(chǎn)生結(jié)果到結(jié)果寄存器,CDSP 內(nèi)核便進(jìn)入休眠狀態(tài)。

          新輸入采樣的到來(lái)會(huì)再次喚醒 CDSP 內(nèi)核,并重復(fù)上述過(guò)程。如果在 CDSP 內(nèi)核仍在處理當(dāng)前樣本時(shí)(CDSP 內(nèi)核仍處于喚醒狀態(tài)),有新樣本到來(lái),則會(huì)產(chǎn)生喚醒錯(cuò)誤。所以,用戶(hù)使用時(shí)需要注意選擇的濾波器鏈對(duì)一個(gè)輸入樣本的處理時(shí)間必須小于兩個(gè)連續(xù)輸入樣本之間的時(shí)間間隔。

          CDSP SW 運(yùn)行過(guò)程

          CDSP SW 的執(zhí)行主要分為三個(gè)階段:

          • 啟動(dòng)

          在啟動(dòng)階段,CDSP 內(nèi)核處于停止?fàn)顟B(tài),CDSP SW 代碼被復(fù)制到 ICCM 中,并將CDSP SW 的配置參數(shù)復(fù)制到DCCM 存儲(chǔ)器中。

          • 運(yùn)行時(shí):初始化

          一旦 CDSP 內(nèi)核從停止?fàn)顟B(tài)轉(zhuǎn)換到運(yùn)行狀態(tài),CDSP SW 就開(kāi)始執(zhí)行。CDSP SW 執(zhí)行的第一階段稱(chēng)為 "初始化",只執(zhí)行一次。

          在這一階段,CDSP 濾波器鏈的所有配置參數(shù)都被初始化,CDSP SW 準(zhǔn)備好處理輸入采樣。在這一階段結(jié)束時(shí),CDSP 內(nèi)核轉(zhuǎn)入休眠狀態(tài),等待輸入采樣到達(dá)配置的輸入源。如果存在配置參數(shù)無(wú)效,CDSP將進(jìn)入錯(cuò)誤狀態(tài)(死循環(huán))。

          • 運(yùn)行時(shí):主循環(huán)

          每當(dāng)有新的采樣到達(dá)配置的 CDSP 輸入源,就會(huì)觸發(fā)喚醒事件,將CDSP 內(nèi)核從休眠狀態(tài)喚醒。喚醒后,CDSP 內(nèi)核開(kāi)始執(zhí)行濾波器鏈,從而對(duì)輸入信號(hào)進(jìn)行處理。

          下圖展示了一個(gè)通用 FC (Filter Chain)的 CDSP SW 主循環(huán)執(zhí)行序列,用于處理單個(gè)輸入采樣。

          Figure 4. CDSP SW execution time

          如上圖所示,CDSP 內(nèi)核在喚醒 (t_wu)、讀取輸入采樣 (t_Rd)、寫(xiě)入輸出采樣 (t_Wr) 和過(guò)渡到休眠狀態(tài) (t_t-slp) 的時(shí)間消耗都是固定數(shù)量的時(shí)鐘周期 , 與 CDSP SW 配置無(wú)關(guān), 而濾波器塊執(zhí)行時(shí)間(t_FB)取決于濾波器鏈的配置。

          例如,在中值濾波功能中,濾波執(zhí)行時(shí)間(t_FB)會(huì)隨著中值濾波器濾波器長(zhǎng)度的增加而增加。用戶(hù)需要確保一個(gè)輸入采樣的總執(zhí)行時(shí)間(t_TOTAL)不超過(guò) CDSP SW 兩個(gè)連續(xù)輸入采樣之間的持續(xù)時(shí)間,否則會(huì)進(jìn)入錯(cuò)誤狀態(tài)。

          CDSP SW對(duì)單個(gè)輸入采樣運(yùn)算的總執(zhí)行時(shí)間公式如下:

          t_TOTAL = t_wu + t_Rd + t_FB + t_Wr + t_t-slp

          CDSP執(zhí)行完成濾波鏈路并將輸出結(jié)果寫(xiě)入輸出寄存器后,DSP 內(nèi)核將轉(zhuǎn)入睡眠模式,直到下一個(gè)喚醒信號(hào)到來(lái)。

          CDSP SW 功能

          CDSP SW 中實(shí)現(xiàn)了以下濾波器模塊:

          • SDA:簡(jiǎn)單數(shù)據(jù)累積濾波器

          • DA:數(shù)據(jù)累加濾波器

          • MAT:數(shù)學(xué)運(yùn)算濾波器(函數(shù))

          • AVG:平均值濾波器

          • MDN:中值濾波器

          • STAT0:統(tǒng)計(jì)運(yùn)算濾波器

          • FIR:有限脈沖響應(yīng)濾波器

          • IIR:無(wú)限脈沖響應(yīng)濾波器

          • FFT:快速傅立葉變換濾波器(函數(shù))

          • LO:龍貝格觀(guān)測(cè)器濾波器(函數(shù))

          FCM,F(xiàn)C0-FC9共11個(gè)濾波鏈路是由上述濾波器組合形成的11個(gè)功能,如下圖所示。

          Figure 5. Filter chains with containing filter blocks

          每一個(gè)CDSP可以選擇其中任意一個(gè)濾波鏈路,并進(jìn)行參數(shù)配置,應(yīng)用于實(shí)際需求。

          CDSP SW 通過(guò)可執(zhí)行二進(jìn)制文件提供,有 .bin、.hex、.h 和 .mem 4種格式,這些文件都包含相同的信息,用戶(hù)根據(jù)需要選擇文件格式進(jìn)行集成。

          除 FC5 濾波器鏈由兩個(gè)單獨(dú)的二進(jìn)制文件實(shí)現(xiàn)外,其他各個(gè)濾波器鏈都由一個(gè)二進(jìn)制文件實(shí)現(xiàn)。

          Figure 6. DCCM memory map for different filter chains

          如圖所示是一個(gè)DCCM參數(shù)配置表的示意圖,有4種數(shù)據(jù)結(jié)構(gòu),根據(jù)選擇的濾波功能不同,用戶(hù)實(shí)例化其中一個(gè)數(shù)據(jù)結(jié)構(gòu)并對(duì)關(guān)聯(lián)的參數(shù)進(jìn)行配置,來(lái)實(shí)現(xiàn)特定功能。

          用戶(hù)在Tricore應(yīng)用程序中實(shí)例化一個(gè)數(shù)據(jù)結(jié)構(gòu)后,將其加載到 CDSP 的 DCCM 存儲(chǔ)中,并將對(duì)應(yīng)的二進(jìn)制文件加載到 CDSP的 ICCM存儲(chǔ)中,即完成了功能集成。在運(yùn)行期間,一次只能在 ICCM 中加載和執(zhí)行一個(gè)濾波器鏈。

          CDSP SW 使用實(shí)例

          CDSP SW的使用非常方便,只需要配置相應(yīng)的參數(shù),并將配置參數(shù)放置到DCCM,把對(duì)應(yīng)的運(yùn)算功能代碼放到ICCM,啟動(dòng)CDSP即可得到結(jié)果。

          這里以FC9(基礎(chǔ)中值濾波功能)和FC7(數(shù)學(xué)運(yùn)算)為例,介紹使用方法。

          Figure 7. CDSP Basic Median (FC9)

          FC9的功能為計(jì)算幾個(gè)輸入信號(hào)的中值,計(jì)算速率可以達(dá)到1MSPs。

          Figure 8. CDSP Basic Median configuration parameter

          FC9的輸入信號(hào)數(shù)量可以選1、3、5、7、9。

          使用FC9功能,只需要設(shè)置CDSP的首位輸入地址以及濾波信號(hào)長(zhǎng)度,這里輸入地址是0x0000906CU(映射地址為T(mén)MADC0_AW0_RES0),濾波信號(hào)長(zhǎng)度為9。

          配置代碼如下:

          將FC9的代碼放到ICCM中,以及將配置的參數(shù)放到DCCM中,完成對(duì)FC9基礎(chǔ)中值濾波的CDSP功能配置。

          在每一次TMADC0_AW0_RES0更新后,觸發(fā)CDSP執(zhí)行FC9的功能,得出最近9個(gè)輸入的TMADC0_AW0_RES0的 中值。

          9個(gè)輸入量分別是:991、990、991、991、990、990、990、991、989,中值為990,CDSP輸出結(jié)果正確。

          9個(gè)輸入量分別是:991、991、991、991、991、990、990、991、991,中值為991,CDSP輸出結(jié)果正確。

          Figure 9. CDSP Basic Data Accumulation(FC7)

          FC7的功能分為兩個(gè)運(yùn)行段,第一段是對(duì)輸入的2個(gè)信號(hào)進(jìn)行數(shù)學(xué)運(yùn)算,第二段是將第一段的結(jié)果進(jìn)行累加,兩段都可以對(duì)各自的輸出結(jié)果進(jìn)行結(jié)果向右位移,即除法運(yùn)算。

          Figure 10. Functional block diagram of Math filter

          A和B進(jìn)行運(yùn)算,A為寄存器結(jié)果,B為寄存器結(jié)果或者為給定數(shù)值,A和B進(jìn)行數(shù)學(xué)運(yùn)算,并將結(jié)果進(jìn)行位移。

          Figure 11. Math filter configuration parameters

          FC7的MAT部分參數(shù)說(shuō)明,可以選擇加、減、乘、除 。

          Figure 12. SDA filter configuration parameters

          FC7的SDA部分參數(shù)說(shuō)明,輸入的信號(hào)數(shù)量可以是1-16,右移0-4位。

          FC7的功能使用,只需要設(shè)置CDSP的首位輸入地址,第二個(gè)輸入?yún)?shù),數(shù)學(xué)操作,累加運(yùn)算信號(hào)數(shù)量,位移,這里首位輸入地址是0x0000906CU(映射地址為T(mén)MADC0_AW0_RES0),第二個(gè)輸入?yún)?shù)設(shè)置為固定值1000,數(shù)學(xué)運(yùn)算為首位輸入地址信號(hào)+第二個(gè)輸入?yún)?shù),累加運(yùn)算長(zhǎng)度為4,然后除以2,最終結(jié)果為平均值的2倍。

          數(shù)學(xué)運(yùn)算式:[(A1+B)+(A2+B)+(A3+B)+(A4+B)]/2。

          配置代碼如下:

          在將FC7的代碼放到ICCM中,以及將配置的參數(shù)放到DCCM中,完成對(duì)輸入信號(hào)的數(shù)學(xué)運(yùn)算的CDSP功能配置。

          以上實(shí)現(xiàn)了FC9和FC7功能。

          總結(jié)

          CDSP SW是基于CDSP硬件模塊開(kāi)發(fā)的軟件包,以二進(jìn)制文件和頭文件方式提供,使用便捷,功能豐富,可以用于旋變解碼、發(fā)動(dòng)機(jī)爆震、電壓監(jiān)測(cè)和濾波等場(chǎng)景。

          CDSP SW的更多應(yīng)用場(chǎng)景,有待廣大用戶(hù)去使用,歡迎大家點(diǎn)擊 “ 汽車(chē)電子生態(tài)圈 ” 最右邊菜單 “ ? 技術(shù)支持 ” 咨詢(xún)使用。

          REFERENCES

          [1] Infineon--TC4Dx-UM-v01_00-EN

          [2] __CDSP_PROD_V0.4.1-PR1_UserManual

          [3] https://mp.weixin.qq.com/s/c1bjycblTr1oEyvPQWjQcg accessed on 20.11.2024 14:20 CST.



          關(guān)鍵詞: 英飛凌 AURIX TC4x CDSP

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();