<abbr id="kc8ii"><menu id="kc8ii"></menu></abbr>
  • <input id="kc8ii"><tbody id="kc8ii"></tbody></input><table id="kc8ii"><source id="kc8ii"></source></table><kbd id="kc8ii"></kbd>
    <center id="kc8ii"><table id="kc8ii"></table></center>
  • <input id="kc8ii"></input>
    <abbr id="kc8ii"></abbr>
  • <abbr id="kc8ii"></abbr>
  • <center id="kc8ii"><table id="kc8ii"></table></center>
    <abbr id="kc8ii"></abbr>
    你的位置:首頁 > RF/微波 > 正文

    把工作簡單化,DSP與數(shù)據(jù)轉(zhuǎn)換器協(xié)同工作需考慮這些因素

    發(fā)布時(shí)間:2016-12-14 責(zé)任編輯:susan

    【導(dǎo)讀】假設(shè)你接到一項(xiàng)工作任務(wù),設(shè)計(jì)一套由DSP與DAC與ADC等模擬器件組成的信號處理系統(tǒng)。如果你考慮到幾個(gè)重要因素,工作就會(huì)非常簡單。下面就來談?wù)勗O(shè)計(jì)工作中應(yīng)該考慮的這幾個(gè)因素。


     
    詳細(xì)了解應(yīng)用類型
      
    第一步需要了解應(yīng)用類型。對于控制型應(yīng)用,既需要應(yīng)對突發(fā)的大量數(shù)據(jù)處理情形,也要考慮間歇的閑置狀態(tài);而對于音頻應(yīng)用,則需要處理連續(xù)數(shù)據(jù)流的能力。了解應(yīng)用的具體需求將有助于選擇適當(dāng)?shù)慕涌诤驼_的數(shù)據(jù)讀取方法。
      
    評估系統(tǒng)速率
      
    第二步需要了解數(shù)據(jù)采樣的速率。舉例來說,音頻系統(tǒng)可能是一部CD播放機(jī),采樣率為96kHz,也可能是電話語音系統(tǒng),采樣率僅為8kHz。當(dāng)然,也可能是其他系統(tǒng),如ADSL質(zhì)量測量應(yīng)用,采樣速率高達(dá)10MSPS,或者是稱重應(yīng)用,每秒只要16次采樣就足夠了,但要求具備較高的分辨率(如24位)。了解此方面信息,將有助于開展下一步工作,即選擇正確的DSP接口。
      
    選擇正確的DSP接口
      
    了解了應(yīng)用及速率要求后,就對采用哪種DSP接口有了一定的認(rèn)識(shí)。大多數(shù)音頻設(shè)備均使用特定類型的串行接口,不過高速應(yīng)用則要求并行接口。當(dāng)采樣速率為10MSPS、分辨率 為12位時(shí),如果采用串行接口,其端口的速率要達(dá)到120MHz才能從轉(zhuǎn)換器向DSP發(fā)送數(shù)據(jù)。這一要求大大超過了大多數(shù)50MHz串行端口的處理能力。若使用并行接口,則總線上信號交換的頻率為10MHz,速率顯著降低,因此處理起來非常簡單。
      
    在選擇接口時(shí),還要考慮的另一問題就是,并行總線能否滿足所需的數(shù)據(jù)速率要求,或者說并行總線芯片在滿足程序與系數(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)信號。處理器使用上述信號的方式有兩種:一是輪詢(poll);二是用其作為中斷。
      
    使用EOC信號作為中斷具有一定優(yōu)勢,因?yàn)镃PU不會(huì)被輪詢標(biāo)記占用,因此在獲得數(shù)據(jù)前不會(huì)打斷CPU的正常工作。不過,如果轉(zhuǎn)換器等待處理特定的協(xié)議來讀取數(shù)據(jù),比如轉(zhuǎn)換器發(fā)出轉(zhuǎn)換結(jié)束信號后又需要讀取命令來檢索數(shù)據(jù),每個(gè)讀取命令都會(huì)觸發(fā)新的中斷,那么就會(huì)造成過多的開銷,得不償失。在這種情況下,輪詢的方法就具有明顯的優(yōu)勢了。
      
    如果中斷時(shí)延非常重要的話,那么使用輪詢方式就更具優(yōu)勢。輪詢可確保信號響應(yīng)速度更快,這比進(jìn)入中斷服務(wù)例程要快得多。如果數(shù)據(jù)檢索有短暫時(shí)隙(narrowtimeslot),那么采用輪詢方式也是有利的。
      
    確定傳輸模式
      
    下一步就是實(shí)際收集數(shù)據(jù)的工作了。收集數(shù)據(jù)有兩種方法,各有千秋。第一種方法是采用DSP的DMA(直接存儲(chǔ)器存取)控制器,可使傳輸與轉(zhuǎn)換器的轉(zhuǎn)換結(jié)束標(biāo)記同步,并使CPU不用承擔(dān)傳輸工作,因?yàn)閿?shù)據(jù)陣列的填充是在后臺(tái)完成的,傳輸完成后再通知CPU。
      
    不過,這種方法只有在進(jìn)行直接傳輸?shù)那闆r下才有效。如果數(shù)據(jù)轉(zhuǎn)換器在檢索數(shù)據(jù)時(shí)需要某些復(fù)雜的機(jī)制,那么DMA就不太有效了。
      
    在這種情況下,應(yīng)讓CPU參與傳輸工作。盡管服從特殊的協(xié)議相當(dāng)簡單,但必須使用大量的CPU資源來收集數(shù)據(jù)。如果中斷率非常高,那么CPU可能很難有時(shí)間再去執(zhí)行數(shù)據(jù)收集之后的算法了。
     
    是否采用數(shù)據(jù)猝發(fā)
      
    假設(shè)數(shù)據(jù)轉(zhuǎn)換器連接至DSP的并行總線,該并行總線在存儲(chǔ)器存取(讀取正在執(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)換的開銷。
      
    針對變量選擇正確的數(shù)據(jù)類型
      
    數(shù)據(jù)轉(zhuǎn)換器針對所用的數(shù)據(jù)采用不同的格式。有的使用標(biāo)準(zhǔn)二進(jìn)制(即無符號二進(jìn)制)數(shù)據(jù)類型,有的則采用帶符號的二進(jìn)制數(shù)據(jù)類型,這就是問題的復(fù)雜所在。如果有一個(gè)12位數(shù)據(jù)轉(zhuǎn)換器,那么在帶符號二進(jìn)制數(shù)據(jù)情況下,如何使用將是一個(gè)問題。符號位占據(jù)最重要的位置,即第“11”位(這里的起始位是第“0”位)。如果將此數(shù)據(jù)字賦予“C”變量,寬度為“16”位,那么假定“C”符號位為第“15”位。如果從轉(zhuǎn)換器讀取的數(shù)字為負(fù),那么DSP就不能識(shí)別其為負(fù)值,因?yàn)榉栁坏奈恢缅e(cuò)誤。如何解決這一問題呢?第一種方法是在讀取數(shù)據(jù)時(shí)進(jìn)
      
    行數(shù)據(jù)位移。不過,這只有在CPU讀取數(shù)據(jù)時(shí)才有可能,因?yàn)镈MA控制器不可能在傳輸時(shí)進(jìn)行數(shù)據(jù)位移。另一種方法是在數(shù)據(jù)塊完全傳輸后在環(huán)路中將數(shù)據(jù)位移至正確的位置。不過這必須使用CPU,并要求額外的MIPS。
      
    如果改變連接后轉(zhuǎn)換器的第“11”位剛好連接至DSP數(shù)據(jù)總線的第“15”位,那么符號位從首位算起剛好位于正確的位置,這就能實(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ù)大小也合適,于是開始處理數(shù)據(jù),但沒有獲得預(yù)期的結(jié)果,這時(shí)需要思考到底出了什么問題。首先應(yīng)該檢查DSP的高速緩存,DMA傳輸數(shù)據(jù)進(jìn)入存儲(chǔ)器時(shí)是否啟用高速緩存,在這種情況下,高速緩存很可能保留拷貝的舊數(shù)據(jù),并在算法工作中使用它們。如果發(fā)生了此類問題,就必需注意高速緩存相關(guān)性與轉(zhuǎn)儲(chǔ)清除問題,或者是存儲(chǔ)新數(shù)據(jù)的高速緩存區(qū)失效。這樣就能確保CPU處理的數(shù)據(jù)是傳輸完成后的最新數(shù)據(jù)。
      
    如果用C語言編程應(yīng)分配易失關(guān)鍵字
      
    在調(diào)試嵌入式系統(tǒng)時(shí),采用變量查詢外設(shè)的狀態(tài)后,發(fā)現(xiàn)CPU所用變量值是錯(cuò)誤的,這時(shí)就要思考到底哪里出了問題。先看看下面這個(gè)結(jié)構(gòu):
      
    unsignedint*pControl=(unsignedint*)0x00COFFEE;file://錯(cuò)誤
      
    while(*pControl==0);file://等待一個(gè)外部事件
      
    這里的*pControl指向一個(gè)外設(shè)。
      
    通過while循環(huán),期望EOC能從“0”轉(zhuǎn)換為“1”。但在大多數(shù)情況下,恐怕得一直等下去,因?yàn)榫幾g器認(rèn)為它已經(jīng)完全控制了變量及與其相關(guān)的存儲(chǔ)器,只加載*pControl指向的存儲(chǔ)器位置的內(nèi)容一次,就會(huì)對其進(jìn)行循環(huán)測試。但問題在于,由于不會(huì)重新讀取存儲(chǔ)器內(nèi)容,也就不能結(jié)束循環(huá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)。

    要采購轉(zhuǎn)換器么,點(diǎn)這里了解一下價(jià)格!
    特別推薦
    技術(shù)文章更多>>
    技術(shù)白皮書下載更多>>
    熱門搜索
    ?

    關(guān)閉

    ?

    關(guān)閉

    AV无码人妻中文字幕| 精品久久久无码中文字幕| 熟妇人妻VA精品中文字幕| 无码乱肉视频免费大全合集| 久久精品无码午夜福利理论片| 亚洲成a人在线看天堂无码| 亚洲乱码中文字幕手机在线| 人妻无码第一区二区三区| 中文字幕丰满伦子无码| 无码人妻精品一区二区三区在线 | 国产精品va无码一区二区| 中文字幕成人免费视频| 激情无码人妻又粗又大中国人| 中文精品久久久久国产网址| 国产产无码乱码精品久久鸭| 久久中文字幕视频、最近更新| 99久久无码一区人妻a黑| 亚洲天堂2017无码中文| 中文字幕在线观看亚洲视频| 亚洲成AV人片天堂网无码| 久久精品aⅴ无码中文字字幕不卡| 精品人妻大屁股白浆无码| 日本无码色情三级播放| 亚洲欧美日韩中文在线制服| 毛片无码免费无码播放| 中文字幕一区日韩在线视频| 中文字幕人妻无码系列第三区 | av无码人妻一区二区三区牛牛| 在线综合亚洲中文精品| 波多野结衣AV无码| 亚洲国产精品无码久久久不卡| 最近中文字幕完整版免费高清| 四虎国产精品永久在线无码 | 波多野结衣中文字幕久久| 无码国模国产在线无码精品国产自在久国产| 麻豆国产精品无码视频| 中文字幕精品一区影音先锋| 中文 在线 日韩 亚洲 欧美| 久久无码精品一区二区三区| YY111111少妇无码理论片| 无码人妻精品一区二区在线视频|