TMS320C55x DSP原理及應(yīng)用(第6版) 課件全套 第1-8章 數(shù)字信號(hào)處理和DSP系統(tǒng)-TMS320C55x軟件設(shè)計(jì)實(shí)例_第1頁
TMS320C55x DSP原理及應(yīng)用(第6版) 課件全套 第1-8章 數(shù)字信號(hào)處理和DSP系統(tǒng)-TMS320C55x軟件設(shè)計(jì)實(shí)例_第2頁
TMS320C55x DSP原理及應(yīng)用(第6版) 課件全套 第1-8章 數(shù)字信號(hào)處理和DSP系統(tǒng)-TMS320C55x軟件設(shè)計(jì)實(shí)例_第3頁
TMS320C55x DSP原理及應(yīng)用(第6版) 課件全套 第1-8章 數(shù)字信號(hào)處理和DSP系統(tǒng)-TMS320C55x軟件設(shè)計(jì)實(shí)例_第4頁
TMS320C55x DSP原理及應(yīng)用(第6版) 課件全套 第1-8章 數(shù)字信號(hào)處理和DSP系統(tǒng)-TMS320C55x軟件設(shè)計(jì)實(shí)例_第5頁
已閱讀5頁,還剩310頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)字信號(hào)處理和DSP系統(tǒng)

實(shí)時(shí)數(shù)字信號(hào)處理技術(shù)的發(fā)展

數(shù)字信號(hào)處理器的特點(diǎn)

德州儀器公司的DSP產(chǎn)品

DSP芯片的選擇

DSP應(yīng)用系統(tǒng)設(shè)計(jì)流程

典型實(shí)時(shí)數(shù)字信號(hào)處理系統(tǒng)的基本部件

抗混疊濾波器(Anti-aliasing

filter)

模數(shù)轉(zhuǎn)換器(Analog-to-Digital

Converter,ADC)

數(shù)字信號(hào)處理

數(shù)模轉(zhuǎn)換器(Digital-to-Analog

Converter,DAC)

抗鏡像濾波器(Anti-image

filter)典型實(shí)時(shí)數(shù)字信號(hào)處理系統(tǒng)框圖

利用X86處理器完成實(shí)時(shí)數(shù)字信號(hào)處理

選擇范圍較寬

主板及外設(shè)資源豐富

多種操作系統(tǒng)可供選擇

開發(fā)、調(diào)試較為方便

數(shù)字信號(hào)處理能力不強(qiáng)

硬件組成較為復(fù)雜

系統(tǒng)體積、重量較大,功耗較高

抗環(huán)境影響能力較弱實(shí)時(shí)數(shù)字信號(hào)處理技術(shù)的發(fā)展優(yōu)點(diǎn)缺點(diǎn)

利用通用微處理器完成實(shí)時(shí)數(shù)字信號(hào)處理

可選范圍廣

硬件組成簡單系統(tǒng)

功耗低,適應(yīng)環(huán)境能力強(qiáng)

信號(hào)處理的效率較低

內(nèi)部DMA通道較少

利用可編程邏輯陣列(FPGA)進(jìn)行實(shí)時(shí)數(shù)字信號(hào)處理

適合高速信號(hào)處理

具有專用數(shù)字信號(hào)處理結(jié)構(gòu)

開發(fā)需要較深的硬件基礎(chǔ)

調(diào)試?yán)щy

利用數(shù)字信號(hào)處理器實(shí)時(shí)實(shí)現(xiàn)數(shù)字信號(hào)處理優(yōu)點(diǎn)缺點(diǎn)優(yōu)點(diǎn)缺點(diǎn)數(shù)字信號(hào)處理器的特點(diǎn)

目前DSP系統(tǒng)的主要應(yīng)用

基本信號(hào)處理—濾波器、FFT、窗函數(shù)等

通信—調(diào)制解調(diào)、數(shù)據(jù)加密、多路復(fù)用等

語音—語音編碼、合成、識(shí)別、增強(qiáng)等

圖形圖像—圖像壓縮、機(jī)器人視覺等

軍事—雷達(dá)信號(hào)處理、導(dǎo)彈制導(dǎo)等

儀器儀表—頻譜分析、鎖相環(huán)等

控制—自動(dòng)駕駛、磁盤控制等

醫(yī)療—助聽、超聲設(shè)備、患者監(jiān)護(hù)等

家用電器—智能玩具、數(shù)字電話、數(shù)字電視等存儲(chǔ)器結(jié)構(gòu)

結(jié)構(gòu)分為兩大類:

馮▲諾依曼結(jié)構(gòu)

哈佛結(jié)構(gòu)

DSP采用了程序存儲(chǔ)器空間和數(shù)據(jù)存儲(chǔ)器空間分開的哈佛結(jié)構(gòu)和多套地址、數(shù)據(jù)總線雙總線存儲(chǔ)器結(jié)構(gòu)流水線

流水線結(jié)構(gòu)將指令的執(zhí)行分解為取指、譯碼、取操作數(shù)和執(zhí)行等幾個(gè)階段

TMS320C54xx

DSP采用6級(jí)流水線

TMS320C66xx

DSP采用16級(jí)流水線

TMS320C55xx

DSP的流水線分為

指令流水線

執(zhí)行流水線

硬件乘法累加單元

零開銷循環(huán)

指循環(huán)計(jì)數(shù)、條件轉(zhuǎn)移等循環(huán)機(jī)制由專門硬件控制,而處理器不用花費(fèi)任何時(shí)間

特殊的尋址方式

DSP支持循環(huán)尋址和位倒序?qū)ぶ?/p>

高效的特殊指令

FIRSADD指令——對(duì)稱結(jié)構(gòu)FIR濾波算法

和LMS指令——LMS算法

豐富的片內(nèi)外設(shè)德州儀器公司的DSP產(chǎn)品

DSP器件可以分為三類

工業(yè)控制領(lǐng)域

低成本嵌入式應(yīng)用系統(tǒng)

需要用復(fù)雜算法對(duì)大量數(shù)據(jù)進(jìn)行處理的應(yīng)用

德州儀器公司的三代DSP產(chǎn)品

TMS320C1x

TMS320C2x、3x、4x

TMS320C5x

德州儀器公司的現(xiàn)在DSP產(chǎn)品

C24x系列和C28x系列

主要用于電機(jī)控制領(lǐng)域

C62x系列和C64x系列

采用了增強(qiáng)型超長指令字結(jié)構(gòu),改進(jìn)了流水線結(jié)構(gòu),支持32位或64位寬度存儲(chǔ)器訪問,最高處理能力已經(jīng)達(dá)到9600MIPS

C67x系列和C33

浮點(diǎn)數(shù)字信號(hào)處理器系列

C54x系列和C55x系列

低功耗16位定點(diǎn)數(shù)字信號(hào)處理器

C66x系列DSP

定點(diǎn)與浮點(diǎn)結(jié)合的多核數(shù)字信號(hào)處理器DSP芯片的選擇

運(yùn)算速度

指令周期、MIPS、MOPS、MFLOPS、BOPS、MAC時(shí)間、FFT執(zhí)行時(shí)間

算法格式和數(shù)據(jù)寬度

浮點(diǎn)DSP的數(shù)據(jù)寬度一般為32位

定點(diǎn)DSP的數(shù)據(jù)寬度可以為16位、20位、24位或32位

存儲(chǔ)器

Flash存儲(chǔ)器、RAM存儲(chǔ)器

功耗

低工作電壓、“休眠”或“空閑”模式、可編程時(shí)鐘分頻器、外圍控制

