青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Welcome to ErranLi's Blog!

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  106 Posts :: 1 Stories :: 97 Comments :: 0 Trackbacks

常用鏈接

留言簿(12)

搜索

  •  

積分與排名

  • 積分 - 177454
  • 排名 - 152

最新評論

閱讀排行榜

原文:http://www.mcublog.com/blog/user1/5157/archives/2006/16413.html

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的調度策略就十分合 理。
RTOS要說的內容太多,我只能講一下自己的一點體會吧

DSP與正(余)弦波

在DSP的應用中,我們經常要用到三角函數,或者合成一個正(余)弦波。這是因為我們喜歡把信號通過傅立葉變換映射到三角函數空間來理解信號的頻率 特性。信號處理的一些計算技巧都需要在DSP軟件中進行三角函數計算。然而三角函數計算是非線性的計算,DSP并沒有專門的指令來求一個數的正弦或余弦。 于是我們需要用線性方法來近似求解。
一個直接的想法是用多項式擬合,這也正是大多數DSP C編譯器提供正余弦庫函數所采用的方法。其原理是把三角函數向函數空間{1,x,x^2,x^3....}上投影,從而獲得一系列的系數,用這些系數就可 以擬合出三角函數。比如,我們在[0,pi/2]區間上擬合sin,只需在matlab中輸入以下命令:
x=0:0.05:pi/2;
p=polyfit(x,sin(x),5)
就得到5階的多項式系數:
p =
0.00581052047605 0.00580963216172 -0.17193865685360
0.00209002716293 0.99969270087312 0.00000809543448
于是在[0,pi/2]區間上:
sin(x)= 0.00000809543448+0.99969270087312*x+ 0.00209002716293*x^2-0.17193865685360*x^3+
0.00580963216172*x^4+0.00581052047605*x^5
于是在DSP程序中,我們可以通過用乘加(MAC)指令計算這個多項式來近似求得sin(x)
當然如果用定點DSP還要把P這個多項式系數表用一定的Q值來改寫成定點數。

這樣的三角函數計算一般都需要幾十個cycle 的開銷。這對于某些場合是不能容忍的

另一種更快的方法是借助于查表,比如,我們將[0,pi/2]分成32個區間,每個區間長度就為pi/64,在每個區間上我們使用直線段擬合sin曲線,每個區間線段起點的正弦值和線段斜率事先算好,存在RAM里,這樣就需要在在RAM里存儲64個
常數:
32個起點的精確的正弦值(事先算好): s[32]={0,sin(pi/64),sin(pi/32),sin(pi/16)....}
32個線段的斜率: f[32]={0.049,.....}
對于輸入的每一個x,先根據其大小找到所在區間i,通常x用定點表示,一般取其高幾位就是系數i了,然 后通過下式即可求出sin(x):
sin(x)= s[i]*f[i]
這樣一般只需幾個CYCLE就可以算出正弦值,如果需要更高的精度,可以將區間分得更細,當然,也就需 要更多的RAM去存儲常數表。
事實上,不僅三角函數,其他的各種非線性函數都是這樣近似計算的。

