把工作簡單化,DSP與數據轉換器協同工作需考慮這些因素
發布時間:2016-12-14 責任編輯:susan
【導讀】假設你接到一項工作任務,設計一套由DSP與DAC與ADC等模擬器件組成的信號處理係統。如果你考慮到幾個重要因素,工作就會非常簡單。下麵就來談談設計工作中應該考慮的這幾個因素。

詳細了解應用類型
第一步需要了解應用類型。對於控製型應用,既需要應對突發的大量數據處理情形,也要考慮間歇的閑置狀態;而對於音頻應用,則需要處理連續數據流的能力。了解應用的具體需求將有助於選擇適當的接口和正確的數據讀取方法。
評估係統速率
第二步需要了解數據采樣的速率。舉例來說,音頻係統可能是一部CD播放機,采樣率為96kHz,也可能是電話語音係統,采樣率僅為8kHz。當然,也可能是其他係統,如ADSL質量測量應用,采樣速率高達10MSPS,或者是稱重應用,每秒隻要16次采樣就足夠了,但要求具備較高的分辨率(如24位)。了解此方麵信息,將有助於開展下一步工作,即選擇正確的DSP接口。
選擇正確的DSP接口
了解了應用及速率要求後,就對采用哪種DSP接口有了一定的認識。大多數音頻設備均使用特定類型的串行接口,不過高速應用則要求並行接口。當采樣速率為10MSPS、分辨率 為12位時,如果采用串行接口,其端口的速率要達到120MHz才能從轉換器向DSP發送數據。這一要求大大超過了大多數50MHz串行端口的處理能力。若使用並行接口,則總線上信號交換的頻率為10MHz,速率顯著降低,因此處理起來非常簡單。
在zai選xuan擇ze接jie口kou時shi,還hai要yao考kao慮lv的de另ling一yi問wen題ti就jiu是shi,並bing行xing總zong線xian能neng否fou滿man足zu所suo需xu的de數shu據ju速su率lv要yao求qiu,或huo者zhe說shuo並bing行xing總zong線xian芯xin片pian在zai滿man足zu程cheng序xu與yu係xi數shu要yao求qiu後hou是shi否fou已yi經jing達da到dao了le滿man負fu荷he。如ru果guo是shi的de話hua,不bu妨fang考kao慮lv在zaiDSP與轉換器之間插入FIFO。
確定握手模式
一旦選擇了DSP接口,下一步就要考慮轉換器與DSP之間的握手模式(handshakemode)。大多數轉換器在發出新的數據字之前都會給出某種類型的轉換結束(EOC)信號。處理器使用上述信號的方式有兩種:一是輪詢(poll);二是用其作為中斷。
使用EOC信號作為中斷具有一定優勢,因為CPU不會被輪詢標記占用,因此在獲得數據前不會打斷CPU的de正zheng常chang工gong作zuo。不bu過guo,如ru果guo轉zhuan換huan器qi等deng待dai處chu理li特te定ding的de協xie議yi來lai讀du取qu數shu據ju,比bi如ru轉zhuan換huan器qi發fa出chu轉zhuan換huan結jie束shu信xin號hao後hou又you需xu要yao讀du取qu命ming令ling來lai檢jian索suo數shu據ju,每mei個ge讀du取qu命ming令ling都dou會hui觸chu發fa新xin的de中zhong斷duan,那na麼me就jiu會hui造zao成cheng過guo多duo的de開kai銷xiao,得de不bu償chang失shi。在zai這zhe種zhong情qing況kuang下xia,輪lun詢xun的de方fang法fa就jiu具ju有you明ming顯xian的de優you勢shi了le。
如ru果guo中zhong斷duan時shi延yan非fei常chang重zhong要yao的de話hua,那na麼me使shi用yong輪lun詢xun方fang式shi就jiu更geng具ju優you勢shi。輪lun詢xun可ke確que保bao信xin號hao響xiang應ying速su度du更geng快kuai,這zhe比bi進jin入ru中zhong斷duan服fu務wu例li程cheng要yao快kuai得de多duo。如ru果guo數shu據ju檢jian索suo有you短duan暫zan時shi隙xi(narrowtimeslot),那麼采用輪詢方式也是有利的。
確定傳輸模式
下一步就是實際收集數據的工作了。收集數據有兩種方法,各有千秋。第一種方法是采用DSP的DMA(直接存儲器存取)控製器,可使傳輸與轉換器的轉換結束標記同步,並使CPU不用承擔傳輸工作,因為數據陣列的填充是在後台完成的,傳輸完成後再通知CPU。
不過,這種方法隻有在進行直接傳輸的情況下才有效。如果數據轉換器在檢索數據時需要某些複雜的機製,那麼DMA就不太有效了。
在這種情況下,應讓CPU參與傳輸工作。盡管服從特殊的協議相當簡單,但必須使用大量的CPU資源來收集數據。如果中斷率非常高,那麼CPU可能很難有時間再去執行數據收集之後的算法了。
是否采用數據猝發
假設數據轉換器連接至DSP的並行總線,該並行總線在存儲器存取(讀取正在執行的數據)和I/O存取(讀取采樣)之間需要幾個周期的轉換,而且數據轉換速率非常高,因此,轉換常常是必需的,幾乎每次采樣讀取都要進行轉換。
如果一步就能讀取多個數據字,且不用每次都進行數據總線交換,肯定是非常有價值的。在這種情況下,不妨考慮在數據轉換器與DSP之間采用FIFO。一旦FIFO達到一定的水平即中斷DSP,達到一定數量的數據字一步完成傳輸,這就大大降低了總線轉換的開銷。
針對變量選擇正確的數據類型
數據轉換器針對所用的數據采用不同的格式。有的使用標準二進製(即無符號二進製)數據類型,有的則采用帶符號的二進製數據類型,這就是問題的複雜所在。如果有一個12位數據轉換器,那麼在帶符號二進製數據情況下,如何使用將是一個問題。符號位占據最重要的位置,即第“11”位(這裏的起始位是第“0”位)。如果將此數據字賦予“C”變量,寬度為“16”位,那麼假定“C”符號位為第“15”位。如果從轉換器讀取的數字為負,那麼DSP就不能識別其為負值,因為符號位的位置錯誤。如何解決這一問題呢?第一種方法是在讀取數據時進
行數據位移。不過,這隻有在CPU讀取數據時才有可能,因為DMA控製器不可能在傳輸時進行數據位移。另一種方法是在數據塊完全傳輸後在環路中將數據位移至正確的位置。不過這必須使用CPU,並要求額外的MIPS。
如果改變連接後轉換器的第“11”位剛好連接至DSP數據總線的第“15”位,那麼符號位從首位算起剛好位於正確的位置,這就能實現基於DMA的傳輸,而且也不用再進行數據位移。
確保處理的是正確數據
現xian在zai,數shu據ju已yi經jing進jin入ru係xi統tong,數shu據ju字zi存cun儲chu在zai陣zhen列lie中zhong,數shu據ju大da小xiao也ye合he適shi,於yu是shi開kai始shi處chu理li數shu據ju,但dan沒mei有you獲huo得de預yu期qi的de結jie果guo,這zhe時shi需xu要yao思si考kao到dao底di出chu了le什shen麼me問wen題ti。首shou先xian應ying該gai檢jian查zhaDSP的高速緩存,DMA傳(chuan)輸(shu)數(shu)據(ju)進(jin)入(ru)存(cun)儲(chu)器(qi)時(shi)是(shi)否(fou)啟(qi)用(yong)高(gao)速(su)緩(huan)存(cun),在(zai)這(zhe)種(zhong)情(qing)況(kuang)下(xia),高(gao)速(su)緩(huan)存(cun)很(hen)可(ke)能(neng)保(bao)留(liu)拷(kao)貝(bei)的(de)舊(jiu)數(shu)據(ju),並(bing)在(zai)算(suan)法(fa)工(gong)作(zuo)中(zhong)使(shi)用(yong)它(ta)們(men)。如(ru)果(guo)發(fa)生(sheng)了(le)此(ci)類(lei)問(wen)題(ti),就(jiu)必(bi)需(xu)注(zhu)意(yi)高(gao)速(su)緩(huan)存(cun)相(xiang)關(guan)性(xing)與(yu)轉(zhuan)儲(chu)清(qing)除(chu)問(wen)題(ti),或(huo)者(zhe)是(shi)存(cun)儲(chu)新(xin)數(shu)據(ju)的(de)高(gao)速(su)緩(huan)存(cun)區(qu)失(shi)效(xiao)。這(zhe)樣(yang)就(jiu)能(neng)確(que)保(bao)CPU處理的數據是傳輸完成後的最新數據。
如果用C語言編程應分配易失關鍵字
在調試嵌入式係統時,采用變量查詢外設的狀態後,發現CPU所用變量值是錯誤的,這時就要思考到底哪裏出了問題。先看看下麵這個結構:
unsignedint*pControl=(unsignedint*)0x00COFFEE;file://錯誤
while(*pControl==0);file://等待一個外部事件
這裏的*pControl指向一個外設。
通過while循環,期望EOC能從“0”轉換為“1”。但在大多數情況下,恐怕得一直等下去,因為編譯器認為它已經完全控製了變量及與其相關的存儲器,隻加載*pControl指向的存儲器位置的內容一次,就會對其進行循環測試。但問題在於,由於不會重新讀取存儲器內容,也就不能結束循環。
解決這一問題的方法就是將*pControl的聲明作一下修改,通知編譯器其指向的存儲器位置可由外部事件修改,而每次使用該變量時都必須重新載入,如下所示:
volatileunsignedint*pControl=(unsignedint*)0x00COFFEE;file://正確
while(*pControl==0);file://等待一個外部事件
確保采樣等距
如果要在頻域中處理采樣數據,那麼還要提到一點:不是所有轉換器都有啟動新轉換的自身時基。在這種情況下,應采用外部時基或DSP定時針(timerpin)。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 三星上演罕見對峙:工會集會討薪,股東隔街抗議
- 摩爾線程實現DeepSeek-V4“Day-0”支持,國產GPU適配再提速
- 築牢安全防線:智能駕駛邁向規模化應用的關鍵挑戰與破局之道
- GPT-Image 2:99%文字準確率,AI生圖告別“鬼畫符”
- 機器人馬拉鬆的勝負手:藏在主板角落裏的“時鍾戰爭”
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
NFC
NFC芯片
NOR
ntc熱敏電阻
OGS
OLED
OLED麵板
OmniVision
Omron
OnSemi
PI
PLC
Premier Farnell
Recom
RF
RF/微波IC
RFID
rfid
RF連接器
RF模塊
RS
Rubycon
SATA連接器
SD連接器
SII
SIM卡連接器
SMT設備
SMU
SOC
SPANSION

