假設(shè)您接到一項(xiàng)工作任務(wù),,設(shè)計(jì)一套由DSP與DAC與ADC等模擬器件組成的信號(hào)處理系統(tǒng),。如果您考慮到幾個(gè)重要因素,工作就會(huì)非常簡單,。下面就來談?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ù)采樣的速率,。舉例來說,,音頻系統(tǒng)可能是一部CD播放機(jī),采樣率為96kHz,,也可能是電話語音系統(tǒng),,采樣率僅為8kHz。當(dāng)然,,也可能是其他系統(tǒng),,如ADSL質(zhì)量測(cè)量應(yīng)用,采樣速率高達(dá)10MSPS,,或者是稱重應(yīng)用,,每秒只要16次采樣就足夠了,但要求具備較高的分辨率(如24位),。了解此方面信息,將有助于開展下一步工作,,即選擇正確的DSP接口,。
選擇正確的DSP接口
了解了應(yīng)用及速率要求后,就對(duì)采用哪種DSP接口有了一定的認(rèn)識(shí),。大多數(shù)音頻設(shè)備均使用特定類型的串行接口,,不過高速應(yīng)用則要求并行接口。當(dāng)采樣速率為10MSPS、分辨率 為12位時(shí),,如果采用串行接口,,其端口的速率要達(dá)到120MHz才能從轉(zhuǎn)換器向DSP發(fā)送數(shù)據(jù)。這一要求大大超過了大多數(shù)50MHz串行端口的處理能力,。若使用并行接口,,則總線上信號(hào)交換的頻率為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)信號(hào),。處理器使用上述信號(hào)的方式有兩種:一是輪詢(poll);二是用其作為中斷,。
使用EOC信號(hào)作為中斷具有一定優(yōu)勢(shì),,因?yàn)椋茫校詹粫?huì)被輪詢標(biāo)記占用,因此在獲得數(shù)據(jù)前不會(huì)打斷CPU的正常工作,。不過,,如果轉(zhuǎn)換器等待處理特定的協(xié)議來讀取數(shù)據(jù),比如轉(zhuǎn)換器發(fā)出轉(zhuǎn)換結(jié)束信號(hào)后又需要讀取命令來檢索數(shù)據(jù),,每個(gè)讀取命令都會(huì)觸發(fā)新的中斷,,那么就會(huì)造成過多的開銷,得不償失,。在這種情況下,,輪詢的方法就具有明顯的優(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ǔ)器存取)控制器,,可使傳輸與轉(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ǔ)器存?。ㄗ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)換的開銷,。