DSP原理與應(yīng)用開發(fā)基礎(chǔ)_第1頁(yè)
DSP原理與應(yīng)用開發(fā)基礎(chǔ)_第2頁(yè)
DSP原理與應(yīng)用開發(fā)基礎(chǔ)_第3頁(yè)
DSP原理與應(yīng)用開發(fā)基礎(chǔ)_第4頁(yè)
DSP原理與應(yīng)用開發(fā)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩156頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第10章

DSP原理與應(yīng)用開發(fā)基礎(chǔ)

數(shù)字信號(hào)處理器(digitalsignalprocessor,DSP)是專門為可以高速運(yùn)算、編程方便的新型微處理器。本章對(duì)于DSP原理和系統(tǒng)應(yīng)用開發(fā)的基本知識(shí)進(jìn)行了研究。應(yīng)用系統(tǒng)的開發(fā)涉及軟件和硬件設(shè)計(jì)兩個(gè)方面,其中硬件設(shè)計(jì)是首先需要克服的難點(diǎn),正確設(shè)計(jì)來源于對(duì)芯片知識(shí)的透徹了解,對(duì)TMS320C62X芯片基本結(jié)構(gòu),包括寄存器文件、功能單元和存儲(chǔ)器通道等,指令、中斷、存儲(chǔ)器和外圍器件進(jìn)行了較詳細(xì)描述。美國(guó)TI公司的TMS320系列的DSP芯片的體系結(jié)構(gòu)采用哈佛(Harvard)結(jié)構(gòu),其特點(diǎn)是芯片具有各自獨(dú)立的數(shù)據(jù)存儲(chǔ)空間和程序存儲(chǔ)空間,因此有獨(dú)立的數(shù)據(jù)總線和程序總線。這可以同時(shí)對(duì)數(shù)據(jù)和程序?qū)ぶ罚ㄓ械牟捎酶淖兊墓鸾Y(jié)構(gòu),即在數(shù)據(jù)總線和程序總線之間有局部交叉),即DSP在對(duì)數(shù)據(jù)讀寫的同時(shí)也可對(duì)程序進(jìn)行讀寫,形成指令執(zhí)行的“流水線(pipeline)”方式,可加速指令執(zhí)行的速度,其運(yùn)算速度很高。10.1典型DSP系統(tǒng)的構(gòu)成學(xué)習(xí)DSP應(yīng)該從硬件設(shè)計(jì)開始,DSP系統(tǒng)應(yīng)用關(guān)鍵在于以芯片特點(diǎn)為基礎(chǔ)的硬件設(shè)計(jì)。這里有兩點(diǎn)值得關(guān)注,一是對(duì)于系統(tǒng)的構(gòu)成應(yīng)該有基本的了解,二是充分了解DSP芯片的結(jié)構(gòu)、性能和特點(diǎn),這對(duì)于正確和合理設(shè)計(jì)硬件系統(tǒng)很重要。合理的硬件設(shè)計(jì)可以充分發(fā)揮DSP軟件特長(zhǎng),并可使系統(tǒng)性能達(dá)到最優(yōu)。10.1典型DSP系統(tǒng)的構(gòu)成大多數(shù)DSP芯片系統(tǒng)可能由DSP、外圍總線及通信和人機(jī)接口等部分組成。系統(tǒng)還可組成能通過COMPACTPCI、PCI、ISA和VXI等總線插在計(jì)算機(jī)上工作,或通過3xbus總線等緊湊型控制系統(tǒng),甚至還可以通過現(xiàn)場(chǎng)總線將整個(gè)系統(tǒng)作為整個(gè)現(xiàn)場(chǎng)系統(tǒng)中的一個(gè)節(jié)點(diǎn)。整個(gè)系統(tǒng)的協(xié)調(diào)運(yùn)行依賴于正確的邏輯控制電路設(shè)計(jì)。圖10-1是一個(gè)典型的DSP系統(tǒng)。圖10-1一個(gè)典型的DSP系統(tǒng)

DSP芯片的主要任務(wù)是將前向通道輸出的信號(hào)按照一定的算法進(jìn)行處理,并將處理結(jié)果以數(shù)據(jù)流的形式輸出給后向通道。輸入信號(hào)可以是電信號(hào)、聲音信號(hào)、物理信號(hào)、化學(xué)信號(hào)等等。在前向通道中,首先通過傳感器將各種信號(hào)轉(zhuǎn)化為一定幅值的電信號(hào),再將這些信號(hào)進(jìn)行帶限濾波和抽樣,然后通過A/D變換將信號(hào)變換成數(shù)字bit流。根據(jù)采樣定理,采樣頻率至少必須是輸入帶限信號(hào)頻率的兩倍。后向通道主要由D/A、平滑濾波器及功率放大器等部分組成。最簡(jiǎn)單的DSP系統(tǒng)設(shè)計(jì)是基本的一步。它是指無輸入/出通道,同時(shí)也不與其他系統(tǒng)通信的DSP系統(tǒng)。它包括復(fù)位電路、時(shí)鐘電路、仿真接口、FLASH

memory接口、邏輯控制電路、總線驅(qū)動(dòng)和鎖存接口。隨著DSP芯片和應(yīng)用系統(tǒng)功能的增強(qiáng),再逐步增加各類器件,構(gòu)成復(fù)雜系統(tǒng)。10.2

DSP系統(tǒng)的總體方案設(shè)計(jì)開發(fā)梗概

10.2.1總體方案設(shè)計(jì)利用DSP芯片設(shè)計(jì)一個(gè)DSP系統(tǒng)的基本步驟如圖10-2。首先確定系統(tǒng)總體要求,根據(jù)總體要求和相關(guān)技術(shù)指標(biāo),用軟件的方法設(shè)計(jì)整體系統(tǒng)再仿真運(yùn)行,確定系統(tǒng)最終架構(gòu)。椐此,把系統(tǒng)分類為軟件和硬件部分,進(jìn)行系統(tǒng)硬件和軟件兩個(gè)方面的設(shè)計(jì),并仿真調(diào)試。在根據(jù)要求、任務(wù)確定總體目標(biāo)和技術(shù)指標(biāo)的前提下,選擇DSP芯片,統(tǒng)一考慮軟硬件分工,再分別完成系統(tǒng)構(gòu)造,整體測(cè)試及生產(chǎn)。圖10-2基于DSP芯片的DSP實(shí)時(shí)系統(tǒng)設(shè)計(jì)和開發(fā)流程圖10.2.2軟件設(shè)計(jì)階段

在根據(jù)技術(shù)指標(biāo)確定方案后,進(jìn)入軟硬件設(shè)計(jì)階段。軟件編程主要包括COFF-公共目標(biāo)文件格式、DSP開發(fā)工具、代碼調(diào)試器三部分。在COFF文件格式中,段的概念很重要,即在用匯編語(yǔ)言或高級(jí)語(yǔ)言編程時(shí)基于代碼段或數(shù)據(jù)段,不必為程序代碼和變量指定目標(biāo)地址。DSP開發(fā)工具包括C編譯器、匯編器、鏈接器、文件格式轉(zhuǎn)換程序、庫(kù)存生成文件文檔管理程序、頭文件等。而代碼調(diào)試主要是C/匯編語(yǔ)言源代碼調(diào)試器和硬件仿真器等工具,其他如初學(xué)者工具DSK、軟件開發(fā)系統(tǒng)等也具有學(xué)習(xí)意義。10.2.2軟件設(shè)計(jì)階段

