當前位置:首頁 » 編程語言 » c語言編程dsp

c語言編程dsp

發布時間: 2022-12-31 17:07:01

A. dsp的c語言程序為什麼需要優化

曾幾何時匯編編程是dsp工程師的一張名片。很多人到現在談起匯編編程還是頗為自豪的,搞得你想說自己不會都要鼓起點勇氣——那眼神是恨不得把你送回火星去。這主要是因為在最開始的時候DSP上的C語言編譯器不是很普遍,編譯器的水平也還在起步階段,很難用到DSP相應的硬體特性,編譯效率值得商榷。而且那時DSP應用場景和復雜度遠不比今天,基本上限制在數字信號處理的典型演算法上,FFT,FIR,IIR濾波器,等等。這些函數和濾波器的實現相對今天的應用比較簡單,用匯編語言也容易突出DSP的硬體特性。還有一個原因是那時候DSP普遍都跑的很慢,基本上在幾十兆的水平。這也限制了C語言的使用。試想一下一段C代碼跑的比匯編慢十倍,幾十兆的DSP一下就變幾兆了。
但是今天再來看這所有的一切是完全不一樣了。首先是DSP的應用范圍越來越廣,客戶越來越多的希望用同一顆晶元,在同一個平台上實現更多的設計和應用。這對DSP的設計,DSP和MCU的融合都帶來重大影響。DSP和MCU之間也不是過往那井水不犯河水的安寧。隨著DSP和MCU的主頻先後突破1GHz,在很多應用中DSP和MCU相伴相生的場景也開始被一顆強壯的芯代替,或者DSP或者MCU。在這樣的應用中,操作系統,文件系統,USB協議棧,TCP/IP,海量數據存儲,樣樣都會用到。數字信號處理也從骨灰級的濾波器變成全系列音視頻處理,OFDM基帶處理,天線陣列信號處理,彩色圖像重建… 試想一下這些應用哪一個不是成千上萬行代碼。匯編語言在編程復雜度,可移植性和可維護性上真的是遇到了前所未有的挑戰。而與此相對應的是C語言和C語言編譯器的蓬勃發展。今天您可以很容易找到上面提到所有這些應用和演算法的C語言實現,而C語言編譯器在編譯效率和成熟度上都有很大的突破。也讓C語言在DSP上的應用得以受到愈來愈高的重視。

B. 對DSP而言,CCS用C語言編程和匯編編程,二者的效率相差多少

我用的是28XX系列的,不知道經驗對你有沒有用,因為不同系列的晶元多少有些差別。
TI提供的庫已經相當可以了,兼顧易用與效率。我當時做過這樣的測試
1. 用IQMATH實現
2. 直接C語言實現
3. C語言優化實現
4. 原生匯編實現
IQMATH的運行周期在1000左右,比方案3快幾十個周期,比方案4慢幾個周期,方案2是10000多個周期。
另外,因為只是單獨測的演算法,匯編之所以快是快在寄存器的使用上,操作數可以直接入寄存器,但是考慮到程序其他部分是用C語言編寫的話,把操作棧的時間也加上,並不比方案1快。畢竟我對TI的匯編吃的也不透。
在編寫上,無疑是方案1提供了最接近C語言風格的實現,幾乎不用考慮ISA方面的問題。
另外對於執行效率,我覺得主要考慮三點:
1.分支的使用
CCS對C語言的優化我沒做過太多比對。其實單從反匯編的結果看,我接觸過的嵌入式開發環境的編譯器都能做出很好的優化。但是幾乎每個編譯器都會在邏輯的優化上有欠缺——它只能對一些顯而易見的判斷條件進行優化,而在寫程序的過程中,我們經常出於易讀性的考慮,或者穩定性的考慮,或者其他的考慮加入幾乎不會發生的分支,這樣的分支判斷會消耗一定比率的代碼段執行效率,視乎代碼段內有用功能的長度而定,越長這個比率越小,越短這個比率越高。
2.一般操作,就是各種賦值操作
在一般的操作上,編譯器的優化已經很令人滿意了,基本上可以作為編寫匯編的範本。我覺得所謂效率能達到90%就是針對這個部分說的。
3.特殊操作,比如對整塊內存的操作,或者是浮點運算上。
在一些特殊的操作上,就要看是否有現成的庫,或者看硬體是否支持。比如對整塊內存操作就別用循環一個位元組一個位元組的搬了。
以上三點都能考慮到的話,相信執行效率方面已經沒有太大的提升空間了。

另外如果你的代碼發生在初始化部分,也就是只在系統運行開始的時候運行一次,那麼優化不優化其實沒有太大的必要,除非你對系統初始化的時間有嚴格的要求。但是如果你的代碼是作為任務要被反復運行的,那就有優化的必要了。

