第三章Blackfin的尋址方式及指令系統(tǒng)(電子科技大學(xué))_第1頁(yè)
第三章Blackfin的尋址方式及指令系統(tǒng)(電子科技大學(xué))_第2頁(yè)
第三章Blackfin的尋址方式及指令系統(tǒng)(電子科技大學(xué))_第3頁(yè)
第三章Blackfin的尋址方式及指令系統(tǒng)(電子科技大學(xué))_第4頁(yè)
第三章Blackfin的尋址方式及指令系統(tǒng)(電子科技大學(xué))_第5頁(yè)
已閱讀5頁(yè),還剩80頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

BlackfinDSP的尋址方式及指令系統(tǒng)本章參考書(shū):

Blackfin?ProcessorProgrammingReference,內(nèi)核結(jié)構(gòu)及存儲(chǔ)器結(jié)構(gòu)回顧DSP技術(shù)<2>內(nèi)核結(jié)構(gòu)(知識(shí)回顧)DSP技術(shù)<3>two16-bitmultiplierstwo40-bitaccumulatorstwo40-bitarithmeticlogicunits(ALUs)four8-bitvideoALUsone40-bitshiftereight32-bitregistersor

16independent16-bitregisters存儲(chǔ)器結(jié)構(gòu)(知識(shí)回顧)所有資源,如內(nèi)部存儲(chǔ)器、外部存儲(chǔ)器、I/O控制寄存器都統(tǒng)一用32位地址映射到4GB空間L1存儲(chǔ)器由內(nèi)核直接訪問(wèn),性能最高外部存儲(chǔ)器通過(guò)ExternalBusInterfaceUnit(EBIU)訪問(wèn)DMA可以提供高帶寬的數(shù)據(jù)搬移。它可在內(nèi)部存儲(chǔ)器和外部存儲(chǔ)器之間提供代碼及數(shù)據(jù)的塊傳輸DSP技術(shù)<4>內(nèi)部存儲(chǔ)器:每個(gè)Blackfin處理器包含3個(gè)塊的片內(nèi)存儲(chǔ)器,內(nèi)核對(duì)這些存儲(chǔ)器可以進(jìn)行高速訪問(wèn)L1指令存儲(chǔ)器,由SRAM和cache組成。該存儲(chǔ)器可以被處理器全速訪問(wèn)。L1數(shù)據(jù)存儲(chǔ)器,由SRAM和(或)cache組成。該存儲(chǔ)器可以被處理器全速訪問(wèn)。L1高速暫存RAM,該存儲(chǔ)器可與L1存儲(chǔ)器以相同的速度訪問(wèn),但它只能用作數(shù)據(jù)SRAM,而不能配置成cache。L2存儲(chǔ)器,容量比L1大,訪問(wèn)性能比L1稍低,作為多核之間的共享內(nèi)存,可以存放數(shù)據(jù)和指令,但不能用作cacheDSP技術(shù)<5>外部存儲(chǔ)器:通過(guò)外部總線擴(kuò)展器ExternalBusInterfaceUnit(EBIU)進(jìn)行訪問(wèn)。它是一個(gè)16位總線接口,可以與多種類(lèi)型的存儲(chǔ)器進(jìn)行無(wú)縫連接,如SDRAM、flashmemory、EPROM、ROM、SRAM、memory-mappedI/O設(shè)備。I/O內(nèi)存空間:Blackfin沒(méi)有定義獨(dú)立的I/O空間,所有I/O設(shè)備的控制寄存器都通過(guò)32位地址映射到統(tǒng)一的4GB地址空間。DSP技術(shù)<6>RegisterFiles(知識(shí)回顧)處理器的運(yùn)算單元定義有3個(gè)寄存器組——DataRegisterFile,PointerRegisterFile,TheDAGregisters數(shù)據(jù)寄存器:用于接收從數(shù)據(jù)總線輸入的操作數(shù)以及