posted on 2007-10-13 23:23 erran 閱讀(806) 評論(0)  編輯 收藏 引用 所屬分類: DSP & SCM
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久91精品国产一区二区精品| 免费观看成人网| 一本在线高清不卡dvd | 亚洲国产精选| 久久精品国产亚洲精品| 红桃视频国产精品| 欧美不卡高清| 欧美午夜精品久久久久久孕妇| 在线视频你懂得一区| 亚洲精品视频在线看| 国产精品久久9| 美女成人午夜| 久久九九精品| 亚洲国产精品一区二区三区| 欧美日韩精品一区二区三区| 香蕉av福利精品导航| 久久精品女人天堂| av成人激情| 欧美制服丝袜| 一区二区高清视频在线观看| 新67194成人永久网站| 亚洲国产精品电影在线观看| 一区二区三区欧美激情| 在线观看欧美日韩| 亚洲午夜未删减在线观看| 伊人激情综合| 亚洲一区二区三区视频| 亚洲电影免费观看高清| 亚洲午夜在线观看| 91久久黄色| 欧美一区二区在线播放| 一区二区三区四区五区精品| 欧美伊人久久| 亚洲一卡久久| 欧美国产精品中文字幕| 久久理论片午夜琪琪电影网| 欧美日韩午夜视频在线观看| 裸体素人女欧美日韩| 国产精品久久久| 亚洲激情网址| 亚洲福利国产精品| 久久av免费一区| 亚洲欧美中文另类| 欧美日韩一区二区免费在线观看 | 亚洲精品欧美专区| 久久久久久9999| 久久精选视频| 国产精品自在在线| 99在线精品观看| 一区二区久久久久久| 欧美激情麻豆| 亚洲高清在线播放| 亚洲激情网站免费观看| 久久久午夜视频| 久久久一本精品99久久精品66| 国产精品久久久爽爽爽麻豆色哟哟| 91久久在线视频| 亚洲欧洲美洲综合色网| 毛片一区二区三区| 欧美激情精品| 亚洲日本中文| 欧美区亚洲区| 亚洲三级电影在线观看| 亚洲精品影视| 欧美日韩精品免费观看视频完整| 亚洲国产日韩欧美在线动漫| 亚洲人成网站精品片在线观看| 久久久久天天天天| 欧美大片在线看免费观看| 亚洲第一偷拍| 欧美国产精品人人做人人爱| 亚洲黄色三级| 亚洲——在线| 国产欧美精品日韩| 久久久精品久久久久| 女人色偷偷aa久久天堂| 91久久综合亚洲鲁鲁五月天| 欧美大片免费观看| 国产精品久久久久久五月尺| 久久国产夜色精品鲁鲁99| 国产一区二区三区精品久久久| 欧美亚洲色图校园春色| 美日韩精品视频免费看| 亚洲理论在线| 国产精品女主播| 久久精品国产第一区二区三区最新章节 | 久久视频免费观看| 最新热久久免费视频| 亚洲一区免费在线观看| 国产麻豆日韩| 欧美成人蜜桃| 亚洲一区精品在线| 欧美风情在线| 亚洲欧美国产一区二区三区| 狠狠色综合日日| 欧美区亚洲区| 久久久久www| 99re这里只有精品6| 久久久久久久国产| 一本色道久久88综合日韩精品| 国产伦理精品不卡| 欧美护士18xxxxhd| 久久国产日韩| 夜夜爽av福利精品导航 | 亚洲一区二区三区在线看| 国产一区av在线| 欧美日韩麻豆| 卡通动漫国产精品| 亚洲欧美国产va在线影院| 欧美激情中文不卡| 久久久久国产一区二区| 亚洲网站在线观看| 亚洲国产精品一区二区三区| 国产精品久久久久久亚洲调教| 免费h精品视频在线播放| 午夜亚洲性色视频| 9色porny自拍视频一区二区| 麻豆精品传媒视频| 久久国产精品久久久久久| 夜夜爽夜夜爽精品视频| 亚洲高清视频一区| 国产一区二区你懂的| 国产精品激情av在线播放| 欧美v日韩v国产v| 久久久青草婷婷精品综合日韩| 亚洲欧美综合另类中字| av成人国产| 亚洲精品免费在线| 亚洲高清在线观看| 亚洲国产成人av| 欧美成人一区二区三区在线观看 | 亚洲色图在线视频| 亚洲精品美女在线| 亚洲韩日在线| 亚洲国产精品久久久久婷婷老年| 国语自产精品视频在线看8查询8| 国产精品综合不卡av| 国产精品一区二区在线观看网站 | 浪潮色综合久久天堂| 久久精品99国产精品| 久久国产精品免费一区| 欧美中文字幕在线观看| 欧美一区二区三区四区在线| 久久在线视频| 一区二区免费在线视频| 日韩视频二区| 亚洲精品久久久一区二区三区| 亚洲高清精品中出| 亚洲国产裸拍裸体视频在线观看乱了中文| 免费久久99精品国产自| 欧美成人视屏| 亚洲激情啪啪| 中文精品一区二区三区| 亚洲欧美日韩第一区| 久久国产精品亚洲va麻豆| 亚洲一区二区三区四区五区黄| 亚洲狼人精品一区二区三区| 一本久道久久综合狠狠爱| 一区二区三区三区在线| 亚洲在线观看免费视频| 亚欧成人精品| 久久久久女教师免费一区| 欧美.日韩.国产.一区.二区| 亚洲国产成人在线| av成人激情| 欧美在线视频播放| 欧美大片网址| 国产精品美腿一区在线看| 国产主播一区二区三区| 亚洲国产高清在线| 亚洲在线免费视频| 久久一区亚洲| 亚洲精品日韩在线| 欧美伊人久久大香线蕉综合69| 奶水喷射视频一区| 国产精品亚洲аv天堂网| 永久555www成人免费| 一本大道久久a久久综合婷婷| 小嫩嫩精品导航| 亚洲第一精品电影| 性欧美xxxx大乳国产app| 免费欧美日韩| 国产欧美一区二区视频| 亚洲精品小视频在线观看| 欧美一区亚洲一区| 亚洲区一区二区三区| 羞羞答答国产精品www一本| 欧美激情1区2区| 国内伊人久久久久久网站视频| 一区二区三区欧美亚洲| 美女被久久久| 亚洲在线观看免费| 欧美美女喷水视频| 在线看片欧美| 久久精品在线免费观看| 夜夜嗨av一区二区三区中文字幕| 久久在线播放| 国产午夜久久久久| 亚洲欧美日韩一区二区三区在线观看| 欧美成人一品|