MATLAB釋義與實(shí)現(xiàn)課件之從概念設(shè)計(jì)到芯片實(shí)現(xiàn)_第1頁(yè)
MATLAB釋義與實(shí)現(xiàn)課件之從概念設(shè)計(jì)到芯片實(shí)現(xiàn)_第2頁(yè)
MATLAB釋義與實(shí)現(xiàn)課件之從概念設(shè)計(jì)到芯片實(shí)現(xiàn)_第3頁(yè)
MATLAB釋義與實(shí)現(xiàn)課件之從概念設(shè)計(jì)到芯片實(shí)現(xiàn)_第4頁(yè)
MATLAB釋義與實(shí)現(xiàn)課件之從概念設(shè)計(jì)到芯片實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第十章 從概念設(shè)計(jì)到芯片實(shí)現(xiàn) 信號(hào)處理的完整流程10.1 嵌入式系統(tǒng)及其開發(fā)流程所謂嵌入式的系統(tǒng),是指把單片的FPGAField Programmable Gate Array現(xiàn)場(chǎng)可編程門陣列或DSPDigital Signal Processor數(shù)字信號(hào)處理器芯片植入對(duì)象的電路設(shè)備中,代替通用計(jì)算機(jī),來完成對(duì)象的通信、控制以及所有其他信號(hào)處理任務(wù)。與通用計(jì)算機(jī)相比,嵌入式芯片具有體積小、重量輕、運(yùn)行速度快、便于集成、價(jià)格低、保密、工作可靠和便于大規(guī)模生產(chǎn)等優(yōu)點(diǎn),所以適用于各種應(yīng)用系統(tǒng)。統(tǒng)計(jì)資料說明,從20世紀(jì)80年代出現(xiàn)這類系統(tǒng)以來,其所占有的市場(chǎng)迅速擴(kuò)大,目前已是通用計(jì)算機(jī)的幾十至幾百倍,

2、而且還在繼續(xù)加大??梢灶A(yù)見,今后大局部信號(hào)處理系統(tǒng)的開發(fā)人員在工作中所要面對(duì)的,將是這類系統(tǒng)。 這種單片集成電路可以把一個(gè)復(fù)雜的系統(tǒng)集成在一個(gè)芯片上,所以也稱為芯片上的系統(tǒng)System On ChipSOC。在硬件結(jié)構(gòu)方面的特點(diǎn),它采用了很多種專門技術(shù),來提高信號(hào)處理的速度。例如 大多數(shù)芯片采用定點(diǎn)式數(shù)據(jù)結(jié)構(gòu); 大量采用流水線結(jié)構(gòu),使芯片在同一個(gè)時(shí)間能執(zhí)行多條指令, 設(shè)計(jì)了一些專用的硬件計(jì)算結(jié)構(gòu),如專用的乘法累加器,專用的FFT硬件等, 創(chuàng)立多機(jī)并行的接口和功能,等等,這些都可以提高速度。隨著半導(dǎo)體集成電路的開展,時(shí)鐘頻率的提高,執(zhí)行一條乘加MAC指令的時(shí)間已降低到10ns以下。軟件方面那么是

3、采用專用的直接指揮芯片內(nèi)部存放器累加器運(yùn)算的匯編語言,它的運(yùn)算速度雖然快,但也帶來了開發(fā)上的難度。 用匯編語言寫代碼是底層設(shè)計(jì),比方算一個(gè)1024點(diǎn)FFT,用MATLAB只是一條語句,而運(yùn)行時(shí)卻要執(zhí)行15000屢次乘法和加法的代碼,一個(gè)應(yīng)用系統(tǒng)需要的代碼可能多達(dá)幾百萬、幾千萬條,無論編寫、調(diào)試、驗(yàn)證都是非常耗時(shí)而痛苦的一件事。開發(fā)周期長(zhǎng)、容易出錯(cuò)是最大的問題。許多芯片制造商一直在不斷地改進(jìn)其開發(fā)環(huán)境,已經(jīng)有了從C語言到各種芯片程序代碼的編譯軟件。MATLAB可以在概念和數(shù)學(xué)上驗(yàn)證用戶的設(shè)計(jì)思想,對(duì)于一個(gè)復(fù)雜的系統(tǒng),我們可以寫出一套MATLAB程序,驗(yàn)證它的功能。但是在把這個(gè)思想付諸實(shí)現(xiàn)時(shí),卻需