關(guān)于DSP匯編語(yǔ)言,開發(fā)者要想熟練開發(fā)DSP應(yīng)用系統(tǒng),必須熟悉DSP芯片內(nèi)部結(jié)構(gòu)和指令系統(tǒng)。在移動(dòng)電話、硬/光盤驅(qū)動(dòng)器或多DSP并行處理等編程空間小的情況下,對(duì)開發(fā)高效DSP軟件非常重要。匯編語(yǔ)言與硬件緊密結(jié)合,執(zhí)行效率最高,指令代碼最短,常用于實(shí)時(shí)性較強(qiáng)的場(chǎng)合,如多媒體通信、制導(dǎo)控制、電能轉(zhuǎn)換器和圖像處理等領(lǐng)域。10.2.2軟件設(shè)計(jì)階段

而高級(jí)語(yǔ)言,如C語(yǔ)言,其可讀性和可移植性都非常好且為廣大科研人員所熟悉;這將極大地縮短DSP軟件開發(fā)的周期,這相比于與硬件結(jié)合緊密的匯編語(yǔ)言的繁瑣性是非常寶貴的。DSP的C語(yǔ)言編程的主要內(nèi)容包括,ANSI

C編譯器、運(yùn)行環(huán)境、運(yùn)行支持庫(kù)的使用與建立、I/O口編程、C語(yǔ)言編程的各種工具的使用和C調(diào)試器的使用等。一般C語(yǔ)言編程可以應(yīng)用到對(duì)實(shí)時(shí)性要求不太高的場(chǎng)合?,F(xiàn)在也流行匯編語(yǔ)言和高級(jí)語(yǔ)言混合編程,其形式多種多樣。10.2.3硬件設(shè)計(jì)階段

根據(jù)性能指標(biāo)確定實(shí)現(xiàn)方案,了解具體器件結(jié)構(gòu)特點(diǎn)和性能,畫出硬件系統(tǒng)框圖。這是第一步;確定A/D、D/A、內(nèi)存、邏輯控制、通信、總線、人機(jī)接口、電源等基本部件。A/D:根據(jù)采樣頻率、精度來確定A/D型號(hào),是否要求片上自帶采保、多路器、基準(zhǔn)電源等。D/A:信號(hào)頻率、精度是否要求片上基準(zhǔn)電源、多路器、輸出運(yùn)放等。內(nèi)存:包括SRAM、EPROM,在TMS320C6000等產(chǎn)品中還要考慮SDRAM等。10.2.3硬件設(shè)計(jì)階段

通信:根據(jù)通信速率決定采用的通信方式。USB和總線(PCI、ISA等)通信方式是要求較高的通信方式;并口可達(dá)1Mbps以上,而一般串口只能達(dá)到19.2Kbps。電源主要是電壓的高低以及電流的大小,即電壓高低要匹配、電流容量要足夠。這是第二步。接下來就要設(shè)計(jì)原理圖?;谝陨戏治觯鸩郊上到y(tǒng)。借助大規(guī)模集成電路芯片(或SOC芯片)和可編程邏輯芯片降低硬件設(shè)計(jì)的難度。這是第三步。根據(jù)系統(tǒng)工作原理,用EDA、Protel等工具設(shè)計(jì)PCB版圖。最后是系統(tǒng)調(diào)試和集成。10.2.3硬件設(shè)計(jì)階段

至此,開發(fā)DSP系統(tǒng)的基本概念、基本思路和基本方法建立起來了。下面認(rèn)識(shí)TMS320C62X芯片,這是開發(fā)DSP系統(tǒng)的前提。10.3

TMS320C62X芯片基本結(jié)構(gòu)

詳細(xì)了解DSP芯片結(jié)構(gòu)及功能特點(diǎn)非常重要,是開發(fā)DSP的基本環(huán)節(jié)。作為專門處理數(shù)字信號(hào)的數(shù)字信號(hào)處理器,是一類單片的、可實(shí)現(xiàn)高速運(yùn)算的可編程微處理器。DSP芯片基本結(jié)構(gòu)包括哈佛結(jié)構(gòu)、流水線操作和多總線結(jié)構(gòu)等。哈佛結(jié)構(gòu)主要特點(diǎn)是將程序和數(shù)據(jù)存儲(chǔ)在不同的存儲(chǔ)空間,即程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器是兩個(gè)獨(dú)立的存儲(chǔ)器,每個(gè)存儲(chǔ)器獨(dú)立編址、獨(dú)立訪問。與兩個(gè)存儲(chǔ)器相對(duì)應(yīng)的是系統(tǒng)設(shè)置了程序總線和數(shù)據(jù)總線,從而使數(shù)據(jù)的吞吐量大大提高。由于程序和數(shù)據(jù)存儲(chǔ)在兩個(gè)分開的空間中,因此取指和執(zhí)行能重疊進(jìn)行。與之相關(guān)的是流水線操作,處理器可并行處理多條指令,每條指令處于流水線不同的階段。多總線結(jié)構(gòu)可保證在一個(gè)機(jī)器周期內(nèi),同時(shí)訪問數(shù)據(jù)和程序存儲(chǔ)空間。10.3

TMS320C62X芯片基本結(jié)構(gòu)