保存運(yùn)算單元的運(yùn)算結(jié)果指針寄存器:存放地址指針地址發(fā)生寄存器:這是一組專(zhuān)門(mén)的寄存器,用于管理在數(shù)字信號(hào)處理運(yùn)算過(guò)程中的循環(huán)緩沖器,實(shí)現(xiàn)地址產(chǎn)生的零開(kāi)銷(xiāo)DSP技術(shù)<7>地址算術(shù)單元寄存器組DSP技術(shù)<8>數(shù)據(jù)運(yùn)算單元寄存器組:R0~R7操作舉例32位訪問(wèn):R2=R1+R2;16位訪問(wèn):R2.L=R1.H*R0.L在寄存器組與L1數(shù)據(jù)存儲(chǔ)器之間連接有3組32位的獨(dú)立數(shù)據(jù)總線,包括2個(gè)Load,和1個(gè)StoreDSP技術(shù)<9>累加器寄存器:A0~A1結(jié)構(gòu)16位:An.L,An.H8位擴(kuò)展位:An.X32位:An.W40位:AnDSP技術(shù)<10>操作舉例A0=A1;/*40-bitmove*/A1.W=R7;/*32-bitmove*/A0.H=R5.H;/*16-bitmove*/R6.H=A0.X;/*read8-bitvalueandsignextendto16bits*/DSP技術(shù)<11>算術(shù)邏輯單元ALU2個(gè)ALUs實(shí)現(xiàn)定點(diǎn)數(shù)據(jù)的算術(shù)及邏輯運(yùn)算。ALU定點(diǎn)指令對(duì)16-,32-,and40-bit的操作數(shù)進(jìn)行運(yùn)算,得到16-,32-,or40-bit的定點(diǎn)輸出。ALU指令包括:寄存器加減立即數(shù)加減乘法器結(jié)果加減邏輯運(yùn)算:AND,OR,NOT,XOR,bitwiseXOR,Negate函數(shù)運(yùn)算:ABS,MAX,MIN,四舍五入,除法DSP技術(shù)<12>乘累加單元(MAC)2個(gè)乘法器(MAC0和MAC1)實(shí)現(xiàn)定點(diǎn)乘法和乘累加運(yùn)算。乘法器實(shí)現(xiàn)兩個(gè)16位數(shù)相乘,得到32位結(jié)果,乘法結(jié)果可用于累加器進(jìn)行40位的加減運(yùn)算。乘法運(yùn)算乘加運(yùn)算(結(jié)果可舍入)乘減運(yùn)算(結(jié)果可舍入)DSP技術(shù)<13>桶形移位寄存器BarrelShifter桶形移位寄存器實(shí)現(xiàn)16-,32-,or40-bit的移位運(yùn)算。包括:算術(shù)移位,邏輯移位,旋轉(zhuǎn),以及比特的測(cè)試、置位、封裝、解封裝、指數(shù)位檢測(cè)等。DSP技術(shù)<14>程序控制器PROGRAMSEQUENCER程序控制器控制程序流并提供處理器要執(zhí)行的下條指令的地址。程序流大部分是線性的,此時(shí)處理器順序地執(zhí)行程序指令。當(dāng)程序采用非順序結(jié)構(gòu)時(shí),線性程序流會(huì)發(fā)生改變,非順序結(jié)構(gòu)包括:循環(huán)子程序跳轉(zhuǎn)中斷和異??臻eDSP技術(shù)<15>地址算術(shù)單元ADDRESSARITHMETICUNITAAU負(fù)責(zé)保證在內(nèi)存和內(nèi)核寄存器之間進(jìn)行可靠的數(shù)據(jù)傳輸。它可以獨(dú)立地進(jìn)行地址運(yùn)算,以免去數(shù)據(jù)運(yùn)算單元負(fù)擔(dān)地址運(yùn)算。DSP技術(shù)<16>AAU使用數(shù)據(jù)地址產(chǎn)生器計(jì)算數(shù)據(jù)的存取地址DSP技術(shù)<17>AAU實(shí)現(xiàn)多種功能以減小數(shù)據(jù)訪問(wèn)的開(kāi)銷(xiāo)產(chǎn)生地址:在數(shù)據(jù)訪問(wèn)期間提供數(shù)據(jù)地址產(chǎn)生地址后自動(dòng)修改:提供數(shù)據(jù)搬移時(shí)的地址,并為下一次搬移自動(dòng)增減地址產(chǎn)生偏移地址:提供相對(duì)于某個(gè)基地址的偏移量,不改變?cè)嫉刂分羔樞薷牡刂罚涸鰷p地址,不進(jìn)行數(shù)據(jù)搬移位逆序地址:在數(shù)據(jù)搬移時(shí)提供位逆序地址DSP技術(shù)<18>DAG的寄存器索引寄存器I[3:0]:無(wú)符號(hào)32位,保存一個(gè)指向存儲(chǔ)器的地址,如R3=[I0]變址寄存器M[3:0]:有符號(hào)32位,在寄存器數(shù)據(jù)搬移時(shí),提供I寄存器的增量,如R0=[I0++M1]基址和長(zhǎng)度寄存器B[3:0]和L[3:0]:無(wú)符號(hào)32位,Bn和Ln設(shè)置一個(gè)循環(huán)緩沖器的起始地址和尋址范圍,Bn、Ln及In相同下標(biāo)為相關(guān)聯(lián)的一組,公共完成循環(huán)尋址指針寄存器P[5:0],FP,USP,SP:無(wú)符號(hào)32位指針寄存器,在不同的指令中操作和使用。堆棧指針SP僅在監(jiān)控模式下可以訪問(wèn),用戶堆棧指針USP在用戶模式下是可以訪問(wèn)的DSP技術(shù)<19>BLANKFIN指令集簡(jiǎn)介DSP技術(shù)<20>DSP技術(shù)<21>Blackfin指令集特點(diǎn)(1)Blackfin處理器系列匯編語(yǔ)言指令集使用易于編程和可讀性強(qiáng)的代數(shù)語(yǔ)法。采用專(zhuān)門(mén)調(diào)整的靈活的高密度編碼的指令,這些指令被編譯后只占用非常小的存儲(chǔ)空間。指令集還提供了多功能指令,以使在一個(gè)指令中能夠使用多個(gè)處理器內(nèi)核資源。除許多微控制器上常見(jiàn)的功能外,指令集編譯C和C++源代碼時(shí)效率非常高。指令集還支持用戶(算法/應(yīng)用代碼)和管理員(O/S內(nèi)核,設(shè)備驅(qū)動(dòng),調(diào)試器,ISRs)兩種運(yùn)行模式,允許對(duì)處理器內(nèi)核資源的多級(jí)訪問(wèn)。DSP技術(shù)<22>Blackfin指令集特點(diǎn)(2)匯編語(yǔ)言采用了處理器獨(dú)特的體系結(jié)構(gòu),具有以下優(yōu)點(diǎn):無(wú)縫集成DSP/CPU特征,對(duì)8位和16位操作進(jìn)行了優(yōu)化。并發(fā)加載/存儲(chǔ)的改進(jìn)哈佛體系結(jié)構(gòu),每個(gè)周期支持2個(gè)16位MAC或4個(gè)8位ALU+2個(gè)加載/存儲(chǔ)+2個(gè)指針更新。所有的寄存器、I/O、和存儲(chǔ)器被映射成為統(tǒng)一4GB存儲(chǔ)空間,提供了一個(gè)簡(jiǎn)化編程模式。微控制器特征,如任意位和位域操作,插入和提取,對(duì)8位、16位和32位數(shù)據(jù)類(lèi)型上的整數(shù)操作,獨(dú)立的用戶和管理員堆棧指針。代碼密度增強(qiáng),包括混合的16和32位指令(無(wú)模式轉(zhuǎn)換和代碼分離)。常用指令以16位編碼。DAG的尋址DSP技術(shù)<23>DAG尋址方式匯總幀和堆棧指針循環(huán)緩沖尋址位逆序?qū)ぶ匪饕椭羔樇拇嫫鞯乃饕龑ぶ纷詣?dòng)增減尋址預(yù)修改堆棧指針尋址立即數(shù)偏移地址的索引尋址后修改尋址<24>DSP技術(shù)不同位寬的尋址Blackfin是按字節(jié)編址的,但32-,16-,8-bit的訪問(wèn)必須是32-,16-,8-bit對(duì)齊的,對(duì)應(yīng)的DAG寄存器的增量為4,2,1。32比特訪問(wèn):R0=[P3++],訪問(wèn)后P3的增量為416比特訪問(wèn):R0.L=W[I3++],訪問(wèn)后I3的增量為28比特訪問(wèn):R0=B[P3++](Z),訪問(wèn)后P3的增量為1,字節(jié)值可以零擴(kuò)展/符號(hào)擴(kuò)展到32位DSP技術(shù)<25>幀和堆棧指針很多時(shí)候,F(xiàn)P和SP可以像普通的P寄存器一樣來(lái)操作,在Load和Store指令中它們與通用指針類(lèi)似:R1=B[SP](Z)FP和SP還有其特殊的功能,F(xiàn)P作為幀指針可以擴(kuò)展16位編碼的Load/Store操作的尋址范圍;SP作為堆棧指針在堆棧操作的指令中發(fā)揮作用。DSP技術(shù)<26>SP堆棧指針?lè)譃橛脩舳褩V羔樅捅O(jiān)控堆棧指針。用戶模式下:只能訪問(wèn)用戶堆棧指針USP,但匯編程序中的訪問(wèn)別名仍為SP監(jiān)控模式下:可以訪問(wèn)用戶堆棧指針USP,和監(jiān)控堆棧指針SP<27>DSP技術(shù)一些Load/Store指令專(zhuān)用FP和SP來(lái)操作FP-索引Load/Store,擴(kuò)展了16位編碼的加載/保存操作的尋址范圍堆棧的Push/Pop指令鏈接/解除鏈接(Link/Unlink)指令,他們控制堆棧幀空間并為該空間管理FP<28>DSP技術(shù)索引和指針寄存器的索引尋址索引尋址使用I寄存器或者指針寄存器中的值作為有效地址R0=[I2];/*加載32位值*/R0.H=W[I2];/*加載16位值*/R0=B[I2];/*加載8位值*/[P1]=R0;/*保存32位值*/W[P1]=R0;/*保存16位值*/B[P1]=R0;/*保存8位值*/DSP技術(shù)<29>在進(jìn)行8和16位Load操作時(shí)可以進(jìn)行符號(hào)位擴(kuò)展或者零擴(kuò)展。例如,假設(shè)P1指向的地址中的16位值為0x8080,則R0=W[P1](Z);/*R0=0x00008080*/R1=W[P1](X);/*R1=0xFFFF8080*/R2=B[P1](Z);/*R2=0x00000080*/R3=B[P1](X);/*R3=0xFFFFFF80*/DSP技術(shù)<30>索引尋址可以支持立即數(shù)偏移量,這種尋址方式允許程序可以利用一個(gè)數(shù)據(jù)表的基地址,來(lái)獲取數(shù)據(jù)表中的數(shù)據(jù)。而這個(gè)尋址過(guò)程中基地址指針的值不會(huì)被修改。例如,假設(shè)P1=0x64008000,則[P1+n]訪問(wèn)的是0x64008000+n這個(gè)地址上的值。