4、要另外寫一套匯編程序。寫這樣兩套程序來實(shí)現(xiàn)同一種功能,本身就是一種極大的負(fù)擔(dān)和浪費(fèi)。 自然而然會(huì)想到,是不是可以由頂層設(shè)計(jì)出發(fā),自動(dòng)地向下生成代碼,并且可以把仿真、檢驗(yàn)等功能和工具也都成套地建立起來。當(dāng)然,數(shù)學(xué)概念和代碼實(shí)現(xiàn)兩者的約束條件是不同的,比方一個(gè)濾波器的系統(tǒng)函數(shù),其實(shí)現(xiàn)的信號(hào)流圖就有很多種;選定了一個(gè)信號(hào)流圖,它所采用的系數(shù)的字長(zhǎng)和階碼又可以有多種選擇;再下去還有多種芯片可以選擇;讀者不難想象到,這是一個(gè)多級(jí)的變換鏈,需要多種不同的工具在不同層次上完成特定的任務(wù)。一個(gè)嵌入式的產(chǎn)品的開發(fā)大體要經(jīng)過研究、系統(tǒng)設(shè)計(jì)、測(cè)試與硬件實(shí)施三個(gè)大的階段,如下圖。研究階段主要是弄清產(chǎn)品的需求和技術(shù)指標(biāo)

5、,建立系統(tǒng)的數(shù)學(xué)模型,分析采用何種算法才能完成要求的指標(biāo)。這個(gè)階段根本上是概念設(shè)計(jì),可以用本書所介紹的理論和MATLAB程序及工具箱完成;第二階段是系統(tǒng)設(shè)計(jì),這個(gè)階段就要涉及系統(tǒng)的具體結(jié)構(gòu)和模塊劃分,例如系統(tǒng)中的濾波器和FFT運(yùn)算器就要涉及它的信號(hào)流圖設(shè)計(jì),并進(jìn)行仿真。仿真應(yīng)該考慮到實(shí)際設(shè)備,所以應(yīng)該是模塊式的并且是定點(diǎn)運(yùn)算的仿真。以MATLAB為根底的Simulink是這個(gè)階段的有力工具;第三階段是測(cè)試與硬件實(shí)施階段,這時(shí)主要希望把MATLAB和Simulink的程序或框圖變換為標(biāo)準(zhǔn)的C語言,如果C向各種芯片的目標(biāo)代碼的自動(dòng)轉(zhuǎn)換軟件已經(jīng)開發(fā)成功,那么從概念設(shè)計(jì)到代碼生成的變換鏈就無縫地實(shí)現(xiàn)了

6、。 本書前九章所講的內(nèi)容根本上只解決了第一階段的任務(wù),本章將對(duì)后兩階段所要完成的任務(wù)及MATLAB所能提供的支持軟件作一簡(jiǎn)要介紹。10.2節(jié)介紹系統(tǒng)建模和仿真的軟件Simulink,后幾節(jié)將介紹芯片實(shí)現(xiàn)中用到的軟件工具。使讀者有一個(gè)總體的概念。10.2.1 概述Simulink工具卻是從底層開發(fā)的一個(gè)完整的仿真環(huán)境和圖形界面。在這個(gè)環(huán)境中,用戶可以利用鼠標(biāo)或鍵盤,完成面向框圖系統(tǒng)仿真的全部過程,并且可以直觀、快速和準(zhǔn)確地到達(dá)仿真的目標(biāo)。原來的MATLAB是在文本窗口中編程,圖形窗口只是用來顯示,而Simulink那么可以用框圖方式來編程,使MATLAB的功能有了一個(gè)質(zhì)的飛躍。因此,MathWo

7、rks公司往往把Simulink與MATLAB作為并列的產(chǎn)品向用戶推薦。Simulink的優(yōu)點(diǎn)是它不給出任何新的函數(shù)。對(duì)用戶來說,MATLAB原有的函數(shù)仍然有效。因此,讀者如果有MATLAB的根底,除了要學(xué)一以下圖形界面的使用方法之外,不需要再學(xué)新的語法,馬上就會(huì)應(yīng)用。這顯示了其對(duì)用戶的友好性。 Simulink具有的功能:1用方框圖的繪制代替程序的編寫。構(gòu)成任何一個(gè)系統(tǒng)框圖有三個(gè)步驟,即選定典型模塊,相互聯(lián)接和給定模塊參數(shù)。這三步可以在同一個(gè)圖形界面上用鼠標(biāo)和鍵盤來完成。2仿真的建立和運(yùn)行是智能化的,首先,畫好了框圖并存起來,它就自動(dòng)建立起了仿真的方程,其次,在運(yùn)行時(shí)用戶可以只給出仿真精度,