DSP芯片發(fā)展很快,TMS320C6000是美國(guó)德州儀器公司(TexasInstrument)推出的定點(diǎn)、浮點(diǎn)系列DSPs,它采用修改的哈佛結(jié)構(gòu),對(duì)數(shù)據(jù)和指令的尋址可同時(shí)進(jìn)行,形成了指令執(zhí)行的“流水線pipeline”方式,并具有專門的硬件乘法器,從而加速指令執(zhí)行的速度。TMS320C6000的定點(diǎn)系列是TMS320C62XX,浮點(diǎn)系列是TMS320C67XX。TMS320C6000片內(nèi)有8個(gè)并行的處理單元,分為相同的兩組,芯片的最高時(shí)鐘頻率可以達(dá)到300MHz。當(dāng)芯片的8個(gè)處理單元同時(shí)運(yùn)行時(shí),其中定點(diǎn)產(chǎn)品峰值處理能力達(dá)到4800MIPS,浮點(diǎn)產(chǎn)品峰值處理能力達(dá)到1350MFLOPS,是目前國(guó)際上性能最高的DSPs之一。本數(shù)據(jù)采集處理系統(tǒng)采用TMS320C62X,其主要特點(diǎn)如下:它有一套完整的經(jīng)過優(yōu)化的開發(fā)工具,包括一個(gè)高效率的C編譯器、簡(jiǎn)化匯編語(yǔ)言編程優(yōu)化器和用于觀察源代碼執(zhí)行情況的WINDOWSTM可視調(diào)試界面,一個(gè)與TIXDS510TM仿真界面兼容的硬件仿真板。這套工具用IEEEStandard1149.1-1990、IEEE標(biāo)準(zhǔn)測(cè)試處理端口(IEEEStandardTestAccessPort)和邊界-掃描結(jié)構(gòu)(Boundary-ScanArchitecture)編譯。每個(gè)指令周期可執(zhí)行8條32位指令;8個(gè)高度獨(dú)立的功能單元,包括2個(gè)16位的乘法器(32bit)和6個(gè)32/40位的加法運(yùn)算器(ALU);32個(gè)32位字長(zhǎng)通用寄存器;靈活自由的數(shù)據(jù)/程序定位,L1/L2存儲(chǔ)器結(jié)構(gòu):4K字節(jié)L1P程序Cache、4K字節(jié)的L1D數(shù)據(jù)Cache、64K字節(jié)L2通用RAM/Cache;超長(zhǎng)指令字結(jié)構(gòu)(very

long

instruction

word)為裝載/存儲(chǔ)結(jié)構(gòu),以減小代碼長(zhǎng)度和提高執(zhí)行速度為目的的指令包結(jié)構(gòu)和100%條件指令結(jié)構(gòu)。32位外部存儲(chǔ)器接口(EMIF):對(duì)異步存儲(chǔ)器的無縫接口,如SRAM、EPROM;對(duì)同步存儲(chǔ)器的無縫接口,如SDRAM、SBSRAM;共512M字節(jié)外部存儲(chǔ)器可尋址空間;存儲(chǔ)器及外圍設(shè)備為具有2個(gè)帶引導(dǎo)裝載功能的DMA(直接存儲(chǔ)器存取控制)通道,16個(gè)獨(dú)立通道;2個(gè)32位通用定時(shí)器,片內(nèi)鎖相環(huán)(PLL),1MB位片內(nèi)存儲(chǔ)器,片外存儲(chǔ)器接口(EMIF)和2個(gè)雙向多通道緩沖串口(McBSPs);片內(nèi)RAM、片外ROM、片外存儲(chǔ)器及其他片內(nèi)資源總尋址空間4GB;352引腳BGA封裝。如圖10-3所示。支持JTAG邊界掃描標(biāo)準(zhǔn),調(diào)試時(shí)可以方便可靠地控制DSP上面的所有資源。依照其硬件結(jié)構(gòu),依次介紹這些器件資源。圖10-3TMS320C62X內(nèi)部結(jié)構(gòu)圖10.3.1通用寄存器文件TMS320C62X數(shù)據(jù)通道結(jié)構(gòu)如圖10-4。2個(gè)通用寄存器文件(A和B)和一個(gè)控制寄存器文件;8個(gè)功能單元,2個(gè)讀存儲(chǔ)器通道,2個(gè)寫存儲(chǔ)器通道,兩個(gè)通用寄存器文件交叉通道。數(shù)據(jù)通道分A、B兩個(gè)通用寄存器文件。每個(gè)通用寄存器文件包含16個(gè)32位寄存器。對(duì)A寄存器是A0~15;B是B0~15。它們被用來作為數(shù)據(jù)、地址指針或條件寄存器。2個(gè)通用寄存器文件支持32/40位定點(diǎn)數(shù)據(jù),數(shù)據(jù)可以被放在16個(gè)通用寄存器的任意一個(gè)之中。其CPU包括程序取指單元、指令發(fā)送單元、指令譯碼單元,兩條數(shù)據(jù)通道(每條有4個(gè)功能單元),32個(gè)32位寄存器,多個(gè)控制寄存器、控制邏輯,測(cè)試仿真和中斷邏輯。圖10-4TMS320C62X數(shù)據(jù)通道結(jié)構(gòu)10.3.2功能單元TMS320C62x數(shù)據(jù)通道中的八個(gè)功能單元等分為2組(1組和2組),即每組4個(gè),見圖10-4。每組數(shù)據(jù)通道中的功能單元作用是一樣的。表10-1給出了每組功能單元的介紹。每個(gè)功能單元都有獨(dú)立的端口,負(fù)責(zé)向通用寄存器寫操作;每個(gè)功能單元有兩個(gè)32位讀端口,用于獲取兩個(gè)源操作數(shù)SRC1和SRC2。每個(gè)功能單元通過對(duì)應(yīng)的數(shù)據(jù)通道對(duì)寄存器文件直接進(jìn)行讀寫操作。即.L1、.S1、.D1和.M1將30/40位數(shù)據(jù)寫入到寄存器文件A中而.L2、.S2、.D2、.M2單元?jiǎng)t同樣將數(shù)據(jù)寫入到寄存器文件B中。表10-18個(gè)功能單元及其所進(jìn)行的操作

10.3.3寄存器文件交叉通道和存儲(chǔ)器存取通道

寄存器文件之間設(shè)置交叉聯(lián)接通道1X和2X,以使不同寄存器的功能單元可以通過交叉通道相互進(jìn)行操作。交叉通道允許所有功能單元從一個(gè)數(shù)據(jù)通道對(duì)另一個(gè)寄存器文件中的操作數(shù)進(jìn)行讀寫操作。其中1X允許A數(shù)據(jù)通道的功能單元從B寄存器文件中讀取操作數(shù),而2X則允許B數(shù)據(jù)通道的功能單元從A寄存器文件中讀取操作數(shù)。當(dāng)然,它們可以就目的不同既可以通過交叉通道操作源操作數(shù),又可以操作本寄存器文件。例如,L1、L2,S1、S2單元的SRC1/SRC2既可以使用交叉通道操作,又可以直接操作本寄存器文件的。通用寄存器文件的數(shù)據(jù)存取需設(shè)置通道,有兩條32位的通道(LD1和LD2)用于將寄存器中的數(shù)據(jù)裝載到寄存器文件中,這是兩條存儲(chǔ)器存取通道。其中LD1用于寄存器文件A,LD2用于寄存器文件B,見圖10-4。10.3.4數(shù)據(jù)地址通道和控制寄存器文件從圖10-4可見,數(shù)據(jù)通道DA1、DA2源于.D1/.D2單元,它們可以從一個(gè)寄存器中產(chǎn)生數(shù)據(jù)地址,以支持存儲(chǔ)器與其他寄存器之間的數(shù)據(jù)讀寫操作。從圖中還可見.S2單元可以對(duì)控制寄存器文件(controllerregisterfile2)進(jìn)行讀寫。表10-2列出了控制寄存器文件中包含的控制寄存器。對(duì)每個(gè)寄存器的操作都通過MVC指令來進(jìn)行。以下將重點(diǎn)介紹3個(gè)控制寄存器文件的寄存器。表10-2控制寄存器文件中包含的控制寄存器1.尋址模式寄存器(AMR,addressingmoderegister)

A4~A7和B4~B7這八個(gè)寄存器每一個(gè)都既可以線性尋址,也可以循環(huán)尋址。AMR特別說明是尋址模式。在AMR中用一個(gè)2bit域?yàn)槊總€(gè)寄存器選擇地址變動(dòng)模式,即線性尋址(指缺省狀況)還是循環(huán)尋址。若為循環(huán)尋址,AMR還需要指出哪一個(gè)BK(blocksize,塊大?。┯蛴糜谘h(huán)尋址緩沖區(qū),此外,這一緩沖區(qū)必須分配與BK域相等的字節(jié)大小。例如,BK=64,那么緩沖區(qū)的起始地址的低6位必須是0。圖10-5給出了尋址模式選擇區(qū)與BK大小選擇區(qū)的示意圖,表10-3則給出了尋址模式與二進(jìn)制代碼之間的關(guān)系。圖10-5尋址模式選擇區(qū)與BK大小選擇區(qū)示意圖表10-3尋址模式與二進(jìn)制代碼之間的關(guān)系A(chǔ)MR所保留的部分為零,這一AMR在復(fù)位時(shí)被初始化為零。塊尺寸域,即BK0和BK1包括5位值,用于循環(huán)尋址計(jì)算塊尺寸。塊尺寸的計(jì)算公式(以字節(jié)為單位)為:2N+1,N為BK0或BK1的5位值。這樣共有32種塊的尺寸,見表10-4。表10-4塊尺寸計(jì)算

2.控制狀態(tài)寄存器

(CSR,ControlStatusRegister)

CSR結(jié)構(gòu)如圖10-6。它包括控制位和狀態(tài)位。CSR中各個(gè)域的功能見表10-5。對(duì)于EN,PWRD,PCC和DCC域,必須先查你的器件用戶手冊(cè),看這些域是否支持所控制的功能選項(xiàng)。圖10-6控制狀態(tài)寄存器表10-5控制狀態(tài)寄存器域的綜合描述3.

E1相程序計(jì)數(shù)器(PCE1,E1phaseprogramcounter)如圖10-7所示,PCE1包括了E1流水線相執(zhí)行包的32位地址。圖10-7

E1相程序計(jì)數(shù)器(PCE1)10.4

TMS320C6000指令

10.4.1TMS320C62x、67x定點(diǎn)指令集C62X和C67x共享一個(gè)指令集。所有適用于C62x的指令均適用于C67X。然而,因?yàn)镃67X為C62X對(duì)應(yīng)的浮點(diǎn)器件,所以存在只適用于浮點(diǎn)器件而不適用于定點(diǎn)器件的指令。這節(jié)先介紹C62X與C67X數(shù)字信號(hào)處理器的共用指令,還將討論并行操作、條件操作、資源限制和尋址模式。指令操作和執(zhí)行符號(hào)注解表10-6對(duì)定點(diǎn)指令的部分符號(hào)給予了解釋,完整描述請(qǐng)參看文獻(xiàn)[1]。表10-6定點(diǎn)指令的部分符號(hào)描述

