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

Welcome to ErranLi's Blog!

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

常用鏈接

留言簿(12)

搜索

  •  

積分與排名

  • 積分 - 178126
  • 排名 - 152

最新評論

閱讀排行榜

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

DSP的特點

對于沒有使用過DSP的初學(xué)者來說,第一個困惑就是DSP其他的嵌入式處理器究竟有什么不同,它和單片機(jī),ARM有什么區(qū)別。事實上,DSP也是一種嵌入式處理器,它完全可以完成單片機(jī)的功能。
唯 一的重要的區(qū)別在于DSP支持單時鐘周期的"乘-加"運算。這幾乎是所有廠家的DSP芯片的一個共有特征。幾乎所有的DSP處理器的指令集中都會有一條 MAC指令,這條指令可以把兩個操作數(shù)從RAM中取出相乘,然后加到一個累加器中,所有這些操作都在一個時鐘周期內(nèi)完成。擁有這樣一條指令的處理器就具備 了
DSP功能。
具有這條指令就稱之為數(shù)字信號處理器的原因在于,所有的數(shù)字信號處理算法中最為常見的算術(shù)操作就是"乘-加"。這是因為數(shù) 字信號處理中大量使用了內(nèi)積,或稱"點積"的運算。無論是FIR濾波,F(xiàn)FT,信號相關(guān),數(shù)字混頻,下變頻。所有這些數(shù)字信號處理的運算經(jīng)常是將輸入信號 與一個系數(shù)表或者與一個本地參考信號相乘然后積分(累加),這就表現(xiàn)為將兩個向量(或稱序列)進(jìn)行點積,在編程上就變成將輸入的采樣放在一個循環(huán) buffer里,本地的系數(shù)表或參考信號也放在一個buffer里,然后使用兩個指針指向這兩個buffer。這樣就可以在一個loop里面使用一個 MAC指令將二者進(jìn)行點積運算。這樣的點積運算對與處理器來說是最快的,因為僅需一個始終周期就可以完成一次乘加。
了解DSP的這一特點后,當(dāng)我們設(shè)計一個嵌入式系統(tǒng)時,首先要考慮處理器所實現(xiàn)的算法中是否有點積運算
,即是否要經(jīng)常進(jìn)行兩個數(shù)組的乘加,(記住數(shù)字濾波,相關(guān)等都表現(xiàn)為兩個數(shù)組的點積)如果有的話,每秒要做多少次,這樣就能夠決定是否采用DSP,采用多高性能的DSP了。

浮點與定點

浮點與定點也是經(jīng)常是初學(xué)者困惑的問題,在選擇DSP器件的時候,是采用浮點還是采用定點,如果用定點是16位還是32位?其實這個問題和你的算法所要求的信號的動態(tài)范圍有關(guān)。
定 點的計算不過是把一個數(shù)據(jù)當(dāng)作整數(shù)來處理,通常AD采樣來的都是整數(shù),這個數(shù)相對于真實的模擬信號有一個刻度因子,大家都知道用一個16位的AD去采樣一 個0到5V的信號,那么AD輸出的整數(shù)除以2^16再乘以5V就是對應(yīng)的電壓。在定點DSP中是直接對這個16位的采樣進(jìn)行處理,并不將它轉(zhuǎn)換成以小數(shù)表 示的電壓,因為定點DSP無法以足夠的精度表示一個小數(shù),它只能對整數(shù)進(jìn)行計算。
而浮點DSP的優(yōu)勢在于它可以把這個采樣得到的整數(shù)轉(zhuǎn)換成小數(shù)表示的電壓,并不損失精度(這個小數(shù)用科學(xué)記數(shù)法來表示),原因在于科學(xué)記數(shù)法可以表示很大的動態(tài)范圍的一個信號,以IEEE754浮點數(shù)為例,
單精度浮點格式: [31] 1位符號 [30-23]8位指數(shù) [22-00]23位小數(shù)
這 樣的能表示的最小的數(shù)是+-2^-149,最大的數(shù)是+-(2-2^23)*2^127.動態(tài)范圍為20*log(最大的數(shù)/最小的數(shù))= 1667.6dB 這樣大的動態(tài)范圍使得我們在編程的時候幾乎不必考慮乘法和累加的溢出,而如果使用定點處理器編程,對計算結(jié)果進(jìn)行舍入和移位則是家常便飯,這在一定程度上 會損失是精度。原因在于定點處理處理的信號的動態(tài)范圍有限,比如16位定點DSP,可以表示整數(shù)范圍為1-65536,其動態(tài)范圍為20*log (65536/1)=96dB.對于32定點DSP,動態(tài)范圍為20*log(2^32/1)=192dB,遠(yuǎn)小于32位ieee浮點數(shù)的 1667.6dB,但是,實際上192dB對絕大多數(shù)應(yīng)用所處理的信號已經(jīng)足夠了。
由于AD轉(zhuǎn)換器的位數(shù)限制,一般輸入信號的動態(tài)范圍都比較小, 但在DSP的信號處理中,由于點積運算會使中間節(jié)點信號的動態(tài)范圍增加,所以主要考慮信號處理流程中中間結(jié)果的動態(tài)范圍,以及算法對中間結(jié)果的精度要求, 來選擇相應(yīng)的DSP。另外就是浮點的DSP更易于編程,定點DSP編程中程序員要不斷調(diào)整中間結(jié)果的P,Q值,實際就是不斷對中間結(jié)果進(jìn)行移位調(diào)整和舍 入。