8、軟件已會(huì)自動(dòng)選擇計(jì)算的程序,使得系統(tǒng)仿真具有最快的速度。3輸入輸出信號(hào)來源形式的多樣化,其輸入信號(hào)可以是各種信號(hào)發(fā)生器;也可以是來自一個(gè)設(shè)定的記錄文件,還可以來自MATLAB的工作空間workspace。輸出信號(hào)那么送往多種多樣的觀測(cè)記錄設(shè)備。 10.2.2 模塊庫(kù)及模型的建立 在命令窗中,鍵入Simulink,就可以進(jìn)入仿真模塊庫(kù),以Simulink版本7.1為例,其界面如圖10.2-1。其中列出的大類有Simulink,控制工具箱Control System Toolbox,信號(hào)處理模塊庫(kù)Signal Processing Blockset,實(shí)時(shí)工作站Real-Time Workshop,

9、等等。在Simulink大類中,又分列了信號(hào)源Sources、信宿Sinks,線性Linear、非線性Nonlinear、離散Discret、邏輯和位運(yùn)算Logic and bit operation、數(shù)學(xué)運(yùn)算Math、信號(hào)屬性Signal Attribute等各類子菜單圖標(biāo)中。翻開這些圖標(biāo),右方將顯示其中包的各種模塊,例如翻開Sinks,將看到數(shù)字顯示器,示波器,xy記錄儀,文件等各種記錄和顯示設(shè)備。 翻開信號(hào)處理模塊庫(kù)的大類,其中也有下一級(jí)庫(kù)的菜單,給出了信號(hào)處理常用的模塊,比方在其“終端中,有頻譜分析儀、向量示波器等,在“變換中有FFT,DCT等。 整個(gè)Simulink的庫(kù)中包括了成百種

10、模塊,可供調(diào)用。另外用戶還可以按自己的設(shè)計(jì)定義模塊。比方自己按8.8節(jié)的方法用fdatool設(shè)計(jì)好了濾波器,點(diǎn)擊設(shè)計(jì)界面左下方第四個(gè)按鈕Realize Model,系統(tǒng)會(huì)自動(dòng)生成該示波器的信號(hào)流圖,也就是仿真的框圖。在本例中生成的模型是三個(gè)雙二階模塊的串接,每個(gè)模塊都如下圖。用戶可以把它存成自定義模塊,需要時(shí)就可以調(diào)出來仿真。 圖10.2.2 Simulink自動(dòng)生成的雙二階環(huán)節(jié)的仿真框圖 2模型的建立要開始建立模型,可點(diǎn)擊左上方的File菜單項(xiàng)中的子菜單New,屏幕上會(huì)出現(xiàn)一個(gè)是供繪制框圖用的空白頁(yè)面,用戶只要用鼠標(biāo)點(diǎn)擊所需的庫(kù)中模塊,并將它拖到空白頁(yè)面的適當(dāng)位置,然后將這些模塊相互用有向箭

11、頭聯(lián)接即可。因?yàn)橄到y(tǒng)具有較好的智能化,所有這些工作,用鼠標(biāo)就可以用單手完成。再雙擊這些模塊,會(huì)彈出一個(gè)相應(yīng)的參數(shù)設(shè)定框,用戶可以填寫這些模塊的參數(shù),從而完成了整個(gè)仿真模型??梢园讯鄠€(gè)模塊構(gòu)成的框圖打包,構(gòu)成一個(gè)子系統(tǒng),它代表一個(gè)子系統(tǒng);也可以把多個(gè)子系統(tǒng)打包,構(gòu)成一個(gè)更大的子系統(tǒng),這種多級(jí)框圖的構(gòu)成能力,使得不管多復(fù)雜的系統(tǒng),都能夠得到可簡(jiǎn)可繁的表述。 10.2.3 仿真的運(yùn)行現(xiàn)在用MATLAB中的一個(gè)演示程序來說明,在命令窗中鍵入fxpdemo_direct_form2,屏幕上將出現(xiàn)如下圖的仿真框圖。不難看出,中間由增益、相加、遲延模塊所組成的是形式為直接型數(shù)字濾波器。它的輸入是經(jīng)過浮點(diǎn)到定