2.指令與功能單元之間的映射關(guān)系表10-7是部分指令集對(duì)功能單元的映射關(guān)系。表10-8給出了部分功能單元對(duì)指令集的映射。其關(guān)系為前者表示了各功能單元所管理的指令,后者表示指令使用的功能單元。表10-7部分指令集對(duì)功能單元的映射關(guān)系表10-8功能單元對(duì)指令集的映射2.延遲槽(delayslots)

定點(diǎn)指令的執(zhí)行可以根據(jù)延遲槽來定義。延遲槽的數(shù)目等價(jià)于取出源操作數(shù)到讀出結(jié)果所需的指令周期數(shù)。對(duì)于一個(gè)單周期型指令(如ADD),源操作數(shù)在第i周期讀出,而結(jié)果則在第i+1周期可讀。對(duì)于乘法指令MPY來說,源操作數(shù)同樣在第i個(gè)周期讀出,結(jié)果在第i+1周期可讀。表10-9給出了每種不同類型指令的延遲槽數(shù)。延遲槽等價(jià)于一次執(zhí)行或一個(gè)結(jié)果的花銷。對(duì)所有’C62X與‘C67X共享的指令,一個(gè)功能單元1的花銷。這意味著每個(gè)周期,功能單元上可以開始一個(gè)新的指令。單周期輸出對(duì)單周期功能單元花銷是不同的。表10-9延遲槽和功能單元潛在消耗(latency)(1)并行操作取指形式是指令每次被取8條,組成一個(gè)取指令包。取指包的基本格式如圖10-8。取指包被對(duì)準(zhǔn)到256位(8個(gè)字)的地址邊界。圖10-8取址包的基本格式單個(gè)指令的執(zhí)行部分由每條指令中的一bit位(Pbit位)來控制。P-bit位(0bit位)決定該指令是否與另一條指令并行執(zhí)行。P-bit位被從左到右(對(duì)應(yīng)地址從低到高)掃描。如果指令i的p-bit位為1,則i+1條指令將與i條指令并行執(zhí)行(在同一指令周期內(nèi))。如果p-bit位為0,那么i+1指令在同一周期里i條指令后被執(zhí)行,所有的并行運(yùn)行的指令構(gòu)成一個(gè)執(zhí)行包。一個(gè)執(zhí)行包最多可包含8條指令,而且執(zhí)行包中的每條指令必須使用不同的功能單元。對(duì)于詳細(xì)的源操作代碼與功能單元的影射關(guān)系解釋應(yīng)查閱相關(guān)文獻(xiàn)。圖10-9全串p位取指模式,所有8指令按順序執(zhí)行圖10-11部分串p位指模式(2)并行代碼舉例及跳轉(zhuǎn)到執(zhí)行包中現(xiàn)象在匯編語(yǔ)言中用“||”指出該條指令與前一條指令并執(zhí)行。圖10-11中的取指包形式可以用下列指令來表示:instructionAinstructionBinstructionC||instructionD||instructionEinstructionF||instructionG||instructionH(3)條件操作所有指令都是有條件的。條件由一個(gè)3bit位的操作數(shù)(creg)域和一個(gè)1bit位的z域決定。creg用以指示所探測(cè)的條件寄存器,而z域標(biāo)識(shí)為零還是非零探測(cè)。每一操作數(shù)的四個(gè)MSB位為creg域和z域。所有指令所標(biāo)識(shí)的條件寄存器在E1流水線階段的起始處被探測(cè)。如果z=1,說明測(cè)試結(jié)果標(biāo)識(shí)為零。若z=0,那么測(cè)試標(biāo)識(shí)為非零。如果creg=0和z=0同時(shí)滿足,測(cè)試被作為真,那么指令被無條件執(zhí)行。表10-10給出了creg域與指令源操作碼之間的關(guān)系。表10-10可以被條件操作探測(cè)的寄存器

在代碼中,用方括弧表示條件指令,方括弧里是條件寄存器名稱。下面的執(zhí)行包含有兩條ADD并行指令:第一條ADD指令B0是以非零值為條件;第二條ADD指令的條件B0為0?!?”表示條件取反。[B0]ADD.L1A1,A2,A3||[!B0]ADD.L2B1,B2,B310.4.2資源約束

1.對(duì)使用同一功能單元的指令的約束

使用同一功能單元的兩條指令不能出現(xiàn)在同一執(zhí)行包中。下面的執(zhí)行包是不正確的:ADD.S1A0,A1,A2;||SHR.S1A3,15,A4;同一執(zhí)行包的兩條指令使用了.S1功能單元下面的執(zhí)行包是正確的:ADD.L1A0,A1,A2;||SHR.S1A3,15,A4;兩條指令使用兩個(gè)不同的功能單元2.對(duì)交叉通道(1X和2X)的約束

每一個(gè)執(zhí)行包在每一個(gè)數(shù)據(jù)通道中可以有一個(gè)單元(.L,.S和.M單元中的任一個(gè))通過交叉通道(1X和2X)從另一側(cè)的寄存器文件中讀取資源操作數(shù)。例如,.S1中可以從A寄存器文件中讀取它的一條指令的兩個(gè)源操作數(shù),或者可以通過1X交叉通道從B寄存器文件中讀取一個(gè)源操作數(shù),從寄存器A中讀取另一個(gè)源操作數(shù)。這種通道約束操作是通過在指令語(yǔ)句中的功能單元名后加上“X”實(shí)現(xiàn)的。下面的執(zhí)行包無效:ADD.L1XA0,B1,A1;||MPY.M1XA4,B4,A5;1x交叉通道被兩條指令同時(shí)使用下面的執(zhí)行包是有效的:ADD.L1XA0,B1,A1;||MPY.M2XB4,A4,B2;兩條指令分別使用1x和2X交叉通道如果指令域中的Xbit位被設(shè)置,那么操作數(shù)將從另一側(cè)的寄存器文件中提取。3.對(duì)裝載和存儲(chǔ)的限制