DSP與RTOS

TI的CCS提供BIOS,ADI的VDSP提供VDK,都是基于各自DSP的嵌入式多任務(wù)內(nèi)核。DSP編程可以用單用C,也可以用匯編,或者二者 結(jié)合,一般軟件編譯工具都提供了很好的支持。我不想在這里多說BIOS,VDK怎么用這在相應(yīng)的文檔里說的很詳細(xì)。我想給初學(xué)者說說DSP的RTOS原 理。用短短幾段話說這個復(fù)雜的東西也是挑戰(zhàn)!^_^

其實DSP的RTOS和基于其他處理器的通用RTOS沒什么大的區(qū)別,現(xiàn)在幾乎人人皆知的uCOSii也很容易移植到DSP上來,只要把寄存器保存與恢復(fù)部分和堆棧部分改改就可以。一般在用BIOS和VDK之前,先看看操作系統(tǒng)原理的書比較好。uCOS那本書也不錯。
BIOS 和VDK其實是一個RTOS內(nèi)核函數(shù)集,DSP的應(yīng)用程序會和這些函數(shù)連接成一個可執(zhí)行文件。其實實現(xiàn)一個簡單的多任務(wù)內(nèi)核并不復(fù)雜,首先定義好內(nèi)核的各 種數(shù)據(jù)結(jié)構(gòu),然后寫一個scheduler函數(shù),功能是從所有就緒任務(wù)中(通過查找就緒任務(wù)隊列或就緒任務(wù)表)找出優(yōu)先級最高的任務(wù),并恢復(fù)其執(zhí)行。然后 在此基礎(chǔ)上寫幾個用于任務(wù)間通信的函數(shù)就可以了,比如event,message box,等等。
RTOS一般采用搶先式的任務(wù)調(diào)度方式,舉例說 當(dāng)任務(wù)A等待的資源available的時候,DSP會執(zhí)行一個任務(wù)調(diào)度函數(shù)scheduler,這個函數(shù)會檢查當(dāng)前任務(wù)是否比任務(wù)A優(yōu)先級低,如果是的 話,就會把它當(dāng)前掛起,然后把任務(wù)A保存在堆棧里寄存器值全部pop到DSP處理器中(這就是所謂的任務(wù)現(xiàn)場恢復(fù))。接著scheduler還會把從堆棧 中取出任務(wù)A掛起時的程序執(zhí)行的地址,pop到PC,使任務(wù)A繼續(xù)執(zhí)行。這樣當(dāng)前任務(wù)就被任務(wù)A搶先了。
使用RTOS之后,每個任務(wù)都會有一個主 函數(shù),這個函數(shù)的起始地址就是該任務(wù)的入口。一般每個任務(wù)的主函數(shù)里有一個死循環(huán),這個循環(huán)使該任務(wù)周期地執(zhí)行,完成一部分算法模塊的功能,其實這個函數(shù) 跟普通函數(shù)沒任何區(qū)別,類似于C語言中的main函數(shù)。一個任務(wù)創(chuàng)建的時候,RTOS會把這個函數(shù)入口地址壓入任務(wù)的堆棧中,好象這個函數(shù)(任務(wù))剛發(fā)生 過一次中斷一樣。一旦這個新創(chuàng)建任務(wù)的優(yōu)先級在就緒隊列中是最高的,RTOS就會從其堆棧中彈出其入口地址開始執(zhí)行。
有一個疑問是,不使用 RTOS,而是簡單使用一個主循環(huán)在程序中調(diào)用各個函數(shù)模塊,一樣可以實現(xiàn)軟件的調(diào)度執(zhí)行。那么,這種常用的方法與使用RTOS相比有什么區(qū)別呢?其實, 使用主循環(huán)的方法不過是一種沒有優(yōu)先級的順序執(zhí)行的調(diào)度策略而已。這種方法的缺點在于,主循環(huán)中調(diào)用的各個函數(shù)是順序執(zhí)行的,那么,即使是一個無關(guān)緊要的 函數(shù)(比如閃爍一個LED),只要他不主動返回,也會一直執(zhí)行直到結(jié)束,這時,如果發(fā)生一個重要的事件(比如DMA buffer full 中斷),就會得不到及時的響應(yīng)和處理,只能等到那個閃爍LED的函數(shù)執(zhí)行完畢。這樣就使整個DSP處理的優(yōu)先次序十分不合理。而在使用了RTOS之后,當(dāng) 一個重要的事件發(fā)生時,中斷處理會進(jìn)入RTOS,并調(diào)用scheduler,這時scheduler 會讓處理這一事件的任務(wù)搶占DSP處理器(因為它的優(yōu)先級高)。而哪個閃爍LED任務(wù)即使晚執(zhí)行幾毫秒都沒任何影響。這樣整個DSP的調(diào)度策略就十分合 理。
RTOS要說的內(nèi)容太多,我只能講一下自己的一點體會吧