12、點(diǎn)轉(zhuǎn)換的定點(diǎn)信號(hào)xq,輸出的定點(diǎn)信號(hào)yq再經(jīng)過轉(zhuǎn)換模塊而恢復(fù)為浮點(diǎn)信號(hào)y。然后與信號(hào)源所產(chǎn)生的原始的浮點(diǎn)信號(hào)x一起送到示波器中觀測(cè)比較。這兩個(gè)變換模塊是定點(diǎn)計(jì)算模塊庫(kù)Fix-Point Blockset中的,此處其參數(shù)設(shè)定為雙精度到定點(diǎn)數(shù)1,16,10即帶1個(gè)符號(hào)位和10位小數(shù)的16位定點(diǎn)數(shù)之間的轉(zhuǎn)換。 先設(shè)定信號(hào)源參數(shù)和所有的模塊的參數(shù),此處取演示程序中原設(shè)定的值,信號(hào)是周期為200秒的方波。然后在仿真框圖菜單項(xiàng)“simulation的下拉菜單中先選擇“configuration parameters項(xiàng)設(shè)定仿真參數(shù),再選“start,系統(tǒng)就開始仿真。雙擊示波器,在其屏幕上將可以看到輸入和輸出

13、兩根曲線。同時(shí)“start項(xiàng)就變?yōu)椤皊top。如果這里的定點(diǎn)仿真不止是對(duì)信號(hào),那么系數(shù)設(shè)定中也必須同時(shí)考慮取有限字長(zhǎng)。 Simulink開始是為控制系統(tǒng)仿真而開發(fā)的,以后發(fā)現(xiàn)它不僅編程特別方便,不易出錯(cuò),而且可以解決MATLAB程序不好解決的非線性、變系數(shù)系統(tǒng)的問題。因此,許多領(lǐng)域都針對(duì)本身的特點(diǎn),開發(fā)了各種仿真模塊或模塊庫(kù)Blockset,參加到Simulink中去。除了上面用到的數(shù)字信號(hào)處理模塊庫(kù)、定點(diǎn)處理模塊庫(kù)外,還有通信Comm、控制系統(tǒng)Control、非線性控制NCD Blockset、電力系統(tǒng)Powersys Blockset、狀態(tài)流StateFlow、系統(tǒng)辨識(shí)System ID

14、Blocks、其他Simulink Extras等。有了這些庫(kù),就很容易用Simulink來解決它們的問題,而且只畫框圖,無須編程。 MATLAB與嵌入式代碼的銜接 通過包含定點(diǎn)工具的仿真,設(shè)計(jì)出的系統(tǒng)比概念設(shè)計(jì)要靠近實(shí)際一步,因?yàn)樗延?jì)算機(jī)的二進(jìn)制有限字長(zhǎng)考慮在內(nèi)了,但離開以芯片為核心的嵌入式系統(tǒng)硬軟件相距還有相當(dāng)距離。各種芯片的開發(fā)商通常把C語言或HDL語言作為芯片開發(fā)的頂層語言,因此主要的任務(wù)就歸結(jié)為從MATLAB如何自動(dòng)轉(zhuǎn)化為C語言或HDL語言的問題。但普通的MATLAB語言并不能直接與C兼容。比方MATLAB的數(shù)的格式就沒有C多,通過定點(diǎn)工具箱解決了這個(gè)問題。但還有別的問題,例如MA

15、TLAB的內(nèi)存空間是可以在程序運(yùn)行過程中動(dòng)態(tài)分配的,C語言也如此,但是芯片上的變量必定放在固定存儲(chǔ)器中。因此要把定點(diǎn)MATLAB再進(jìn)一步改造成為嵌入式MATLAB語言EML并轉(zhuǎn)換為嵌入式的C代碼。 把MATLAB和Simulink轉(zhuǎn)換為C代碼的MATLAB工具是Real-Time Workshop)和Real-Time Workshop Embedded Coder。后者產(chǎn)生的是經(jīng)過優(yōu)化的能與嵌入式系統(tǒng)要求匹配的C代碼。此外實(shí)際系統(tǒng)中往往有許多離散事件,包括開關(guān)和狀態(tài)的條件切換等,Simulink有專門的Stateflow工具對(duì)離散事件建模仿真,它通過Stateflow Coder產(chǎn)生C代碼。