開發(fā)工具DSP應(yīng)用系統(tǒng)設(shè)計(jì)流程

確定系統(tǒng)性能指標(biāo)

核心算法模擬和驗(yàn)證

選擇DSP芯片及其它系統(tǒng)組件

硬件設(shè)計(jì)和調(diào)試

軟件設(shè)計(jì)和測試

系統(tǒng)測試、集成TMS320C55x的硬件結(jié)構(gòu)

TMS320C55x

DSP的基本結(jié)構(gòu)

TMS320VC5509A的主要特性

TMS320C55x存儲(chǔ)空間結(jié)構(gòu)C55x與C54x的比較內(nèi)容C54xC55x乘法累加器(MAC)12累加器(ACC)24讀總線23寫總線12地址總線46指令字長16位8/16/24/32/40/48位數(shù)據(jù)字長16位16位算術(shù)邏輯單元(ALU)1(40位)1(40位)1(16位)輔助寄存器字長2字節(jié)(16位)3字節(jié)(24位)輔助寄存器88存儲(chǔ)空間獨(dú)立的程序/數(shù)據(jù)空間統(tǒng)一的程序/數(shù)據(jù)空間數(shù)據(jù)寄存器04C55x的特征及優(yōu)點(diǎn)特征優(yōu)點(diǎn)一個(gè)32位x

16位指令緩沖隊(duì)列緩沖變長指令并完成有效的塊重復(fù)操作兩個(gè)17位x17位的乘法累加器在一個(gè)單周期執(zhí)行雙乘法累加操作一個(gè)40位算術(shù)邏輯單元(AL

U)實(shí)現(xiàn)高精度算術(shù)和邏輯操作一個(gè)40位桶形移位寄存器能夠?qū)⒁粋€(gè)40位的計(jì)算結(jié)果最高向左移31位或向右移32位一個(gè)16位算術(shù)邏輯單元(AL

U)對(duì)主AL

U并行完成簡單的算術(shù)操作4個(gè)40位的累加器保留計(jì)算結(jié)果,減少對(duì)存儲(chǔ)單元的訪問12條獨(dú)立總線,其中包括3條讀數(shù)據(jù)總線2條寫數(shù)據(jù)總線5條數(shù)據(jù)地址總線1條讀程序總線1條程序地址總線為各種計(jì)算單元并行地提供將要處理的指令和操作數(shù)——利用C55x的并行機(jī)制的優(yōu)點(diǎn)用戶可配置IDL

E域改進(jìn)了低功耗電源管理的靈活性C55x的CPU體系結(jié)構(gòu)TMS320C55x

CPU結(jié)構(gòu)圖指令緩沖單元(I)指令緩沖單元結(jié)構(gòu)圖程序流程單元(P)

P單元中使用的寄存器分為5種類型

程序流寄存器

塊重復(fù)寄存器

單重復(fù)寄存器

中斷寄存器

狀態(tài)寄存器地址流程單元(A)

地址流程單元包括

數(shù)據(jù)地址產(chǎn)生電路

能夠接收來自I單元的立即數(shù)和來自A單元的寄存器產(chǎn)生讀取數(shù)據(jù)空間的地址

算術(shù)邏輯電路

寄存器組構(gòu)成

A單元包括的寄存器類型

數(shù)據(jù)頁寄存器

指針

循環(huán)緩沖寄存器

臨時(shí)寄存器數(shù)據(jù)計(jì)算單元(D)

由移位器、算術(shù)邏輯電路、乘法累加器和寄存器組構(gòu)成指令流水線

C55x的指令流水線包括兩個(gè)階段:

取流水線

指執(zhí)行流水線流水線節(jié)拍內(nèi)容D從指令緩沖隊(duì)列中讀6個(gè)字節(jié)的指令對(duì)一個(gè)指令對(duì)或一個(gè)單指令進(jìn)行解碼給對(duì)應(yīng)的CPU功能單元分配指令讀取STx_55種與數(shù)據(jù)地址產(chǎn)生相關(guān)的位ST1_55(CPL)

ST2_55(ARnLC)ST2_55(ARMS)

ST2_55(CDPLC)AD讀/修改與數(shù)據(jù)地址產(chǎn)生有關(guān)的寄存器例如:藝*

ARx+(T0)中的ARx和T0藝B

K03(如果AR2LC=1)

藝S

P

(pushes和pops過程中)藝S

SP,在32位棧模式中與對(duì)SP的操作一致在A單元的ALU中完成操作,例如:藝使用AADD指令進(jìn)行算術(shù)運(yùn)算藝用S

WAP指令交換A單元中的寄存器藝向A單元的寄存器寫入常量(B

Kxx,BSAxx,BRCx,CSR,等)在條件分支指令中ARx如果不等于0,ARx-1AC1在存儲(chǔ)器讀操作中,在相應(yīng)的CPU地址總線上傳送地址AC2允許存儲(chǔ)器對(duì)請(qǐng)求的響應(yīng)是一個(gè)周期R從存儲(chǔ)器和通過映射方式尋址的寄存器中讀數(shù)據(jù)在R節(jié)拍執(zhí)行D單元的預(yù)取A單元寄存器指令時(shí),讀A單元的寄存器在R節(jié)拍判斷條件指令的條件X讀/修改不通過映射方式尋址的寄存器讀/修改寄存器中的單個(gè)位設(shè)置條件如果指令不是向存儲(chǔ)器中寫,就判斷XCCPART的條件判斷RPTCC指令的條件W向存儲(chǔ)器映射方式尋址的寄存器或I/O空間寫數(shù)據(jù)向存儲(chǔ)器寫數(shù)據(jù),從CPU來看,寫操作在該節(jié)拍完成W+向存儲(chǔ)器寫數(shù)據(jù),從存儲(chǔ)器來看,寫操作在該節(jié)拍完成流水線的工作方式:舉例

AMOV#k23,XARx:在AD節(jié)拍用一個(gè)立即數(shù)對(duì)XARx初始化;

MOV#k,ARx:ARx不是通過存儲(chǔ)器映射方式尋址的,在X節(jié)拍用一個(gè)立即數(shù)初始化ARx;

MOV#k,mmap(ARx):ARx是通過存儲(chǔ)器映射方式尋址的,在

W節(jié)拍用一個(gè)立即數(shù)初始化ARx;

AADD#k,ARx:對(duì)于這個(gè)特殊指令,在AD節(jié)拍用一個(gè)立即數(shù)對(duì)ARx初始化;

MOV#k,*ARx+:在W+節(jié)拍對(duì)存儲(chǔ)器進(jìn)行寫操作;

MOV

*ARx+,AC0:在AD節(jié)拍對(duì)ARx進(jìn)行讀和更新操作,在X節(jié)拍載入AC0;

ADD#k,ARx:在X節(jié)拍的開始時(shí)刻讀ARx,在X節(jié)拍的結(jié)束時(shí)刻修改ARx;

ADD

ACy,ACx:在X節(jié)拍讀/寫ACx和ACy;

MOV

mmap(ARx),ACx:ARx是通過存儲(chǔ)器映射方式尋址的,在R節(jié)拍讀取ARx,在X節(jié)拍修改ACx;

MOV

ARx,ACx:ARx不是通過存儲(chǔ)器映射方式尋址的,在X節(jié)拍讀取ARx,在X節(jié)拍修改ACx;

BSET

CPL:在X節(jié)拍設(shè)置CPL位;

PUSH,

POP,

RET

