




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章TMS320C54x系列DSP的結(jié)構(gòu)、原理及硬件資源3.1TMS320C54x的CPU核心3.2TMS320C54x的存儲(chǔ)空間3.3TMS320C54x的片上外設(shè)
3.1TMS320C54x的CPU核心
3.1.1
CPU狀態(tài)控制寄存器
TMS320C54x有如下三個(gè)狀態(tài)控制寄存器:
(1)狀態(tài)寄存器0(ST0);
(2)狀態(tài)寄存器1(ST1);
(3)處理器工作方式狀態(tài)寄存器(PMST)。
1.狀態(tài)寄存器0(ST0)
狀態(tài)寄存器0(ST0)的結(jié)構(gòu)和各位的功能如下:
●位15~13:輔助寄存器指針。在間接尋址單操作數(shù)時(shí),可使用這三位來(lái)選擇當(dāng)前的輔助寄存器。這三位復(fù)位后的值為0。
●位12:測(cè)試和控制標(biāo)志位。TC用來(lái)存儲(chǔ)算術(shù)邏輯單元的測(cè)試位操作的結(jié)果。TC受BIT、BITF、BITT、CMPM、CMPR、CMPS和SFTC等指令的影響。TC的狀態(tài)(置位或清零)決定條件分支、條件調(diào)用、條件執(zhí)行和條件返回的指令是否執(zhí)行。若滿足以下條件,則可使TC
=
1:①
由BIT或BITT測(cè)試的位為1;②
當(dāng)執(zhí)行CMP、CMPR或者CMPS指令,比較一個(gè)數(shù)據(jù)存儲(chǔ)單元的值和一個(gè)立即操作數(shù)、AR0和另一個(gè)輔助寄存器或者一個(gè)累加器高字與累加器低字比較條件成立時(shí);③
由SFTC測(cè)試的某個(gè)累加器的第31位和30位的值不相等。該位復(fù)位后的值為1。
●位11:進(jìn)位位。如果加法操作產(chǎn)生進(jìn)位,則此位被置1;如果減法操作產(chǎn)生借位,則此位被清0。除使用16位帶移位的ADD或SUB指令外,在下一次加法操作后該位被復(fù)位(在下一次減法操作后被置位)。在使用16位帶移位的ADD或SUB指令時(shí),加法指令只能使該位置1,減法指令只能使該位清0。這里進(jìn)位和借位是指在ALU中的運(yùn)算,且定義在第32位的位置上。移位指令和循環(huán)移位指令(ROR、ROL、SFTA和SFTL)以及MIN、MAX、ABS和NEG指令也會(huì)影響該位。該位復(fù)位后的值為1。
●位10:累加器A溢出標(biāo)志。當(dāng)在ALU或乘法器中的加法操作發(fā)生溢出,且將結(jié)果保存于累加器A時(shí),OVA位被置1。一旦發(fā)生溢出,OVA位將一直保持置1狀態(tài),直到執(zhí)行使用AOV或ANOV作為條件的BC[D]指令、CC[D]指令、RC[D]指令或者XC指令為止。RSBX指令也能清除該位。該位復(fù)位后的值為0。
●位9:累加器B溢出標(biāo)志。當(dāng)在ALU或乘法器中的加法器操作發(fā)生溢出,且將結(jié)果保存于累加器B時(shí),OVB位被置1。一旦發(fā)生溢出,OVB位將一直保持置1狀態(tài),直到執(zhí)行使用BOV或BNOV作為條件的BC[D]指令、CC[D]指令、RC[D]指令或者XC指令為止。RSBX指令也能清除該位。該位復(fù)位后的值為0。
●
位8~0:數(shù)據(jù)存儲(chǔ)器頁(yè)指針。在使用直接尋址方式時(shí),這9位數(shù)據(jù)與指令中給出的7位地址組合成一個(gè)16位的物理地址對(duì)數(shù)據(jù)存儲(chǔ)器進(jìn)行尋址,從而獲取指令中的操作數(shù)。利用DP值按上述過(guò)程進(jìn)行直接尋址時(shí)應(yīng)確保ST1中的編譯器模式位(CPL)等于0。DP值可通過(guò)LD指令加載。該位復(fù)位后的值為0。
2.狀態(tài)寄存器1(ST1)
狀態(tài)寄存器1(ST1)的結(jié)構(gòu)和各位的功能如下:
●位15:塊重復(fù)操作標(biāo)志位,該位表明當(dāng)前是否正在進(jìn)行塊重復(fù)操作。該位復(fù)位后的值為0。該位為0表明當(dāng)前未進(jìn)行塊重復(fù)操作,當(dāng)塊重復(fù)計(jì)數(shù)器(BRC)減到零后,BRAF位被自動(dòng)清0;該位為1表明當(dāng)前正在進(jìn)行塊重復(fù)操作,當(dāng)執(zhí)行RPTB指令時(shí),BRAF位被自動(dòng)置1。
●
位14:直接尋址物理地址產(chǎn)生方式選擇位。在進(jìn)行直接尋址時(shí),CPL指示以何種方式生成尋址單元的物理地址。該位復(fù)位后的值為0。該位為0表示在進(jìn)行直接尋址時(shí),選擇數(shù)據(jù)頁(yè)指針(DP)來(lái)生成尋址單元的物理地址;該位為1表示在進(jìn)行直接尋址時(shí),選擇堆棧段指針(SP)來(lái)生成尋址單元的物理地址。
●位13:XF引腳狀態(tài)位。該位用于設(shè)定外部標(biāo)志腳(XF)的電平狀態(tài),XF引腳是DSP的通用輸出引腳,利用SSBX指令可將該位置1,利用RSBX指令可將該位清0,用戶可以在程序中通過(guò)對(duì)該位值的設(shè)定來(lái)改變外部標(biāo)志腳(XF)的電平狀態(tài)。該位復(fù)位后的值為1。
●
位12:保持方式位。當(dāng)處理器響應(yīng)HOLD信號(hào)時(shí),該位指示處理器是否繼續(xù)執(zhí)行內(nèi)部操作。該位復(fù)位后的值為0。該位為0表示當(dāng)DSP處于HOLD狀態(tài)時(shí),其外部接口置高阻狀態(tài),而處理器可繼續(xù)執(zhí)行內(nèi)部操作,此時(shí)需要從內(nèi)部的程序存儲(chǔ)器中取指并繼續(xù)執(zhí)行程序;該位為1表示當(dāng)DSP處于HOLD狀態(tài)時(shí),其外部接口置高阻狀態(tài),并且處理器也暫時(shí)停止一切內(nèi)部操作。
●位11:中斷方式位。該位可在全局上屏蔽或使能所有的可屏蔽中斷。SSBX指令置位INTM,RSBX指令復(fù)位INTM。當(dāng)復(fù)位或執(zhí)行可屏蔽中斷(INTR或外部中斷)時(shí),INTM置1。當(dāng)執(zhí)行RETE或RETF指令(從中斷返回)時(shí),INTM被清0。INTM不影響不可屏蔽中斷。INTM不能通過(guò)寫存儲(chǔ)器來(lái)進(jìn)行寫操作而將其置位。該位復(fù)位后的值為1。該位為0表示使能所有的可屏蔽中斷;該位為1表示禁止所有的可屏蔽中斷。
●
位10:保留位。讀該位時(shí)結(jié)果總為0。
●位9:溢出方式位。當(dāng)發(fā)生溢出時(shí),該位決定將什么值加載到目的累加器。SSBX和RSBX指令分別置位和復(fù)位OVM。該位復(fù)位后的值為0。該位為0表示將溢出后ALU或乘法累加器中的結(jié)果正常地裝入目的累加器;該位為1表示一旦遇到溢出,目的累加器就被設(shè)置為最大正值(0x7FFFFFFFh)或最大負(fù)值(FF80000000)。
●位8:符號(hào)擴(kuò)展方式位。該位用來(lái)決定符號(hào)位是否擴(kuò)展。SXM位不影響一些指令的定義,如對(duì)ADDS、LDU和SUBS指令,無(wú)論SXM為何值,都禁止符號(hào)擴(kuò)展。SSBX和RSBX指令分別置位和復(fù)位SXM。該位復(fù)位后的值為1。該位為0表示禁止符號(hào)位擴(kuò)展;該位為1表示數(shù)據(jù)在裝入ALU進(jìn)行使用前需要對(duì)數(shù)據(jù)進(jìn)行符號(hào)位擴(kuò)展。
●位7:雙16位或雙精度算術(shù)方式選擇位。該位用來(lái)決定ALU操作的算術(shù)運(yùn)算方式。該位復(fù)位后的值為0。該位為0表示ALU工作于雙精度算術(shù)方式下;該位為1表示ALU工作于雙16位算術(shù)方式下。
●
位6:小數(shù)方式位。當(dāng)FRCT為1時(shí),為了取消多余的符號(hào)位,乘法器結(jié)果輸出時(shí)左移一位。該位復(fù)位后的值為0。
●位5:修正方式位。該位用來(lái)決定對(duì)輔助寄存器指針(ARP)是否可以進(jìn)行修改。該位復(fù)位后的值為0。該位為0表示當(dāng)利用直接尋址方式對(duì)指令中的單個(gè)操作數(shù)進(jìn)行訪問(wèn)時(shí),
ARP不能被修正。當(dāng)DSP處于這種方式下時(shí),ARP的值總為0。該位為1表示當(dāng)利用直接尋址方式對(duì)指令中的單個(gè)操作數(shù)進(jìn)行訪問(wèn)時(shí),ARP可以被指令修正。當(dāng)DSP處于這種方式下時(shí),ARP的值為用戶制定的當(dāng)前輔助寄存器指針的編號(hào)。
●
位4~0:累加器移位方式位。ASM的五位用來(lái)指定一個(gè)-16~15之間的數(shù)值作為移位值,所有帶并行存儲(chǔ)的指令包括STL、STH、ADD、SUB和LD指令都可以將ASM的值作為移位位數(shù)。ASM能從數(shù)據(jù)存儲(chǔ)器中加載,也可利用LD指令來(lái)加載一個(gè)短立即數(shù)。該位復(fù)位后的值為0。
3.處理器工作方式狀態(tài)寄存器(PMST)
處理器工作方式狀態(tài)寄存器(PMST)的結(jié)構(gòu)和各位的功能如下:
●
位15~7:中斷向量指針。9位的IPTR指向中斷向量所在的128字程序存儲(chǔ)器的位置。在自舉-加載(Boot-Loaded)操作情況下,允許用戶在RAM中重置中斷向量。復(fù)位時(shí),這9位均被置1,復(fù)位向量總是存儲(chǔ)于程序存儲(chǔ)器空間的FF80h地址上。RESET指令不影響IPTR的值。
●
位6:微處理器方式或微計(jì)算機(jī)方式選擇位。該位可以使能/禁止片上ROM存儲(chǔ)器在程序存儲(chǔ)空間的地址映射,從而使DSP工作于微處理器方式或微機(jī)方式。MP/MC的值對(duì)應(yīng)于外電路給DSP的輸入引腳MP/MC的電平狀態(tài)。需注意的是,DSP只在復(fù)位時(shí)對(duì)MP/MC引腳的電平狀態(tài)進(jìn)行采樣,在正常工作時(shí)不再重新采樣并判斷該引腳的電平狀態(tài),直到下一次復(fù)位。RESET指令不影響此位。此位也可通過(guò)軟件來(lái)置位或清零。該位為0表示使能片上ROM,并將其映射到DSP的程序存儲(chǔ)空間;該位為1表示片上ROM不可用。
●
位5:片上RAM程序空間映射選擇位。該位使能片上雙端口數(shù)據(jù)存儲(chǔ)器映射到程序空間,這樣片上RAM就在程序空間和數(shù)據(jù)空間分別分配了不同的地址。該位為0表示片上RAM被映射到數(shù)據(jù)空間,并不映射到程序空間;該位為1表示片上RAM被映射到數(shù)據(jù)空間,同時(shí)也被映射到程序空間。
●
位4:地址可見模式。AVIS使能/禁止在DSP的地址引腳上獲得內(nèi)部程序地址。該位為0表示在訪問(wèn)內(nèi)部程序空間時(shí),外部地址引腳上的狀態(tài)不變化,數(shù)據(jù)線和控制線不被影響,而地址總線被總線上最后一次訪問(wèn)的地址值驅(qū)動(dòng);該位為1表示為了對(duì)內(nèi)部程序地址進(jìn)行跟蹤,此模式允許內(nèi)部程序地址出現(xiàn)在C54x的地址引腳上。當(dāng)中斷向量處于片內(nèi)存儲(chǔ)器上時(shí),它可以結(jié)合IACK信號(hào)對(duì)中斷向量進(jìn)行譯碼。
●位3:片上ROM數(shù)據(jù)空間映射選擇位。該位用于使能片上ROM存儲(chǔ)器映射到數(shù)據(jù)空間,這樣片上ROM在程序空間和數(shù)據(jù)空間就分別分配了不同的地址。該位為0表示片上ROM被映射到程序空間,并不映射到數(shù)據(jù)空間;該位為1表示片上ROM被映射到程序空間,同時(shí)也被映射到數(shù)據(jù)空間。
●
位2:輸出時(shí)鐘CLOCKOUT關(guān)閉控制位。當(dāng)CLKOFF為1時(shí),禁止CLKOUT輸出并且保持高電平。
●位1:乘法飽和方式控制位。該位用于決定執(zhí)行MAC和MAS指令時(shí),在完成乘法后進(jìn)行累加運(yùn)算前,是否需要對(duì)乘法結(jié)果進(jìn)行飽和處理。當(dāng)SMUL=1時(shí),在執(zhí)行累加運(yùn)算前,需要對(duì)乘法結(jié)果進(jìn)行飽和處理;當(dāng)SMUL=0時(shí),在執(zhí)行累加運(yùn)算前,不對(duì)乘法結(jié)果進(jìn)行飽和處理。該位僅在OVM=1和FRCT=1時(shí)才有效。SMUL位允許MAC和MAS操作與ETSIGSM規(guī)范定義的MAC和MAS基本操作一致。小數(shù)模式下,在執(zhí)行MAC和MAS指令中乘法后的加減法操作前,將溢出時(shí)的乘法結(jié)果調(diào)整為整數(shù)的最大值7FFFFFFh。在這種模式下(SMUL=1),若OVM=1,則MAC指令等價(jià)于MPY+ADD;在正常模式下
(SMUL=0),若OVM=1,則在執(zhí)行加減操作前,不對(duì)乘法的結(jié)果做溢出處理,而只是對(duì)MAC和MAS指令的結(jié)果進(jìn)行飽和處理。
●位0:存儲(chǔ)飽和方式控制位。該位用來(lái)決定執(zhí)行累加器值存儲(chǔ)指令時(shí),在完成移位操作后進(jìn)行存儲(chǔ)前,是否需要對(duì)移位后的累加器值進(jìn)行飽和處理。當(dāng)SST=1時(shí),在執(zhí)行數(shù)據(jù)存儲(chǔ)前,需要對(duì)移位后的累加器值進(jìn)行飽和處理;當(dāng)SMUL=0,在執(zhí)行數(shù)據(jù)存儲(chǔ)前,不對(duì)移位后的累加器值進(jìn)行飽和處理。在存儲(chǔ)飽和方式下,累加器值的存儲(chǔ)過(guò)程按如下步驟進(jìn)行。
①按照指令要求對(duì)累加器的40位數(shù)據(jù)進(jìn)行移位(左移或右移)。移位過(guò)程將受到當(dāng)前SXM值的影響。
②將累計(jì)器的40位數(shù)據(jù)值飽和溢出處理為32位值,處理過(guò)程與當(dāng)前的符號(hào)擴(kuò)展位SXM相關(guān)。如果SXM=0,則數(shù)據(jù)為無(wú)符號(hào)數(shù),作為正數(shù)進(jìn)行飽和處理,即若該值大于7FFFFFFFh,則該值設(shè)為7FFFFFFFh;如果SXM=1,則數(shù)據(jù)為符號(hào)數(shù),對(duì)其的飽和處理要按它為正數(shù)還是負(fù)數(shù)來(lái)進(jìn)行,若此值大于7FFFFFFFh,則將該值設(shè)為7FFFFFFFh,若此值小于80000000h,則將該值設(shè)為80000000h。
③按指令要求存儲(chǔ)數(shù)據(jù)。
④
在上述操作期間累加器中的內(nèi)容保持不變。
3.1.2算術(shù)邏輯單元(ALU)
算術(shù)邏輯單元(ALU)是CPU的計(jì)算核心,用于完成主要的算術(shù)運(yùn)算和邏輯運(yùn)算。圖3-1給出了算術(shù)邏輯單元(ALU)的功能原理框圖。ALU可在單時(shí)鐘周期內(nèi)完成絕大多數(shù)指令的執(zhí)行。除有關(guān)存儲(chǔ)器操作的指令(如ADDM、ANDM、ORM和XORM等指令)外,在ALU中完成一個(gè)操作后其結(jié)果通常被轉(zhuǎn)移到目的累加器(累加器A或者累加器B)中。
圖3-1算術(shù)邏輯單元(ALU)的功能原理框圖
1.ALU的輸入
以下簡(jiǎn)單介紹ALU輸入數(shù)據(jù)的來(lái)源方式,這里用X和Y分別代表在ALU中進(jìn)行運(yùn)算處理的兩個(gè)數(shù)據(jù)源。
進(jìn)入ALU的X輸入的數(shù)據(jù)一般來(lái)自以下兩種情況之一:
(1)移位寄存器的輸出(一個(gè)32位或16位數(shù)據(jù)存儲(chǔ)器操作數(shù)或一個(gè)移位累加器值);
(2)來(lái)自數(shù)據(jù)總線DB的數(shù)據(jù)存儲(chǔ)器操作數(shù)。
進(jìn)入ALU的Y輸入的數(shù)據(jù)一般來(lái)自以下三種情況之一:
(1)累加器A或B中的數(shù)值;
(2)來(lái)自數(shù)據(jù)總線CB的數(shù)據(jù)存儲(chǔ)器操作數(shù);
(3)T寄存器的值。
由于來(lái)自數(shù)據(jù)總線的數(shù)據(jù)是16位的,因此當(dāng)16位的數(shù)據(jù)被作為輸入的操作數(shù)送至40位的ALU時(shí),ALU根據(jù)16位的數(shù)據(jù)位處于高16位或低16位來(lái)決定采用以下哪種方式,以將其擴(kuò)展為40位的數(shù)據(jù)在ALU中進(jìn)行運(yùn)算處理。
(1)如果數(shù)據(jù)位處于高16位即有效數(shù)據(jù)位于第31~16位,則ALU自動(dòng)將輸入數(shù)據(jù)的低16位即第15~0位用0填充,并且當(dāng)SXM=0時(shí),將第39~32位用0填充,當(dāng)SXM=1時(shí),對(duì)第39~32位進(jìn)行符號(hào)擴(kuò)展。
(2)如果數(shù)據(jù)位處于低16位即有效數(shù)據(jù)位于第15~0位,則當(dāng)SXM=0時(shí),ALU自動(dòng)將輸入數(shù)據(jù)的高24位即第39~16位用0填充,當(dāng)SXM=1時(shí),對(duì)第39~16位進(jìn)行符號(hào)擴(kuò)展。
在具體的指令中,ALU采用哪種方式來(lái)獲得操作數(shù)取決于指令的具體語(yǔ)法。以ADD指令為例,表3-1給出了ADD指令中ALU的輸入數(shù)據(jù)的獲得方式。
表3-1ADD指令中ALU的輸入數(shù)據(jù)的獲得方式
2.ALU計(jì)算溢出時(shí)的處理
當(dāng)ALU的計(jì)算發(fā)生溢出時(shí),ALU有兩種方式來(lái)處理計(jì)算結(jié)果,這兩種方式分別稱為正常溢出方式和飽和溢出方式。正常溢出方式是直接將溢出后的計(jì)算結(jié)果作為最終結(jié)果,當(dāng)OVM=0時(shí),ALU處于正常溢出方式;飽和溢出是指當(dāng)ALU的計(jì)算結(jié)果發(fā)生溢出時(shí),ALU以所能表示的最大值或最小值(取決于發(fā)生溢出的方向)作為最終結(jié)果。飽和溢出方式對(duì)濾波或多媒體處理等計(jì)算十分有用。
當(dāng)計(jì)算發(fā)生溢出時(shí),若OVM=0,則ALU處于正常溢出方式,累加器裝載ALU的計(jì)算結(jié)果,而不需要對(duì)結(jié)果進(jìn)行任何修正;若OVM=1,則ALU處于飽和溢出方式,累加器裝載32位的最大值(007FFFFFFFh)或者最大負(fù)值(0FF80000000h)。
當(dāng)發(fā)生溢出時(shí),狀態(tài)寄存器ST0中相應(yīng)的溢出標(biāo)志(OVA或OVB)將被置1,以下任一事件發(fā)生時(shí)都可以清除該溢出標(biāo)志位:
(1)復(fù)位;
(2)在溢出狀態(tài)下,程序執(zhí)行無(wú)條件的或有條件的分支、返回和調(diào)用指令;
(3)對(duì)狀態(tài)寄存器ST0中的溢出標(biāo)志(OVA或OVB)直接進(jìn)行清0操作。
3.進(jìn)位位
ALU具有一個(gè)用于表示進(jìn)位標(biāo)志的進(jìn)位位,在ALU中執(zhí)行的大多數(shù)算術(shù)指令都會(huì)對(duì)該位產(chǎn)生影響,同時(shí)其計(jì)算也會(huì)受到該位的影響。進(jìn)位位支持高效的擴(kuò)展精度算術(shù)操作運(yùn)算。進(jìn)位位與ALU的非算術(shù)運(yùn)算指令(如加載累加器、邏輯操作、其他非算術(shù)指令和控制指令)的操作無(wú)關(guān)。
有條件的分支、返回、調(diào)用指令中的C和NC這兩個(gè)條件是否執(zhí)行相應(yīng)操作,是通過(guò)進(jìn)位位的狀態(tài)(清0或置1)來(lái)判斷的。利用RSBX和SSBX指令可以直接將進(jìn)位位清0或置1。在系統(tǒng)進(jìn)行硬件復(fù)位后,進(jìn)位位被置1。
4.雙16位模式
在進(jìn)行算術(shù)操作時(shí),用戶可以通過(guò)設(shè)置使ALU工作于雙16位模式。在這種模式下,ALU在一個(gè)周期內(nèi)可以執(zhí)行兩次16位操作,例如兩次加法運(yùn)算或兩次減法運(yùn)算。狀態(tài)寄存器ST1中的C16位專門用來(lái)控制ALU是否處于雙16位模式,用戶可以通過(guò)將此位置1或清0來(lái)設(shè)置或取消ALU的雙16位模式。這種模式對(duì)快速相加、比較、選擇等操作非常有用,因此在利用比較、選擇和存儲(chǔ)單元(CSSU)來(lái)實(shí)現(xiàn)Viterbi譯碼算法時(shí),常采用ALU的雙16位模式。
3.1.3累加器A和累加器B
累加器是DSP核心內(nèi)的一種專用寄存器,一般主要用于存放ALU或乘法累加單元的運(yùn)算結(jié)果。5000系列DSP中具有兩個(gè)累加器,分別記做累加器A和累加器B。此外累加器還用于MIN指令、MAX指令和并行指令LD||MAC,在這些指令的執(zhí)行中,兩個(gè)累加器其中一個(gè)用于加載數(shù)據(jù),另外一個(gè)用于算術(shù)運(yùn)算。
在功能上,
一般將40位的累加器分為三個(gè)部分,累加器A和累加器B的結(jié)構(gòu)基本相同,分別如圖3-2和圖3-3所示。
圖3-2累加器A的結(jié)構(gòu)圖
圖3-3累加器B的結(jié)構(gòu)圖
1.累加器值的存儲(chǔ)
通過(guò)使用STH、STL、STLM和SACCD指令,或者使用并行存儲(chǔ)指令,用戶可以將累加器的值存入數(shù)據(jù)存儲(chǔ)器。為了將累加器的高16位帶移位地存入存儲(chǔ)器中,用戶可以使用STH、SACCD和并行存儲(chǔ)指令。對(duì)于右移操作,AG和BG的各位分別移入AH和BH的各位中。對(duì)于左移操作,AH和BH各位分別移入AG和BG的各位中。為了將累加器的低16位帶移位地存入存儲(chǔ)器中,用戶可以使用STL指令。對(duì)于右移操作,AH和BH的各位分別移入AL和BL的各位中,并且相應(yīng)的低位數(shù)據(jù)丟失。對(duì)于左移操作,AL和BL的各位均被置為零。由于移位操作是在移位寄存器中執(zhí)行的,因此累加器的內(nèi)容保持不變。下面的例子表明了帶移位的累加器存儲(chǔ)操作的結(jié)果,假定累加器A的當(dāng)前值為0FF43211234h。
STHA,8,TEMP ;TEMP=2112h
STHA,-8,TEMP ;TEMP=FF43h
STLA,8,TEMP ;TEMP=3400h
STLA,-8,TEMP ;TEMP=2112h
2.累加器移位和循環(huán)移位操作
以下指令用于實(shí)現(xiàn)累加器移位和循環(huán)移位操作:
(1)SFTA(算術(shù)移位);
(2)SFTL(邏輯移位);
(3)SFTC(條件移位);
(4)ROL(累加器左循環(huán)移位);
(5)ROR(累加器右循環(huán)移位);
(6)ROLTC(帶TC的累加器左循環(huán)移位)。
在SFTA指令和SFTL指令中,移位位數(shù)為-16~15位。SFTA指令受符號(hào)擴(kuò)展位(SXM)的影響。當(dāng)SXM=1且移位位數(shù)為負(fù)值時(shí),SFTA指令執(zhí)行算術(shù)右移并且對(duì)該位進(jìn)行符號(hào)擴(kuò)展。當(dāng)SXM=0時(shí),累加器的高位不進(jìn)行符號(hào)擴(kuò)展并以0填充。SFTL指令不受SXM位的影響,它在執(zhí)行0~31位的移位操作時(shí),依據(jù)移位方向的不同,分別將0移入高位或低位中。
SFTC指令用于完成累加器值的歸一化操作,當(dāng)累加器的31位和30位均為1或均為0時(shí),SFTC執(zhí)行1位的左移操作,通過(guò)去掉累加器值中多余的符號(hào)位來(lái)完成累加器值的歸一化操作。
ROL指令用于實(shí)現(xiàn)累加器值的左循環(huán)移位。在移位過(guò)程中每移動(dòng)一位,累加器將進(jìn)位位的值移入累加器的最低位中,并將累加器最高位的值移入進(jìn)位位中,以此來(lái)實(shí)現(xiàn)累加器數(shù)值的左循環(huán)移位。在此過(guò)程中,累加器的保護(hù)位將被清0。
ROR指令用于實(shí)現(xiàn)累加器值的右循環(huán)移位。在移位過(guò)程中每移動(dòng)一位,累加器將進(jìn)位位的值移入累加器的最高位中,將累加器最低位的值移入進(jìn)位位中,以此來(lái)實(shí)現(xiàn)累加器數(shù)值的右循環(huán)移位。在此過(guò)程中,累加器的保護(hù)位將被清0。
ROLTC指令用于實(shí)現(xiàn)帶TC的累加器值的左循環(huán)移位。在移位過(guò)程中每移動(dòng)一位,累加器將測(cè)試控制位(TC)的值移入累加器的最低位中,將累加器最高位的值移入測(cè)試控制位
(TC)中,以此來(lái)實(shí)現(xiàn)帶TC的累加器數(shù)值的左循環(huán)移位。
3.1.4桶形移位寄存器
桶形移位寄存器是DSP核心中用于數(shù)據(jù)移位的專用寄存器,主要用于執(zhí)行以下操作:
(1)在ALU操作前對(duì)作為輸入數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)器操作數(shù)或者累加器值進(jìn)行預(yù)先的移位操作。
(2)對(duì)累加器值執(zhí)行邏輯或算術(shù)移位。
(3)對(duì)累加器的值進(jìn)行歸一化操作。
(4)在ALU完成計(jì)算并將結(jié)果存入累加器后,為滿足數(shù)據(jù)存儲(chǔ)的要求對(duì)累加器的值在存儲(chǔ)前進(jìn)行移位操作。
圖3-4所示為40位的桶形移位寄存器的功能原理圖。
如圖3-4所示,輸入數(shù)據(jù)的來(lái)源有以下三種情況:
●由數(shù)據(jù)總線DB上來(lái)的作為輸入操作數(shù)的16位數(shù)據(jù);
●由數(shù)據(jù)總線DB和CB上來(lái)的作為輸入操作數(shù)的32位數(shù)據(jù);
●
由兩個(gè)40位累加器中的任何一個(gè)上來(lái)的作為輸入操作數(shù)的40位數(shù)據(jù)。
圖3-4桶形移位寄存器的功能原理圖
如圖3-4所示,輸出數(shù)據(jù)的流向有以下兩種情況:
●作為ALU的一個(gè)輸入數(shù)據(jù);
●通過(guò)MSW/LSW寫選擇單元連接到EB總線上,并通過(guò)該總線存入到數(shù)據(jù)存儲(chǔ)器中。
移位操作中進(jìn)行右移位時(shí),由符號(hào)擴(kuò)展方式位SXM控制操作數(shù)是否進(jìn)行符號(hào)擴(kuò)展,當(dāng)此位置1時(shí),移位操作需執(zhí)行符號(hào)擴(kuò)展。但對(duì)一些指令(如LDU、ADDS和SUBS等指令)處理無(wú)符號(hào)存儲(chǔ)器操作數(shù)時(shí),不受符號(hào)擴(kuò)展方式位SXM的影響,無(wú)論SXM為何值均不執(zhí)行符號(hào)擴(kuò)展。
如圖3-4所示,有三種不同的方式來(lái)決定移位的方向和位數(shù),分別為由臨時(shí)寄存器的值、ASM位的值或指令直接給出移位位數(shù),具體采用哪種方式取決于不同指令的語(yǔ)法要求。無(wú)論哪種方式,給出數(shù)值的大小均決定了移位的位數(shù),而數(shù)值的正負(fù)則決定了移位的方向。正號(hào)對(duì)應(yīng)于左移,負(fù)號(hào)對(duì)應(yīng)于右移。
以下指令是由指令給出了由4~5位的操作數(shù)來(lái)表示-16~15位的移位。
ADDA,-4,B ;AddaccumulatorA(right-shifted4bits)to
;accumulatorB(oneword,onecycle)
SFTLA,+8 ;Shift(logical)accumulatorAeightbitsleft
;(oneword,onecycle)
在以下的例子中,ADD指令由ASM的值來(lái)決定-16~15位的移位位數(shù),用戶要求的移位數(shù)值可在該指令前利用LD指令加載到ASM中。
ADDA,ASM,B ;AddaccumulatorAtoaccumulatorBwithashift
;specifiedbyASM
在以下的例子中,NORM指令由臨時(shí)寄存器的低6位值來(lái)決定-16~31位的移位位數(shù)。
NORMA ;NormalizeaccumulatorA(T containstheexponent
;value)3.1.5乘法累加單元
C54x系列DSP的CPU具有一個(gè)17位
×17位的硬件乘法器,此乘法器連接到一個(gè)40位的專用加法器上。乘法累加單元在一個(gè)流水線周期內(nèi)可以完成一次乘和累加(MAC)運(yùn)算。這將大大地提高DSP在數(shù)字濾波、神經(jīng)網(wǎng)絡(luò)等許多算法中的運(yùn)算速度。圖3-5所示為乘法累加單元的功能原理圖。
圖3-5乘法累加單元的功能原理圖
乘法累加單元的硬件乘法器可用于執(zhí)行有符號(hào)操作數(shù)的乘法、無(wú)符號(hào)操作數(shù)的乘法和有符號(hào)操作數(shù)與無(wú)符號(hào)操作數(shù)的乘法運(yùn)算。
(1)對(duì)于有符號(hào)操作數(shù)的乘法,每個(gè)16位的存儲(chǔ)器操作數(shù)在進(jìn)行一位的符號(hào)擴(kuò)展后形成一個(gè)17位的操作數(shù)。
(2)對(duì)于無(wú)符號(hào)操作數(shù)的乘法,每個(gè)16位的操作數(shù)的最高位均以0進(jìn)行擴(kuò)展。
(3)對(duì)于有符號(hào)操作數(shù)與無(wú)符號(hào)操作數(shù)的乘法運(yùn)算,將對(duì)其中的一個(gè)操作數(shù)進(jìn)行符號(hào)擴(kuò)展,而對(duì)另外一個(gè)操作數(shù)的最高位用0進(jìn)行擴(kuò)展。
1.乘法累加單元中乘法器的輸入數(shù)據(jù)
如圖3-5所示,這里分別用XM和YM表示乘法器的兩個(gè)輸入,由圖可以看出,XM的數(shù)據(jù)來(lái)源可為以下幾種情況之一:
(1)臨時(shí)寄存器(T);
(2)由數(shù)據(jù)總線DB讀取的數(shù)據(jù)存儲(chǔ)器操作數(shù);
(3)累加器A的32~16位。
YM的數(shù)據(jù)來(lái)源可為以下幾種情況之一:
(1)由數(shù)據(jù)總線DB讀取的數(shù)據(jù)存儲(chǔ)器操作數(shù);
(2)由數(shù)據(jù)總線CB讀取的數(shù)據(jù)存儲(chǔ)器操作數(shù);
(3)由程序總線PB讀取的程序存儲(chǔ)器操作數(shù);
(4)累加器A的32~16位。
表3-2在不同指令中乘法器的輸入數(shù)據(jù)的來(lái)源
對(duì)于使用臨時(shí)寄存器T作為乘法器的一個(gè)輸入的指令,另一個(gè)輸入可能來(lái)自立即數(shù),也可能來(lái)自數(shù)據(jù)總線(DB)或者累加器A。
對(duì)于使用單個(gè)來(lái)自數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)作為操作數(shù)尋址的指令,一個(gè)操作數(shù)(來(lái)自數(shù)據(jù)存儲(chǔ)器的操作數(shù))通過(guò)數(shù)據(jù)總線DB輸入到乘法器中,另一個(gè)操作數(shù)來(lái)自T寄存器、程序總線PB或累加器A。
對(duì)于使用兩個(gè)來(lái)自數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)作為操作數(shù)尋址的指令,操作數(shù)分別來(lái)自數(shù)據(jù)總線DB和CB。
對(duì)于FIRS指令、SQUR指令和SQDST指令,F(xiàn)IRS指令的輸入數(shù)據(jù)來(lái)自程序總線PB和累加器A,SQUR和SQDST指令的輸入數(shù)據(jù)均來(lái)自累加器A。
在乘法累加單元中,T寄存器可用于數(shù)據(jù)的臨時(shí)寄存,它可以為乘和乘法累加指令提供一個(gè)操作數(shù),也可為具有并行裝載或者并行存儲(chǔ)的乘法指令(如LD||MAC、LD||MAS、
ST||MAC、ST||MAS和ST||MPY指令)提供一個(gè)操作數(shù)。用戶可以通過(guò)指令加載T寄存器的值,這些指令均支持存儲(chǔ)器映射寄存器尋址模式。為了提高一些指令的執(zhí)行效率,乘法累加單元允許將累加器A的32~16位作為乘法器的輸入。對(duì)于一些特殊應(yīng)用的指令如FIRS、SQDST、ABDST和
POLY指令,累加器A的值可以作為ALU的輸入,并且在輸入到乘法器中時(shí)不需要任何間斷。
2.乘法累加指令(MAC)
乘法累加指令(MAC)利用乘法累加單元可以同時(shí)對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算,通過(guò)乘法累加單元的硬件并行結(jié)構(gòu)可以在單周期內(nèi)執(zhí)行多個(gè)算術(shù)操作。
在有兩個(gè)數(shù)據(jù)存儲(chǔ)器操作數(shù)的MAC、MAS和MACSU指令中,數(shù)據(jù)可以在每個(gè)時(shí)鐘周期內(nèi)通過(guò)數(shù)據(jù)總線CB和DB輸入到乘法器中,并且乘法累加單元可以在一個(gè)周期內(nèi)同時(shí)進(jìn)行乘法運(yùn)算和累加運(yùn)算。這些操作數(shù)的地址由輔助寄存器算術(shù)運(yùn)算單元ARAU0和ARAU1產(chǎn)生。
在MACD和MACP指令中,兩個(gè)操作數(shù)在每個(gè)時(shí)鐘周期內(nèi)分別通過(guò)程序總線PB和數(shù)據(jù)總線DB輸入到乘法器中。當(dāng)MACD和MACP與重復(fù)指令(RPT和RPTZ)一起使用時(shí),乘法累加單元可以在單周期內(nèi)執(zhí)行MAC操作,并且連續(xù)存取數(shù)據(jù)和系數(shù)。兩個(gè)操作數(shù)(一個(gè)是來(lái)自數(shù)據(jù)空間的數(shù)據(jù),另一個(gè)是來(lái)自程序空間的系數(shù))的地址由輔助寄存器算術(shù)運(yùn)算單元(ARAU0)和程序地址寄存器(PAR)產(chǎn)生。在間接尋址模式下,輔助寄存器中的數(shù)據(jù)地址的更新由ARAU0完成,程序存儲(chǔ)器地址由程序地址生成單元(PAGEN)完成。
重復(fù)的MACD指令支持濾波器結(jié)構(gòu)(加權(quán)平均)。當(dāng)執(zhí)行乘法累加運(yùn)算時(shí),為了在一定的數(shù)據(jù)空間地址范圍內(nèi)連續(xù)存放采樣數(shù)據(jù),數(shù)據(jù)需要在數(shù)據(jù)存儲(chǔ)器中不斷地進(jìn)行移位,每次通過(guò)拋棄一個(gè)最早的采樣數(shù)據(jù)來(lái)為新的采樣數(shù)據(jù)留出存儲(chǔ)空間。
MAC和MACP指令采用循環(huán)尋址方式時(shí)也支持濾波器的實(shí)現(xiàn)。利用循環(huán)尋址方式,F(xiàn)IRS指令可實(shí)現(xiàn)一個(gè)有效的對(duì)稱的有限沖激響應(yīng)濾波器。
MPYU和MACSU指令對(duì)擴(kuò)展精度指令的算術(shù)操作進(jìn)行了簡(jiǎn)化。MPYU指令用于執(zhí)行無(wú)符號(hào)乘法,該指令的作用是將T寄存器中的無(wú)符號(hào)數(shù)與來(lái)自數(shù)據(jù)存儲(chǔ)器的無(wú)符號(hào)操作數(shù)相乘,并且將運(yùn)算結(jié)果存儲(chǔ)于指定的累加器中。MACSU指令用于無(wú)符號(hào)操作數(shù)或符號(hào)操作數(shù)的乘法累加運(yùn)算,該指令的作用是將來(lái)自數(shù)據(jù)存儲(chǔ)器的無(wú)符號(hào)操作數(shù)與另外一個(gè)來(lái)自數(shù)據(jù)存儲(chǔ)器的符號(hào)操作數(shù)相乘,并將結(jié)果與指定的累加器的值相加以完成乘法累加運(yùn)算。該指令允許用戶將大于16位的數(shù)據(jù)分為16位數(shù)據(jù)分別進(jìn)行運(yùn)算,這樣可以對(duì)更大的數(shù)據(jù)進(jìn)行乘法累加運(yùn)算。平方和指令(SQURA)與平方差(SQURS)指令通過(guò)將同一數(shù)據(jù)作為乘法累加單元的輸入來(lái)實(shí)現(xiàn)數(shù)據(jù)的平方運(yùn)算,然后將指令的運(yùn)算結(jié)果與指定累加器的值相加(對(duì)平方和指令SQURA)或相減(對(duì)平方差指令SQURS)。
SQUR指令的輸入可以是來(lái)自數(shù)據(jù)存儲(chǔ)器的操作數(shù)或累加器A的值。
3.累加器的MAC和MAS溢出操作
當(dāng)溢出方式位OVM=1且小數(shù)模式位FRCT=1時(shí),處理器工作方式狀態(tài)寄存器PMST中的乘法飽和方式位SMUL,用來(lái)決定是否在乘法累加運(yùn)算指令MAC和MAS執(zhí)行累加運(yùn)算前對(duì)乘法結(jié)果進(jìn)行飽和處理。用戶可以通過(guò)設(shè)置該位來(lái)定制乘法累加運(yùn)算的飽和運(yùn)算方式。這一特征使DSP的MAC和MAS指令滿足歐洲電信標(biāo)準(zhǔn)協(xié)會(huì)ETSI指定的GSM標(biāo)準(zhǔn)中所定義的MAC和MAS的運(yùn)算要求。
當(dāng)乘法飽和方式位SMUL=1且溢出方式位OVM=1時(shí),MAC指令等價(jià)于MPY+ADD。此時(shí)在小數(shù)模式下執(zhí)行乘法8000h×8000h時(shí),在加操作(MAC)或減操作(MAS)之前,乘法結(jié)果為它的上飽和值7FFFFFFFh。
當(dāng)乘法飽和方式位SMUL=0時(shí),乘法累加單元僅對(duì)乘法累加運(yùn)算的最終結(jié)果做飽和處理。
3.1.6比較、選擇和存儲(chǔ)單元(CSSU)
比較、選擇和存儲(chǔ)單元(CSSU)是一個(gè)具有特定用途的硬件單元,該模塊的主要功能是與算術(shù)邏輯單元(ALU)配合完成Viterbi解碼中的加法、比較和選擇(ACS)運(yùn)算。C54x系列DSP由于具有比較、選擇和存儲(chǔ)單元,因此可以方便地支持通信技術(shù)中解碼器和均衡器中各種Viterbi蝶形運(yùn)算算法。圖3-6給出了CSSU的結(jié)構(gòu)原理圖。
圖3-6比較、選擇和存儲(chǔ)單元的結(jié)構(gòu)原理圖
3.1.7指數(shù)編碼器
指數(shù)編碼器是一個(gè)具有特定功能的硬件設(shè)備,該設(shè)備專門用于在一個(gè)時(shí)鐘周期內(nèi)完成指數(shù)編碼指令(EXP)。圖3-7給出了指數(shù)編碼器的功能原理框圖。EXP指令的主要功能是使累加器中的數(shù)字進(jìn)行指數(shù)編碼,即計(jì)算出累加器中數(shù)值的指數(shù)值并將其以2的補(bǔ)碼數(shù)的形式存儲(chǔ)于T寄存器中,其值的范圍為-8~31。利用該值對(duì)累加器值進(jìn)行移位處理時(shí)可以對(duì)其做歸一化處理。當(dāng)累加器的值超過(guò)32位時(shí),指數(shù)編碼的計(jì)算結(jié)果是一個(gè)負(fù)數(shù)。
圖3-7指數(shù)編碼器的功能原理框圖
EXP指令和NORM指令可以配合起來(lái)利用指數(shù)編碼器完成累加器內(nèi)容的歸一化處理。EXP指令完成對(duì)累加器值的指數(shù)編碼并將指數(shù)值存儲(chǔ)于T寄存器中;NORM指令的作用是在1個(gè)周期內(nèi)以T寄存器中的值為移位位數(shù)對(duì)累加器中的值進(jìn)行移位操作。T寄存器中的負(fù)值表示將累加器中的內(nèi)容右移,這兩個(gè)指令可以對(duì)累加器中0~32位范圍內(nèi)的任何數(shù)值進(jìn)行歸一化處理。下面的例子給出了對(duì)累加器A中的數(shù)字進(jìn)行歸一化操作的匯編語(yǔ)言程序。
EXPA ;對(duì)累加器A中的數(shù)字進(jìn)行指數(shù)編碼并將指數(shù)值存儲(chǔ)于T寄存器中
STT,EXPONENT;將T寄存器中的指數(shù)值存儲(chǔ)于數(shù)據(jù)存儲(chǔ)器中,用EXPONENT表示用戶指定的用于存儲(chǔ)指數(shù)的數(shù)據(jù)存儲(chǔ)器地址
NORMA ;按T寄存器的值對(duì)累加器中的數(shù)值進(jìn)行歸一化操作
3.2TMS320C54x的存儲(chǔ)空間
3.2.1存儲(chǔ)空間映射與存儲(chǔ)器存儲(chǔ)空間是處理器的地址系統(tǒng)所允許訪問(wèn)的最大地址范圍,是由處理器的總線結(jié)構(gòu)決定的。TMS320C54x系列DSP的總線結(jié)構(gòu)采用16位的改進(jìn)型哈佛結(jié)構(gòu),程序空間、數(shù)據(jù)空間和I/O空間分別進(jìn)行獨(dú)立編址,16位的總線決定了系統(tǒng)分別具有64K的程序空間、64K的數(shù)據(jù)空間和64K的I/O空間,共192K的尋址空間。一些型號(hào)的C54x系列DSP對(duì)總線結(jié)構(gòu)進(jìn)行了擴(kuò)充,程序地址總線可達(dá)23位,最大可尋址8M的程序空間。
TMS320C54x系列DSP在片內(nèi)采用了多條并行的總線結(jié)構(gòu),這允許用戶同時(shí)進(jìn)行程序空間讀操作、數(shù)據(jù)空間讀操作和數(shù)據(jù)空間寫操作,即DSP可在同一時(shí)鐘周期內(nèi)同時(shí)執(zhí)行4個(gè)不同的存儲(chǔ)器操作:一次取指、兩次讀操作和一次寫操作。
存儲(chǔ)器是用于存儲(chǔ)程序和數(shù)據(jù)的物理器件,用戶可根據(jù)程序和數(shù)據(jù)存儲(chǔ)的需要為系統(tǒng)擴(kuò)展存儲(chǔ)器,并在存儲(chǔ)空間中給存儲(chǔ)器分配相應(yīng)的訪問(wèn)地址,此過(guò)程稱為存儲(chǔ)器的地址映射。一般來(lái)講,存儲(chǔ)器的容量可在存儲(chǔ)器空間許可的范圍內(nèi)由用戶任意進(jìn)行擴(kuò)展和映射,但其容量不能超過(guò)地址空間的限制,否則超出部分將無(wú)法進(jìn)行正常的訪問(wèn)。
TMS320C54x系列DSP均在片上集成了一定容量的存儲(chǔ)器,并允許用戶對(duì)片上存儲(chǔ)器的地址映射進(jìn)行一定程度的調(diào)整。當(dāng)片上集成的存儲(chǔ)器容量不夠系統(tǒng)的應(yīng)用要求時(shí),用戶可以在DSP片外為系統(tǒng)擴(kuò)展存儲(chǔ)器,稱為外部存儲(chǔ)器。相對(duì)于外部存儲(chǔ)器來(lái)講,片上集成的存儲(chǔ)器一般具有以下特點(diǎn):
●對(duì)片內(nèi)存儲(chǔ)器的訪問(wèn)一般具有更高的訪問(wèn)速度;
●片內(nèi)存儲(chǔ)器一般具有更低的能量消耗;
●
對(duì)片內(nèi)存儲(chǔ)器的訪問(wèn)一般更為穩(wěn)定。
DSP系統(tǒng)允許用戶根據(jù)系統(tǒng)的應(yīng)用要求在一定范圍內(nèi)將系統(tǒng)中各種存儲(chǔ)器映射到不同的地址空間。不同的存儲(chǔ)器類型(如RAM、ROM、EPROM和EEPROM)一般可以不受限制地根據(jù)用戶的需要映射到程序或數(shù)據(jù)空間。
TMS320C54x系列DSP中有三個(gè)狀態(tài)位可以影響存儲(chǔ)空間的地址映射,它們分別為MP/MC位、OVLY位和DROM位,其中MP/MC位的電平由DSP的MP/MC引腳的輸入電平?jīng)Q定,而OVLY位和DROM位是工作方式與狀態(tài)寄存器(PMST)的兩個(gè)狀態(tài)位,用戶可以根據(jù)需要通過(guò)配置這三個(gè)狀態(tài)位來(lái)定制存儲(chǔ)器空間的映射。這三個(gè)狀態(tài)位的功能如下所述。
(1)MP/MC:片內(nèi)ROM程序空間映射位。該位為0表示不將片內(nèi)ROM映射到程序空間;該位為1表示片內(nèi)ROM映射到程序空間。
(2)OVLY:片內(nèi)RAM程序空間映射位。該位為0表示不將片內(nèi)RAM映射到程序空間;該位為1表示片內(nèi)RAM映射到程序和數(shù)據(jù)空間。
(3)DROM:片內(nèi)ROM數(shù)據(jù)空間映射位。該位為0表示不將片內(nèi)ROM映射到數(shù)據(jù)空間;該位為1表示將部分片內(nèi)ROM映射到數(shù)據(jù)空間。
圖3-8TMS320C541的地址空間映射圖
圖3-9TMS320C542和TMS320C543的地址空間映射圖
圖3-10TMS320C545和TMS320C546的地址空間映射圖
圖3-11TMS320C548的地址空間映射圖
圖3-12TMS320C549的地址空間映射圖
圖3-13TMS320C548和TMS320C549的擴(kuò)展程序空間映射圖
圖3-14TMS320C5402的地址空間映射圖
圖3-15TMS320C5402的擴(kuò)展程序空間映射圖
圖3-16TMS320C5410的地址空間映射圖
圖3-17TMS320C5410的擴(kuò)展程序空間映射圖(OVLY=0)圖3-18TMS320C5410的擴(kuò)展程序空間映射圖(OVLY=1)圖3-19TMS320C5420的數(shù)據(jù)空間映射圖
圖3-20TMS320C5420的程序空間和I/O空間映射圖
3.2.2程序空間和程序存儲(chǔ)器
如前所述,TMS320C54x系列DSP一般具有64K~8M的程序?qū)ぶ房臻g,用戶可以根據(jù)不同型號(hào)DSP的程序空間地址分配情況將片上或外部存儲(chǔ)器映射到這一空間,以構(gòu)成系統(tǒng)的程序存儲(chǔ)器。
TMS320C54x系列DSP一般片上都集成了一定容量的存儲(chǔ)器,處理器的工作方式與狀態(tài)寄存器PMST的兩個(gè)狀態(tài)位MP/MC和OVLY共同決定這些寄存器的地址映射方式,用戶可以在程序中通過(guò)指令來(lái)改變這兩個(gè)狀態(tài)位的設(shè)置,并在一定程度上對(duì)程序存儲(chǔ)器進(jìn)行配置。具體情況讀者可參考3.2.1節(jié)中常見型號(hào)DSP的程序空間映射圖。
當(dāng)片內(nèi)的存儲(chǔ)器不夠或用戶需要使用外部的程序空間時(shí),用戶可以利用DSP的外部總線接口在外部擴(kuò)展程序存儲(chǔ)器。在擴(kuò)展外部存儲(chǔ)器時(shí),用戶必須按照相應(yīng)型號(hào)DSP的程序空間映射圖中的地址分配方案來(lái)選擇外部存儲(chǔ)器在程序空間中的映射地址。
當(dāng)完成DSP系統(tǒng)的程序空間地址映射后,處理器即可自動(dòng)對(duì)用戶所使能的地址范圍進(jìn)行尋址。
當(dāng)程序地址生成器(PAGEN)發(fā)出的地址處于用戶所配置的片內(nèi)程序存儲(chǔ)器的地址范圍時(shí),處理器會(huì)通過(guò)總線直接在片內(nèi)尋址訪問(wèn);當(dāng)PAGEN發(fā)出的地址處于用戶所配置的片外程序存儲(chǔ)器的地址范圍時(shí),處理器會(huì)自動(dòng)通過(guò)外部接口訪問(wèn)外部程序存儲(chǔ)器。
為了提高處理器訪問(wèn)存儲(chǔ)器的效率,DSP將片內(nèi)ROM存儲(chǔ)器細(xì)分為若干塊,這樣的分塊結(jié)構(gòu)允許處理器在同一個(gè)時(shí)鐘周期內(nèi)從一個(gè)塊內(nèi)取指,同時(shí)在另一個(gè)塊內(nèi)讀取數(shù)據(jù)。具體片內(nèi)ROM的分塊方案如圖3-21所示。
圖3-21片內(nèi)ROM的分塊方案圖
3.2.3數(shù)據(jù)空間和數(shù)據(jù)存儲(chǔ)器
TMS320C54x系列DSP具有64K的數(shù)據(jù)尋址空間,用戶可以根據(jù)不同型號(hào)DSP的數(shù)據(jù)空間地址的分配情況,將片上或外部的存儲(chǔ)器映射到這一空間,以構(gòu)成系統(tǒng)的數(shù)據(jù)存儲(chǔ)器。
TMS320C54x系列DSP一般片上都集成了一定容量不同類型的存儲(chǔ)器,如DARAM存儲(chǔ)器、SARAM存儲(chǔ)器和ROM存儲(chǔ)器等,DARAM和SARAM一般均映射到數(shù)據(jù)空間(用戶可以通過(guò)軟件設(shè)置使其部分映射到程序空間,但同時(shí)它們?nèi)詴?huì)被映射到數(shù)據(jù)空間),用戶可以通過(guò)設(shè)置處理器的工作方式與狀態(tài)寄存器PMST的狀態(tài)位DROM來(lái)改變ROM的映射方式。當(dāng)DROM=0時(shí),ROM不會(huì)被映射到數(shù)據(jù)空間;當(dāng)DROM=1時(shí),ROM被映射到數(shù)據(jù)空間,具體地址映射情況讀者可以參考相應(yīng)型號(hào)DSP的數(shù)據(jù)空間映射圖。
當(dāng)片內(nèi)的存儲(chǔ)器不夠或用戶需要使用外部的數(shù)據(jù)空間時(shí),用戶可以利用DSP的外部總線接口在外部擴(kuò)展數(shù)據(jù)存儲(chǔ)器。在擴(kuò)展外部存儲(chǔ)器時(shí),用戶必須按照相應(yīng)型號(hào)DSP的數(shù)據(jù)空間映射圖中的地址分配方案來(lái)選擇外部存儲(chǔ)器在數(shù)據(jù)空間中的映射地址。
當(dāng)完成DSP系統(tǒng)的數(shù)據(jù)空間地址映射后,處理器即可自動(dòng)對(duì)用戶所使能的地址范圍進(jìn)行尋址。當(dāng)處理器按照指令的要求發(fā)出數(shù)據(jù)空間尋址時(shí),若地址處于用戶所配置的片內(nèi)數(shù)據(jù)存儲(chǔ)器的地址范圍,則處理器會(huì)通過(guò)總線直接在片內(nèi)尋址訪問(wèn);若處理器發(fā)出的地址處于用戶所配置的片外數(shù)據(jù)存儲(chǔ)器的地址范圍,則處理器會(huì)自動(dòng)通過(guò)外部接口來(lái)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器。
另外,由于存儲(chǔ)器映射的寄存器、外圍電路寄存器和暫存器等均被映射到數(shù)據(jù)空間,需要占用部分的數(shù)據(jù)空間,因此用戶不能使用被占用的地址范圍。具體的地址范圍讀者可以參考相關(guān)型號(hào)DSP的說(shuō)明書。
對(duì)數(shù)據(jù)ROM的單操作數(shù)尋址包括32位長(zhǎng)字操作數(shù)尋址,DSP在單個(gè)周期內(nèi)就可以完成。在雙操作數(shù)尋址時(shí),如果操作數(shù)被存儲(chǔ)在同一塊內(nèi),則只需一個(gè)周期即可。關(guān)于ROM的分塊問(wèn)題與3.2.2節(jié)中的劃分方法相同。
為了提高處理器訪問(wèn)存儲(chǔ)器的效率,DSP將片內(nèi)RAM存儲(chǔ)器細(xì)分為若干塊,這樣的分塊結(jié)構(gòu)允許處理器在同一個(gè)時(shí)鐘周期內(nèi)從一個(gè)塊內(nèi)取出兩個(gè)操作數(shù),并將數(shù)據(jù)寫入到另一個(gè)塊中。具體片內(nèi)RAM的分塊方案如圖3-22所示。
圖3-22片內(nèi)RAM的分塊方案圖
3.2.4I/O空間
為了方便用戶對(duì)外部設(shè)備進(jìn)行訪問(wèn),DSP定義了專門的I/O空間,該空間獨(dú)立于程序空間和數(shù)據(jù)空間,具有64K的尋址范圍,用戶可以將外部設(shè)備端口映射到該空間。用戶可以在程序中利用外部總線對(duì)I/O空間進(jìn)行訪問(wèn)。
由于I/O空間獨(dú)立于程序空間和數(shù)據(jù)空間編址,因此對(duì)此空間的訪問(wèn)需要有專門的指令。
在DSP的指令集中,
PORTR(端口讀)和PORTW(端口寫)是專門用于訪問(wèn)I/O空間的指令。
3.2.5程序和數(shù)據(jù)的安全
在現(xiàn)代電子技術(shù)中,軟件技術(shù)逐漸成為產(chǎn)品的核心技術(shù),因此系統(tǒng)中程序和數(shù)據(jù)的安全就顯得十分重要。TMS320C54x系列DSP產(chǎn)品考慮了系統(tǒng)程序和數(shù)據(jù)的安全問(wèn)題。應(yīng)用系統(tǒng)的程序和數(shù)據(jù)安全主要來(lái)自兩個(gè)方面的威脅:一是人為對(duì)程序和數(shù)據(jù)的非正常訪問(wèn);二是非人為因素對(duì)程序和數(shù)據(jù)的非正常訪問(wèn)和破壞。DSP系統(tǒng)的安全機(jī)制是通過(guò)對(duì)非正常訪問(wèn)的阻止來(lái)實(shí)現(xiàn)的。
TMS320C54x系列DSP的程序和數(shù)據(jù)的安全機(jī)制分為兩種方式:ROM安全方式和ROM/RAM安全方式。
(1)ROM安全方式是通過(guò)阻止對(duì)ROM的非正常訪問(wèn)來(lái)實(shí)現(xiàn)的。在這種方式下,系統(tǒng)允許來(lái)自片上ROM的指令通過(guò)尋址ROM來(lái)讀取指令或數(shù)據(jù),禁止來(lái)自片上RAM和外部存儲(chǔ)器的指令對(duì)ROM的訪問(wèn),而對(duì)RAM未采用保護(hù)措施,用戶可以自由地訪問(wèn)。這種方式阻止了來(lái)自片上RAM和外部空間的指令對(duì)ROM的訪問(wèn)。
(2)ROM/RAM安全方式是通過(guò)阻止對(duì)ROM和RAM的非正常訪問(wèn)來(lái)實(shí)現(xiàn)的。在這種方式下,系統(tǒng)允許來(lái)自片上ROM和片上RAM的指令通過(guò)尋址ROM和RAM來(lái)讀取指令或數(shù)據(jù),而禁止來(lái)自外部存儲(chǔ)器的指令對(duì)ROM和RAM的訪問(wèn),這種方式同時(shí)實(shí)現(xiàn)了對(duì)ROM和RAM的保護(hù)。當(dāng)來(lái)自外部存儲(chǔ)器的指令訪問(wèn)ROM或RAM時(shí),將返回一個(gè)無(wú)效的數(shù)據(jù)(0FFFFh)。這種方式阻止了來(lái)自外部空間的指令對(duì)ROM和RAM的訪問(wèn)。
3.3TMS320C54x的片上外設(shè)
3.3.1通用數(shù)字I/O引腳
1.輸入引腳BIO
TMS320C54x系列DSP具有一個(gè)數(shù)字輸入引腳,標(biāo)記為BIO,該引腳的狀態(tài)可以控制程序的執(zhí)行,因此也稱為分支轉(zhuǎn)移控制輸入引腳。在DSP軟件系統(tǒng)中,控制程序分支的方法主要有兩種:一是通過(guò)指令中的條件來(lái)控制;二是由輸入引腳BIO的數(shù)字狀態(tài)來(lái)控制。利用輸入引腳BIO的數(shù)字狀態(tài)來(lái)控制程序分支具有更好的實(shí)時(shí)性,在時(shí)間要求苛刻的循環(huán)中,程序的分支判斷不允許受到干擾,此時(shí)可根據(jù)BIO引腳的狀態(tài)(即與該引腳相連的外部設(shè)備的狀態(tài))來(lái)決定程序的執(zhí)行。例如下面的指令:
XC2,
BIO該指令執(zhí)行時(shí)首先判斷BIO引腳的狀態(tài)(即與該引腳相連的外部設(shè)備的狀態(tài)),并根據(jù)此引腳的狀態(tài)決定程序的執(zhí)行行為。當(dāng)BIO引腳為低電平時(shí),程序繼續(xù)執(zhí)行該指令后的1條雙字指令或2條單字指令;否則,當(dāng)BIO引腳為高電平時(shí),程序?qū)?zhí)行兩條NOP指令而跳過(guò)該指令后的1條雙字指令或2條單字指令,以此來(lái)實(shí)現(xiàn)對(duì)程序執(zhí)行流程的控制。
2.外部標(biāo)志輸出引腳XF
TMS320C54x系列DSP具有一個(gè)數(shù)字輸出引腳,標(biāo)記為XF,該引腳可在程序的控制下輸出特定的電平狀態(tài)。通過(guò)該引腳,用戶可以向與之相連的外部設(shè)備發(fā)送一定的信息,因此該設(shè)備也稱為外部標(biāo)志引腳。用戶可通過(guò)如下的兩個(gè)指令來(lái)設(shè)置該引腳的電平狀態(tài):
SSBXXF
RSBXXF其中,SSBX指令的作用是置位輸出引腳XF,即通過(guò)該引腳向外部設(shè)備發(fā)送數(shù)字電平1;RSBX指令的作用是復(fù)位輸出引腳XF,即通過(guò)該引腳向外部設(shè)備發(fā)送數(shù)字電平0。
由于輸出引腳XF的電平變化是通過(guò)程序指令來(lái)實(shí)現(xiàn)的,因此由指令取指到XF引腳的電平發(fā)生變化需要一定的時(shí)間。圖3-23給出了XF引腳電平狀態(tài)發(fā)生變化的時(shí)序圖。
圖3-23XF引腳電平狀態(tài)發(fā)生變化的時(shí)序圖
3.3.2定時(shí)器
1.定時(shí)器的基本原理
TMS320C54x系列DSP片上集成了通用的硬件定時(shí)器,該通用定時(shí)器可以通過(guò)對(duì)系統(tǒng)時(shí)鐘(CPUclock)的計(jì)數(shù)來(lái)實(shí)現(xiàn)定時(shí)操作。用戶可以通過(guò)程序來(lái)設(shè)定定時(shí)器的定時(shí)長(zhǎng)度,到達(dá)定時(shí)時(shí)間時(shí),定時(shí)器可以產(chǎn)生定時(shí)器輸出(TOUT),并同時(shí)定時(shí)地產(chǎn)生定時(shí)器中斷(TINT)。TMS320C54x系列DSP片上集成的通用定時(shí)器的結(jié)構(gòu)原理圖如圖3-24所示。
圖3-24通用定時(shí)器的結(jié)構(gòu)原理圖
2.定時(shí)器的寄存器
定時(shí)器模塊中主要有3個(gè)寄存器,它們分別是定時(shí)器寄存器(TIM)、定時(shí)器周期寄存器(PRD)和定時(shí)器控制寄存器(TCR)。定時(shí)器的主要功能也是由這三個(gè)寄存器來(lái)實(shí)現(xiàn)的。定時(shí)器寄存器(TIM)是一個(gè)對(duì)輸入時(shí)鐘計(jì)數(shù)的減1計(jì)數(shù)器,是定時(shí)器計(jì)數(shù)操作的執(zhí)行者;定時(shí)器周期寄存器(PRD)用于存儲(chǔ)用戶設(shè)定的定時(shí)周期,也稱為時(shí)間常數(shù);定時(shí)器控制寄存器
(TCR)是定時(shí)器中的狀態(tài)和控制寄存器,用于存儲(chǔ)與定時(shí)器相關(guān)的狀態(tài)和控制信息,定時(shí)器預(yù)定標(biāo)計(jì)數(shù)器(PSC)和定時(shí)器分頻系數(shù)(TDDR)就是TCR中的位。這3個(gè)寄存器在數(shù)據(jù)空間的映射地址分別為0024h、0025h和0026h。
定時(shí)器控制寄存器(TCR)的結(jié)構(gòu)如下:
●位15~12:保留位?!?/p>
位11~10:軟件仿真設(shè)置位,這兩位決定了系統(tǒng)在調(diào)試環(huán)境中遇到用戶設(shè)置的斷點(diǎn)時(shí)定時(shí)器的工作狀態(tài)。這兩位為00表示一旦仿真掛起,立即停止;這兩位為01表示一旦仿真掛起,在完成當(dāng)前計(jì)數(shù)周期后停止;這兩位為10表示定時(shí)器操作與仿真掛起無(wú)關(guān);這兩位為11表示定時(shí)器操作與仿真掛起無(wú)關(guān)。
●位9~6:定時(shí)器預(yù)定標(biāo)計(jì)數(shù)器。這是一個(gè)4位的減1計(jì)數(shù)器,當(dāng)啟動(dòng)定時(shí)器時(shí),用TDDR的值作為初始值加載PSC,PSC立即開始對(duì)系統(tǒng)時(shí)鐘進(jìn)行減1計(jì)數(shù)。當(dāng)PSC的值由TDDR的值減到0后,PSC向TIM發(fā)出定時(shí)輸出信號(hào)并復(fù)位。復(fù)位時(shí)重新加載TDDR的值作為初始值,并開始新一輪的計(jì)數(shù)。
●
位5:定時(shí)器重新加載位。該位用來(lái)復(fù)位該定時(shí)器。當(dāng)該位置1時(shí),復(fù)位定時(shí)器。復(fù)位時(shí),以PRD的值作為初始值加載TIM,以TDDR的值作為初始值加載PSC。讀該位時(shí)結(jié)果總為0。
●位4:定時(shí)器啟動(dòng)停止位。該位用于控制定時(shí)器的啟動(dòng)和停止。在定時(shí)器復(fù)位時(shí),該位為0,即立即啟動(dòng)定時(shí)器。該位為0時(shí),啟動(dòng)定時(shí)器;該位為1時(shí),停止定時(shí)器。
●
位3~0:定時(shí)器分頻系數(shù)。該位用于用戶設(shè)置PSC的計(jì)數(shù)初值,用戶可以通過(guò)該位的設(shè)置來(lái)改變定時(shí)器對(duì)系統(tǒng)時(shí)鐘的分頻系數(shù)。當(dāng)PSC的值減到0后,TDDR的值被作為初始值加載到PSC中。
3.定時(shí)器的基本操作
定時(shí)器控制寄存器(TCR)中各位存放了全部用于控制定時(shí)器和表示定時(shí)器狀態(tài)的信息,因此對(duì)定時(shí)器的基本操作就是通過(guò)對(duì)該寄存器的訪問(wèn)來(lái)實(shí)現(xiàn)的。
1)定時(shí)器的定時(shí)周期設(shè)置
由定時(shí)器的工作原理可知,定時(shí)器的定時(shí)周期決定于三個(gè)因素:定時(shí)器的計(jì)數(shù)時(shí)鐘、定時(shí)器分頻系數(shù)(TDDR)的值和定時(shí)器周期寄存器(PRD)的值。定時(shí)器的計(jì)數(shù)時(shí)鐘對(duì)具體的應(yīng)用系統(tǒng)來(lái)講是確定的,一般為系統(tǒng)時(shí)鐘(CPUclock)或外部時(shí)鐘(CLKOUT)。定時(shí)器分頻系數(shù)(TDDR)的值和定時(shí)器周期寄存器(PRD)的值可由用戶設(shè)定,因此用戶可以通過(guò)設(shè)置這兩個(gè)寄存器的值來(lái)改變定時(shí)器的定時(shí)周期。
定時(shí)器分頻系數(shù)(TDDR)占用了定時(shí)器控制寄存器(TCR)的4位,因此其值的范圍為0~24;定時(shí)器周期寄存器(PRD)是16位的寄存器,其設(shè)置值的范圍為0~216。用戶可以通過(guò)程序在上述范圍內(nèi)設(shè)定它們的值來(lái)獲得不同的定時(shí)周期。
用戶設(shè)定定時(shí)器分頻系數(shù)(TDDR)的值和定時(shí)器周期寄存器(PRD)的值以后,定時(shí)器的定時(shí)周期為
定時(shí)周期
=時(shí)鐘周期
×(TDDR+1)×(PRD+1)
2)定時(shí)器的啟動(dòng)和停止
定時(shí)器控制寄存器(TCR)的第四位TSS是定時(shí)器的啟動(dòng)和停止位,
該位用于控制定時(shí)器的啟動(dòng)和停止,用戶可以通過(guò)訪問(wèn)該位來(lái)進(jìn)行定時(shí)器的啟動(dòng)和停止操作。當(dāng)需要停止定時(shí)器時(shí),通過(guò)程序設(shè)置TSS位為1,這樣可以切斷定時(shí)器的計(jì)數(shù)時(shí)鐘輸入,定時(shí)器將停止計(jì)數(shù);當(dāng)需要啟動(dòng)定時(shí)器時(shí),通過(guò)程序設(shè)置TSS位為0,這樣可以恢復(fù)定時(shí)器的計(jì)數(shù)時(shí)鐘輸入,定時(shí)器將啟動(dòng)計(jì)數(shù)。在定時(shí)器復(fù)位時(shí),該位為0,即立即啟動(dòng)定時(shí)器。
3)讀寄存器
用戶可以通過(guò)程序讀取定時(shí)器寄存器(TIM)和定時(shí)器控制寄存器(TCR)的當(dāng)前值來(lái)獲取定時(shí)器當(dāng)前的計(jì)數(shù)狀態(tài),如當(dāng)前計(jì)數(shù)值和當(dāng)前的預(yù)分頻系數(shù)等信息。
在進(jìn)行定時(shí)測(cè)量時(shí),用戶可以通過(guò)讀定時(shí)器寄存器(TIM)來(lái)獲取當(dāng)前的計(jì)數(shù)值,以確定計(jì)數(shù)時(shí)間,但這樣對(duì)時(shí)間的測(cè)量分辨率應(yīng)為[時(shí)鐘周期
×(TDDR+1)]。如果需要更精確的定時(shí)測(cè)量,用戶可以同時(shí)讀取定時(shí)器寄存器(TIM)和定時(shí)器控制寄存器(TCR)的PSC位,這樣時(shí)間測(cè)量的分辨率可以達(dá)到定時(shí)器工作的時(shí)鐘周期。由于讀這兩個(gè)寄存器需要兩條指令,定時(shí)器的持續(xù)工作將使兩次讀寄存器時(shí)讀數(shù)發(fā)生變化,因此在讀這兩個(gè)值之前用戶需要在程序中通過(guò)定時(shí)器的停止操作來(lái)停止其計(jì)數(shù)操作。
4)定時(shí)器的初始化操作
用戶在啟動(dòng)定時(shí)器進(jìn)行定時(shí)操作之前,需要對(duì)定時(shí)器進(jìn)行必要的設(shè)置,這一過(guò)程稱為定時(shí)器的初始化。定時(shí)器初始化的一般過(guò)程如下:
(1)先將TCR中的TSS位置1,以停止定時(shí)器操作;
(2)根據(jù)需要的定時(shí)周期加載適當(dāng)?shù)腜RD值;
(3)重新加載TCR(設(shè)置適當(dāng)?shù)亩〞r(shí)器分頻系數(shù)值使TDDR初始化,令TSS位為0以恢復(fù)計(jì)數(shù)時(shí)鐘,將TRB位設(shè)置為1以便TIM減到0后重新加載定時(shí)器的定時(shí)周期值到TIM)。
若用戶需要采用定時(shí)器中斷信號(hào),則在初始化定時(shí)器時(shí)應(yīng)使能定時(shí)器中斷,具體過(guò)程如下:
(1)將中斷標(biāo)志寄存器(IFR)中的TINT位置1,清除尚未完成的定時(shí)器中斷;
(2)將中斷屏蔽寄存器(IMR)中的TINT位置1,開放定時(shí)器中斷;
(3)將系統(tǒng)狀態(tài)寄存器ST1中的INTM位清0,在總體上開放可屏蔽中斷。
下面給出了一個(gè)采用匯編語(yǔ)言編寫的定時(shí)器初始化的程序?qū)嵗?/p>
STM#0010h,TCR ;TSS=1,停止定時(shí)器
STM#007Fh,PRD ;按照需要的定時(shí)周期長(zhǎng)度設(shè)定PRD的值
STM#0C29h,TCR ;按照需要設(shè)置TCR的值,本例中,TDDR=9h,TSS=0以;啟動(dòng)定時(shí)器,TRB=1以使TIM減到0后重新加載定時(shí)器;的定時(shí)周期值到TIM,soft=1,F(xiàn)ree=1以使定時(shí)器在調(diào)試時(shí)遇到斷點(diǎn)后繼續(xù)執(zhí)行
STM#0008h,IFR ;清除尚未完成的定時(shí)器中斷
STM#0008h,IMR ;開放定時(shí)器中斷
RSBXINTM ;INTM=0,在總體上開放可屏蔽中斷
3.3.3時(shí)鐘發(fā)生器電路
1.硬件配置的鎖相環(huán)(PLL)電路
所謂硬件配置的鎖相環(huán)(PLL)電路,就是指通過(guò)設(shè)置DSP的CLKMD1、CLKMD2和CLKMD3三個(gè)引腳的狀態(tài)來(lái)選擇相應(yīng)的時(shí)鐘方式。其時(shí)鐘方式的配置方法如表3-3所示。
表3-3硬件配置的鎖相環(huán)電路時(shí)鐘方式的配置方法
2.軟件可編程的鎖相環(huán)(PLL)電路
軟件可編程的鎖相環(huán)(PLL)電路相對(duì)于硬件配置方式來(lái)講具有更高的靈活性。它的時(shí)鐘定標(biāo)器提供更多種類的時(shí)鐘乘法器系數(shù),并能直接接通和關(guān)閉鎖相環(huán)電路。PLL的鎖定定時(shí)器可以延遲切換到PLL方式,直到鎖定為止。
軟件可編程的鎖相環(huán)(PLL)電路可以工作在PLL方式和DIV(分頻器)方式兩種工作方式下,用戶可以通過(guò)程序來(lái)設(shè)定鎖相環(huán)電路的工作方式。
(1)PLL方式。在該方式下,時(shí)鐘電路通過(guò)PLL電路來(lái)完成對(duì)CLKIN信號(hào)的頻率變換,以獲得DSP所需要的時(shí)鐘頻率。PLL電路可提供0.25~15共31種不同的變頻系數(shù)。
(2)DIV(分頻器)方式。該方式下,時(shí)鐘電路將關(guān)閉包括PLL電路在內(nèi)的所有時(shí)鐘部分的模擬電路,而通過(guò)分頻電路來(lái)實(shí)現(xiàn)對(duì)CLKIN信號(hào)的1/2分頻或1/4分頻。這樣可使時(shí)鐘電路的功耗達(dá)到最低。
在軟件可編程的鎖相環(huán)(PLL)電路中,時(shí)鐘電路的配置不再完全由DSP的CLKMD1、
CLKMD2和CLKMD3三個(gè)引腳的狀態(tài)來(lái)決定,而是在DSP中有專門用于鎖相環(huán)電路設(shè)置的寄存器,用戶可以在程序中通過(guò)訪問(wèn)該寄存器來(lái)實(shí)現(xiàn)對(duì)時(shí)鐘電路的配置。
時(shí)鐘方式寄存器(CLKMD)是一個(gè)16位的寄存器,映射在數(shù)據(jù)空間的地址為58h,用戶可以通過(guò)訪問(wèn)該寄存器來(lái)設(shè)置時(shí)鐘電路的工作方式。該寄存器的主要結(jié)構(gòu)如下:
●位15~12:PLL乘數(shù)位。該位的值與PLLDIV、PLLNDIV一起決定PLL電路的頻率乘數(shù),具體見表3-4。
●位11:PLL除數(shù)位。該位的值與PLLMUL、PLLNDIV一起決定PLL電路的頻率乘數(shù),具體見表3-4。
●位10~3:PLL計(jì)數(shù)器。PLL計(jì)數(shù)器是一個(gè)8位的減1計(jì)數(shù)器,每16個(gè)輸入時(shí)鐘
CLKIN到來(lái)后該計(jì)數(shù)器減1。用戶發(fā)出啟動(dòng)鎖相環(huán)電路的指令到鎖相環(huán)電路鎖相穩(wěn)定需要一定的時(shí)間,為保證時(shí)鐘的穩(wěn)定度,DSP系統(tǒng)在用戶發(fā)出啟動(dòng)鎖相環(huán)電路的指令后延遲一段時(shí)間,待鎖相環(huán)電路完成鎖相后將鎖相環(huán)電路的輸出作為系統(tǒng)時(shí)鐘加到DSP上。該計(jì)數(shù)器的作用就是為了控制這一段延遲時(shí)間的長(zhǎng)度,用戶可以通過(guò)設(shè)定該計(jì)數(shù)器的初始值來(lái)控制這一延遲時(shí)間的長(zhǎng)短。
●位2:PLL電路啟動(dòng)停止位。該位的值與PLLNDIV一起決定PLL電路的啟動(dòng)和停止,具體見表3-5。
●位1:PLL時(shí)鐘發(fā)生器工作方式選擇位。該位用來(lái)決定時(shí)鐘發(fā)生器的工作方式,該位影響時(shí)鐘電路的頻率乘數(shù)和PLL電路的啟動(dòng)停止設(shè)置,具體見表3-4和表3-5。該位為0表示時(shí)鐘電路采用分頻器(DIV)方式;該位為1表示時(shí)鐘電路采用PLL方式。
●
位0:PLL時(shí)鐘發(fā)生器工作狀態(tài)位。該位是只讀位,該位反映時(shí)鐘發(fā)生器的工作方式,用戶可以在程序中通過(guò)讀取該位來(lái)判斷PLL電路當(dāng)前所處的工作方式。該位為0表示時(shí)鐘電路當(dāng)前處于分頻器(DIV)方式;該位為1表示時(shí)鐘電路當(dāng)前處于PLL方式。
表3-4PLL乘數(shù)表
表3-5PLL電路的啟動(dòng)和停止方式
表3-6軟件可編程的鎖相環(huán)電路復(fù)位后的時(shí)鐘電路工作方式
在設(shè)定時(shí)鐘方式寄存器(CLKMD)的值時(shí),用戶需要設(shè)定該寄存器中PLLCOUNT的值來(lái)控制進(jìn)入PLL方式的延遲時(shí)間。這需要估計(jì)鎖相環(huán)電路的鎖定時(shí)間,該時(shí)間與鎖相環(huán)電路的輸出時(shí)鐘信號(hào)頻率CLKOUT有關(guān),用戶可以利用圖3-25根據(jù)CLKOUT的頻率值來(lái)估計(jì)鎖相環(huán)電路的鎖定時(shí)間。
圖3-25鎖相環(huán)電路的鎖定時(shí)間估計(jì)圖
通過(guò)圖3-25估計(jì)出鎖相環(huán)電路的鎖定時(shí)間后,用戶就可以根據(jù)這一時(shí)間要求來(lái)設(shè)置合適的PLL計(jì)數(shù)器(PLLCOUNT)的值。PLLCOUNT是一個(gè)8位的計(jì)數(shù)器,計(jì)數(shù)器值的范圍為0~255。該計(jì)數(shù)器對(duì)輸入時(shí)鐘CLKIN進(jìn)行計(jì)數(shù),每來(lái)16個(gè)CLKIN時(shí)鐘進(jìn)行一次減1計(jì)數(shù),因此,可以設(shè)定的延遲時(shí)間的范圍為0~255×16×CLKIN的周期。根據(jù)需要的延遲時(shí)間,PLLCOUNT的設(shè)定值應(yīng)滿足:
其中,TCLKIN表示輸入時(shí)鐘CLKIN的周期。
例如,需要將DSP由DIV方式轉(zhuǎn)為PLL工作方式,已知輸入的CLKIN時(shí)鐘頻率為10MHz,需要的DSP核心頻率為40MHz,因此需要采用的PLL乘系數(shù)為4。所以可設(shè)置PLLMUL=0011,PLLDIV=0,PLLNDIV=1來(lái)選定PLL×4的工作方式。由CLKOUT=10×4=40MHz可在圖3-25中查得,PLLCOUNT應(yīng)設(shè)置為00101001,對(duì)應(yīng)的十進(jìn)制數(shù)據(jù)為41。這樣可通過(guò)以下指令將DSP轉(zhuǎn)為PLL工作方式:
STM#314Fh,
CLKMD3.3.4主機(jī)接口(HPI)
圖3-26主機(jī)接口(HPI)的結(jié)構(gòu)原理框圖
1.主機(jī)接口(HPI)的組成
由圖3-26可以看出,主機(jī)接口是一個(gè)8位的并行口,它主要由以下5個(gè)部分組成。
(1)HPI存儲(chǔ)器。HPI接口具有一個(gè)2K字大小的DARAM存儲(chǔ)器,主要用于主機(jī)和DSP之間的數(shù)據(jù)交換,主機(jī)可以通過(guò)HPI接口訪問(wèn)該存儲(chǔ)器,DSP也可直接訪問(wèn)該存儲(chǔ)器,以此來(lái)實(shí)現(xiàn)主機(jī)和DSP之間的數(shù)據(jù)交換。該存儲(chǔ)器也可被DSP用做通用的雙尋址數(shù)據(jù)RAM(當(dāng)被映射到數(shù)據(jù)空間時(shí))和程序RAM(當(dāng)被映射到程序空間時(shí))。
(2)HPI地址寄存器(HPIA)。該寄存器用于存儲(chǔ)主機(jī)當(dāng)前訪問(wèn)HPI存儲(chǔ)器的尋址地址,主機(jī)通過(guò)該寄存器來(lái)提供對(duì)HPI存儲(chǔ)器的訪問(wèn)地址。只有主機(jī)可以訪問(wèn)該寄存器,DSP無(wú)權(quán)訪問(wèn)該寄存器。
(3)HPI數(shù)據(jù)鎖存器(HPID)。該寄存器是主機(jī)和HPI存儲(chǔ)器之間的橋梁,主機(jī)對(duì)HPI存儲(chǔ)器的數(shù)據(jù)讀/寫是通過(guò)對(duì)該寄存器的讀/寫來(lái)實(shí)現(xiàn)的。當(dāng)主機(jī)從HPI存儲(chǔ)器讀取數(shù)據(jù)時(shí),HPI接口先按主機(jī)提供的訪問(wèn)地址將相應(yīng)的數(shù)據(jù)放到HPID中,然后主機(jī)從
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 姿態(tài)情緒測(cè)試題及答案
- 浦發(fā)信用卡面試題及答案
- 航空精神面試題及答案
- 女兵選拔測(cè)試題及答案
- Unit 4 單元綜合檢測(cè)卷
- 龍巖數(shù)學(xué)面試題及答案
- 意大利語(yǔ)a2考試試題及答案
- 高數(shù)考試題試卷及答案
- 2025年電動(dòng)載運(yùn)工程專業(yè)畢業(yè)設(shè)計(jì)開題報(bào)告
- 2025年工程現(xiàn)場(chǎng)副經(jīng)理考試題庫(kù)
- 2025年安防生產(chǎn)行業(yè)技能考試-安防工程企業(yè)技術(shù)人員能力驗(yàn)證考試歷年參考題庫(kù)含答案解析(5卷100道集合-單選題)
- 2025年康復(fù)治療師資格考試試題及答案
- 國(guó)際營(yíng)銷中心管理辦法
- 無(wú)痛人流知識(shí)課件
- 2024年四川省北川縣人民醫(yī)院公開招聘護(hù)理工作人員試題帶答案詳解
- 2025年天文知識(shí)競(jìng)賽考試試題
- 【語(yǔ)文 北京版】2025年高考招生統(tǒng)一考試高考真題語(yǔ)文試卷(真題+答案)
- 全國(guó)第三屆職業(yè)技能大賽(化學(xué)實(shí)驗(yàn)室技術(shù))選拔賽理論考試題庫(kù)(含答案)
- 生物安全會(huì)議記錄
- 2025年廣東省中考英語(yǔ)試題(附答案)
- 2025年廣東省中考道德與法治真題(解析版)
評(píng)論
0/150
提交評(píng)論