16、MATLAB和Simulink有關(guān)信號(hào)處理從概念設(shè)計(jì)到代碼實(shí)現(xiàn)的各主要工具的相互關(guān)系如圖10.2.4所示。在底部的是從事概念設(shè)計(jì)的工具,愈往上愈接近于實(shí)際系統(tǒng),頂部的工具那么是用來產(chǎn)生目標(biāo)芯片代碼生成器。由C代碼向芯片代碼轉(zhuǎn)換的工具一般由芯片生產(chǎn)商開發(fā),它用的C代碼也是有一定限制的嵌入式代碼。由于設(shè)計(jì)過程不止是MATLAB語言到芯片代碼的單方向變換,還要在仿真中看到芯片中的數(shù)據(jù)和進(jìn)行反復(fù)修改,所以需要雙向的數(shù)據(jù)通信、觀測(cè)和底層參數(shù)修改等操作。這些軟件都要復(fù)雜得多,必須既精通MATLAB和C,又熟悉目標(biāo)芯片特點(diǎn)的技術(shù)人員共同開發(fā)。以TITexas Instrument公司的數(shù)字信號(hào)處理芯片為例,

17、Mathworks公司為它開發(fā)與之相聯(lián)接軟件,叫做Embedded IDE Link CCfor TIs Code Composer Studio以前版本叫做Link for CCS。此外為每一類芯片分別開發(fā)出代碼生成工具Target Support Package TC2和Target Support Package TC6以前版本叫做Target for TI 2000和Target for TI 6000。Mathworks在信號(hào)處理方面的全套產(chǎn)品及相互關(guān)系 10.4 基于模型的開發(fā)流程嵌入式系統(tǒng)的開發(fā)一般包括四個(gè)階段:需求與標(biāo)準(zhǔn)、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試與驗(yàn)證。傳統(tǒng)的開發(fā)過程中,這四個(gè)階段的界

18、限相比照較清楚,而且多數(shù)由不同的部門或者不同的人員完成,由于不同的開發(fā)階段采用不同的工具,相互之間的交流缺乏統(tǒng)一的平臺(tái),實(shí)現(xiàn)階段是比較繁瑣的而且工作量巨大。嵌入式系統(tǒng)傳統(tǒng)的開發(fā)流程舉例而言,系統(tǒng)工程師采用高級(jí)語言如MATLAB來設(shè)計(jì)仿真算法,DSP工程師需要用C語言或者匯編語言來實(shí)現(xiàn)這些算法,F(xiàn)PGA工程師要用VHDL或者Verilog等HDL語言來實(shí)現(xiàn)這些算法,對(duì)于同樣算法,就需要維護(hù)多個(gè)版本,而且采用C語言和HDL實(shí)現(xiàn)算法的工作量和難度遠(yuǎn)大于采用MATLAB等高級(jí)語言的工作量和難度,難免在編程過程中引入一些錯(cuò)誤,這樣就會(huì)造成測(cè)試與驗(yàn)證階段的壓力,問題發(fā)現(xiàn)的越晚,修正問題花費(fèi)的代價(jià)越大?;?/p>

19、模型的設(shè)計(jì)防止了這種問題,首先在需求與標(biāo)準(zhǔn)階段,標(biāo)準(zhǔn)是可以執(zhí)行的Simulink模型,有明確的輸出結(jié)果,不會(huì)存在理解的歧義;在設(shè)計(jì)的階段,根據(jù)實(shí)際的需求來做細(xì)化,如考慮定點(diǎn)要求做定點(diǎn)設(shè)計(jì),采用更加符合實(shí)際要求的算法來設(shè)計(jì),每一步的改動(dòng)都要作仿真和驗(yàn)證,確保修改保持最初的需求;在實(shí)現(xiàn)階段,采用商業(yè)工具的自動(dòng)代碼生成功能,可以防止手工繁雜的編寫代碼的工作,快速?gòu)脑O(shè)計(jì)到實(shí)現(xiàn),同時(shí)也防止了編寫代碼可能引入誤差的問題,大大提高實(shí)現(xiàn)的效率;由于測(cè)試和驗(yàn)證貫穿于整個(gè)開發(fā)流程,而不是在最后階段才開始進(jìn)行驗(yàn)證,能夠及早發(fā)現(xiàn)問題,及早解決,以最小的代價(jià)得到最好的結(jié)果。這種流程,無論在時(shí)間上還是在金錢上,都會(huì)大大節(jié)