或AADD#K8,SP:在AD節(jié)拍讀取和修改SP,如果選擇32位棧模式,SSP會(huì)發(fā)生變化;

XCCPART

overflow(ACx):在X節(jié)拍判斷條件,但是不管條件是否滿足,AR1都會(huì)加1;

||

MOV

*AR1+,

AC1

XCCPART

overflow(ACx):在R節(jié)拍判斷條件,滿足條件向存儲(chǔ)器完成寫操作,但是不管條|

|

MOV

AC1,*AR1+

件是否滿足,AR1都會(huì)加1

XCC

overflow(ACx):在AD節(jié)拍判斷條件,只有滿足條件時(shí),AR1加1

||

MOV

*AR1+,

AC1TMS320VC5509A的主要特性

CPU

兩個(gè)乘法累加單元(MAC)

40位的算術(shù)邏輯單元(ALU)和一個(gè)16位的算術(shù)邏輯單元

采用先進(jìn)的多總線結(jié)構(gòu)

存儲(chǔ)器

128K

x

16位的片上RAM【64KB的DARAM和192KB的SARAM】

8M

x

16位的最大可訪問外部尋址空間(同步DRAM)

外部存儲(chǔ)器接口(EMIF)與通用輸入/輸出(GPIO)共用引腳

片上外設(shè)

兩個(gè)20位的定時(shí)器

一個(gè)看門狗定時(shí)器

6通道直接存儲(chǔ)器存取控制器(DMA)

EMIF提供與異步存儲(chǔ)器如EPROM、SRAM及同步DRAM的無縫連接

三個(gè)串口支持最多三個(gè)多通道緩沖串口(McBSP)

增強(qiáng)型主機(jī)接口(EHPI)

可編程鎖相環(huán)(DPLL)時(shí)鐘發(fā)生器

USB全速(12Mbps)從端口

I2C主從接口

一個(gè)實(shí)時(shí)時(shí)鐘TMS320VC5509A的引腳功能

并行總線引腳

并行總線A13~A0直接與外部引腳相連,這14個(gè)引腳完成以下功能:

HPI地址總線(HPI.HA[13:0])

EMIF地址總線(EMIF.A[13:0])

通用輸入/輸出(GPIO.A[13:0])

并行雙向數(shù)據(jù)總線D15~D0可以完成兩個(gè)功能

EMIF數(shù)據(jù)總線(EMIF.D[15:0])

HPI數(shù)據(jù)總線(HPI.HD[15:0])

C0引腳完成兩個(gè)功能:

EMIF異步存儲(chǔ)器讀使能(EMIF.ARE)

通用IO8(GPIO8)

C1引腳完成兩個(gè)功能:

EMIF異步存儲(chǔ)器輸出使能(EMIF.AOE)

HPI中斷輸出(HPI.HINT)

C2引腳完成兩個(gè)功能:

