當前位置:首頁 » 編程軟體 » dsp編程技巧之

dsp編程技巧之

發布時間: 2022-12-07 15:37:55

⑴ 淺談如何學習DSP軟體開發

對於學習DSP重要的是理清外設的工作 構架,相應的寄存器如何設置,沒有必 要對寄存器花太多的時間去研究,用的 時候能找到(寄存器的名稱都是英文的 縮寫,很好理解的)。學習DSP,先找 本中文教材入個門,之後你會發現好多 地方、尤其是真正要用的,往往也是最 復雜的地方書上都找不到,更談不上做 什麼項目了,這時候就要開始深入研究 Data Sheet,以及官網的源代碼示例 有了之前的中文教材基礎看起來就快多 了;學習DSP重要的不是會編程,而是 演算法的研究(Matlab/Simulnk模擬就不

⑵ dsp調音技巧

dsp調音技巧如下:

1、關於話筒嘯叫,

通常話筒嘯叫都是由於話筒的音量過大造成的,要仔細看看是屬於話筒總音量過大造成還是屬於個別話筒音量過大造成。

另一個造成話筒嘯叫的原因就是話筒音質過大造成的,要仔細聽一下嘯叫的頻率:很刺耳的尖叫是屬於MIC TREBLE(話筒高音)造成的,必須把話筒高音 減小點。如果是很低沉嘯叫,感覺到有點震動的嘯叫則是屬於MIC BASS(話筒低音)過多造成的,必須把話筒低音減小點。

2、音量調整

音量調整有兩個目的:一是控制聲音信號的動態范圍,二是調整各路信號的比例關系。音量調整需要與音質補償結合起來進行,因為音量與頻率是分不開的。

因此,在調音之前,對於原聲信號的動態電平、頻率特性以及現場各路信號之間的比例關系都要瞭然於胸,需要多次試聽、反復調試,同時還要考慮到未來放音的各種條件和放音效果。

3、在調音過程中混響通常決定了餘音的長短,對聲音的色彩和清晰度有直接的影響和感受。一般情況下,如男低音演唱時,可將混響時間調得短一些,以提高聲音的清晰度。是女高音演唱時可適當延長混響時間,以增加聲音的色彩和厚度,聽起來更有張力感。

(2)dsp編程技巧之擴展閱讀:

調音台又稱調音控制台,它將多路輸入信號進行放大、混合、分配、音質修飾和音響效果加工,是現代電台廣播、舞台擴音、音響節目製作等系統中進行播送和錄制節目的重要設備。

調音台按信號出來方式可分為:模擬式調音台和數字式調音台。

調音台Mixer在輸入通道數方面、面板功能鍵的數量方面以及輸出指示等方面都存在差異,其實,掌握使用調音台,要總體上去考察它,通過實際操作和連接,自然熟能生巧。

調音台分為三大部分:輸入部分、母線部分、輸出部分。母線部分把輸入部分和輸出部分聯系起來,構成了整個調音台。



⑶ 怎麼學dsp編程

接手別人的程序的話,看懂沒有用的,自己建立個工程,一點一點自己寫一寫程序,就有感覺了。和DSP相關的晶元的話,拿著原理圖找圖上的晶元的datasheet看。DSP有很多模塊,我是習慣用到哪塊看哪塊,不然太多了……DSP的編程和單片機差不多,都是配置寄存器,看懂寄存器都在完成什麼配置,就能寫出基本的驅動程序了,然後邏輯方面和VC上差不多。不過,調試DSP和PC機上程序最大的不一樣就是,它是硬體相關的,調試的時候有問題,既可能是軟體是問題,也可能是硬體問題,反正總是要拿著示波器慢慢找~~

⑷ dsp 用什麼編程

用的都是CCS編程。

CCS有兩種工作模式:

1.軟體模擬器模式:可以從DSP晶元中分離出來,在PC上模擬DSP的指令集和工作機制,主要用於前期演算法的實現和調試。

2.硬體在線編程模式:在DSP晶元上實時運行,將應用程序的在線編程和調試與硬體開發板集成。

CCS的開發系統主要由以下組件構成:

1.TMS320C54x集成代碼生成工具;

2.CCS綜合開發環境;

3.DSP/BIOS實時內核插件及其應用程序介面API;

4.實時數據交換RTDX插件及相應的編程介面API;

5.由第三方TI公司對外提供多種應用模塊插件。

(4)dsp編程技巧之擴展閱讀:

dsp編程中雙重循環、多重循環的優化:

(1)多重循環拆成單層循環,減少循環層數;

例如,雙重循環內一個百cycle只使用了一個乘法器,拆成單層循環後,一個cycle可使用2個乘法器,充分利用DSP乘法器資源,同時運算速度也會加快;

(2)如果循環次數較少,則將其放入外循環;如果循環次數更多,則將其放入內存循環;

(3)二維數組的雙環:二維數組的行循環置於外環,列循環置於內環;

(4)避免循環內的乘除操作:循環內的乘除操作移到循環外,由加法代替。

⑸ DSP學習入門

DSP學習入門:
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的應用程序會和這些函數連接成一個可執行文件.其實實現一個簡單的多任務內核並不復雜,首先定義好內核的各種數據結構,然後寫一個scheler函數,功能是從所有就緒任務中(通過查找就緒任務隊列或就緒任務表)找出優先順序最高的任務,並恢復其執行.然後在此基礎上寫幾個用於任務間通信的函數就可以了,比如event,message box,等等.
RTOS一般採用搶先式的任務調度方式,舉例說當任務A等待的資源available的時候,DSP會執行一個任務調度函數scheler,這個函數會檢查當前任務是否比任務A優先順序低,如果是的話,就會把它當前掛起,然後把任務A保存在堆棧里寄存器值全部pop到DSP處理器中(這就是所謂的任務現場恢復).接著scheler還會把從堆棧中取出任務A掛起時的程序執行的地址,pop到PC,使任務A繼續執行.這樣當前任務就被任務A搶先了.
使用RTOS之後,每個任務都會有一個主函數,這個函數的起始地址就是該任務的入口.一般每個任務的主函數里有一個死循環,這個循環使該任務周期地執行,完成一部分演算法模塊的功能,其實這個函數跟普通函數沒任何區別,類似於C語言中的main函數.一個任務創建的時候,RTOS會把這個函數入口地址壓入任務的堆棧中,好象這個函數(任務)剛發生過一次中斷一樣.一旦這個新創建任務的優先順序在就緒隊列中是最高的,RTOS就會從其堆棧中彈出其入口地址開始執行.
有一個疑問是,不使用RTOS,而是簡單使用一個主循環在程序中調用各個函數模塊,一樣可以實現軟體的調度執行.那麼,這種常用的方法與使用RTOS相比有什麼區別呢?其實,使用主循環的方法不過是一種沒有優先順序的順序執行的調度策略而已.這種方法的缺點在於,主循環中調用的各個函數是順序執行的,那麼,即使是一個無關緊要的函數(比如閃爍一個LED),只要他不主動返回,也會一直執行直到結束,這時,如果發生一個重要的事件(比如DMA buffer full 中斷),就會得不到及時的響應和處理,只能等到那個閃爍LED的函數執行完畢.這樣就使整個DSP處理的優先次序十分不合理.而在使用了RTOS之後,當一個重要的事件發生時,中斷處理會進入RTOS,並調用scheler,這時scheler 會讓處理這一事件的任務搶佔DSP處理器(因為它的優先順序高).而哪個閃爍LED任務即使晚執行幾毫秒都沒任何影響.這樣整個DSP的調度策略就十分合理。

⑹ DSP技術的實現方法

DSP的實現方法一般有以下幾種:
(1) 在通用的計算機(如PC機)上用軟體(如Fortran、C語言)實現;
(2) 在通用計算機系統中加上專用的加速處理機實現;
(3) 用通用的單片機(如MCS-51、96系列等)實現,這種方法可用於一些不太復雜的數字信號處理,如數字控制等;
(4) 用通用的可編程DSP實現。與單片機相比,DSP晶元具有更加適合於數字信號處理的軟體和硬體資源,可用於 復雜的數字信號處理演算法;
(5) 用專用的DSP晶元實現。在一些特殊的場合,要求的信號處理速度極高,用通用DSP晶元很難實現,例如專用於FFT、數字濾波、卷積、相關等演算法的DSP晶元,這種晶元將相應的信號處理演算法在晶元內部用硬體實現,無需進行編程。
在上述幾種方法中,第1種方法的缺點是速度較慢,一般可用於DSP演算法的模擬;第2種和第5種方法專用性強,應用受到很大的限制,第2種方法也不便於系統的獨立運行;第3種方法只適用於實現簡單的DSP演算法;只有第4種方法才使數字信號處理的應用打開了新的局面。

⑺ DSP 編程方法

因為課題需要,所以跟dsp打上了交道。大概從今年的8月份開始了解dsp。
那個時候中文書籍好像不是很多,就從網上下載ti的一些基本手冊和幾本大
黃皮書。因為以前基本沒接觸過,所以沒搞dsp之前覺得dsp好深奧好難,看
了一段時間書以後,開始使用ccs模擬一些程序。現在回頭看看ccs的軟模擬
一般只能模擬演算法的對錯,對於演算法的效率和其他一些性能的模擬基本沒有
什麼意義。可惜剛上手的時候我對這個不太清楚,就一直在ccs的軟模擬上
浪費了太多時間,總想通過ccs下的profiler觀測值來提高程序效率,結果
和後來在實際板子上跑出來的效果大相徑庭。大概到了國慶假期結束,開始
畫電路板,11月初拿到電路板開始漫長的調試過程。早聽人說過調硬體是一
件很苦惱又很無奈的事,因為好多問題沒有道理可講。第一塊板子是一塊小
的實驗板,製版焊接到調試一次通過,我就感覺調試硬體沒什麼特別難的。
結果後來的事實讓我體驗到了調試硬體的艱苦。第二塊板子也很快做完了,
結果上電後總進不去ccs。折騰了兩天,挨個管腳測,後來又和第一次做得
板子進行比較,發現一些中斷引腳沒有拉高,估計可能是這方面的原因。把
這些中斷管腳拉高以後,ccs順利進去了。後來又遇到了很多問題,每次都要
花上兩三天時間才能把問題找出來。到現在電路基本能跑起來,但還有些不太
穩定,原因還需要慢慢琢磨。
在調試過程中,能多找一些身邊的高手問就盡量找,這樣有兩個好處,一
能節省你的時間,二可以從高手那裡得到一些經驗。其次如果電路在調試過程
中老出問題,先檢查程序,確認程序沒有問題以後,在查硬體電路,這樣一個
順序效率比較高。再就是多留意一下bbs上的信息,有的信息可能現在對你
沒多少用處,但是可能在以後會用到。
還有一些具體經驗,以後有時間在總結了 *^_^*

學習DSP可能需要時間很長,不是短期可以解決的。
我的建議:
1。看網上資料;
2。用DSK來練手;
3。如果你連硬體經驗都沒有,那就得先練焊板子,哈哈
4。找人請教

我的唯一感受,如果你想學深些的話:
1.多看TI的pdf,多多宜善,權威而且全面
2.硬體上,多做項目,包括單片機的、一般電路的都行
3.軟體上,一般的編程不說了,編譯原理之類的對混合編程很有幫助的
4.其它東西,就是那些隨著DSP的出現才流行的東西,如DSP/BIOS,CPLD技術等

其實也沒什麼訣竅,我現在還是照著上面學,離目標還差得遠

⑻ DSP初學者如何快速入門

我接觸的是TMS320F2812,不是很了解67系列的
從開始到現在差不多8個月左右吧,剛開始的時候是跟著我們的團隊打雜,等不忙的時候才在ccs上添加個變數觀測觀測,改改程序里的參數試試效果,入門也比較痛苦;
慢慢的看著師傅現場調試,也學會了些經驗,了解了我們程序的架構,接手一小部分程序的調試修改,借了同事的《tms320c28xx系列DSP的CPU與外設》,使勁閱讀外設部分,目前接觸了EV、SCI、GPIO、AD、ECAN,一個寄存器一個寄存器的對著程序查,CMD文件的修改,map文件的查看,PIE等啥的都有些涉足;
再後來感覺DSP沒那麼神秘了,現在的一些FFT、AD的等一些簡單演算法都能照葫蘆畫瓢了;
期間還看了兩個視頻,一個是彭啟宗的那個,還有一個手把手教你學DSP;
網站的話沒固定,基本上就是用啥就去學啥,那一塊不了解就去網路、google關鍵字;
希望能幫到你吧,雖然咱倆不是用的一個系列的DSP,不過還是歡迎交流啊

⑼ 入IC設計行業(具體是DSP設計)要哪些基本知識請做這行的師傅具體詳細說說

DSP設計,如果不是設計DSP晶元、而是為某款DSP編程、或者基於某款DSP設計系統,就不是IC設計行業,而是軟體行業或系統設計行業。
如果不是IC設計行業,就不必學習IC工藝、IC邏輯設計、IC設計軟體等等。
如果是以DSP編程為主,要盡快熟悉DSP晶元的工作原理、軟體編程、特別是DSP特殊指令的編程技巧,還要有板級設計的基礎,以更好地理解DSP在系統中的作用、與周邊其他晶元的功能關系和信號傳遞協議。

⑽ 如何學好DSP及DSP基本知識普及

信號與系統, 復變函數, 線性代數,數字信號處理。 還有一些編程技巧。如果學會matlab,在dsp的應用模擬中是很有用的!!
加油!!

熱點內容
資料庫運維題 發布:2024-05-05 21:21:47 瀏覽:960
RM魔塔編程 發布:2024-05-05 21:21:47 瀏覽:284
matlab獲取文件夾 發布:2024-05-05 21:12:24 瀏覽:290
一根式演算法 發布:2024-05-05 21:12:23 瀏覽:954
php無刷新 發布:2024-05-05 21:08:11 瀏覽:982
搭建一個流媒體伺服器 發布:2024-05-05 20:40:59 瀏覽:667
2017中超資料庫 發布:2024-05-05 20:37:25 瀏覽:379
編程包游戲 發布:2024-05-05 20:25:00 瀏覽:609
系統鎖屏忘記密碼如何設置 發布:2024-05-05 20:18:07 瀏覽:760
xp怎樣訪問win7 發布:2024-05-05 20:17:07 瀏覽:871