20、約,是一種非常有效的設(shè)計(jì)流程。 基于模型的開發(fā)流程 The MathWorks公司提供了完整的基于模型的設(shè)計(jì)流程,從算法的研究,開發(fā)設(shè)計(jì),到C代碼和HDL代碼的自動(dòng)產(chǎn)生,以及代碼的驗(yàn)證,聯(lián)合仿真,及硬件驗(yàn)證,都有相應(yīng)的工具來支持。其他公司,包括芯片廠商也提供了相應(yīng)的工具,作為Simulink的一個(gè)模塊庫(kù),加快設(shè)計(jì)、開發(fā)的流程。 下面把其中具體的工具作一個(gè)簡(jiǎn)單的介紹。自動(dòng)C代碼和HDL代碼生成工具,從Simulink模型、Embedded MATLABMATLAB語言子集,包括假設(shè)干面向嵌入式實(shí)現(xiàn)的操作符及函數(shù)及Stateflow產(chǎn)生標(biāo)準(zhǔn)的代碼,嵌入式代碼,或者HDL代碼VHDL和Verilog

21、代碼,包括:Real-Time Workshop 產(chǎn)生標(biāo)準(zhǔn)的代碼Real-Time Workshop Embedded Coder 產(chǎn)生嵌入式優(yōu)化的代碼Stateflow Coder 從Stateflow產(chǎn)生標(biāo)準(zhǔn)的代碼Simulink HDL Coder 從Simulink模型及Embedded MATLAB產(chǎn)生HDL代碼, Filter Design HDL Coder將設(shè)計(jì)的濾波器產(chǎn)生HDL代碼,包括VHDL和Verilog代碼目標(biāo)支持包,支持特定的處理器及相應(yīng)的板卡,可以產(chǎn)生針對(duì)特定處理器的優(yōu)化的匯編代碼,對(duì)于支持的板卡,可以產(chǎn)生包括算法以及板卡外設(shè)驅(qū)動(dòng)的整個(gè)工程文件。包括:Target

22、 Support Package IC1 (for Infineon C166) Target Support Package FM5 (for Freescale MPC5xx)Target Support Package TC2 (for TIs C2000 DSP) Target Support Package TC6 (for TIs C6000 DSP)與嵌入式集成開發(fā)環(huán)境的連接工具,是MATLAB和Simulink與嵌入式集成開發(fā)環(huán)境聯(lián)合仿真接口,可以在MATLAB和Simulink環(huán)境下對(duì)嵌入式集成開發(fā)環(huán)境進(jìn)行操作,包括設(shè)置中斷,編譯、調(diào)試等。Embedded IDE Link

23、VS (for Analog Devices VisualDSP+)Embedded IDE Link CC (for TIs Code Composer Studio) Embedded IDE Link TS (for Altium TASKING) Embedded IDE Link MU (for Green Hills MULTI)與HDL 仿真工具的連接工具,EDA Simulator Link是MATLAB和Simulink與FPGA和ASIC硬件設(shè)計(jì)的聯(lián)合仿真接口。提供了MATLAB、Simulink與HDL仿真工具的高效、雙向接口,對(duì)TRL級(jí)代碼做高效驗(yàn)證,支持VHDL和Ve

24、rilog。包括:EDA Simulator Link MQ (for Mentor Graphics ModelSim) EDA Simulator Link IN (for Cadence Incisive) EDA Simulator Link DS (for Synopsys Discovery)Real-Time Workshop和Real-Time Workshop Embedded Coder為嵌入式系統(tǒng)生成最優(yōu)的C和C+代碼,主要特點(diǎn) 從Simulink和Stateflow模型中及Embedded MATLAB生成ANSI/ISO C和C+代碼及其可執(zhí)行文件,生成的代碼在內(nèi)存占

25、用率,運(yùn)行速度及可讀性等方面可同手寫代碼相媲美 擴(kuò)展了Real-Time Workshop和Stateflow Coder,其在產(chǎn)品實(shí)現(xiàn)方面具有最優(yōu)化及代碼配置等特點(diǎn) 支持所有Simulink數(shù)據(jù)對(duì)象和數(shù)據(jù)字典功能,包括用戶定義的存儲(chǔ)類,類型及別名提供目標(biāo)函數(shù)庫(kù)代碼的定制,從而為特定處理器生成機(jī)器代碼 無論有無RTOS,可對(duì)多速率代碼進(jìn)行簡(jiǎn)明分割以提高運(yùn)行效率 包含可擴(kuò)展的模塊封裝特性和自定義數(shù)據(jù)對(duì)象 提供詳盡的注釋,并使用超鏈接進(jìn)行代碼到模型和需求之間的雙向跟蹤 自動(dòng)將生成的代碼導(dǎo)入Simulink進(jìn)行軟件環(huán)路測(cè)試,從而對(duì)代碼進(jìn)行驗(yàn)證 使用Simulink報(bào)告生成功能在Simulink Mo