EMIF異步存儲(chǔ)器寫使能(EMIF.AWE

HPI讀/寫(HPI.HR/W)

C3引腳完成兩個(gè)功能:

EMIF數(shù)據(jù)準(zhǔn)備輸入(EMIF.ARDY)

HPI準(zhǔn)備輸出(HPI.HRDY)

C4引腳完成兩個(gè)功能:

EMIF對(duì)存儲(chǔ)器空間CE

0的片選(EMIF.CE

0)

通用IO9(GPIO9)

C5引腳完成兩個(gè)功能:

EMIF對(duì)存儲(chǔ)器空間CE

1的片選(EMIF.CE

1)

通用IO10(GPIO10)

C6引腳完成兩個(gè)功能:

EMIF對(duì)存儲(chǔ)器空間CE

2的片選(EMIF.CE

2)

HPI的控制輸入0(HPI.HCNTL0)

C7引腳完成兩個(gè)功能:

EMIF對(duì)存儲(chǔ)器空間CE

3的片選(EMIF.CE

3)

通用IO11(GPIO11)

C8引腳完成兩個(gè)功能:

EMIF字節(jié)使能0控制(EMIF.BE

0)

HPI字節(jié)標(biāo)識(shí)信號(hào)(HPI.HBE

0)

C9引腳完成兩個(gè)功能:

EMIF字節(jié)使能1控制(EMIF.BE

1)

HPI字節(jié)表示信號(hào)(HPI.HBE

1)

C10引腳完成三個(gè)功能:

EMIF選通SDRAM的行(EMIF.SDRAS)

選通HPI地址(HPI.HAS)

通用IO12(GPIO12)

C11引腳完成兩個(gè)功能:

EMIF選通SDRAM的列(EMIF.SDCAS)

HPI片選輸入(HPI.HCS)

C12引腳完成兩個(gè)功能:

E

MIF對(duì)SDRAM的寫使能(E

MIF.SDWE

HPI數(shù)據(jù)選通信號(hào)1(HPI.HDS1)

C13引腳完成兩個(gè)功能:

作為SDRAM的A10地址線(E

MIF.SDA10)

通用IO13(GPIO13)

C14引腳完成兩個(gè)功能:

為SDRAM提供存儲(chǔ)器時(shí)鐘(E

MIF.CLKME

M)

HPI數(shù)據(jù)選通信號(hào)2(HPI.HDS2)

中斷引腳和復(fù)位引腳

中斷引腳INT[4:0]作為低電平有效的外部中斷輸入引腳,由中斷使能寄存器(IER)和中斷模式位來屏蔽和區(qū)分優(yōu)先次序

RESET引腳低電平有效。有效時(shí),DSP將終止任務(wù)的執(zhí)行并使程序指針指向FF8000h;變?yōu)楦唠娖綗o效時(shí),DSP從程序存儲(chǔ)器FF8000h的位置開始執(zhí)行

位輸入/輸出信號(hào)引腳

GPIO[7:0]共8個(gè)輸入/輸出線可以單獨(dú)配置成輸入或輸出引腳

XF引腳—外部標(biāo)志

時(shí)鐘信號(hào)引腳

CLKOUT0—時(shí)鐘輸出信號(hào)引腳。

X2/CLKIN—晶振連接到內(nèi)部振蕩器的輸入引腳

X1—內(nèi)部振蕩器連接到外部晶振的輸出引腳

TIN/TOUT0—定時(shí)器0輸入/輸出引腳

RTCINX1—實(shí)時(shí)時(shí)鐘振蕩器的輸入引腳

RTCINX2—實(shí)時(shí)時(shí)鐘振蕩器的輸出引腳

I2C引腳

SDA—I2C(雙向)數(shù)據(jù)線。復(fù)位后,該引腳呈高阻狀態(tài)。

SCL—I2C(雙向)時(shí)鐘引腳。復(fù)位后,該引腳呈高阻狀態(tài)

USB引腳

DP引腳是差分(正)接收/發(fā)送引腳

DN引腳是差分(負(fù))接收/發(fā)送引腳

PU引腳是上拉引腳,用于上拉檢測電阻

A/D引腳

一個(gè)10位的A/D轉(zhuǎn)換器

測試引腳

TCK引腳是IEEE標(biāo)準(zhǔn)1149.1測試時(shí)鐘輸入引腳

TDI引腳是IEEE標(biāo)準(zhǔn)1149.1測試數(shù)據(jù)輸入引腳

TDO引腳是IEEE標(biāo)準(zhǔn)1149.1測試數(shù)據(jù)輸出引腳

TMS引腳是IEEE標(biāo)準(zhǔn)1149.1測試方式選擇引腳

TRST引腳是IEEE標(biāo)準(zhǔn)1149.1測試復(fù)位引腳

EMU0引腳是仿真器中斷0引腳

EMU1/OFF引腳是仿真器中斷1引腳/關(guān)斷所有輸出引腳引腳名稱功能說明CLKR0McBSP0接收時(shí)鐘引腳。該引腳作為串口接收器的串行移位時(shí)鐘引腳DR0McBSP0接收數(shù)據(jù)引腳FSR0McBSP0接收幀同步引腳。FSR0發(fā)出的脈沖初始化在DR0上接收的數(shù)據(jù)CLKX0McBSP0發(fā)送時(shí)鐘引腳。該引腳作為串口發(fā)送器的串行移位時(shí)鐘引腳DX0McBSP0發(fā)送數(shù)據(jù)引腳。在不發(fā)送數(shù)據(jù)、插入RESET信號(hào)和當(dāng)OFF是低電平時(shí),該引腳呈高阻狀態(tài)FSX0McBSP0發(fā)送幀同步引腳。FSX0發(fā)出的脈沖初始化在DR0上發(fā)送的數(shù)據(jù)S

10McBSP1接收時(shí)鐘引腳McBSP1.CLKR或MMC1/SD1命令/響應(yīng)引腳MMC1.CMD/SD1.CMDS

11McBSP1串行數(shù)據(jù)接收引腳McBSP1.DR或SD1數(shù)據(jù)1引腳SD1.DAT1S

12McBSP1接收幀同步引腳McBSP1.FSR或SD1數(shù)據(jù)2引腳SD1.DAT2S

13McBSP1串行數(shù)據(jù)發(fā)送引腳McBSP1.DX或MMC1/SD1串行時(shí)鐘引腳MMC1.CLK/SD1.CLKS

14McBSP1發(fā)送時(shí)鐘引腳McBSP1.CLKX或MMC1/SD1數(shù)據(jù)0引腳MMC1.DAT/SD1.DAT0S

15McBSP1發(fā)送幀同步引腳McBSP1.FSX或SD1數(shù)據(jù)3引腳SD1.DAT3S

20McBSP2接收時(shí)鐘引腳McBSP2.CLKR或MMC1/SD2命令/響應(yīng)引腳MMC2.CMD/SD2.CMDS

21McBSP2串行數(shù)據(jù)接收引腳McBSP2.DR或SD2數(shù)據(jù)1引腳SD2.DAT1S

22McBSP2接收幀同步引腳McBSP2.FSR或SD2數(shù)據(jù)2引腳SD2.DAT2S

23McBSP2串行數(shù)據(jù)發(fā)送引腳McBSP2.DX或MMC1/SD2串行時(shí)鐘引腳MMC2.CLK/SD2.CLKS

24McBSP2發(fā)送時(shí)鐘引腳McBSP2.CLKX或MMC2/SD2數(shù)據(jù)0引腳MMC2.DAT/SD2.DAT0S

25McBSP2發(fā)送幀同步引腳McBSP2.FSX或SD2數(shù)據(jù)3引腳SD2.DAT3

Mc

B

S

P信號(hào)引腳

電源引腳

CVDD是數(shù)字電源,為CPU內(nèi)核提供專用電源。

DVDD是數(shù)字電源,為I/O引腳提供專用電源。

USBVDD是數(shù)字電源,為USB模塊的I/O引腳提供專用電源。

RDVDD是數(shù)字電源,為RTC模塊的I/O引腳提供專用電源。

RCVDD是數(shù)字電源,為RTC模塊提供專用電源。

AVDD是模擬電源,為10位的A/D提供專用電源。

ADVDD,為10位A/D數(shù)字部分提供專用電源。

VSS是數(shù)字地,為I/O和內(nèi)核引腳接地。

AVSS是模擬地,為10位A/D接地。

ADVSS為10位A/D的數(shù)字部分接地。

USBPLLVSS是數(shù)字地,為USB的PLL接地

USBPLLVDD是數(shù)字電源,為USB的PLL提供專用電源。TMS320C55x存儲(chǔ)空間結(jié)構(gòu)

存儲(chǔ)映射

程序空間

當(dāng)CPU讀取指令時(shí),程序空間才被訪問

字節(jié)尋址(24位)

當(dāng)CPU從程序空間讀取指令時(shí),采用字節(jié)尋址,即按字節(jié)分配地址,且地址為24位

程序空間的指令結(jié)構(gòu)

程序空間的邊界對(duì)齊指令長度及地址分配存儲(chǔ)器中的指令

數(shù)據(jù)空間

字尋址(23位)

當(dāng)CPU訪問數(shù)據(jù)空間時(shí),采用字尋址,即為每個(gè)16位的字分配一個(gè)23位寬的地址

數(shù)據(jù)類型

數(shù)據(jù)空間的數(shù)據(jù)結(jié)構(gòu)字節(jié)裝載和字節(jié)存儲(chǔ)指令

I/O空間

55x

DSP的I/O空間與數(shù)據(jù)/程序空間是分開的,采用16位寬的字尋址,即為每個(gè)字分配一個(gè)16位地址,其尋址范圍為64K字TMS320C55x的指令系統(tǒng)

尋址方式

TMS320C55x的指令系統(tǒng)尋址方式

尋址方式是指如何指定指令和操作數(shù)所在存儲(chǔ)空間的地址

C55x

DSP支持三種尋址模式

絕對(duì)尋址模式

直接尋址模式

間接尋址模式絕對(duì)尋址模式

k16絕對(duì)尋址

其操作數(shù)為*abs16(#k16),【k16:16位的無符號(hào)常數(shù)】

將7位的寄存器DPH和k16級(jí)聯(lián)形成一個(gè)23位的地址,用于對(duì)數(shù)據(jù)空間的訪問k16絕對(duì)尋址模式

k23絕對(duì)尋址

操作數(shù)為*(#k23),【k23:23位的無符號(hào)常數(shù)】

I/O絕對(duì)尋址

操作數(shù)是*port(#k16),【k16:16位無符號(hào)常數(shù)】

使用助記符指令,其操作數(shù)是port(#k16)(操作數(shù)前沒有*)k23絕對(duì)尋址模式I/O絕對(duì)尋址直接尋址模式

DP直接尋址

高7位由DPH提供,用來確定主數(shù)據(jù)頁

低16位由兩部分組成:

DP

7位偏移量(Doffset)DP直接尋址模式

SP直接尋址

SPH確定高7位地址

16位地址由SP和7位偏移量決定,偏移量范圍是0~127

由SPH和SP構(gòu)成了擴(kuò)展數(shù)據(jù)堆棧指針XSP

寄存器位尋址

操作數(shù)是@

bitoffset

只有寄存器的位測試、置位、清零、取反指令支持這種尋址模式

PDP直接尋址PDP直接尋址模式間接尋址模式

AR間接尋址模式

通過一個(gè)輔助寄存器ARn(n=0,1,2,3,4,5,6,7)訪問數(shù)據(jù)空間

ST2-55的ARMS位決定AR間接尋址的操作類型

ARMS=0,DSP模式:CPU提供DSP增強(qiáng)應(yīng)用的高效執(zhí)行功能

ARMS=1,控制模式:CPU能夠優(yōu)化代碼的長度ARDSP間接尋址模式

雙AR間接尋址模式AR

通過8個(gè)輔助寄存器(AR0~AR7)同時(shí)訪問兩個(gè)數(shù)據(jù)存儲(chǔ)單元

實(shí)現(xiàn)功能:

執(zhí)行一條可完成兩個(gè)16位數(shù)據(jù)空間訪問的指令

并行執(zhí)行兩條指令雙間接尋址操作數(shù)

CDP間接尋址模式

使用系數(shù)數(shù)據(jù)指針(CDP)對(duì)數(shù)據(jù)空間、寄存器位和

I/O空間進(jìn)行訪問

系數(shù)間接尋址模式

支持以下算術(shù)指令:

FIR濾波

乘法

乘加

乘減

雙乘加或雙乘減系數(shù)間接尋址操作數(shù)C55x指令的并行執(zhí)行

指令并行的特征

單指令中內(nèi)置并行方式—隱含并行方式

例如:MPY

*AR0,

*CDP,

AC0::

MPY

*AR1,

*CDP,

AC1

用戶自定義的兩條指令間的并行方式

例如:MPYM

*AR1–,

*CDP,

AC1|

|

XOR

AR2,

T1

內(nèi)置與用戶自定義混合的并行方式

例如:MPYM

T3=*AR3+,

AC1,

AC2||

MOV

#

5,

AR1

指令并行的規(guī)則

兩條指令的總長度不能超過6個(gè)字節(jié)

在指令的執(zhí)行過程中不存在操作器、地址產(chǎn)生單元、總線等資源沖突

其中一條指令必須有并行使能位或兩條指令符合軟-雙并行條件

不能使用并行方式的情況

使用立即數(shù)尋址方式

例如:

*abs16(#

k16);*(#

k23);port(#

k16);*ARn(K16);*+ARn(K16);*CDP(K16);*+CDP(K16)

條件跳轉(zhuǎn)、條件調(diào)用、中斷、復(fù)位等程序控制指令

例如:

BCC

P24,

cond;CALLCC

P24,

cond;IDLE;INTR

k5;RESET;TRAP

k5

使用下列指令或者操作修飾符

例如:

mmap(

);port(

);<instruction>.CR;<instruction>.LR

資源沖突

C55x的資源

運(yùn)算器

使用的操作器有:D單元的ALU、D單元的移位器、D單元的交換器、A單元的交換器、A單元的ALU和P單元

地址產(chǎn)生單元

兩個(gè)數(shù)據(jù)地址(DA)產(chǎn)生單元、一個(gè)系數(shù)地址(CA)產(chǎn)生單元和一個(gè)堆棧地址(SA)產(chǎn)生單元

只能使用給定數(shù)量的數(shù)據(jù)地址產(chǎn)生單元

總線

兩個(gè)數(shù)據(jù)讀(DR)總線、一個(gè)系數(shù)讀(CA)總線、兩個(gè)數(shù)據(jù)寫(DW)總線、1個(gè)ACB總線(將D單元寄存器的內(nèi)容傳送給A單元和P單元的操作器)、一個(gè)KAB總線(立即數(shù)總線)和一個(gè)KDB總線(立即數(shù)總線)

只能使用給定數(shù)量的總線

軟-雙并行條件

兩個(gè)存儲(chǔ)器操作數(shù)必須是雙AR間接尋址模式

指令不能包含high_byte(Smem)和low_byte(Smem)

指令不能讀、寫同一個(gè)存儲(chǔ)器單元

如果指令中的k4的值是0~8,就會(huì)改變XDP的值,所以,不能與加載DP的指令組成并行指令

讀重復(fù)計(jì)數(shù)寄存器(RPTC)指令不能和如下的任何一個(gè)單重復(fù)指令組成并行指令TMS320C55X

DSP的匯編指令指令集中使用的術(shù)語、符號(hào)和縮寫TMS320C55X

DSP的匯編指令指令集中使用的術(shù)語、符號(hào)和縮寫指令集中使用的運(yùn)算符TMS320C55x指令集按操作類型

算術(shù)運(yùn)算指令

位操作指令

擴(kuò)展輔助寄存器操作指令

邏輯運(yùn)算指令

移動(dòng)指令

程序控制指令注:一條指令的屬性包括:指令,執(zhí)行的操作,是否有并行使能位,長度,周期,在流水線上的執(zhí)行階段以及執(zhí)行的功能單元等。

算術(shù)運(yùn)算指令

加法指令

加法指令有幾點(diǎn)說明:

如果目的操作數(shù)是累加器ACx,在D單元的ALU中進(jìn)行運(yùn)算操作;

如果目的操作數(shù)是輔助或臨時(shí)寄存器TAx,在A單元的ALU中進(jìn)行運(yùn)算操作;

如果目的操作數(shù)是存儲(chǔ)器(Smem),在D單元的ALU中進(jìn)行運(yùn)算操作;

如果是移位指令(16位立即數(shù)移位除外),在D單元移位器中進(jìn)行運(yùn)算操作

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:CARRY,C54CM,M40,SATA,SATD,SXMD

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy,CARRY加法指令

舉例:ADD

*AR3+,T0,T1;AR3間接尋址得到的內(nèi)容與T0的內(nèi)容相加,結(jié)果裝入T1,并將

AR3增1

舉例:ADD

*AR1<<T0,AC1,AC0;將由AR1尋址得到的內(nèi)容左移T0位與AC1相加,結(jié)果裝入AC0

減法指令

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:CARRY,C54CM,M40,SATA,SATD,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy,CARRY

指令減法指令

舉例:SUB

uns(*AR1),BORROW,AC0,AC1將CARRY位求反,AC0減去由AR1尋址得到的內(nèi)容及CARRY的內(nèi)容,并將結(jié)果裝入AC1

條件減法

指令

SUBC

Smem,

[ACx,]

ACyif

((ACx

–(Smem

<<

#

15))

>=

0)ACy

=

(ACx

–(Smem

<<

#

15))

<<

#

1

+

1elseACy

=

ACx

<<

#

1

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVy,CARRY

舉例:SUBC

*AR1,AC0,AC1如果(AC0–(*AR1)<<#15)>=0,則AC1=(AC0–(*AR1)<<

#15)<<#1+1,否則AC1=AC0<<#1

條件加減法

指令

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,SATD,SXMD,TC1,TC2。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVy,CARRY

舉例:ADDSUBCC

*AR1,AC0,TC2,AC1如果TC2=1,則AC1=AC0+(*AR1<<#16,否則AC1=AC0-(*AR1)<<#16

乘法指令

指令—在D單元的MAC中完成操作

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,M40,RDM,SATD

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy乘法指令

舉例:MPY

AC0,AC1;AC1=AC0*AC1

乘加指令

指令—在D單元的MAC中完成操作

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,M40,RDM,SATD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy乘加指令

舉例1:MACMR

*AR1,*CDP,AC2AC2=rnd

(AC2+(*AR1)*(*CDP))

舉例2:MACMR

uns(*AR2+),uns(*AR3+),AC3AC3=(*AR2)+(*AR3)+AC3

,AR2=AR2+1,AR3=AR3+1

乘減指令

指令—在D單元的MAC中完成操作

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,M40,RDM,SATD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy乘減指令

舉例:MASR

T1,AC0,AC1AC1=rnd(AC1-AC0*T1)

雙乘加/減指令

指令—利用D單元的兩個(gè)MAC在一個(gè)周期內(nèi)同時(shí)執(zhí)行兩個(gè)乘法或乘加/減運(yùn)算

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,M40,RDM,SATD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy

舉例:MASR40

uns(*AR0),

uns(*CDP),

AC0::

MACR40

uns(*AR1),

uns(*CDP),

AC1;AC0=rnd(AC0-uns(*AR0)*uns(*CDP));AC1=rnd(AC1+uns(*AR1)*uns(*CDP))

雙16位算術(shù)指令

指令—利用D單元中的ALU在一個(gè)周期內(nèi)完成兩個(gè)并行的算術(shù)運(yùn)算,包括一加一減、一減一加、兩個(gè)加法或兩個(gè)減法

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:C54CM,SATD,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy,CARRY16雙位算術(shù)指令

舉例:ADDSUB

T1,*AR1,AC1;AC1(39-16)=(*AR1)+T1;

|

|

AC1(15-0)=(*AR1)-T1

比較和選擇極值指令

指令—在D單元的ALU中完成兩個(gè)并行16位極值選擇操作和一個(gè)40位極值選擇操作

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:C54CM,SATD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVw,CARRY比較和選擇極值指令比較和選擇極值指令

舉例:MAXDIFF

AC0,AC1,AC2,AC1

最大/最小值指令

指令

MAX

[src,]

dst;dst

=

max(src,dst)

MIN

[src,]

dst;dst

=

min(src,dst)

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:CARRY

舉例1:MAX

AC2,AC1;由于(AC2)<(AC1),所以AC1保持不變且CARRY狀態(tài)位置1

舉例2:MIN

AC1,T1;由于T1<AC1(15-0),所以T1的內(nèi)容保持不變且將CARRY狀態(tài)位置1

存儲(chǔ)器比較指令

指令

CMP

Smem

=

=K16,

TCx;If

Smem

=

=

K16

then

TCx=1

else

TCx=0

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:TCx

舉例

CMP

*AR1+

=

=

#

400h,

TC1

寄存器比較指令

指令—在D單元和A單元的ALU中完成兩個(gè)累加器、輔助寄存器或臨時(shí)寄存器的比較,若累加器與輔助寄存器或臨時(shí)寄存器比較,在A單元將ACx(15-0)與TAx進(jìn)行比較

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,TCy。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:TCx

舉例1:CMP

AC1==T1,TC1;由于AC1(15-0)=T1,所以將TC1置1

條件移位指令

指令

SFTCC

ACx,

TCx;If

ACx(39–0)

=

0

then

TCx

=

1;If

ACx(31–0)

has

two

signbits

then;ACx

=ACx(31–0)<<#

1

and

TCx=0;else

TCx=1

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:TCx

舉例

SFTCC

AC0,

TC1

帶符號(hào)移位指令

指令—移位指令中的移位值由立即數(shù)、SHIFTW或Tx內(nèi)容確定

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,SATA,SATD,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy,CARRY

舉例1:SFTS

T2,#1;T2=T2<<#1

舉例2:SFTSC

AC0,#–5,AC1;AC1=AC0>>5,移出的位裝入CARRY

修改輔助寄存器(MAR)指令

指令

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:ST2-55

執(zhí)行指令后會(huì)受影響的狀態(tài)位:無

舉例

AADD

#

255,

T0;T0=T0+255

AMOV

#

255,

AR0

;AR0=255

AMAR

*AR3+

;AR3=AR3+1

修改堆棧指針指令

指令A(yù)ADD

K8,SP

;SP

=

SP

+

K8

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:無。

舉例AADD

#

127,

SP

;SP=SP+127

隱含并行指令

指令

加-存儲(chǔ)、乘加/減-存儲(chǔ)、加/減-存儲(chǔ)、裝載-存儲(chǔ)和乘加/減-裝載

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,C54CM,M40,RDM,SATD,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy,CARRY隱含并行指令

舉例:MPYMR

*AR0+,T0,AC1::

MOV

HI(AC0

<<

T2),

*AR1+;AC1=(*AR0)*T0,因?yàn)镕RCT=1,AC1=rnd(AC1*2),;

AC0=AC0<<T2,(*AR1)=AC0(31-16),AR1=AR1+1,;AR0=AR0+1

絕對(duì)距離指令

指令

以并行方式完成兩個(gè)操作,一個(gè)在D單元的MAC中,另一個(gè)在D單元的ALU中

ABDST

Xmem,Ymem,ACx,ACy

;ACy

=

ACy

+

|

HI(ACx)|

;ACx

=

(Xmem

<<

#

16)

–(Ymem

<<

#

16)

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:FRCT,C54CM,M40,SATD,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy,CARRY

舉例:ABDST

*AR0+,*AR1,AC0,AC1;AC1

=

AC1

+

|

HI(AC0)|;AC0

=((*AR0)

<<

#

16)

–((*AR1)

<<

#

16);AR0=AR0+1

絕對(duì)值指令

指令

ABS

[src,]

dst

;dst

=

|

src|

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,SATA,SATD,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,CARRY

舉例

ABS

AR1,

AC1

;AC1=|

AR1|

FIR濾波指令

指令

FIRSADD

Xmem,

Ymem,

Cmem,

ACx,

ACy

;ACy

=

ACy

+(ACx(32-16)

*

Cmem);ACx

=

(Xmem

<<

#

16)

+

(Ymem

<<

#

16)

FIRSSUB

Xmem,

Ymem,

Cmem,

ACx,

ACy

;ACy

=

ACy

+(ACx

(32-16)*

Cmem);ACx

=

(Xmem

<<

#

16)

–(Ymem

<<

#

16)

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,C54CM,M40,SATD,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy,CARRY

舉例:FIRSADD

*AR0,*AR1,*CDP,AC0,AC1;AC1

=

AC1

+

AC0(32-16)

*

(*CDP);AC0

=(

(*AR0)

<<

#

16)

+

((*AR1)

<<

#

16)

最小均方(LMS)指令

指令

LMS

Xmem,

Ymem,

ACx,

ACy;ACy

=

ACy

+

(Xmem

*

Ymem);::

ACx

=

rnd(ACx

+

(Xmem

<<

#

16))

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,C54CM,M40,RDM,SATD,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy,CARRY

舉例:LMS

*AR0,*AR1,AC0,AC1;AC1

=

AC1

+

(*AR0)

*(*AR1);::

AC0

=

rnd(AC0

+

((*AR0)<<

#

16))

補(bǔ)碼指令

指令

NEG

[src,]

dst

;dst

=

–src

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:M40,SATA,SATD,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,CARRY

舉例

NEG

AC1,

AC0

;AC0=

-AC1

歸一化指令

指令

MANT

ACx,

ACy

;ACy

=

mant(ACx),

::

NEXP

ACx,

Tx

;Tx

=

–exp(ACx)

EXP

ACx,

Tx

;Tx

=

exp(ACx)

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:無

舉例

MANT

AC0,AC1;AC1等于AC0的尾數(shù),即將AC0右移與32位帶符號(hào)數(shù)對(duì)齊后的值;

::NEXP

AC0,T1;T1等于將AC0的MSB左移與32位帶符號(hào)數(shù)對(duì)齊所移位的次數(shù)值

飽和和舍入指令

指令

SAT[R]

[ACx,]

ACy

;ACy

=

saturate(rnd(ACx))

ROUND

[ACx,]

ACy

;ACy=rnd(ACx)

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,RDM,SATD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVy

舉例1:ROUND

AC0,AC1;AC1=AC0+8000h,且16個(gè)最低有效位清0

舉例2:SAT

AC0,AC1;將32位的AC0飽和,將飽和后的值FF

8000

0000裝入AC1

平方差指令

指令

SQDST

Xmem,

Ymem,

ACx,

ACy;ACy

=

ACy

+

(ACx(32-16)

*

ACx(32-16));ACx

=

(Xmem

<<

#

16)

–(Ymem

<<

#

16)

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,C54CM,M40,SATD,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy,CARRY

舉例:SQDST

*AR0,*AR1,AC0,AC1;AC1=AC1+(AC0(32-16))*(AC0(32-16));AC0=((*AR0)<<16)-((*AR1<<16)

位操作指令

位域比較指令

指令

BAND

Smem,

k16,

TCx;If(

((Smem)

AND

k16

)

==

0),TCx

=

0;else

TCx

=

1

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:TCx

舉例:

BAND

*AR3,

#

00A0h,

TC2;由于(*AR3)AND

k16==0,TC2=0

位計(jì)數(shù)

指令

BCNT

ACx,ACy,TCx,Tx;Tx=(ACx

AND

ACy)中1的個(gè)數(shù);若Tx為奇數(shù),則TCx=1,反之TCx=0

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:TCx

舉例:

BCNT

AC1,

AC2,

TC1,

T1;T1=(AC1與AC2)中1的個(gè)數(shù),個(gè)數(shù)是奇數(shù),TC1=1

位域擴(kuò)展和抽取指令

指令

位域抽取:

BFXTR

k16,ACx,dst;從LSB到MSB將k16中非零位對(duì)應(yīng)的ACx中的位抽取出來,依次放到dst的LSB中

位域擴(kuò)展:

BFXPA

k16,ACx,dst;將ACx的LSB放到k16中非零位對(duì)應(yīng)的dst中的位置上,;ACx的LSB個(gè)數(shù)等于k16中1的個(gè)數(shù)

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:無

舉例1:BFXTR#8024h,AC0,T2;從最低位到最高位將(8024h)中非零位對(duì)應(yīng)的AC0中的位抽取出來依次放到T2的LSB中

舉例2:BFXPA#8024h,AC0,T2;將AC0的LSB放到#8024h中非零位對(duì)應(yīng)的T2中的位置上,AC0的LSB個(gè)數(shù)等于#8024h中1的個(gè)數(shù)

存儲(chǔ)器位操作指令

指令

測試、清零、置位和取反

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:TCx

舉例1:BTST

AC0,*AR0,TC1;位地址AC0(3-0)=8,測試(*AR0)的位8,結(jié)果存入TC1

舉例2:BTSTNOT#12,*AR0,TC1;測試(*AR0)的位12,結(jié)果存入TC1,并將(*AR0)的位12取反

寄存器位操作指令

指令

測試、置位、清零和取反操作

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:TCx

舉例1:BTST

@#12,T0,TC1;測試T0的位12,將結(jié)果存入TC1

舉例2:BNOT

AR1,T0;將T0中由AR1確定的位12取反

舉例3:BTSTP

AR1(T0),AC0;由基地址(AR1)和偏移地址T0確定的位地址為39,測試AC0中的第39位并存入TC1;測試AC0中的第40位并存入TC2

狀態(tài)位設(shè)置指令

指令

置位和清零

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:已經(jīng)選擇的狀態(tài)位

舉例1:BCLR

AR1LC,ST2_55;由標(biāo)號(hào)AR1LC確定位地址為1,將ST2-55的位2清零

舉例2:BSET

CARRY,ST0_55;由標(biāo)號(hào)CARRY確定位地址為11,將ST0-55的位11置位

舉例3:BSET

CARRY;將ST0-55的CARRY(位11)置位

擴(kuò)展輔助寄存器操作指令

指令

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:ST2-55。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:無

舉例1:

AMAR

*AR1+,XAR0;將(*AR1)的內(nèi)容裝入XAR0,且AR1增1

AMOV#7FFFFFh;將23位的值(7FFFFFh)裝入XAR0

MOV

dbl(*AR3),XAR1;將(*AR3)低7位和(*(AR3+1))的16位裝入XAR1

邏輯運(yùn)算指令

按位與/或/異或/取反指令

指令

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:C54CM,M40。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:無

舉例1:NOT

AC0,AC1

;將AC0的內(nèi)容取反,結(jié)果存入AC1

舉例2:AND

AC0,AC1;AC1=AC1

AND

AC0

舉例3:AC0<<#4,AC1;將AC0邏輯左移4位后與AC1相或,結(jié)果存入AC1

舉例4:XOR

AC0,AC1;AC1=AC1

XOR

AC0

邏輯移位

指令

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:C54CM,M40。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:CARRY

舉例1:SFTL

AC1,#1

;AC1=AC1<<#1,由于M40=0,CARRY=位31,且位(39-32)清零

舉例2:SFTL

AC0,T0,AC1;AC1=AC0<<-6,由于M40=0,所以(39-32)清零

循環(huán)移位

指令

ROL

BitOut,src,BitIn,dst;將BitIn移進(jìn)src的LSB,src被移出的位存放于BitOut,此時(shí)的結(jié)果放到dst中ROR

BitIn,src,BitOut,dst;將BitIn移進(jìn)src的MSB,src被移出的位存放于

BitOut,此時(shí)的結(jié)果放到dst中

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:CARRY,M40,TC2。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:CARRY,TC2

舉例:

ROL

CARRY,AC1,TC2,AC1;將TC2移入AC1的LSB,將AC1中位31移出放入CARRY,由于M40=0,將AC0(39-32)清零

移動(dòng)指令

累加器、輔助寄存器或臨時(shí)寄存器裝載、存儲(chǔ)、移動(dòng)和交換

存儲(chǔ)單元間的移動(dòng)及初始化

入棧和出棧

CPU寄存器裝載令、存儲(chǔ)和移動(dòng)

累加器、輔助寄存器或臨時(shí)寄存器裝載、存儲(chǔ)、移動(dòng)和交換指令

指令

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,RDM,SATD,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx

舉例1:

MOV

AC0,*(#0E

10h);將AC0(15-0)存入E

10h單元

舉例2:MOV

AC0,AC1;AC1=AC0,由于M40=0,在31位檢測到溢出,將ACOV1置位

舉例3:MOV#248,AC1;AC1=#248

舉例4:SWAP

AR4,T0,將AR4的內(nèi)容和T0的內(nèi)容互換

存儲(chǔ)單元間的移動(dòng)及初始化

指令

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:無

舉例1:DELAY

*AR1+;*(AR3+1)=*(AR3),AR3=AR3+1

舉例2:MOV

*CDP,*(#0500h);將(*CDP)存入0500h處

入棧和出棧指令

指令

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:無

舉例1:POP

AC0,AC1;AC0(15-0)=(SP),AC1(15-0)=(SP+1)

(39-16)不變,SP=SP+2

舉例2:PSH

AR0,AC1;SP=SP-2,(SP)=AR0,(SP+1)=AC1(15-0)

CPU寄存器裝載、存儲(chǔ)和移動(dòng)指令

指令

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:無

舉例1:

MOV

T1,

BRC1

;BRC1=BRS1=T1

MOV

SP,

*AR1+

;(*AR1)=(SP),AR1=AR1+1

程序控制指令

跳轉(zhuǎn)指令

調(diào)用與返回指令

中斷與返回指令

重復(fù)指令

跳轉(zhuǎn)指令

指令—包括條件跳轉(zhuǎn)、無條件跳轉(zhuǎn)

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:ACOVx,CARRY,C54CM,M40,TCx。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx跳轉(zhuǎn)指令

舉例1:BCC

branch,TC1

;TC1=1,程序跳轉(zhuǎn)到標(biāo)號(hào)branch處執(zhí)行

舉例2:B

AC0

;PC=AC0(23-0)

調(diào)用與返回指令

指令

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:ACOVx,CARRY,C54CM,M40,TCx。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx

舉例

CALLCC(subroutine),AC1>=#2000h;AC1>=#2000h,PC=子程序地址

RETCC

ACOV0=#0;ACOV0=0,PC=調(diào)用子程序的返回地址

中斷與返回指令

指令

INTR

k5;程序執(zhí)行中斷服務(wù)子程序,中斷向量地址由中斷向量指針(IVPD)和5比

TRAP

k5;特?zé)o符號(hào)數(shù)確定

RETI;PC=中斷任務(wù)的返回地址

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:無。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:INTM

重復(fù)指令

指令

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:ACOVx,CARRY,C54CM,M40,TCx。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx

舉例1:RPT

CSR;下一條指令執(zhí)行CSR+1次MACM

*AR3+,

*AR4+,

AC1

其他程序控制指令

指令

XCC[label,]cond;當(dāng)條件滿足時(shí),執(zhí)行下面一條指令

XCCPART[label,]cond;當(dāng)條件滿足時(shí),執(zhí)行下面兩條并行指令

IDLE;空閑

NOP;空操作,PC=PC+1

NOP_16;空操作,PC=PC+2

RESET;軟件復(fù)位

狀態(tài)位

影響指令執(zhí)行的狀態(tài)位有:ACOVx,CARRY,C54CM,M40,TCx,INTM。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,IFR0,IFR1,ST0-55,ST1-55,ST2-55

舉例1:

XCC

branch,

*AR0

!=

#

0

;AR0不等于0,執(zhí)行下一條指令(ADD)ADD

*AR2+,

AC0

;AC0=AC0+(*AR2),AR2=AR2+1C55x處理器的軟件設(shè)計(jì)

C55x處理器程序基本結(jié)構(gòu)

C語言程序開發(fā)及優(yōu)化

C語言與匯編語言的混合編程

通用目標(biāo)文件格式

C55x處理器的數(shù)字信號(hào)處理庫和圖像、視頻處理庫C55x處理器軟件開發(fā)流程C55x處理器程序基本結(jié)構(gòu)

根據(jù)任務(wù)調(diào)度的方式不同分為兩類

由程序自己完成任務(wù)調(diào)度

運(yùn)行效率高,對(duì)硬件中斷響應(yīng)快

程序運(yùn)行穩(wěn)定,適合于任務(wù)較為單一

實(shí)時(shí)性較強(qiáng)的應(yīng)用

由嵌入式操作系統(tǒng)完成任務(wù)調(diào)度

利用處理器同時(shí)完成多個(gè)任務(wù)

簡化了應(yīng)用系統(tǒng)軟件設(shè)計(jì)

良好的多任務(wù)設(shè)計(jì)有助于提高系統(tǒng)的穩(wěn)定性和可靠性自我調(diào)度程序的基本結(jié)構(gòu)

自我調(diào)度程序組成

中斷程序部分

通過設(shè)置判斷標(biāo)志來影響主循環(huán)部分的運(yùn)行

初始化部分

DSP軟、硬件的初始化設(shè)置

啟動(dòng)系統(tǒng)硬件

使能DSP中斷

啟動(dòng)DMA傳送等

主循環(huán)部分

數(shù)據(jù)輸入、處理和輸出等中斷程序1//DS

P初始化//主循環(huán)//判斷條件1//條件滿足運(yùn)行處理模塊1//判斷條件n//條件滿足運(yùn)行處理模塊n??中斷程序m;Ma

in(){DS

P

_INT(

){??};for(;;){if(條件1){處理模塊1;};??if(條件n){處理模塊n;};}}應(yīng)用嵌入式操作系統(tǒng)

硬實(shí)時(shí)方式

按照固定時(shí)鐘節(jié)拍切換任務(wù)

不僅要執(zhí)行無誤,而且要準(zhǔn)時(shí)

軟實(shí)時(shí)方式

由軟件來進(jìn)行任務(wù)的切換

使各個(gè)任務(wù)盡快運(yùn)行,而不要求限定某個(gè)任務(wù)在多長時(shí)間內(nèi)完成

嵌入式操作系統(tǒng)的核心是操作系統(tǒng)內(nèi)核

優(yōu)先級(jí)的內(nèi)核可以分成兩種類型

不可剝奪型內(nèi)核—合作型多任務(wù)

要求每個(gè)任務(wù)主動(dòng)放棄CPU使用權(quán)

每個(gè)任務(wù)相互合作,共享一個(gè)CPU

異步事件由中斷服務(wù)來處理

允許任務(wù)使用不可重入函數(shù)

優(yōu)點(diǎn)是響應(yīng)中斷快

可剝奪型內(nèi)核

具有最高優(yōu)先級(jí)的任務(wù)就緒,得到CPU的使用權(quán)

不應(yīng)直接使用不可重入函數(shù)

主要工作是完成任務(wù)(進(jìn)程)的調(diào)度任務(wù)管理

是一個(gè)無限循環(huán)

5個(gè)狀態(tài)

休眠狀態(tài)

任務(wù)駐留在內(nèi)存之中,但并沒有被系統(tǒng)內(nèi)核所調(diào)用

就緒狀態(tài)

任務(wù)已經(jīng)準(zhǔn)備好,但由于該任務(wù)的優(yōu)先級(jí)比正在運(yùn)行的任務(wù)的優(yōu)先級(jí)低,還暫時(shí)不能運(yùn)行

運(yùn)行狀態(tài)

任務(wù)擁有CPU的使用權(quán),正在運(yùn)行

掛起狀態(tài)

任務(wù)正在等待某一個(gè)事件的發(fā)生以結(jié)束目前的等待

被中斷狀態(tài)

發(fā)生中斷,CPU進(jìn)入中斷服務(wù)程序,而暫時(shí)不能運(yùn)行當(dāng)前的任務(wù)任務(wù)狀態(tài)轉(zhuǎn)換

兩種類型

二進(jìn)制型—看做一個(gè)只有一位的計(jì)數(shù)器型信號(hào)量

計(jì)數(shù)器型

兩個(gè)任務(wù)之間利用信號(hào)量來取得同步

單向同步

任務(wù)用一個(gè)信號(hào)量觸發(fā)另一個(gè)任務(wù)

雙向同步信號(hào)量C語言程序開發(fā)及優(yōu)化C語言中的數(shù)據(jù)類型

對(duì)I/O空間進(jìn)行尋址

關(guān)鍵字ioport

ioport類型只能用來聲明全局或靜態(tài)變量

在本地變量中使用ioport類型,則變量必須用指針聲明指針聲明ioport類型舉例:void

foo

(void){ioport

int

i;/*無效的聲明*/ioport

int

*j;/*有效聲明*/}注意:聲明ioport類型的指針只有16位在printf()中引用ioport指針的舉例:ioport

int

*p;printf(”%

p

\n

”,

(void*)p);注意:則必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換“void

*”在本地變量中使用ioport類型的舉例:int

*

ioport

ioport_pointe

r;/*

ioport指針*/int

i;int

j;void

foo

(void){ioport_pointe

r

=

&i;j

=

*ioport_pointe

r;}指向I/O空間數(shù)據(jù)指針的舉例:/*指向ioport數(shù)據(jù):*/ioport

int

*

ptr_to_ioport;ioport

int

i;void

foo

(void){int

j;i

=

10

;ptr_to_ioport

=

&i;j

=

*ptr_to_ioport;}編譯結(jié)果:_foo:MOV#_i,*a

bs

16(#_ptr_to_ioport);存儲(chǔ)_i的地址MOV

*a

bs

16

(#

_ptr_to_ioport),AR

3AADD

#

–1

,

S

P;向_i中存入10MOV

#

10

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論