其中,根據(jù)訪問(wèn)的位寬,P1+n應(yīng)該是位對(duì)齊的,否則會(huì)觸發(fā)一個(gè)異常事件。DSP技術(shù)<31>自動(dòng)增減尋址自動(dòng)增減尋址會(huì)在訪問(wèn)后自動(dòng)更新指針寄存器或者I寄存器。增量大小根據(jù)訪問(wèn)的位寬決定,32、16和8比特訪問(wèn)時(shí)指針的增量分別為4、2、1。8和16比特的讀操作可以指定目標(biāo)寄存器為符號(hào)擴(kuò)展或零擴(kuò)展指針寄存器可以用于8、16和32比特訪問(wèn),而I寄存器只能用于16和32比特訪問(wèn)DSP技術(shù)<32>舉例R0=W[P1++](Z);從P1指向的地址加載一個(gè)16位的值到R0,高位零擴(kuò)展。訪問(wèn)后P1加2R0=[I2--];從I2指向的地址加載一個(gè)32位的值到R0。訪問(wèn)后I2減4DSP技術(shù)<33>預(yù)修改堆棧指針尋址預(yù)修改尋址只用于堆棧指針SP它是在使用SP之前先對(duì)SP進(jìn)行修改僅支持32位操作舉例:[--SP]=R0;將R0壓入堆棧DSP技術(shù)<34>后修改尋址后修改尋址使用I寄存器或者P寄存器的值作為有效地址,然后通過(guò)另一個(gè)寄存器的值來(lái)修改它。P寄存器可以通過(guò)其它的P寄存器來(lái)修改I寄存器可通過(guò)M寄存器來(lái)修改這類(lèi)指令不支持P寄存器作為目的寄存器,也不支持字節(jié)尋址DSP技術(shù)<35>后修改尋址舉例R5=[P1++P2];從P1指向的地址Load一個(gè)32位數(shù)到R5,然后P1=P1+P2R2=W[P4++P5](Z);