26、del Explorer中生成代碼幫助文件并以此作為獨(dú)立的報(bào)告Embedded IDE Link CC和Target Support Package TC6支持對(duì)TIC6000 DSP的自動(dòng)代碼生成和調(diào)試,可以加快算法在DSP上的實(shí)現(xiàn),大大縮短開發(fā)的進(jìn)程,提高開發(fā)效率。Simulink HDL Coder可以從Simulink模型和M代碼產(chǎn)生HDL代碼SimulinkHDL Coder可以從Simulink模型、Stateflow框圖和Embedded MATLAB代碼產(chǎn)生bit-true和cycle-accurate的可綜合的Verilog和VHDL代碼。自動(dòng)生成的代碼是目標(biāo)無關(guān)的。產(chǎn)生的V

27、erilog代碼兼容IEEE1364-2001標(biāo)準(zhǔn),VHDL代碼兼容IEEE 1076標(biāo)準(zhǔn),這些代碼支持通用的功能驗(yàn)證和綜合工具。Simulink HDL Coder同時(shí)可以產(chǎn)生HDL測(cè)試鼓勵(lì),用于HDL仿真工具對(duì)產(chǎn)生的HDL代碼做驗(yàn)證。 嵌入式代碼開發(fā)的實(shí)例例 設(shè)計(jì)一個(gè)低通濾波器,做以下工作:1按以下指標(biāo)進(jìn)行概念設(shè)計(jì):采樣率Fs=48000Hz,通帶Fp=4000Hz,阻帶Fs=7000Hz,2建立Simulink模型仿真,觀察其對(duì)3 000 Hz8 000 Hz兩個(gè)線譜合成信號(hào)的濾波效果,3用DSP芯片實(shí)現(xiàn)這個(gè)濾波器。 1設(shè)計(jì)低通濾波器:這個(gè)任務(wù)可以用濾波器設(shè)計(jì)工具FDATool來完成,如

28、右圖所示。前已指出,點(diǎn)擊其左下方的按鈕,可以對(duì)濾波器作定點(diǎn)化設(shè)計(jì),并且可以生成Simulink的模塊,也可以產(chǎn)生C和HDL代碼需要相應(yīng)的授權(quán)。2搭建Simulink模型構(gòu)造測(cè)試鼓勵(lì),仿真驗(yàn)證算法。搭建好的模型如圖10.5.3所示。在圖中,采用信號(hào)處理模塊庫(kù)里的信號(hào)源模塊Sin Wave,構(gòu)造了由兩個(gè)正弦信號(hào)作為測(cè)試的輸入信號(hào),將這兩個(gè)信號(hào)經(jīng)過相加器疊加成一個(gè)信號(hào),使他經(jīng)過濾波器設(shè)計(jì)工具生成的數(shù)字濾波器。在濾波器的前后都放置了頻譜分析儀和示波器,以觀察濾波的效果。所有圖上的模塊在Simulink的模塊庫(kù)中都能找到,只要把他們用鼠標(biāo)拖引到翻開的空白文件上,并用鼠標(biāo)將它們聯(lián)接起來即可。 建立仿真框圖

29、后,就可設(shè)置各模塊的參數(shù)。例如,雙擊兩個(gè)數(shù)字信號(hào)源之一,就會(huì)彈出如下圖的參數(shù)設(shè)置視窗,在其中填入本例的參數(shù)。比方采樣率取48000Hz,頻率是3000Hz另一個(gè)設(shè)成8000Hz,它能支持基于幀的設(shè)計(jì),采用每幀1024個(gè)樣本。由于是基于幀的設(shè)計(jì),就可以直接觀察時(shí)域與頻域的波形,否那么需要對(duì)時(shí)域信號(hào)進(jìn)行緩沖Buffer,然后才能觀察頻域波形,而且基于幀的設(shè)計(jì)會(huì)有比基于采樣更快的仿真速度。 接下來我們要把設(shè)計(jì)好的濾波器加到我們的測(cè)試信號(hào)上,看看是不是到達(dá)我們的設(shè)計(jì)效果,低頻信號(hào)通過,高頻信號(hào)濾掉。我們可以采用上一步產(chǎn)生的濾波器模塊,也可以直接采用信號(hào)處理模塊庫(kù)里的Digital Filter Des

