把工作簡(jiǎn)單化,DSP與數(shù)據(jù)轉(zhuǎn)換器協(xié)同工作需考慮這些因素
發(fā)布時(shí)間:2016-12-14 責(zé)任編輯:susan
【導(dǎo)讀】假設(shè)你接到一項(xiàng)工作任務(wù),設(shè)計(jì)一套由DSP與DAC與ADC等模擬器件組成的信號(hào)處理系統(tǒng)。如果你考慮到幾個(gè)重要因素,工作就會(huì)非常簡(jiǎn)單。下面就來(lái)談?wù)勗O(shè)計(jì)工作中應(yīng)該考慮的這幾個(gè)因素。
詳細(xì)了解應(yīng)用類型
第一步需要了解應(yīng)用類型。對(duì)于控制型應(yīng)用,既需要應(yīng)對(duì)突發(fā)的大量數(shù)據(jù)處理情形,也要考慮間歇的閑置狀態(tài);而對(duì)于音頻應(yīng)用,則需要處理連續(xù)數(shù)據(jù)流的能力。了解應(yīng)用的具體需求將有助于選擇適當(dāng)?shù)慕涌诤驼_的數(shù)據(jù)讀取方法。
評(píng)估系統(tǒng)速率
第二步需要了解數(shù)據(jù)采樣的速率。舉例來(lái)說(shuō),音頻系統(tǒng)可能是一部CD播放機(jī),采樣率為96kHz,也可能是電話語(yǔ)音系統(tǒng),采樣率僅為8kHz。當(dāng)然,也可能是其他系統(tǒng),如ADSL質(zhì)量測(cè)量應(yīng)用,采樣速率高達(dá)10MSPS,或者是稱重應(yīng)用,每秒只要16次采樣就足夠了,但要求具備較高的分辨率(如24位)。了解此方面信息,將有助于開(kāi)展下一步工作,即選擇正確的DSP接口。
選擇正確的DSP接口
了解了應(yīng)用及速率要求后,就對(duì)采用哪種DSP接口有了一定的認(rèn)識(shí)。大多數(shù)音頻設(shè)備均使用特定類型的串行接口,不過(guò)高速應(yīng)用則要求并行接口。當(dāng)采樣速率為10MSPS、分辨率 為12位時(shí),如果采用串行接口,其端口的速率要達(dá)到120MHz才能從轉(zhuǎn)換器向DSP發(fā)送數(shù)據(jù)。這一要求大大超過(guò)了大多數(shù)50MHz串行端口的處理能力。若使用并行接口,則總線上信號(hào)交換的頻率為10MHz,速率顯著降低,因此處理起來(lái)非常簡(jiǎn)單。
在選擇接口時(shí),還要考慮的另一問(wèn)題就是,并行總線能否滿足所需的數(shù)據(jù)速率要求,或者說(shuō)并行總線芯片在滿足程序與系數(shù)要求后是否已經(jīng)達(dá)到了滿負(fù)荷。如果是的話,不妨考慮在DSP與轉(zhuǎn)換器之間插入FIFO。
確定握手模式
一旦選擇了DSP接口,下一步就要考慮轉(zhuǎn)換器與DSP之間的握手模式(handshakemode)。大多數(shù)轉(zhuǎn)換器在發(fā)出新的數(shù)據(jù)字之前都會(huì)給出某種類型的轉(zhuǎn)換結(jié)束(EOC)信號(hào)。處理器使用上述信號(hào)的方式有兩種:一是輪詢(poll);二是用其作為中斷。
使用EOC信號(hào)作為中斷具有一定優(yōu)勢(shì),因?yàn)镃PU不會(huì)被輪詢標(biāo)記占用,因此在獲得數(shù)據(jù)前不會(huì)打斷CPU的正常工作。不過(guò),如果轉(zhuǎn)換器等待處理特定的協(xié)議來(lái)讀取數(shù)據(jù),比如轉(zhuǎn)換器發(fā)出轉(zhuǎn)換結(jié)束信號(hào)后又需要讀取命令來(lái)檢索數(shù)據(jù),每個(gè)讀取命令都會(huì)觸發(fā)新的中斷,那么就會(huì)造成過(guò)多的開(kāi)銷,得不償失。在這種情況下,輪詢的方法就具有明顯的優(yōu)勢(shì)了。
如果中斷時(shí)延非常重要的話,那么使用輪詢方式就更具優(yōu)勢(shì)。輪詢可確保信號(hào)響應(yīng)速度更快,這比進(jìn)入中斷服務(wù)例程要快得多。如果數(shù)據(jù)檢索有短暫時(shí)隙(narrowtimeslot),那么采用輪詢方式也是有利的。
確定傳輸模式
下一步就是實(shí)際收集數(shù)據(jù)的工作了。收集數(shù)據(jù)有兩種方法,各有千秋。第一種方法是采用DSP的DMA(直接存儲(chǔ)器存?。┛刂破鳎墒箓鬏斉c轉(zhuǎn)換器的轉(zhuǎn)換結(jié)束標(biāo)記同步,并使CPU不用承擔(dān)傳輸工作,因?yàn)閿?shù)據(jù)陣列的填充是在后臺(tái)完成的,傳輸完成后再通知CPU。
不過(guò),這種方法只有在進(jìn)行直接傳輸?shù)那闆r下才有效。如果數(shù)據(jù)轉(zhuǎn)換器在檢索數(shù)據(jù)時(shí)需要某些復(fù)雜的機(jī)制,那么DMA就不太有效了。
在這種情況下,應(yīng)讓CPU參與傳輸工作。盡管服從特殊的協(xié)議相當(dāng)簡(jiǎn)單,但必須使用大量的CPU資源來(lái)收集數(shù)據(jù)。如果中斷率非常高,那么CPU可能很難有時(shí)間再去執(zhí)行數(shù)據(jù)收集之后的算法了。
是否采用數(shù)據(jù)猝發(fā)
假設(shè)數(shù)據(jù)轉(zhuǎn)換器連接至DSP的并行總線,該并行總線在存儲(chǔ)器存?。ㄗx取正在執(zhí)行的數(shù)據(jù))和I/O存取(讀取采樣)之間需要幾個(gè)周期的轉(zhuǎn)換,而且數(shù)據(jù)轉(zhuǎn)換速率非常高,因此,轉(zhuǎn)換常常是必需的,幾乎每次采樣讀取都要進(jìn)行轉(zhuǎn)換。
如果一步就能讀取多個(gè)數(shù)據(jù)字,且不用每次都進(jìn)行數(shù)據(jù)總線交換,肯定是非常有價(jià)值的。在這種情況下,不妨考慮在數(shù)據(jù)轉(zhuǎn)換器與DSP之間采用FIFO。一旦FIFO達(dá)到一定的水平即中斷DSP,達(dá)到一定數(shù)量的數(shù)據(jù)字一步完成傳輸,這就大大降低了總線轉(zhuǎn)換的開(kāi)銷。
針對(duì)變量選擇正確的數(shù)據(jù)類型
數(shù)據(jù)轉(zhuǎn)換器針對(duì)所用的數(shù)據(jù)采用不同的格式。有的使用標(biāo)準(zhǔn)二進(jìn)制(即無(wú)符號(hào)二進(jìn)制)數(shù)據(jù)類型,有的則采用帶符號(hào)的二進(jìn)制數(shù)據(jù)類型,這就是問(wèn)題的復(fù)雜所在。如果有一個(gè)12位數(shù)據(jù)轉(zhuǎn)換器,那么在帶符號(hào)二進(jìn)制數(shù)據(jù)情況下,如何使用將是一個(gè)問(wèn)題。符號(hào)位占據(jù)最重要的位置,即第“11”位(這里的起始位是第“0”位)。如果將此數(shù)據(jù)字賦予“C”變量,寬度為“16”位,那么假定“C”符號(hào)位為第“15”位。如果從轉(zhuǎn)換器讀取的數(shù)字為負(fù),那么DSP就不能識(shí)別其為負(fù)值,因?yàn)榉?hào)位的位置錯(cuò)誤。如何解決這一問(wèn)題呢?第一種方法是在讀取數(shù)據(jù)時(shí)進(jìn)
行數(shù)據(jù)位移。不過(guò),這只有在CPU讀取數(shù)據(jù)時(shí)才有可能,因?yàn)镈MA控制器不可能在傳輸時(shí)進(jìn)行數(shù)據(jù)位移。另一種方法是在數(shù)據(jù)塊完全傳輸后在環(huán)路中將數(shù)據(jù)位移至正確的位置。不過(guò)這必須使用CPU,并要求額外的MIPS。
如果改變連接后轉(zhuǎn)換器的第“11”位剛好連接至DSP數(shù)據(jù)總線的第“15”位,那么符號(hào)位從首位算起剛好位于正確的位置,這就能實(shí)現(xiàn)基于DMA的傳輸,而且也不用再進(jìn)行數(shù)據(jù)位移。
確保處理的是正確數(shù)據(jù)
現(xiàn)在,數(shù)據(jù)已經(jīng)進(jìn)入系統(tǒng),數(shù)據(jù)字存儲(chǔ)在陣列中,數(shù)據(jù)大小也合適,于是開(kāi)始處理數(shù)據(jù),但沒(méi)有獲得預(yù)期的結(jié)果,這時(shí)需要思考到底出了什么問(wèn)題。首先應(yīng)該檢查DSP的高速緩存,DMA傳輸數(shù)據(jù)進(jìn)入存儲(chǔ)器時(shí)是否啟用高速緩存,在這種情況下,高速緩存很可能保留拷貝的舊數(shù)據(jù),并在算法工作中使用它們。如果發(fā)生了此類問(wèn)題,就必需注意高速緩存相關(guān)性與轉(zhuǎn)儲(chǔ)清除問(wèn)題,或者是存儲(chǔ)新數(shù)據(jù)的高速緩存區(qū)失效。這樣就能確保CPU處理的數(shù)據(jù)是傳輸完成后的最新數(shù)據(jù)。
如果用C語(yǔ)言編程應(yīng)分配易失關(guān)鍵字
在調(diào)試嵌入式系統(tǒng)時(shí),采用變量查詢外設(shè)的狀態(tài)后,發(fā)現(xiàn)CPU所用變量值是錯(cuò)誤的,這時(shí)就要思考到底哪里出了問(wèn)題。先看看下面這個(gè)結(jié)構(gòu):
unsignedint*pControl=(unsignedint*)0x00COFFEE;file://錯(cuò)誤
while(*pControl==0);file://等待一個(gè)外部事件
這里的*pControl指向一個(gè)外設(shè)。
通過(guò)while循環(huán),期望EOC能從“0”轉(zhuǎn)換為“1”。但在大多數(shù)情況下,恐怕得一直等下去,因?yàn)榫幾g器認(rèn)為它已經(jīng)完全控制了變量及與其相關(guān)的存儲(chǔ)器,只加載*pControl指向的存儲(chǔ)器位置的內(nèi)容一次,就會(huì)對(duì)其進(jìn)行循環(huán)測(cè)試。但問(wèn)題在于,由于不會(huì)重新讀取存儲(chǔ)器內(nèi)容,也就不能結(jié)束循環(huán)。
解決這一問(wèn)題的方法就是將*pControl的聲明作一下修改,通知編譯器其指向的存儲(chǔ)器位置可由外部事件修改,而每次使用該變量時(shí)都必須重新載入,如下所示:
volatileunsignedint*pControl=(unsignedint*)0x00COFFEE;file://正確
while(*pControl==0);file://等待一個(gè)外部事件
確保采樣等距
如果要在頻域中處理采樣數(shù)據(jù),那么還要提到一點(diǎn):不是所有轉(zhuǎn)換器都有啟動(dòng)新轉(zhuǎn)換的自身時(shí)基。在這種情況下,應(yīng)采用外部時(shí)基或DSP定時(shí)針(timerpin)。
特別推薦
- 授權(quán)代理商貿(mào)澤電子供應(yīng)Same Sky多樣化電子元器件
- 使用合適的窗口電壓監(jiān)控器優(yōu)化系統(tǒng)設(shè)計(jì)
- ADI電機(jī)運(yùn)動(dòng)控制解決方案 驅(qū)動(dòng)智能運(yùn)動(dòng)新時(shí)代
- 倍福推出采用 TwinSAFE SC 技術(shù)的 EtherCAT 端子模塊 EL3453-0090
- TDK推出新的X系列環(huán)保型SMD壓敏電阻
- Vishay 推出新款采用0102、0204和 0207封裝的精密薄膜MELF電阻
- Microchip推出新款交鑰匙電容式觸摸控制器產(chǎn)品 MTCH2120
技術(shù)文章更多>>
- 準(zhǔn) Z 源逆變器的設(shè)計(jì)
- 第12講:三菱電機(jī)高壓SiC芯片技術(shù)
- 一文看懂電壓轉(zhuǎn)換的級(jí)聯(lián)和混合概念
- 意法半導(dǎo)體推出首款超低功耗生物傳感器,成為眾多新型應(yīng)用的核心所在
- 是否存在有關(guān) PCB 走線電感的經(jīng)驗(yàn)法則?
技術(shù)白皮書(shū)下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門(mén)搜索
單向可控硅
刀開(kāi)關(guān)
等離子顯示屏
低頻電感
低通濾波器
低音炮電路
滌綸電容
點(diǎn)膠設(shè)備
電池
電池管理系統(tǒng)
電磁蜂鳴器
電磁兼容
電磁爐危害
電動(dòng)車
電動(dòng)工具
電動(dòng)汽車
電感
電工電路
電機(jī)控制
電解電容
電纜連接器
電力電子
電力繼電器
電力線通信
電流保險(xiǎn)絲
電流表
電流傳感器
電流互感器
電路保護(hù)
電路圖