從P4指向的地址Load一個(gè)16位值到R2,高位零擴(kuò)展,然后P4=P4+P5R2=[I2++M1];從I2指向的地址Load一個(gè)32位數(shù)到R2,然后I2=I2+M1DSP技術(shù)<36>循環(huán)尋址索引寄存器Ix:是輸出到地址總線上的值變址寄存器Mx:是Ix的增量(步長(zhǎng))基址寄存器Bx:緩沖區(qū)起始地址長(zhǎng)度寄存器Lx:緩沖區(qū)長(zhǎng)度緩沖區(qū)的邊界判斷和地址的計(jì)算方法如下:如果Mx>0時(shí),且Ix+Mx<Bx+Lx,則Ix=Ix+Mx;且Ix+Mx≥Bx+Lx,則Ix=Ix+Mx–Lx;如果Mx<0時(shí),且Ix+Mx≥Bx,則Ix=Ix+Mx;且Ix+Mx<Bx,則Ix=Ix+Mx-Lx。<37>DSP技術(shù)循環(huán)尋址說(shuō)明<38>DSP技術(shù)循環(huán)尋址注意事項(xiàng)預(yù)調(diào)整地址方式不支持循環(huán)尋址方式。在向Bx寄存器寫(xiě)入起始地址的同時(shí),對(duì)應(yīng)的Ix寄存器也會(huì)自動(dòng)賦予相同的值。Bx、Lx、Ix三個(gè)寄存器的序號(hào)必須一致,而Mx寄存器可以在同一個(gè)DAG組中任意選取。兩個(gè)DAG中都可以設(shè)置循環(huán)緩存區(qū)Mx寄存器可以正也可以負(fù)對(duì)Lx和Bx寄存器清零,對(duì)應(yīng)的Ix寄存器自動(dòng)恢復(fù)線性尋址方式。<39>DSP技術(shù)循環(huán)尋址的應(yīng)用構(gòu)建軟件的FIFO一些多維信號(hào)運(yùn)算的緩沖區(qū)管理

