以文本方式查看主題 - 曙海教育集團論壇 (http://www.xinguifushi.cn/bbs/index.asp) -- DSP系統(tǒng)和硬件開發(fā)討論區(qū) (http://www.xinguifushi.cn/bbs/list.asp?boardid=5) ---- DSP數(shù)字信號處理綜述 (http://www.xinguifushi.cn/bbs/dispbbs.asp?boardid=5&id=1311) |
-- 作者:wangxinxin -- 發(fā)布時間:2010-11-13 12:17:21 -- DSP數(shù)字信號處理綜述 摘 要:簡要概述了DSP與單片機的關(guān)系,然后詳細介紹了DSP應(yīng)用軟件結(jié)構(gòu),并對DSP應(yīng)用的未來趨勢——DSP和RTOS的結(jié)合進行了初步分析。 關(guān)鍵詞:DSP 實時操作系統(tǒng) 循環(huán)調(diào)度 1 DSP、MCU、MPU的關(guān)系 微控制器MCU通俗的稱呼是單片機,它與微處理器MPU是微機技術(shù)的兩大分支。MPU的發(fā)展動力是人類對無止境的海量數(shù)值運算的需求,速度越來越快。MCU的發(fā)展是為了滿足被控制對象的要求,向高可靠性、低功耗、低成本發(fā)展。一般MCU的引腳數(shù)在60以下,MCU以8位機為主、32位機為輔。有趨勢提高MCU的運算功能,將DSP集成到MCU中,比如32位的MC68356集成了Motorola的DSP56002。 微控制器MCU一直存在兩種基本結(jié)構(gòu):哈佛(Harvard)結(jié)構(gòu)和馮諾伊曼(vonMeumann)結(jié)構(gòu),還可進一步講是對應(yīng)成復(fù)雜指令集計算機CISC和精簡指令計算機RISC。馮諾伊曼結(jié)構(gòu)具有單一總線PRAM或DRAM都映射到同一地址空間,總線寬度與CPU類型匹配。哈佛結(jié)構(gòu)具有獨立的程序總線和數(shù)據(jù)總線,CISC的指令一般是微碼miccode,每條指令由CPU解碼為許多基本指令,基于CISC的微控制器一般很復(fù)雜,都采用馮諾伊曼結(jié)構(gòu),所需要的程序存儲器比RISC產(chǎn)品少。微碼在CPU產(chǎn)生而限制了CISC器件的帶寬,其指令集也比RISC器件大。 68000的MPU是準32位的MPU,內(nèi)部32位,外部總線是16位。蘋果機就是用68000系列,它的運行分成系統(tǒng)態(tài)和用戶態(tài),其設(shè)計是面向分時多任務(wù)或?qū)崟r操作系統(tǒng)的,68000的總線后來變成VME總線標準。到68020就是全32位了。 1991年IEEE1149.1即JTAG的公布滿足了IC制造商的措施需求,也給ASIC、MCU、MPU、DSP、PLD、FPGA等的用戶帶來方便。一般十萬門以上的IC都有JTAG接口,1993年IEEE1149.5對JTAG作了修正(5線接口)。IC的測試分成晶片級、IC封裝級、電路板與系統(tǒng)極,JTAG完成了前兩者的測試。適于68000系列的32位機的開發(fā)工具ICD32是一段扁平電纜,一端接IC的JTAG的5線接口,一端通過25芯頭(里面有GAL)接PC機并口。 傳統(tǒng)上,微控制器MCU與微處理器MPU是兩大分支,而DSP是MCU的一種特殊變形。但是從實質(zhì)講,MPU多半是CISC,除了DSP之外的MCU也是CISC。而DSP是RISC。所以比較時更適合DSP與MPU相比,MPU適宜于相同管理這樣的應(yīng)用中,以條件判斷為主的應(yīng)用,以軟件管理的操作系統(tǒng)為核心的產(chǎn)品,MPU的設(shè)計側(cè)重于不妨礙程序的流程,以保證操作系統(tǒng)支持功能及轉(zhuǎn)移預(yù)測功能等。而DSP側(cè)重于保證數(shù)據(jù)的順利通行,結(jié)構(gòu)盡量簡單。 2 DSP應(yīng)用的結(jié)構(gòu) DSP應(yīng)用不同于主流的嵌入式系統(tǒng)應(yīng)用,在那些應(yīng)用中,你可以依賴一個通用的多優(yōu)先級核心(Kernel)的服務(wù)。而在DSP領(lǐng)域,該核心與DSP模塊可能是兩回事,盡管核心都應(yīng)該提供CPU資源、中斷處理、通信機制等。所以,一個有豐富細節(jié)的核心和操作系統(tǒng)通常是不加以考慮的,因為它加在緊湊的DSP上實在勉強。開發(fā)者常常自已設(shè)計系統(tǒng)軟件框架,作為目標代碼的一部分一起運行。開發(fā)者甚至沒有意識到自已編寫了一個小型操作系統(tǒng)。 可見,這樣的核心/操作系統(tǒng)隨著應(yīng)用的不同是多種多樣的。也需要有各種核心,支持從簡單到復(fù)雜的應(yīng)用。至于是自已寫核心或者從別的專業(yè)公司獲得幫助,那是需要在效率、緊湊、靈活、擴展性、安全等因素進行折衷考慮的。 2.1 核心的種類 一般來說,框架從簡單到復(fù)雜分成:單任務(wù)和一個中斷服務(wù)程序(ISR)、多個互相通信的任務(wù)、多個分時循環(huán)的線程、多優(yōu)先級的結(jié)構(gòu)。 .單任務(wù)和中斷服務(wù)流程ISR(基本核心結(jié)構(gòu)) 單任務(wù)處理一個數(shù)據(jù)緩沖區(qū),數(shù)據(jù)由一個ISR從特定的硬件取得(如AD器件)。系統(tǒng)首先需要初始化,使能中斷,建立外設(shè)的正確狀態(tài)。ISR的編程則應(yīng)該保護現(xiàn)場,ISR的錯誤是調(diào)試很難檢查的。通常一次ISR控制一個數(shù)據(jù),而主任務(wù)需要一個數(shù)據(jù)緩沖區(qū)。解決辦法是雙緩沖結(jié)構(gòu)。主程序的常見流程是:等待ISR填滿緩沖區(qū);處理緩沖區(qū)數(shù)據(jù),釋放已經(jīng)處理完的緩沖區(qū)。為了保證實時性,系統(tǒng)至少是雙緩沖,因此主程序處理一個緩沖區(qū)時,ISR正在向另一個緩沖區(qū)送數(shù)。這種情況下,不需要特別的同步機制,緩沖區(qū)的滿就是同步機制,整個系統(tǒng)除了主任務(wù)外就無所事事了,主任務(wù)則占用一切DSP資源。故此模式效率非常高。 。ㄓ玫娜蝿(wù) 系統(tǒng)有一個核心,它可以管理多任務(wù),允許向系統(tǒng)列表加任務(wù)來擴展系統(tǒng),占用如何擴展則與應(yīng)用有關(guān)。首先以一個自動應(yīng)答機來說明這種擴展,ISR是一個,而多個任務(wù)串行執(zhí)行:音調(diào)檢查、語音識別、話音壓縮等。第一個任務(wù)控制CPU的緩沖區(qū),執(zhí)行完后主動徹底放棄控制,移交下一個任務(wù)。這種安排使得任務(wù)切換開銷很小,因為你完全知道切換時,哪些狀態(tài)需要保存而哪些不需要。這種方式的毛病就是任何一個任務(wù)失控,整個系統(tǒng)就崩潰了,因為核心沒有辦法取得對CPU的控制。 .多個執(zhí)行線程以循環(huán)(round-robin)模式切換 對前一種結(jié)構(gòu)的改進是使用一種更安全的任務(wù)安排,使各個任務(wù)的依賴關(guān)系弱化。這需要一個基于時間段的任務(wù)切換器,在當前任務(wù)用完了規(guī)定時間片后將控制權(quán)移交下一個任務(wù)。在循環(huán)結(jié)構(gòu)中,各個任務(wù)是平等的機會。這樣CPU不會在為一個壞的任務(wù)而癱瘓,當然,安全的代價是你無法準確知道任務(wù)切換在什么時候發(fā)生,于是某個線程進入時的現(xiàn)場保護必須保護該線程要使用的所有寄存器,并且在退出線程時全部恢復(fù)。 .循環(huán)(round-robin)線程與協(xié)作序列的組合 當處理一個較復(fù)雜但每個通路的處理是相同的時候,如語音信箱,無線基站,PXB等?梢詫⒍鄠通路按照通用的多任務(wù)方式處理,而每個任務(wù)內(nèi)以循環(huán)線程組成,每個任務(wù)是安全的,也就保證了整個系統(tǒng)的安全的。 .通用的解決:多優(yōu)先組結(jié)構(gòu) 這是靈活性最強的方式,廣泛應(yīng)用于浮點和定點DSP系統(tǒng)。多優(yōu)先級可以認為是循環(huán)方式的一種增強版,在資源可用時,高優(yōu)先級的線程會被執(zhí)行。多優(yōu)先級核心應(yīng)該小心使用,因為很難確定實時執(zhí)行序列,特別是如果還允許動態(tài)改變優(yōu)先級的話,調(diào)試更加困難。而且核心本身占用的CPU資源對定點DSP而言是相當大的開銷。 除了這些缺點,本結(jié)構(gòu)是某些應(yīng)用的理想選擇。比如,系統(tǒng)中的任務(wù)有的是時間苛刻的(高優(yōu)先級),有些是可以后臺運行的(低優(yōu)先級),比如在蜂房電話中,DSP要迅速及時處理帶內(nèi)信號信令,對用戶的按鍵則可以較慢地響應(yīng)。隨著DSP和MCU的功能上進一步集成,這種應(yīng)用會越來越多。 2.2 其他性能綜述 .現(xiàn)場保護 任務(wù)切換中的現(xiàn)場保護(上下文保護)是影響性能的一個重要因素,它與中斷響應(yīng)時延是矛盾的,在任務(wù)列表被訪問和管理期間,中斷通常需要禁止。所以,任務(wù)機制越復(fù)雜,中斷需要的時延越大。注意,在DSP領(lǐng)域,實時中斷常處理幾十kHz的信號,對中斷響應(yīng)需要的時延是很敏感的。 .實時與非實時 對于基于核心的系統(tǒng)進行調(diào)試,將系統(tǒng)作為一個整體來調(diào)試需要滿足兩個基本要求:需要系統(tǒng)全速運行時可以觀察和管理系統(tǒng);需要知道每次觀察時影響的上下文。為達到此要求系統(tǒng)必須增加額外開銷。 DSP設(shè)計者并非處處需要實時調(diào)試工具,模塊的很多部分可以單步調(diào)試。但是,大部分問題(bug)都是整個系統(tǒng)全速運行時暴露出來的。Go-DSP的調(diào)試工具Code Composer的優(yōu)越是在系統(tǒng)全速運行時仍然可以觀察和修改狀態(tài)。實時調(diào)試是需要代價的,需要有DebugAgent伴隨應(yīng)用代碼,占用了CPU部分資源,當然在最終產(chǎn)品上,DebugAgent是完全去掉的。 3 實時操作系統(tǒng)RTOS與DSP應(yīng)用的結(jié)合 3.1 用于嵌入式微處理器的傳統(tǒng)的實時多任務(wù)操作系統(tǒng) 目前的趨勢是一個微處理器MCU從單一任務(wù)結(jié)構(gòu)變成多任務(wù)的結(jié)構(gòu),初期軟件設(shè)計是在應(yīng)用中增加一個任務(wù)調(diào)用循環(huán)作為主程序,隨著軟件規(guī)模上升和對實時性要求的提高,RTOS作為一種軟件開發(fā)平臺,成為嵌入式系統(tǒng)領(lǐng)域的主流。 RTOS是一段MCU啟動后首先執(zhí)行的背景程序,貫穿系統(tǒng)運行的始終。RTOS的引入會增加系統(tǒng)的代碼存儲器占用和運行時間。RTOS主要的性能指標是存儲器占用、最小任務(wù)切換時間、最大中斷延時。這三個指標與RTOS自身的設(shè)計、微處理器的設(shè)計、C語言編譯器的性能有關(guān)。 3.2 實時操作系統(tǒng)RTOS與DSP結(jié)合 DSP軟件開發(fā)越來越復(fù)雜,開發(fā)者會發(fā)現(xiàn)自已在兩個矛盾的方向努力,一方面,設(shè)計者必須對底層代碼優(yōu)化以滿足實時應(yīng)用,同時由于系統(tǒng)越來越復(fù)雜,需要高層次的設(shè)計手段,包括使用庫和第三方軟件包。 對DSP應(yīng)用提供RTOS支持,是DSP的性能和功能日益增加的必然結(jié)果。DSP正在從高速數(shù)學(xué)引擎轉(zhuǎn)變?yōu)榘髁骺刂破骶哂械奶匦缘男酒,因此需要DSP設(shè)計人員集中精力解決應(yīng)用問題,而不是重復(fù)實施系統(tǒng)級功能。 DSP系統(tǒng)一般是兩個極端,簡單的單片DSP設(shè)計,用于Modem或峰房電話等。另一種是高性能的多處理器DSP系統(tǒng),用于大批輸入流的實時處理。對于高檔多處理器DSP系統(tǒng)設(shè)計,有四個可能影響性能的主要因素:通過系統(tǒng)的數(shù)據(jù)流(流水線或星形);主系統(tǒng)總線(VME或PCI總線);RTOS的性能,多DSP系統(tǒng)中,RTOS在每個DSP上運行于嵌入式模式,RTOS提供所需要的數(shù)據(jù)流和處理性能,同時又允許主處理器繼續(xù)在其固有模式(Win95/NT/Solaris)中操縱整個系統(tǒng);處理來自A/D陣列的輸入流的接口設(shè)計,最好方法是使A/D轉(zhuǎn)換子系統(tǒng)與系統(tǒng)其余部分有效隔離。 選擇RTOS的關(guān)鍵考慮因素: 。WC其可靠性足以應(yīng)付DSP負載。 。С峙cNT或Unix主系統(tǒng)的互操作性。 。度胧讲僮骱诵囊銐蛐,適應(yīng)于有限的DSP存儲空間。 。忻嫦駾SP的高級指令集,便于迅速編程。 。匾獣r可以對低級程序碼手動優(yōu)化。 嵌入式RTOS的主要功能是為DSP之間的實時協(xié)調(diào)與通信提供一個標準化的環(huán)境,包括中斷處理和存儲區(qū)分配等,以及和主機OS握手的所有功能。RTOS運行于DSP之上,所以必須很小,還應(yīng)該能進行分布操作和DSP任務(wù)的并行編程。RTOS的結(jié)構(gòu)應(yīng)該使程序員很容易把單DSP任務(wù)變成分裂模式,即能運行于多個DSP。RTOS應(yīng)該能支持順暢地把任務(wù)分攤。面向DSP的嵌入式RTOS的主要功能是:多任務(wù);動態(tài)進程;同步消息傳遞;信號機;時鐘管理;等等?傊,目標是最小的運行開銷和最大的硬件控制能力。 作為Eonic公司的Virtuoso,可以用于浮點和定點DSP。用于TI C4x和ADSP1060的版本的差別是有特殊的通信端口,便于多處理器系統(tǒng)的硬件開發(fā)。通過提供透明的多處理,使軟件開發(fā)也容易。Virtuoso對于單DSP的應(yīng)用也提供了很多優(yōu)越性,從一開始開發(fā),你就有一個完全的多任務(wù)環(huán)境,這就意味著你可以將應(yīng)用分成幾個小的任務(wù),更便于編程。有一套完整的工具用于任務(wù)間通信,任務(wù)同步,管理存儲區(qū)和定時器,中斷管理。提供了一個ISR1層支持嵌套中斷。而TI缺省的ISR0層的中斷服務(wù)中是不允許被中斷的。如果系統(tǒng)中有突發(fā)性的中斷發(fā)生,就有可能丟中斷。Virtuoso的ISR1層提供了可嵌套的中斷機制,且響應(yīng)速度與ISR0相當。多任務(wù)機制使設(shè)計人員能夠充分發(fā)揮DSP的能力,因為可以使DSP是100%的忙碌,否則DSP可能為了等待某個事件發(fā)生而處于空閑。特別是采用TMS320C6201,不使用RTOS是無法充分發(fā)揮其性能的。Virtuoso的另一個優(yōu)點是可移植性,編寫的C代碼可以使用到Virtuoso支持的任何DSP。 用于DSP的RTOS對加快開發(fā)進度、提供高級功能調(diào)用和標準的I/O庫是非常有用的。許多RTOS支持多任務(wù)并包含DSP庫,使用它有助于可移植性和可維護性。另一方面,RTOS要占用處理器的開銷,耗費本來可用于信號處理的DSP周期。如果是對于單處理器,支持多任務(wù)的開銷可能會很可觀。另外,成本也是要考慮的因素。 |