裝載/存儲(chǔ)指令向其他寄存器文件裝載或從其他寄存器文件存儲(chǔ)時(shí),可以使用從一個(gè)寄存器文件中的同一個(gè)地址指針;使用同一寄存器文件中的同一源/目的操作數(shù)的兩條指令,不能同時(shí)出現(xiàn)在同一個(gè)執(zhí)行包中。地址寄存器必須和使用的.D功能單元在同一寄存器文件中。下面的執(zhí)行包是無效的:LDW.D1*A0,A1;||LDW.D2*A2,B2.D2功能單元使用了A寄存器文件中的同一寄存器下面的執(zhí)行包是有效的:LDW.D1*A0,A1;||LDW.D2*B0,B2來自于正確的寄存器文件的地址寄存器文件如果兩條裝載指令/存儲(chǔ)指令向同一寄存器文件裝載數(shù)據(jù)或從同一寄存器存儲(chǔ)數(shù)據(jù),那么它們將不會(huì)出現(xiàn)在相同的執(zhí)行包中。下面的執(zhí)行包是不正確的:LDW.D1*A4,A5;向/從同一寄存器文件裝載和存儲(chǔ)(A5、A6)||TW.D2A6,*B4;下面的執(zhí)行包是正確的:LDW.D1*A4,B5;裝載目標(biāo)寄存器和存儲(chǔ)源寄存器位于不同寄存器文件(B5、A6)||STW.D2A6,*B4;LDW.D1*A0,B2;裝載到不同的寄存器文件||LDW.D2*B0,A1;4.對(duì)寄存器讀寫的約束

在同一周期里同一寄存器不能有4次以上的讀操作;這不包括條件寄存器。下列代碼序列是無效的:MPY.M1A1,A1,A4;||ADD.L1A1,A1,A5||SUB.D2xA1,A2,A3寄存器A1出現(xiàn)了5次讀操作下列代碼序列是有效的:MPY.M1A1,A1,A4;||[A1]ADD.L1A0,A1,A5||SUB.D1A1,A2,A3寄存器A1只出現(xiàn)4次讀操作兩條寫指令不能在同一周期內(nèi)對(duì)同一寄存器進(jìn)行操作。只要它們不在同一周期內(nèi)向同一目的寄存器寫入時(shí),兩條寫指令就能并行運(yùn)算。例如,一條i周期的MPY指令之后,緊接著一條i+1指令周期的ADD指令,那么就不能向同一寄存器寫入數(shù)據(jù),因?yàn)樗鼈兺瑫r(shí)于i+1指令周期往寄存器寫結(jié)果。因此,除非在MPY指令之后發(fā)生跳轉(zhuǎn)導(dǎo)致ADD指令不被馬上執(zhí)行,否則下列指令序列是無效的:MPY.M1A0,A1,A2ADD.L1A4,A5,A2而下面的指令序列是有效的:MPY.M1A0,A1,A2||ADD.L1A4,A5,A210.4.3尋址模式(ADDRESSINGMODES)

‘C62X和C67x尋址模式有線性尋址、使用BK0的循環(huán)尋址和使用BK1的循環(huán)尋址。尋址模式由地址模式寄存器(AMR)標(biāo)識(shí)。所有的寄存器都可以線性尋址。但只有8個(gè)寄存器可以循環(huán)尋址,它們是.D1功能單元的A4~A7和.D2功能單元的B4~B7。其他的寄存器都不能循環(huán)尋址。1.線性尋址模式(1)LD/ST指令對(duì)裝載和存儲(chǔ)指令而言,線性尋址模式只不過是簡(jiǎn)單地將OffsetR/Cst

操作數(shù)據(jù)的字、半字或字節(jié)移動(dòng),分別左移2位、1位或0位。然后完成一次加法ADD或一次減法到baseR寄存器(依賴于操作說明)。(2)ADDA/SUBA指令對(duì)于整數(shù)的加法和減法指令,線性尋址模式只是簡(jiǎn)單地將Srcl、cst

操作數(shù)據(jù)按照字、半字或字節(jié)數(shù)據(jù)尺寸左移2位、1位或0位。2.循環(huán)尋址模式

尋址模式寄存器(AMR)中的BK0和BK1域標(biāo)識(shí)循環(huán)尋址的塊尺寸大小。(1)LD/ST指令2.循環(huán)尋址模式

按照LDW,LDH(U)或LDB(U)分別將offsetR、CST左移2位、1位或0位之后,作加法或減法運(yùn)算。此時(shí),禁止N和N+1之間的進(jìn)位/借位運(yùn)算,baseR的位N+1到31位保持不變,而其他位的進(jìn)位/借位運(yùn)算照常進(jìn)行。如果標(biāo)識(shí)的offsetR/sct大于循環(huán)尋址的緩沖大小,2N+1,那么有效的offsetR/sct是用緩沖區(qū)尺寸對(duì)其求模所得,見圖10-12。圖10-12按循環(huán)尋址模式尋址的LDW(2)ADDA/SUBA指令

對(duì)ADDA、ADDAH或ADDAB將src1/cst分別左移2位,1位或0位之后,進(jìn)行加法或減法,它在N和N+1之間禁止進(jìn)位/借位。Src2的N+1到31bit位(包括31)保持不變。其他進(jìn)位/借位運(yùn)算保持不變。與前面LD/ST指令模式類似,圖10-13給出ADDAH對(duì)存儲(chǔ)器對(duì)寄存器A4在BK0=4為條件下按循環(huán)尋址的方式操作的例子。圖10-13中緩沖區(qū)為大小32字節(jié),16字節(jié),8個(gè)字,AMR中為值00040000H。圖10-13尋址模式尋址ADDAH10.5‘C62X流水線

C62X流水線提供了簡(jiǎn)化編程和改善性能的靈活性。它通過消除流水線連鎖簡(jiǎn)化流水線控制。增加的流水性消除程序取指、數(shù)據(jù)訪問和乘法操作中傳統(tǒng)的結(jié)構(gòu)瓶徑。它提供了單周期指令的好處。流水線可以在每個(gè)周期并行發(fā)送8條指令;每一流水線相的并行指令可以同時(shí)處理;序列指令通過指令間固定相對(duì)相差異來處理;裝載和存儲(chǔ)地址在相同的流水線階段出現(xiàn)在CPU邊界,消除了read-after-write在存儲(chǔ)器中的沖突。所有指令要求取指和譯碼相同的流水線相數(shù)目?!瓹62x中的所有指令的流水線相被劃分為3個(gè)階段:取指、譯碼和執(zhí)行。取指有4個(gè)階段,譯碼為3個(gè),執(zhí)行階段的相數(shù),依賴于指令類型,變化較大。圖10-14定點(diǎn)流水線階段10.5.1取指(fetch)流水線取指相4個(gè)階段是:PG:程序地址產(chǎn)生;PS:程序地址發(fā)送;PW:程序訪問讀等待;PR:程序取指包接收?!瓹62X使用一個(gè)8條指令的取指包(FP),所有8條指令和取指流程,即通過PG、PS、PW和PR,一起處理。圖10-15流水線的取指相。圖10-15流水線的取指相10.5.2譯碼(decode)

流水線的譯碼相是,DP:指令發(fā)送,DC:指令譯碼。在流水線的DP相,取指包被分裂成執(zhí)行包。執(zhí)行包由一條指令組成,或由2-8條并行指令組成。在DP相階段,一個(gè)執(zhí)行包的指令被分配到合適的功能單元。在DC相,源寄存器、目標(biāo)寄存器和輔助通道為功能單元的指令執(zhí)行譯碼。圖10-16流水線的譯碼相。(a)中譯碼相從左到右的順序序列;(b)中顯示了流水線譯碼相的一個(gè)取指包,它包含了這一階段被處理的兩個(gè)執(zhí)行包。取指包(FP)的最后6條指令是并行的,并形成一個(gè)執(zhí)行包(EP);這個(gè)EP處在譯碼階段的發(fā)送相(DP);箭頭指示每條指令分配的在同一指令周期里用于執(zhí)行的功能單元。取指包(FP)的第8個(gè)序列NOP指令不發(fā)送到功能單元,因?yàn)闊o相關(guān)執(zhí)行。圖10-16流水線的譯碼相