30、ign模塊,該模塊會(huì)翻開FDATool工具同樣的界面,進(jìn)行濾波器的設(shè)計(jì),并且可以直接用于Simulink仿真。 對(duì)該模型作仿真運(yùn)行,可以觀察其時(shí)域與頻域的波形,我們可以看到時(shí)域里兩個(gè)信號(hào)疊加的波形和頻域里非常干凈的兩個(gè)線譜,在圖和圖中給出了濾波器前后兩個(gè)頻譜分析儀顯示的結(jié)果,請(qǐng)注意圖中兩個(gè)線譜的幅度是一致的,而圖中,8000Hz的譜線就得到了很大的抑制。高頻的線譜能量已經(jīng)比低頻的低了大約60dB,滿足我們最初的設(shè)計(jì),說明濾波的效果不錯(cuò)。 3面向硬件實(shí)現(xiàn)作進(jìn)一步調(diào)整上一步我們完成了算法的設(shè)計(jì)與仿真。假定我們要在TI DSP上實(shí)現(xiàn)該算法,還需要作進(jìn)一步的工作,如定點(diǎn)量化等,當(dāng)然也可以在DSP實(shí)現(xiàn)浮

31、點(diǎn)的算法,一般來說都需要面向硬件實(shí)現(xiàn)作一些修改。3與仿真硬件聯(lián)接這里我們采用TI6416DSK作為實(shí)現(xiàn)的硬件板卡。Target Support Package TC6 (for TIs C6000 DSP)支持該板卡,需要參加Target Preferences模塊對(duì)硬件進(jìn)行配置,設(shè)置相應(yīng)的硬件參數(shù),如圖10.5.8??梢灾苯訉?duì)板卡上的外設(shè)進(jìn)行操作,如將產(chǎn)生的測(cè)試信號(hào)輸出到音頻輸出模塊DAC,在產(chǎn)生代碼的時(shí)候就會(huì)對(duì)將產(chǎn)生的測(cè)試信號(hào)輸出到硬件的音頻輸出口,接上耳機(jī)就可以聽到兩個(gè)正弦疊加的信號(hào)的聲音,用示波器或者頻譜儀可以在該端口看到與我們仿真時(shí)一致的波形。 TI6416DSK硬件板卡的聯(lián)接 1硬

32、件實(shí)現(xiàn)修改后的硬件實(shí)現(xiàn)模型如圖10.5.9,比仿真的模型增加了Target Preferences和DAC輸出兩個(gè)模塊。這時(shí)就可以連接相應(yīng)的硬件設(shè)備,進(jìn)行DSP代碼的自動(dòng)產(chǎn)生和下載。Simulink的自動(dòng)代碼生成工具Real-Time Workshop會(huì)自動(dòng)調(diào)用TI CCS,產(chǎn)生代碼及整個(gè)CCS工程的文件,并編譯、鏈接、下載到板卡,運(yùn)行,耳機(jī)里會(huì)聽到相應(yīng)輸出信號(hào)的聲音,當(dāng)然可以用示波器與頻譜儀進(jìn)行驗(yàn)證。會(huì)看到與仿真結(jié)果一致的波形,如果對(duì)產(chǎn)生的DSP工程及代碼感興趣,也可以翻開TI CCS進(jìn)行編譯、調(diào)試。如圖10.5.10所示:通過以上的例子可以看到,我們?cè)谟布R(shí)不是很豐富的情況下,也可以很快地完成從算法的設(shè)計(jì)到硬件的實(shí)現(xiàn)。自動(dòng)代碼生成工具,使開發(fā)者從繁雜的寫代碼的勞動(dòng)中解放出來,有更多的時(shí)間和精力做深入的算法研究及其他工作。2引深到FPGA以上步驟完成了從算法設(shè)計(jì)、仿真到DSP實(shí)現(xiàn)的根本過程,在實(shí)際應(yīng)用中還可以將Embeded MATLAB代碼作為一個(gè)Simulink模塊進(jìn)行算法的仿真和代碼產(chǎn)生。 同樣的流程也可以用于FPGA的設(shè)計(jì)與開發(fā),Simulink HDL coder支

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論