,如FFT、矩陣運(yùn)算等DSP技術(shù)<40>位逆序?qū)ぶ窞榱藢?duì)運(yùn)算輸出結(jié)果進(jìn)行有序排列,一些算法(如FFT)需要采用位逆序方式尋址。為了滿足這些需要,DAG的位逆序?qū)ぶ诽卣髟试S重復(fù)的將數(shù)據(jù)序列分小塊并以位逆序方式保存這些數(shù)據(jù)的地址P3+=P0(BREV)<41>DSP技術(shù)比特逆序的加法<42>DSP技術(shù)位逆序的來(lái)歷-FFTFFT計(jì)算過(guò)程:輸入-蝶形運(yùn)算-整序(位逆序)-輸出<43>DSP技術(shù)位逆序?qū)ぶ返母拍钗荒嫘驅(qū)ぶ分饕槍?duì)FFT算法設(shè)計(jì),F(xiàn)FT計(jì)算過(guò)程中輸入數(shù)據(jù)的排列次序被按照一定規(guī)律打亂,稱(chēng)為逆序排列。用m=log2N位二進(jìn)制數(shù)可以表示N個(gè)輸入數(shù)據(jù)的下標(biāo),將二進(jìn)制下標(biāo)的高低位交換,就得到逆序序列。如N=8時(shí),A3的下標(biāo)是011,逆序后變成110,即A6,數(shù)組A0,A1,A2,A3,A4,A5,A6,A7逆序后變成A0,A4,A2,A6,A1,A5,A3,A7。位逆序?qū)ぶ房勺詣?dòng)按照逆序規(guī)律計(jì)算地址,節(jié)省了逆序操作的軟件開(kāi)銷(xiāo)。DAG提供了位逆序?qū)ぶ贩绞健?lt;44>DSP技術(shù)指令集DSP技術(shù)<45>DSP技術(shù)<46>程序流控制指令(1)跳轉(zhuǎn)指令JUMP,JUMP.S,JUMP.L語(yǔ)法JUMP(Preg);跳轉(zhuǎn)至寄存器Preg所指向的一個(gè)絕對(duì)地址JUMP(PC+Preg);跳轉(zhuǎn)至PC(程序計(jì)數(shù)器)的一個(gè)相對(duì)地址,偏移量為Preg寄存器的內(nèi)容JUMPoffset;跳轉(zhuǎn)至PC+offsetJUMP.Soffset;短跳轉(zhuǎn)至PC=PC+offset(13位)JUMP.Loffset;長(zhǎng)跳轉(zhuǎn)至PC=PC+offset(25位)JUMPuser_label;跳轉(zhuǎn)至用戶定義標(biāo)記的絕對(duì)地址其中,Preg:P5–0,SP,FPExamplejumpget_new_sample;跳轉(zhuǎn)至用戶定義標(biāo)記的絕對(duì)地址jump(p5);跳轉(zhuǎn)至寄存器Preg所指向的一個(gè)絕對(duì)地址jump(pc+p2);跳轉(zhuǎn)至PC(程序計(jì)數(shù)器)的一個(gè)相對(duì)地址,偏移量為Preg寄存器的內(nèi)容jump0x224;跳轉(zhuǎn)至PC+offsetjump.s0x224;短跳轉(zhuǎn)至PC=PC+offsetjump.l0xFFFACE86;長(zhǎng)跳轉(zhuǎn)至PC=PC+offsetDSP技術(shù)<47>DSP技術(shù)<48>程序流控制指令(2)條件跳轉(zhuǎn)指令I(lǐng)FCCJUMP語(yǔ)法IFCCJUMPdestination;如果CC=1,則跳轉(zhuǎn)IF!CCJUMPdestination;如果CC=0,則跳轉(zhuǎn)Exampleifccjump0xFFFFFE08(bp);如果CC為1,則后向(0xFFFFFE08是負(fù)值)跳轉(zhuǎn)到一個(gè)偏移地址,BP是分支預(yù)測(cè)選項(xiàng),幫助處理器提高跳轉(zhuǎn)指令的性能。ifccjump0x0B4;如果CC為1,則前向(0x0B4是正值)跳轉(zhuǎn)到一個(gè)偏移地址ifccjumpdest_label;如果CC為1,則跳轉(zhuǎn)到一個(gè)絕對(duì)地址DSP技術(shù)<49>調(diào)用和返回指令(1)子程序調(diào)用指令:CALL語(yǔ)法CALL(Preg);調(diào)用寄存器Preg所指向的一個(gè)絕對(duì)地址的子程序CALL(PC+Preg);調(diào)用PC的一個(gè)相對(duì)地址,偏移量為Preg寄存器的內(nèi)容CALLoffset;調(diào)用一個(gè)相對(duì)地址PC+offset其中,Preg:P5–0,SP,FPCALL指令執(zhí)行后,當(dāng)CALL的下一條指令地址會(huì)被寫(xiě)入到RETS寄存器DSP技術(shù)<50>Examplecall(p5);call(pc+p2);call0x123456;callget_next_sample;DSP技術(shù)<51>調(diào)用和返回指令(2)子程序返回指令:RTS,RTI,RTX,RTN,RTE語(yǔ)法RTS;由子程序返回,將RETS寄存器的值放入PCRTI;由從中斷返回,將RETI寄存器的值放入PCRTX;由特殊情況返回,將RETX寄存器的值放入PCRTN;由非屏蔽中斷返回,將RETN寄存器的值放入PCRTE;由競(jìng)爭(zhēng)返回,將RETE寄存器的值放入PCDSP技術(shù)<52>循環(huán)指令有兩種指令格式第一種是LOOPloop_nameloop_counter;LOOP_BEGINloop_name;LOOP_ENDloop_name;第二種是LSETUP(Begin_Loop,End_Loop)Loop_Counter;Begin_Loop和End_Loop可以是偏移地址或絕對(duì)地址標(biāo)簽,編譯器會(huì)將絕對(duì)地址轉(zhuǎn)換為相對(duì)地址DSP技術(shù)<53>Example1lsetup(4,4)lc0;lsetup(poll_bit,end_poll_bit)lc0;lsetup(4,6)lc1;lsetup(FIR_filter,bottom_of_FIR_filter)lc1;lsetup(4,8)lc0=p1;lsetup(4,8)lc0=p1>>1;DSP技術(shù)<54>Example2loopDoItSomeLC0;loop_beginDoItSome;…loop_endDoItSome;loopMyLoopLC1;loop_beginMyLoop;…loop_endMyLoop;DSP技術(shù)<55>加載指令加載立即數(shù)register=constant;加載指針寄存器P-register=[indirect_address]加載數(shù)據(jù)寄存器D-register=[indirect_address]加載半字D-register=W[indirect_address](Z);零擴(kuò)展D-register=W[indirect_address](X);符號(hào)擴(kuò)展DSP技術(shù)<56>加載字節(jié)D-register=B[indirect_address](Z);零擴(kuò)展D-register=B[indirect_address](X);符號(hào)擴(kuò)展Exampler0=-344(x);p3=[p2];p5=[p0++];r6=[p2+12];r3=[p0];r2=w[sp--](z);r0=b[p4+0xFFFF800F](x);DSP技術(shù)<57>存儲(chǔ)指令存儲(chǔ)指針寄存器[indirect_address]=P-register;存儲(chǔ)數(shù)據(jù)寄存器[indirect_address]=D-register;Example[fp-12]=p1;[p2]=p3;[sp--]=r2;[i3++m0]=r7;w[i1]=r3.h;b[p1++]=r7;DSP技術(shù)<58>寄存器數(shù)據(jù)轉(zhuǎn)移指令語(yǔ)法:dest_reg=src_regIFCCdest_reg=src_regIF!CCdest_reg=src_regdest_reg=src_reg(Z/X)dest_reg=src_reg_byte(Z/X)Exampler7=p2;retn=p0;ifccr3=r0;R4=R0.L(Z)a0.h=r7.hr7=r2.b(x);DSP技術(shù)<59>堆棧操作指令進(jìn)棧指令:--SP(Push)語(yǔ)法[--SP]=src_reg;對(duì)一個(gè)寄存器進(jìn)行壓棧[--SP]=(src_reg_range);對(duì)多個(gè)寄存器進(jìn)行連續(xù)壓棧出棧指令:SP++(Pop)語(yǔ)法dest_reg=[SP++];(dest_reg_range)=[SP++];DSP技術(shù)<60>Example[--sp]=p0;[--sp]=(r7:5,p5:0);[--sp]=(r7:2);r0=[sp++];(p5:4)=[sp++];DSP技術(shù)<61>堆棧操作指令連接和撤銷(xiāo)指令:LINK,UNLINK語(yǔ)法LINKuimm18;UNLINK;執(zhí)行連接(LINK)指令時(shí),將當(dāng)前的RETS寄存器和幀指針FP的值壓入堆棧,并將幀分配在堆棧的空間中。與此相反,撤銷(xiāo)連接(UNLINK)指令時(shí),將恢復(fù)壓入堆棧中的RETS寄存器和幀指針FP的值。利用該指令可以在堆棧中為子函數(shù)的局部變量分配空間DSP技術(shù)<62>Examplelink8;建立8個(gè)字的幀空間[--sp]=(r7:0,p5:0);壓棧(r7:0,p5:0)=[sp++];出棧unlink;刪除幀空間DSP技術(shù)<63>控制代碼比特(CC)相關(guān)指令比較指令CC=operand_1==operand_2CC=operand_1<operand_2CC=operand_1<=operand_2Examplecc=r3==r2;cc=r4<=3;cc=p0<p3;cc=p2<-4;cc=a0<=a1;DSP技術(shù)<64>轉(zhuǎn)移CCdest=CCdest|=CCdest&=CCdest^=CCCC=sourceCC|=sourceCC&=sourceCC^=source取反CCCC=!CCDSP技術(shù)<65>邏輯運(yùn)算(比特域邏輯運(yùn)算)與:dest_reg=src_reg_0&src_reg_1非:dest_reg=~src_reg或:dest_reg=src_reg_0|src_reg_1異或:dest_reg=src_reg_0^src_reg_1DSP技術(shù)<66>BXORSHIFT,BXOR這兩種比特域異或指令可以實(shí)現(xiàn)線性反饋移位寄存器(LFSR)。應(yīng)用:偽隨機(jī)序列生成循環(huán)碼(如BCH)的編碼和解碼CRC校驗(yàn)DSP技術(shù)<67>比特運(yùn)算比特清零:BITCLR(register,bit_position)比特置位:BITSET(register,bit_position)比特反轉(zhuǎn):BITTGL(register,bit_position)比特測(cè)試CC=BITTST(register,bit_position)CC=!BITTST(register,bit_position)DSP技術(shù)<68>比特融合dest_reg=DEPOSIT(backgnd_reg,foregnd_reg)dest_reg=DEPOSIT(backgnd_reg,foregnd_reg)(X)該指令將foregnd_reg中指定長(zhǎng)度的比特段拷貝到backgnd_reg中指定的比特位置。應(yīng)用:視頻圖像疊加算法比特提取dest_reg=EXTRACT(scene_reg,pattern_reg)(Z)dest_reg=EXTRACT(scene_reg,pattern_reg)(X)該指令從scene_reg中提取特定位置及長(zhǎng)度的比特段應(yīng)用:視頻圖像模式識(shí)別與分離算法DSP技術(shù)<69>比特復(fù)用BITMUX(source_1,source_0,A0)(ASR)BITMUX(source_1,source_0,A0)(ASL)該指令將source_1和source_0中的比特復(fù)用到A0,并對(duì)寄存器中的值進(jìn)行移位操作。應(yīng)用:如卷積編碼DSP技術(shù)<70>ExampleDSP技術(shù)<71>比特1的計(jì)數(shù)dest_reg=ONESsrc_reg該指令統(tǒng)計(jì)src_reg中為1的比特的個(gè)數(shù)應(yīng)用:誤碼校驗(yàn);錯(cuò)誤比特計(jì)數(shù)DSP技術(shù)<72>移位指令算術(shù)移位dest_reg>>>=shift_magnitude;dest_reg=src_reg>>>shift_magnitude(opt_sat);accumulator=accumulator>>>shift_magnitude;dest_reg=ASHIFTsrc_regBYshift_magnitude(opt_sat);accumulator=ASHIFTaccumulatorBYshift_magnitude;DSP技術(shù)<73>邏輯移位dest_pntr=src_pntr>>1;dest_pntr=src_pntr>>2dest_pntr=src_pntr<<1;destdest_pntr=src_pntr<<2dest_reg>>=shift_magnitude;dest_reg<<=shift_magnitude;dest_reg=src_reg>>shift_magnitude;dest_reg=src_reg<<shift_magnitude;dest_reg=LSHIFTsrc_regBYshift_magnitude;DSP技術(shù)<74>算術(shù)移位和邏輯移位的區(qū)別算術(shù)移位需要對(duì)符號(hào)位進(jìn)行處理,即有符號(hào)的移位。右移時(shí)保持符號(hào)位;左移時(shí),移位到一定程度會(huì)保持飽和。而邏輯移位是無(wú)符號(hào)的移位。右移時(shí),符號(hào)位補(bǔ)0;左移時(shí)最低為補(bǔ)0DSP技術(shù)<75>旋轉(zhuǎn)移位dest_reg=ROTsrc_regBYrotate_magnitudeaccumulator_new=ROTaccumulator_oldBYrotate_magnitude比特旋轉(zhuǎn)移位,從一端移出的比特會(huì)從另一端移進(jìn)來(lái)。移位鏈中包含CCDSP技術(shù)<76>ExampleDSP技術(shù)<77>移位加dest_pntr=(dest_pntr+src_reg)<<1dest_pntr=(dest_pntr+src_reg)<<2dest_reg=(dest_reg+src_reg)<<1dest_reg=(dest_reg+src_reg)<<2dest_pntr=adder_pntr+(src_pntr<<1)dest_pntr=adder_pntr+(src_pntr<<2)DSP技術(shù)<78>算術(shù)運(yùn)算指令絕對(duì)值:dest_reg=ABSsrc_reg加減法常規(guī)加減法:dest_reg=src_reg_1+/-src_reg_2;預(yù)減/增比例的加/減法:dest_reg=src_reg_0+/-src_reg_1(RND20/RND12);立即數(shù)加減法:register+=constant;register-=constant;預(yù)減/增比例的加/減法首先將輸入數(shù)據(jù)進(jìn)行右/左移位,然后進(jìn)行加減,再對(duì)加減結(jié)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論