10.5.3執(zhí)行(execute)定點(diǎn)流水線的執(zhí)行部分被劃分為5相(E1-E5)。為完成執(zhí)行操作,不同指令類型要求這些相的數(shù)目不同。這些流水線相在理解CPU周期邊界的器件狀態(tài)起著重要作用。流水線中不同類型指令執(zhí)行情況表示在圖10-17中。圖10-17(a)顯示了從左到右順序序列的執(zhí)行相;(b)是執(zhí)行出現(xiàn)時(shí)功能模塊端口。圖10-17流水線執(zhí)行相10.5.4流水線操作總結(jié)圖10-18所示為‘C62X定點(diǎn)流水線相每一個(gè)階段的所有相,順序?yàn)閺淖蟮接覉D10-18‘C62X定點(diǎn)流水線相圖10-19‘C62X流水線操作,每個(gè)取指包對(duì)應(yīng)的一個(gè)執(zhí)行包圖10-19顯示了取指包流水線的例子,它包含8條并行指令。在這種情況下,流水線是滿負(fù)荷的,所有在一個(gè)取指包里的指令都是并行的,并分裂為每個(gè)取指包一個(gè)執(zhí)行包。這個(gè)取指包以鎖鏈方式流動(dòng),通過流水線的每一相。10.6中斷

中斷是計(jì)算機(jī)技術(shù)中最終要的概念之一,在DSP技術(shù)中也如此。沒有中斷就沒有計(jì)算機(jī)的正確運(yùn)行。象我們走路一樣,沒有停止機(jī)制,就沒有正確安全的前進(jìn);不僅如此,沒有停止機(jī)制,還會(huì)導(dǎo)致混亂和事故,在計(jì)算機(jī)技術(shù)中,中斷起著同樣的作用。所以隨著計(jì)算機(jī)技術(shù)的發(fā)展,中斷的概念及其理論將會(huì)在智能控制領(lǐng)域里發(fā)揮更加重要的作用。10.6中斷

CPU工作在包含多個(gè)異步事件外部環(huán)境中。這些事件發(fā)生時(shí)要求DSP執(zhí)行相應(yīng)的任務(wù)。中斷就是一個(gè)事件。這個(gè)事件要求停止。CPU當(dāng)前的處理過程并轉(zhuǎn)向因事件發(fā)生而需要完成的任務(wù)。這些中斷的中斷源可以是片內(nèi)或片外的,如時(shí)鐘、模數(shù)轉(zhuǎn)換器、通信及其他外圍設(shè)備。10.6.1中斷類型及所用信號(hào)1.中斷類型‘C62x和C67X有不同優(yōu)先權(quán)的三種類型的中斷。這三種類型的中斷靠?jī)?yōu)先權(quán)差別排列。如表10-11所示。下面分別介紹。表10-11中斷類型及優(yōu)先權(quán)

(1)Reset中斷具有最高優(yōu)先權(quán),用于停止CPU,并將CPU返回到已知的初始狀態(tài)。它對(duì)應(yīng)著reset信號(hào)。它在眾多方法上具有獨(dú)特性:對(duì)應(yīng)信號(hào)reset為低電平有效信號(hào)。所有其他中斷信號(hào)都是高電平有效。必須保持低電平10個(gè)時(shí)鐘周期以上,才能重新正確初始化CPU。中斷發(fā)生時(shí),所有執(zhí)行中的指令都放棄執(zhí)行,所有寄存器都回到缺省態(tài)。(2)非屏蔽中斷(NMI)NMI是第二優(yōu)先級(jí)中斷,通常用于向CPU發(fā)出嚴(yán)重硬件錯(cuò)誤警告,如緊急電源錯(cuò)誤。對(duì)于出現(xiàn)的非屏蔽中斷(NMI),中斷使能寄存器(IER)中的中斷NMI使能位(NMIE)必須置為1。如果NMIE置為1,惟一能阻止NMI中斷處理的條件是,NMI中斷發(fā)生在跳轉(zhuǎn)(BRANCH)指令的延時(shí)槽中(不管是否跳轉(zhuǎn))。(3)可屏蔽中斷(INT4到INT15)

’C62X\C67X提供12個(gè)可屏蔽中斷。優(yōu)先權(quán)比NMI和reset都低。這些中斷可與外設(shè)、片內(nèi)設(shè)備或軟件控制相聯(lián)系,或者設(shè)置成不可用。假設(shè)一個(gè)可屏蔽中斷在branch指令的延時(shí)槽里沒有發(fā)生(包括條件賦值為假而不完成執(zhí)行的條件branch指令),要處理可屏蔽中斷必須滿足條件:控制狀態(tài)寄存器(CSR)中的全局中斷使能位(GIE)置為1。(4)中斷消息(IACK和INUMX信號(hào))

IACK和INUMX信號(hào)警告‘C62x和‘C67X的外部硬件,已發(fā)生中斷并正在處理中斷。IACK表示CPU已經(jīng)開始處理一個(gè)中斷;INUMX信號(hào)(INUM3-INMU0)指示正在處理中斷的信號(hào)(IFR中的標(biāo)志bit位位置)。例如INUM3=0(MSB),INUM2=1,INUM1=1,INUM0=1(LSB)。這些信號(hào)一起組成一個(gè)4位0111值,表示正在處理中斷INT7。2.中斷服務(wù)表(IST)

當(dāng)CPU按照指令開始處理一個(gè)中斷時(shí),它首先要查找中斷服務(wù)表(IST)。IST就是一個(gè)包含中斷服務(wù)代碼的取指包表格。IST由16個(gè)連續(xù)的取指包構(gòu)成,每個(gè)中斷服務(wù)取指包(ISFP)包含8條指令。一個(gè)簡(jiǎn)單的中斷服務(wù)路徑可以適合于放在一個(gè)單取指包中。圖10-20給出了IST的地址和內(nèi)容。由于每個(gè)取指包含8個(gè)32位指令字,所以圖10-20中每個(gè)ISFP的地址(相鄰的)依次增加32個(gè)字節(jié)(20h)。(1)中斷服務(wù)取址包(ISFP)

ISFP用于中斷服務(wù)取指包。圖10-21顯示的ISFP是一個(gè)包含足夠小的中斷服務(wù)程序,可以置于一個(gè)單取指包(FP)中。為了能使中斷服務(wù)返回到主程序,F(xiàn)P中包含一個(gè)跳轉(zhuǎn)(branch)到中斷返回指針的指令(BIRP)。這個(gè)指令之后跟著一個(gè)NOP5指令,以使跳轉(zhuǎn)(branch)目標(biāo)可以進(jìn)入流水線執(zhí)行階段。圖10-21中斷服務(wù)取指包(ISFP)

圖10-20中斷服務(wù)表(IST)(2)中斷服務(wù)表指針寄存器(ISTP)ISTP寄存器用于定位中斷服務(wù)程序。對(duì)其中一個(gè)域或位段,ISTB用于確認(rèn)中斷服務(wù)表(IST)地址的基端口;另一個(gè)域或位段HPEINT鑒別特殊的中斷,并鑒別其在IST內(nèi)部對(duì)應(yīng)的特定取指包的地址。圖10-23給出了ISTP的位段。表10-12對(duì)這些位段及其使用進(jìn)行了說明。圖10-23中斷服務(wù)表指針(ISTP)

表10-12中斷服務(wù)指針(ISTP)位段說明

3.中斷控制寄存器總結(jié)