DSP與正(余)弦波

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

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

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

posted on 2007-10-13 23:23 erran 閱讀(811) 評論(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>
            久久久久国色av免费观看性色| 在线视频欧美一区| 久久躁日日躁aaaaxxxx| 午夜一级久久| 亚洲国产高清自拍| 蜜桃久久精品一区二区| 美女日韩在线中文字幕| 欧美成黄导航| 女同一区二区| 久久视频国产精品免费视频在线 | 亚洲一区二区视频在线| 国产一区美女| 欧美日本在线播放| 国产精品三级久久久久久电影| 国产女人精品视频| 亚洲国产精品一区二区第四页av | 欧美一区二区在线免费播放| 久久久久国产精品一区| 欧美日韩国产一中文字不卡| 国产欧美日本一区二区三区| 尤物视频一区二区| 亚洲午夜av在线| 六月天综合网| 一区二区免费在线观看| 久久天天躁狠狠躁夜夜av| 欧美日韩免费在线观看| 精品白丝av| 亚洲永久精品国产| 六月婷婷久久| 亚洲一区二区视频在线| 毛片一区二区| 国产精品亚洲成人| 99精品视频一区| 久久综合综合久久综合| 亚洲自拍高清| 欧美不卡激情三级在线观看| 国产区二精品视| 亚洲综合99| 亚洲精品国产精品国自产观看浪潮 | 国精品一区二区三区| 9色国产精品| 久久亚洲欧美| 欧美一区二区私人影院日本 | 欧美一级二级三级蜜桃| 欧美日本在线观看| 亚洲国产合集| 老司机午夜精品视频在线观看| 一区二区三区久久精品| 欧美xxx成人| 最新中文字幕一区二区三区| 久久er精品视频| 这里只有视频精品| 欧美在线一二三区| 男女精品视频| 亚洲一区日韩在线| 欧美日韩在线亚洲一区蜜芽| 亚洲国产日韩欧美综合久久| 久久久久久久综合| 欧美一区二区在线观看| 国产裸体写真av一区二区| 亚洲欧美文学| 一区二区久久| 国产精品国产三级欧美二区| 亚洲视频在线一区| 夜夜嗨av一区二区三区免费区| 欧美久久久久久久久| 亚洲黄网站在线观看| 亚洲大片av| 欧美精品少妇一区二区三区| 亚洲日韩欧美视频一区| 欧美激情视频一区二区三区在线播放 | 伊人精品视频| 欧美激情乱人伦| 欧美二区在线| 亚洲视频图片小说| 一本不卡影院| 国产精品入口日韩视频大尺度| 亚洲欧美视频在线观看| 亚洲免费中文字幕| 国产在线欧美| 亚洲春色另类小说| 欧美国产视频在线观看| 亚洲视频精品在线| 亚洲一区二区三区欧美| 国产一区二区精品久久91| 久久一区二区三区av| 欧美好骚综合网| 欧美日韩亚洲三区| 亚洲一区免费视频| 欧美在线看片| 亚洲理伦电影| 午夜精品福利在线观看| 亚洲人成久久| 亚洲欧美激情视频| 伊伊综合在线| 亚洲一区二区三区四区五区午夜| 国产亚洲欧美一区在线观看| 亚洲国产精品99久久久久久久久| 欧美日韩在线播放一区二区| 欧美一区视频在线| 欧美国产精品va在线观看| 亚洲欧美日韩在线| 欧美暴力喷水在线| 欧美一二三区精品| 免费欧美日韩| 久久久久九九九九| 欧美日韩在线高清| 欧美高清在线视频| 国产日韩欧美精品在线| 亚洲国产日韩欧美在线99| 久久精品电影| 欧美日韩裸体免费视频| 久久亚洲综合网| 欧美午夜不卡视频| 欧美.com| 狠狠色综合色综合网络| 日韩亚洲欧美中文三级| 在线看片成人| 久久精品99久久香蕉国产色戒| 日韩视频一区二区三区在线播放| 欧美一级久久久| 欧美一级午夜免费电影| 欧美人与禽性xxxxx杂性| 欧美国产综合一区二区| 国产一区二区三区不卡在线观看| 99香蕉国产精品偷在线观看| 亚洲三级性片| 久久久久久久久久久久久女国产乱 | 日韩亚洲不卡在线| 久久综合给合| 久久人人97超碰人人澡爱香蕉| 国产精品视频yy9099| 99成人在线| 亚洲天堂免费观看| 欧美日韩国产成人在线| 亚洲国产美女| 亚洲人永久免费| 久久综合精品一区| 欧美电影电视剧在线观看| 韩国成人福利片在线播放| 欧美一区二区女人| 久久久久久999| 狠狠色狠狠色综合日日五| 久久精品国产一区二区三| 久久人人爽爽爽人久久久| 在线观看中文字幕不卡| 久久综合成人精品亚洲另类欧美| 麻豆91精品| 亚洲美女视频在线免费观看| 欧美人成在线视频| 亚洲曰本av电影| 久久久精品一品道一区| 一区二区在线观看视频| 欧美高清在线视频| 99国内精品久久| 久久国产福利| 亚洲第一区中文99精品| 欧美激情第三页| 亚洲视频综合| 久久久噜噜噜久久狠狠50岁| 最近中文字幕日韩精品 | 免费短视频成人日韩| 亚洲高清免费在线| 亚洲视频碰碰| 国产主播一区二区三区四区| 玖玖玖国产精品| 亚洲理伦在线| 久久动漫亚洲| 亚洲片国产一区一级在线观看| 欧美体内she精视频| 欧美在线播放高清精品| 欧美国产专区| 亚洲一区二区三区中文字幕| 国产亚洲激情在线| 美女露胸一区二区三区| 一区二区冒白浆视频| 久久精品国产77777蜜臀| 亚洲精品久久久久久久久久久久| 欧美日韩一区二区三区在线| 久久成人一区二区| 亚洲国产网站| 欧美自拍偷拍| 夜夜嗨av色综合久久久综合网| 国产欧美日韩91| 欧美日韩国产探花| 久久精品国产亚洲一区二区三区| 亚洲精品一区二区三区99| 久久免费视频网站| 亚洲午夜91| 日韩视频一区二区三区在线播放免费观看 | 一区二区三区色| 狠狠综合久久| 国产精品美女久久福利网站| 免费日韩av片| 欧美一区二区三区另类 | 欧美成人免费全部| 久久黄金**| 亚洲欧美在线一区二区| 一本一本久久a久久精品牛牛影视| 国内精品免费午夜毛片|