在CCS里有代碼消耗時鍾周期的統計,如果你覺得某段代碼效率低下的話,可以先分段進行消耗時鍾周期的計算,這樣優化比較有針對性。

C. 請問剛開始學習DSP應該怎麼學習,編程應該學習C語言還是匯編語言呢,請高手指點一下。

呵呵,看到這個問題和一些網友的回答,感到走自學成才之路的人真多!
很多人都不懂由淺入深,循序漸進的路子。

C語言是在大一學的,有了初中水平即可掌握C語言。不上大學,也能學會C語言。
學會了C語言,並不能算有什麼成就。

大約在大三、大四,學習了模電、數電等課程之後,才學到單片機和DSP。
學單片機和DSP,目的就是學習硬體和匯編。
在這個期間,怎麼還能提到學C語言? C語言編程不是在前兩年就會了嗎?
學DSP,如果學不好匯編語言,可以說是根本就沒有學會DSP。

學好了硬體和軟體,用什麼語言編寫程序,並沒有規定。
粗放型的,使用C即可,想要精雕細刻,就必須用匯編語言。

D. 怎樣進行DSP的C語言編程

在CCS里寫C語言程序啊……

E. 做DSP開發,用C語言,對數據結構的要求高嗎

要求必須高,因為學習DSP主要是用來開發高速信號處理系統,那麼對演算法的時間復雜度比較高,而且,嵌入式系統本身沒有多大的存儲空間,這樣對空間復雜度要求比較高,所以,這都要求一個好的數據結構設計,故而如此。

F. CDSP課程有什麼內容

這個課程內容還是挺豐富的,比如谷安天下的課程涵蓋了數據安全的基礎知識、安全架構、關鍵設計和最佳實踐等多個不同的方面。

G. 關於c語言和dsp編程的問題

這個問題太常見了呀,原因是路徑設置錯了。
進入界面後,選擇OPTIONS--選擇Directories
然後設置路徑,(以下是我的設置,你參考)
1:INCLUDE文件夾所在路徑,Include directories: E:\TC2\INCLUDE
2:Library文件夾所在路徑,Library directories: E:\TC2\LIB
3:OuPut文件夾即文件編譯輸出到哪個目錄下
4:TurbroC程序所在的目錄

最後選擇 OPTIONS下的SAVE OPTIONS即可。一定要SAVE呀。

H. 小弟初學DSP,請問各位大俠:用C語言對DSP進行編程需要做些什麼

1.需要知道DSP的代碼編譯及執行的基本原理,工程文件基本包括的內容。一般跟著hellodsp的視頻教程學,再在常式上邊改邊學比較快。DSP和單片機有很多相似的地方。初學的話一般從流水燈開始學起。2.Matlab的代碼執行原理和語法完全不同於DSP的。用執行matlab的語句直接復制到DSP是肯定不行的。但是兩者的語句又十分相似,稍加改動的話,代碼移植比較容易,特別是演算法部分(外設介面部分就很難)。

I. 最近學習DSP,要用C語言進行編程,有沒有大神能推薦一本C語言的書,能跟DSP有聯系,學起來方便一點的書

如果沒有任何編程基礎,先隨便來一本水水的C語言編程書
感覺C語言有點底子了,看看K&R的《The C programming language》第二版
《深入理解計算機系統》的第2、3章,至少要搞懂整數表示、堆棧和函數調用,其餘的章節就看你興趣了。
如果都差不多搞懂了,此時你的C算是還行了,此時可以看看C標准和C標准庫的實現,同時就找點C的經典書看看,查漏補缺。
希望能幫到你

J. DSP可不可以用C語言寫

當然可以啦... 只要有編譯開發環境,比如Code Composer Studio,編譯就可以了

熱點內容
安卓十二系統什麼時候更新 發布:2025-07-02 00:12:28 瀏覽:344
shell腳本需要編譯鏈接 發布:2025-07-02 00:04:20 瀏覽:473
微信如何重設密碼 發布:2025-07-02 00:02:27 瀏覽:545
java代碼基礎 發布:2025-07-02 00:00:46 瀏覽:304
煙花的代碼c語言 發布:2025-07-01 23:56:04 瀏覽:224
安卓默認打開文件方式怎麼修改 發布:2025-07-01 23:30:38 瀏覽:862
壓縮機接線座 發布:2025-07-01 23:17:48 瀏覽:662
iqoo瀏覽器緩存路徑 發布:2025-07-01 23:12:38 瀏覽:691
明日之後如何獲得最新伺服器 發布:2025-07-01 23:12:35 瀏覽:51
tv加密頻道 發布:2025-07-01 23:10:58 瀏覽:625