總結(jié)一下‘C62X和‘C67X的8個(gè)中斷控制寄存器??刂茽顟B(tài)寄存器(CSR)和中斷使能(IER)用來使能或非使能中斷處理。中斷標(biāo)志寄存器(IFR)顯示掛起態(tài)等待處理的中斷。中斷設(shè)定寄存器(ISR)和中斷清除寄存器(ICR)用于手動(dòng)中斷處理過程。此外,還有3個(gè)指針寄存器。ISTP指向中斷服務(wù)表。NRP、IRP是返回指針,是分別從可屏蔽中斷、不可屏蔽中斷處理返回時(shí)使用的指針。關(guān)于其詳細(xì)解釋見相關(guān)手冊(cè)[1]。(控制狀態(tài)寄存器-CSR)控制狀態(tài)寄存器(CSR)包含兩個(gè)域或位段:GIE和PGIE,它們控制著中斷。如圖10-25和表10-13所示。寄存器的其他域或位段用于其他用途。圖10-25控制狀態(tài)寄存器表10-13控制狀態(tài)寄存器(CSR)中斷控制位段例10-2全局性屏蔽(非使能)可屏蔽中斷代碼序列

MVCCSR,BO;獲取CSRAND-2,BO,BO;準(zhǔn)備清除GIEMVCBO,CSR;設(shè)置GIE例10-3全局性使能可屏蔽中斷代碼序列

MVCCSR,BO;獲取CSROR1,BO,BO;準(zhǔn)備設(shè)置GIEMVCBO,CSR;GIE置110.6.3單個(gè)中斷控制服務(wù)處理中斷要求要有效地對(duì)三類中斷(reset、不可屏蔽中斷、可屏蔽中斷)都單個(gè)地控制。使能中斷或屏蔽(非使能)單個(gè)中斷,可以通過中斷使能寄存器(IER)完成。掛起態(tài)待處理中斷在中斷標(biāo)志寄存器(IFR)中有相應(yīng)的狀態(tài)位,即存儲(chǔ)在IFR中。通過使用中斷設(shè)置寄存器(ISR)和中斷清除寄存器(ICR)可以實(shí)現(xiàn)手動(dòng)中斷處理。在完成非屏蔽中斷和可屏蔽中斷程序后,通過中斷返回指針可恢復(fù)程序原來狀態(tài)。1.使能和屏蔽中斷(中斷使能寄存器-IER)

IER中對(duì)應(yīng)的bit位代表著中斷,通過對(duì)它們置1或清0,可以使單個(gè)中斷為使能或受屏蔽。中斷處理過程被觸發(fā),只有在IER中代表中斷的對(duì)應(yīng)bit位被置為1時(shí)才能發(fā)生。其中IER的0bit位對(duì)應(yīng)于reset中斷。這個(gè)位是只讀的,值為1,因此,reset中斷始終是使能的,即無法不能對(duì)reset進(jìn)行屏蔽。IER中的IE4到IE15bit位是可寫的,值寫為1或0,它們分別代表使能中斷或屏蔽中斷,即如圖10-26。圖10-26中斷使能寄存器例10-4使能一個(gè)單中斷(INT9)的代碼序列

NVK200h,B1;設(shè)第9bit位的值

MVCIER,B0;獲取IER的值

ORB1,B0,B0;準(zhǔn)備設(shè)置IE9MVCB0,B0,IER;設(shè)IER中第9位值例10-5非使能(屏蔽)單中斷(NMT9)的代碼序列

MVKFDFFh,B1;清第9位的值為0MVCIER,B0;

ANDB1,B0,B0;準(zhǔn)備清除IE9MVCB0,IER;IER中第9bit位清0中斷的狀態(tài)、設(shè)定中斷和清除中斷(中斷標(biāo)志寄存器IFR,中斷設(shè)置寄存器ISR,中斷清除寄存器ICR)

中斷標(biāo)志寄存器(IFR)中包含了INT15~INT4中斷的狀態(tài)和NMI。當(dāng)這些中斷發(fā)生時(shí),對(duì)IFR中對(duì)應(yīng)的bit位置1,否則bit位置0。如果想檢查中斷發(fā)生時(shí)的狀態(tài),就用MVC指令讀IFR內(nèi)容。見圖10-27。圖10-27中斷標(biāo)志寄存器(IFR)圖10-28中斷設(shè)置寄存器(ISR)圖10-29中斷清除寄存器(ICR)例10-6設(shè)定一個(gè)單體中斷(INT6)的代碼,并讀這個(gè)標(biāo)志寄存器。

MVK40h,B3MVCB3,ISRNOPMVCIFR,B4例10-7清除一個(gè)中斷(INT6)的代碼,并讀這個(gè)標(biāo)志寄存器。

MVK40h,B3MVCB3,ICRNOPMVCIFR,B43.從中斷服務(wù)任務(wù)返回Reset信號(hào)升為高電平后,控制寄存器被設(shè)置為已知的一個(gè)值,從地址0h開始執(zhí)行程序。在不可屏蔽中斷和可屏蔽中斷的服務(wù)程序執(zhí)行完后,用一個(gè)對(duì)應(yīng)指向返回指針寄存器的branch指令使程序回到前一個(gè)狀態(tài)繼續(xù)執(zhí)行。(1)reset后的CPU狀態(tài)在reset之后,控制寄存器和bit位值將包含如下值:AMR,ISR,ICR,IFR,ISTP=0hIER=1hIRR,NRP=undefine(不確定)CSR的15~0位:=100h,在little(小)-endian

模式中;=000h,在big(大)-endian

模式中。(2)從不可屏蔽中斷返回

(NMI返回指針寄存器-NRP)

NMI處理之后,NMI返回指針寄存器(NRP)包含了返回指針,它引導(dǎo)CPU回到原來的正確地址,繼續(xù)執(zhí)行返回指針。當(dāng)NMI中斷處理完成時(shí),用一個(gè)branch(跳轉(zhuǎn))指令返回到原來的程序執(zhí)行,這個(gè)跳轉(zhuǎn)指令使用了用戶中斷服務(wù)程序中的NRP中的地址。(3)從可屏蔽中斷返回(中斷返回指針寄存器-IRP)中斷返回指針寄存器(IRP),包含一個(gè)在可屏蔽中斷處理完成后,引導(dǎo)CPU返回到原來的程序地址,繼續(xù)執(zhí)行返回指針。在中斷服務(wù)程序中branch指令使用IRP中的這個(gè)地址(BIRP)使程序在中斷服務(wù)結(jié)束后,返回到原來的程序流,繼續(xù)執(zhí)行。10.6.4中斷探測(cè)和處理

當(dāng)產(chǎn)生一個(gè)中斷時(shí),它在IFR中設(shè)定一個(gè)對(duì)應(yīng)的標(biāo)志位。根據(jù)具體條件,中斷可能被處理,也可能不被處理。本小節(jié)將討論標(biāo)志位的設(shè)定方法、中斷處理的條件以及探測(cè)和中斷的順序,Reset中斷和非reset中斷的異同等。1.非reset中斷標(biāo)志的設(shè)定

圖10-30顯示了‘C62X的非reset中斷(INTm)的探測(cè)和處理過程。在CPU邊界外部引角(pin)上的中斷INTm信號(hào)電平由低變高后,IFR中對(duì)應(yīng)INTm標(biāo)志位(IFm)置為1。圖10-30TMS320C62X非reset中斷探測(cè)和處理2.處理reset中斷的條件

在圖10-30中的時(shí)鐘周期4里,探測(cè)到了一個(gè)等待處理的非reset中斷。對(duì)于這樣一個(gè)要被處理的中斷,在同一周期里下列條件必須是有效的,而且每一個(gè)時(shí)鐘周期里這些條件必須被評(píng)估,即IFm在CPU周期6期間設(shè)置為1(這取決于CPU周期4的中斷邏輯);IER中沒有更高優(yōu)先權(quán)的中斷標(biāo)志位(IFm)bit位;IER中相應(yīng)bit位被置為1(IEM=1);GIE=1;NMIE=1;3.非reset中斷處理期間采取的動(dòng)作

