DSP初學者,學的F2812,請問CCS用哪個版本

2021-03-04 05:47:54 字數 3651 閱讀 3954

1樓:匿名使用者

ccs3.3這個版本就能夠使用了,現在最新的ccs5.4也支援,主要可能是要看你的**器的了。ccs5.4有部分**器不支援,需要注意一下。

新手學習用dsp,ccs哪個版本好用

2樓:霸7威武

ccs3.3更適合學習dsp,因為論壇中好多應用都是基於此的,僅僅比ccs4多乙個**器配置軟體,反而更清楚,ccs4軟體不是很成熟,應用範圍不廣,。

3樓:匿名使用者

你們這群老吊,現在都v9版本了,還推薦v3,腦子有問題,至少用v5,這個用的也比較廣

dsp學習入門

4樓:滿意請採納喲

dsp的特點 :

對於沒有使用過dsp的初學者來說,第乙個困惑就是dsp其他的嵌入式處理器究竟有什麼不同,它和微控制器,arm有什麼區別.事實上,dsp也是一種嵌入式處理器,它完全可以完成微控制器的功能.。

唯一的重要的區別在於dsp支援單時鐘週期的"乘-加"運算.這幾乎是所有廠家的dsp晶元的乙個共有特徵.幾乎所有的dsp處理器的指令集中都會有一條mac指令,這條指令可以把兩個運算元從ram中取出相乘,然後加到乙個累加器中,所有這些操作都在乙個時鐘週期內完成.

擁有這樣一條指令的處理器就具備了

dsp功能:

具有這條指令就稱之為數字訊號處理器的原因在於,所有的數字訊號處理演算法中最為常見的算術操作就是"乘-加".這是因為數字訊號處理中大量使用了內積,或稱"點積"的運算.無論是fir濾波,fft,訊號相關,數字混頻,下變頻.

所有這些數字訊號處理的運算經常是將輸入訊號與乙個係數表或者與乙個本地參考訊號相乘然後積分(累加),這就表現為將兩個向量(或稱序列)進行點積,在程式設計上就變成將輸入的取樣放在乙個迴圈buffer裡,本地的係數表或參考訊號也放在乙個buffer裡,然後使用兩個指標指向這兩個buffer.這樣就可以在乙個loop裡面使用乙個mac指令將二者進行點積運算.這樣的點積運算對與處理器來說是最快的,因為僅需乙個始終週期就可以完成一次乘加.

了解dsp的這一特點後,當我們設計乙個嵌入式系統時,首先要考慮處理器所實現的演算法中是否有點積運算,即是否要經常進行兩個陣列的乘加,(記住數字濾波,相關等都表現為兩個陣列的點積)如果有的話,每秒要做多少次,這樣就能夠決定是否採用dsp,採用多高效能的dsp了.

浮點與定點 :

浮點與定點也是經常是初學者困惑的問題,在選擇dsp器件的時候,是採用浮點還是採用定點,如果用定點是16位還是32位?其實這個問題和你的演算法所要求的訊號的動態範圍有關.

定點的計算不過是把乙個資料當作整數來處理,通常ad取樣來的都是整數,這個數相對於真實的模擬訊號有乙個刻度因子,大家都知道用乙個16位的ad去取樣乙個0到5v的訊號,那麼ad輸出的整數除以2^16再乘以5v就是對應的電壓.在定點dsp中是直接對這個16位的取樣進行處理,並不將它轉換成以小數表示的電壓,因為定點dsp無法以足夠的精度表示乙個小數,它只能對整數進行計算.

而浮點dsp的優勢在於它可以把這個取樣得到的整數轉換成小數表示的電壓,並不損失精度(這個小數用科學記數法來表示),原因在於科學記數法可以表示很大的動態範圍的乙個訊號,以ieee754浮點數為例,

單精度浮點格式: [31] 1位符號 [30-23]8位指數 [22-00]23位小數

這樣的能表示的最小的數是+-2^-149,最大的數是+-(2-2^23)*2^127.動態範圍為20*log(最大的數/最小的數)=1667.6db 這樣大的動態範圍使得我們在程式設計的時候幾乎不必考慮乘法和累加的溢位,而如果使用定點處理器程式設計,對計算結果進行捨入和移位則是家常便飯,這在一定程度上會損失是精度.

原因在於定點處理處理的訊號的動態範圍有限,比如16位定點dsp,可以表示整數範圍為1-65536,其動態範圍為20*log(65536/1)=96db.對於32定點dsp,動態範圍為20*log(2^32/1)=192db,遠小於32位ieee浮點數的1667.6db,但是,實際上192db對絕大多數應用所處理的訊號已經足夠了。

由於ad轉換器的位數限制,一般輸入訊號的動態範圍都比較小,但在dsp的訊號處理中,由於點積運算會使中間節點訊號的動態範圍增加,所以主要考慮訊號處理流程中中間結果的動態範圍,以及演算法對中間結果的精度要求,來選擇相應的dsp.另外就是浮點的dsp更易於程式設計,定點dsp程式設計中程式設計師要不斷調整中間結果的p,q值,實際就是不斷對中間結果進行移位調整和捨入.。

dsp與rtos:

ti的ccs提供bios,adi的vdsp提供vdk,都是基於各自dsp的嵌入式多工核心.dsp程式設計可以用單用c,也可以用彙編,或者二者結合,一般軟體編譯工具都提供了很好的支援.我不想在這裡多說bios,vdk怎麼用這在相應的文件裡說的很詳細.

我想給初學者說說dsp的rtos原理.用短短幾段話說這個複雜的東西也是挑戰!

其實dsp的rtos和基於其他處理器的通用rtos沒什麼大的區別,現在幾乎人人皆知的ucosii也很容易移植到dsp上來,只要把暫存器儲存與恢復部分和堆疊部分改改就可以.一般在用bios和vdk之前,先看看作業系統原理的書比較好.ucos那本書也不錯.

bios和vdk其實是乙個rtos核心函式集,dsp的應用程式會和這些函式連線成乙個可執行檔案.其實實現乙個簡單的多工核心並不複雜,首先定義好核心的各種資料結構,然後寫乙個scheduler函式,功能是從所有就緒任務中(通過查詢就緒任務佇列或就緒任務表)找出優先順序最高的任務,並恢復其執行.然後在此基礎上寫幾個用於任務間通訊的函式就可以了,比如event,message box,等等.

rtos一般採用搶先式的任務排程方式,舉例說當任務a等待的資源available的時候,dsp會執行乙個任務排程函式scheduler,這個函式會檢查當前任務是否比任務a優先順序低,如果是的話,就會把它當前掛起,然後把任務a儲存在堆疊裡暫存器值全部pop到dsp處理器中(這就是所謂的任務現場恢復).接著scheduler還會把從堆疊中取出任務a掛起時的程式執行的位址,pop到pc,使任務a繼續執行.這樣當前任務就被任務a搶先了.

使用rtos之後,每個任務都會有乙個主函式,這個函式的起始位址就是該任務的入口.一般每個任務的主函式裡有乙個死迴圈,這個迴圈使該任務週期地執行,完成一部分演算法模組的功能,其實這個函式跟普通函式沒任何區別,類似於c語言中的main函式.乙個任務建立的時候,rtos會把這個函式入口位址壓入任務的堆疊中,好象這個函式(任務)剛發生過一次中斷一樣.

一旦這個新建立任務的優先順序在就緒佇列中是最高的,rtos就會從其堆疊中彈出其入口位址開始執行.

有乙個疑問是,不使用rtos,而是簡單使用乙個主迴圈在程式中呼叫各個函式模組,一樣可以實現軟體的排程執行.那麼,這種常用的方法與使用rtos相比有什麼區別呢?其實,使用主迴圈的方法不過是一種沒有優先順序的順序執行的排程策略而已.

這種方法的缺點在於,主迴圈中呼叫的各個函式是順序執行的,那麼,即使是乙個無關緊要的函式(比如閃爍乙個led),只要他不主動返回,也會一直執行直到結束,這時,如果發生乙個重要的事件(比如dma buffer full 中斷),就會得不到及時的響應和處理,只能等到那個閃爍led的函式執行完畢.這樣就使整個dsp處理的優先次序十分不合理.而在使用了rtos之後,當乙個重要的事件發生時,中斷處理會進入rtos,並呼叫scheduler,這時scheduler 會讓處理這一事件的任務搶占dsp處理器(因為它的優先順序高).

而哪個閃爍led任務即使晚執行幾毫秒都沒任何影響.這樣整個dsp的排程策略就十分合理。

5樓:匿名使用者

首先 學習計算機體系結構吧,弄清楚什麼是vliw,弄清楚各種匯流排。同時學習編譯原理,搞清楚各種優化。

魔法初學者的基本魔法,魔法初學者應該怎麼學?

冥想的時候要靜,又讓你冥想中的思想將你帶到九天雲外的海洋中,要讓你在冥想中的思想遨遊到人類無法接觸的時間,世界。找到你最舒服的姿勢,然後冥想。冥想,最主要就是在於它這個冥字。你要仔細體會他的意義。魔法初學者應該怎麼學?首先,三杯淡鹽水擺成正三角型,在三角的重心席地而坐,盤腿,收腹,抬頭,挺胸,兩手十...

關於初學者學數控車床的問題數控車床初學者應該怎麼入門?

要知道行行出狀元,我就是乙個例子,現在已做廠子,只要你用心去做,一定會成功,想學好要1 2年.如果在杭州可以到我這裡來學。先做兩年普通車床最好是加工雜件或小批量外加工的,找個好老師傅,不要進大廠。沒人教你去學校學一兩個月程式設計就行了先小廠幹邊做邊學。沒出路,是個餓不死的行業。太多了。信我的沒錯,本...

請問有什麼適合德語初學者的資料?

德國人的考試不是像英語一樣考語法,考你填空和寫作就是在考語法了,語法無處不在,考的反而很像智力測試的題,所以別浪費時間找什麼語法題,要做題找同濟大學買。如果要訓練的語聽力的話,搜 德語資料 德國之聲 可以找到一款 廣播軟體,內建1000多個德語廣播電台,還有其他國家電台2萬多個,對德語聽力很有幫助,...