在圖10-30中CPU周期6~12將產(chǎn)生以下中斷處理動(dòng)作:隨后發(fā)生的非reset中斷被非使能(屏蔽);除NMI以外,對(duì)于的所有非reset中斷,PGIE被設(shè)置成GIE的值,然后GIE被清0。對(duì)于NMI中斷,NMIE被清0。3.非reset中斷處理期間采取的動(dòng)作

后面的執(zhí)行指令包(從n+5開始)被取消。如果一個(gè)執(zhí)行指令要在特殊的流水線階段被取消。那么它不會(huì)修改任何CPU狀態(tài)。取消也將迫使一個(gè)指令在未來的流水線階段被取消。第一個(gè)被取消的執(zhí)行指令包(n+5)的地址被存入到NRP(NMI中斷時(shí))或IRP(其他中斷)。對(duì)于‘C62x,指向ISTP所保持地址(對(duì)于INTm,指針指向ISFP)的branch指令在周期7期間被強(qiáng)迫進(jìn)入流水線的E1階段。4.設(shè)置TMS320C62的reset中斷標(biāo)志

Reset信號(hào)必須保持10個(gè)時(shí)鐘周期以上。在reset變?yōu)楦叩暮?個(gè)周期里,reset處理矢量開始。當(dāng)reset信號(hào)從底到高轉(zhuǎn)變,其上升沿到達(dá)CPU外圍時(shí),設(shè)置reset在IFR中的標(biāo)志位(IF0),置為1。在圖10-31中,IF0在CPU周期15被置為1。這個(gè)上升沿是按基于時(shí)鐘周期的時(shí)鐘周期探測(cè)的,并且不受存儲(chǔ)器失效而導(dǎo)致的CPU時(shí)鐘延長(zhǎng)的影響。圖10-31reset中斷探測(cè)和處理:流水線操作5.

RESET中斷處理期間產(chǎn)生的操作

Reset中斷處理被執(zhí)行的唯一條件就是reset引腳出現(xiàn)低電平。一旦reset信號(hào)由高跳到低,流水線被刷新,CPU寄存器就返回到復(fù)位默認(rèn)值。此時(shí),GIE、NMIE和ISTP中的ISTB都被清除。在圖10-31中的CPU周期15~21,產(chǎn)生下列中斷操作:接下來的所有非reset中斷處理被屏蔽,這是由于GIE和NMIE被清0所致。5.

RESET中斷處理期間產(chǎn)生的操作

指向ISTP所保持地址(指向INT0的ISFP指針)的branch指令在周期16被強(qiáng)迫進(jìn)入流水線E1相位。在周期16,產(chǎn)生IACK信號(hào)和合適的INUMx信號(hào)以指示正在處理reset中斷。IF0在周期17被清0。要注意,在復(fù)位后,啟動(dòng)運(yùn)行的代碼必須清楚地使能GIE,NMIE和IER,以允許中斷被處理。10.6.5中斷及軟件編程問題1.單分配任務(wù)編程為避免發(fā)生不可預(yù)知的操作,用戶必須使用單分配代碼編程,以防可能的中斷;當(dāng)發(fā)生中斷時(shí),在中斷處理開始前,進(jìn)入E1相位的所有指令允許完成執(zhí)行任務(wù)(通過E5相位)。所有其他指令被取消,并將在從中斷處理返回后重新取指。中斷處理返回后的指令不產(chǎn)生任何延時(shí)槽,這些是中斷處理前的指令。例10.8中表示的是假設(shè)在本例中到達(dá)代碼前,寄存器A1包含數(shù)值為0;寄存器A0指向一個(gè)包含數(shù)據(jù)值為10的存儲(chǔ)器地址。ADD指令,它正處于LDW指令地延時(shí)槽中,將A2中的值與A1(0)相加的結(jié)果(A3中)正好是與A2值一樣的。如果在LDW和ADD指令之間發(fā)生一個(gè)中斷,LDW將對(duì)A1的更新(其值更新成10)。而在例10-9中使用了單個(gè)分配的方法。寄存器A1只被分配到ADD指令的輸入,而不是LDW的輸出結(jié)果。這樣不管有無中斷,不管A6取何值,A1的值與A2相加之前是不變的。這樣A3的結(jié)果等于A2。例10-9采用單分配代碼

LDW.D1*A0,A6ADD.L1A1,A2,A3NOP3MPY.M1A6,A4,A5;使用新值A(chǔ)62.嵌套中斷

通常,當(dāng)CPU進(jìn)入一個(gè)中斷服務(wù)程序時(shí),中斷就被非使能(屏蔽)。然而,當(dāng)中斷服務(wù)程序是某個(gè)可屏蔽中斷(INT4-INT15)服務(wù)程序時(shí),NMI中斷可以打斷可屏蔽中斷的中斷處理過程。換句話說,一個(gè)NMI可以中斷一個(gè)可屏蔽中斷,而無論是一個(gè)NMI還是一個(gè)可屏蔽中斷都不能中斷一個(gè)NMI。2.嵌套中斷

有時(shí)想讓一個(gè)中斷能被另一個(gè)中斷(優(yōu)先權(quán)更高)所中斷。盡管處于缺省態(tài)的處理器不允許中斷程序被中斷,除非這是NMI中斷,嘗試用軟件控制下實(shí)現(xiàn)嵌套中斷是一種方法。這個(gè)過程要求用戶將原來的IRP(或NRP)和IEP保存到存儲(chǔ)器或寄存器(寄存器要么不使用,如果要被接下來的中斷使用,則要保存)。3.手動(dòng)中斷處理

例10-10手動(dòng)中斷處理

MVCISTP,B2;獲取相應(yīng)的ISFP地址

EXTUB2,23,27,B1;壓縮HPEINT[B1]BB2;分支到中斷服務(wù)程序

||[B1]MVK1,A0;設(shè)置ICR字

[B1]MVKRET_ADR,B2;創(chuàng)建返回地址

[B1]MVKHRET_ADR,B2[B1]MVCB2,IRP;保存返回地址

[B1]SHLA0,B1,B2;創(chuàng)建ICR字

[B1]MVCB1,ICR清除中斷標(biāo)志

RET_ADR:中斷服務(wù)程序代碼10.7應(yīng)用程序開發(fā)實(shí)例

圖10-32DSPc程序開發(fā)流程10.7.1快速傅里葉變換(FFT)的DSP實(shí)現(xiàn)由第四章我們知道,快速傅里葉變換是離散傅立葉變換(DFT)是一種快速算法。它是數(shù)字信號(hào)理領(lǐng)域中的一項(xiàng)重大突破,它充分考慮了計(jì)算機(jī)特點(diǎn)和數(shù)字硬件實(shí)現(xiàn)的約束條件,提出了機(jī)器操作的高效運(yùn)算結(jié)構(gòu),使DSP的計(jì)算效率提高了幾倍,計(jì)算時(shí)間縮短了約2個(gè)數(shù)量級(jí),由于采用同址運(yùn)算結(jié)構(gòu),有效減少了計(jì)算所需的存儲(chǔ)量。針對(duì)’C62x

DSP所采用的FFT算法仍然可以是基2按時(shí)間抽取的快速算法。這里實(shí)現(xiàn)一個(gè)256點(diǎn)實(shí)數(shù)(2N=256)FFT運(yùn)算。在具體實(shí)現(xiàn)FFT運(yùn)算過程時(shí),首先

溫馨提示

  • 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)論