第2章TMS320C54x的硬件結(jié)構(gòu)_第1頁(yè)
第2章TMS320C54x的硬件結(jié)構(gòu)_第2頁(yè)
第2章TMS320C54x的硬件結(jié)構(gòu)_第3頁(yè)
第2章TMS320C54x的硬件結(jié)構(gòu)_第4頁(yè)
第2章TMS320C54x的硬件結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩157頁(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)介

第2章TMS320C54x的硬件結(jié)構(gòu)

知識(shí)要點(diǎn):引腳功能、內(nèi)外部總線結(jié)構(gòu)、CPU結(jié)構(gòu)、內(nèi)部存儲(chǔ)器結(jié)構(gòu)、片內(nèi)外設(shè)電路、系統(tǒng)控制等。2.1C54x的基本結(jié)構(gòu)TMS320C54x是TI公司為實(shí)現(xiàn)低功耗、高速實(shí)時(shí)信號(hào)處理而專門設(shè)計(jì)的16位定點(diǎn)數(shù)字信號(hào)處理器,采用改進(jìn)的哈佛結(jié)構(gòu),具有高度的操作靈活性和運(yùn)行速度,適應(yīng)于遠(yuǎn)程通信等實(shí)時(shí)嵌入式應(yīng)用的需要。TMS320C54x具有的主要優(yōu)點(diǎn)如下:①圍繞1組程序總線、3組數(shù)據(jù)總線和4組地址總線而建立的改進(jìn)哈佛結(jié)構(gòu),提高了系統(tǒng)的多功能性和操作的靈活性。②具有高度并行性和專用硬件邏輯的CPU設(shè)計(jì),提高了芯片的性能。③具有完善的尋址方式和高度專業(yè)化指令系統(tǒng),更適應(yīng)于快速算法的實(shí)現(xiàn)和高級(jí)語(yǔ)言編程的優(yōu)化。④模塊化結(jié)構(gòu)設(shè)計(jì),使派生器件得到了更快的發(fā)展。⑤采用先進(jìn)的IC制造工藝,降低了芯片的功耗,提高了芯片的性能。⑥采用先進(jìn)的靜態(tài)設(shè)計(jì)技術(shù),進(jìn)一步降低了功耗,提高芯片性能TMS320C54x系列DSP芯片內(nèi)部結(jié)構(gòu)由10部分組成如下圖所示。各部分功能如下:①中央處理器(CPU)它是DSP芯片的核心。采用流水線指令執(zhí)行結(jié)構(gòu)和相應(yīng)的并行處理結(jié)構(gòu),可在一個(gè)周期內(nèi)對(duì)數(shù)據(jù)進(jìn)行高速的算術(shù)運(yùn)算和邏輯運(yùn)算。②內(nèi)部總線結(jié)構(gòu)有8組16位總線,可在一個(gè)指令周期內(nèi)產(chǎn)生兩個(gè)數(shù)據(jù)存儲(chǔ)地址,實(shí)現(xiàn)流水線并行數(shù)據(jù)處理。③特殊功能寄存器’C54x系列有26個(gè)特殊功能寄存器,用來(lái)對(duì)片內(nèi)各功能模塊進(jìn)行管理、控制、監(jiān)視。它們位于具有特殊功能的RAM區(qū)。④數(shù)據(jù)存儲(chǔ)器RAM⑴雙尋址RAM:在一個(gè)指令周期內(nèi),可對(duì)其進(jìn)行兩次存取操作,一次讀出和一次寫入。⑵單尋址RAM:在一個(gè)指令周期內(nèi),只能進(jìn)行一次存取操作。⑤程序存儲(chǔ)器ROM不同的’C54x器件ROM的容量配置不同。程序存儲(chǔ)器可由ROM和RAM配置而成。⑥I/O口(擴(kuò)展功能)’C54x系列芯片只有兩個(gè)通用I/O引腳。BIO主要用來(lái)監(jiān)視外部設(shè)備工作狀態(tài),XF用來(lái)發(fā)信號(hào)給外部設(shè)備。配有HPI和同步串行口和64K字I/O空間,HPI和同步串行口可以通過(guò)配置,用作通用I/O使用。⑦串行口串行口功能不同,可分為4種:?jiǎn)瓮ǖ劳酱锌赟P、帶緩沖器單通道同步串行口BSP、并行帶緩沖器多通道同步串行口McBSP及時(shí)分多通道帶緩沖器串行口TMD。⑧主機(jī)接口HPIHPI是一個(gè)與主機(jī)通信的并行接口,主要用于DSP與其他總線或CPU進(jìn)行通信。信息可通過(guò)’C54x的片內(nèi)存儲(chǔ)器與主機(jī)進(jìn)行數(shù)據(jù)交換。分為8位標(biāo)準(zhǔn)HPI接口、8位增強(qiáng)型HPI接口、16位增強(qiáng)型HPI接口。⑨定時(shí)器定時(shí)器是一個(gè)軟件可編程的計(jì)數(shù)器,用來(lái)產(chǎn)生定時(shí)中斷??赏ㄟ^(guò)設(shè)置特定的狀態(tài)來(lái)控制定時(shí)器的停止、恢復(fù)、復(fù)位和禁止。⑩中斷系統(tǒng)’C54x的中斷系統(tǒng)具有硬件中斷和軟件中斷。硬件中斷:由外圍設(shè)備信號(hào)引起的中斷。分為:片外外設(shè)引起的硬件中斷、片內(nèi)外設(shè)所引起的硬件中斷。軟件中斷:由程序指令(INTR、TRAP和RESET)所引起的中斷。中斷管理的優(yōu)先級(jí)為11~16個(gè)固定級(jí),有4種工作方式。2.2C54x的主要特性和外部引腳

2.2.1C54x的主要特性1.CPU①采用先進(jìn)的多總線結(jié)構(gòu)②40位算術(shù)邏輯運(yùn)算單元ALU③17×17位并行乘法器,與40位專用加法器相連,可用于進(jìn)行非流水線的單周期乘法-累加運(yùn)算④比較、選擇、存儲(chǔ)單元,可用于Viterbi譯碼器的加法-比較-選擇運(yùn)算⑤指數(shù)編碼器,單周期內(nèi)計(jì)算40位累加器的指數(shù)⑥有兩個(gè)地址生成器,包括8個(gè)輔助寄存器和2個(gè)輔助寄存器算術(shù)運(yùn)算單元2.存儲(chǔ)器①可訪問(wèn)最大存儲(chǔ)空間為64千字的程序存儲(chǔ)器、64千字的數(shù)據(jù)存儲(chǔ)器和64千字的I/O空間②片內(nèi)ROM,可配置為程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器③片內(nèi)RAM兩種類型,即DARAM和SARAM3.指令系統(tǒng)①支持單指令重復(fù)和塊指令重復(fù)操作②支持存儲(chǔ)器塊傳送指令③支持32位長(zhǎng)操作數(shù)指令④支持2操作數(shù)或3操作數(shù)的讀指令⑤具有能并行存儲(chǔ)和并行加載的算術(shù)指令⑥支持條件存儲(chǔ)指令及中斷快速返回指令4.在片外圍電路①具有軟件可編程等待狀態(tài)發(fā)生器②設(shè)有可編程分區(qū)轉(zhuǎn)換邏輯電路③有片內(nèi)鎖相環(huán)(PLL)發(fā)生器④支持全雙工操作的串行口,可進(jìn)行8位或16位串行通信⑤帶4位預(yù)定標(biāo)器的16位可編程定時(shí)器⑥設(shè)有與主機(jī)通信的并行接口(HPI)⑦具有外部總線判斷控制,以斷開外部總線信號(hào)⑧數(shù)據(jù)總線具有總線保持器特性5.電源①具有多種節(jié)電模式,可用IDLE1~3控制功耗②可在軟件控制下,禁止CLKOUT輸出信號(hào)6.片內(nèi)仿真接口①具有符合IEEE1149.1標(biāo)準(zhǔn)的片內(nèi)仿真接口7.速度①5.0V電壓器件,速度40MIPS,指令周期25ns②3.0V電壓器件,速度80MIPS,指令周期12.5ns③2.5V電壓器件,速度100MIPS,指令周期10ns④1.8V電壓器件,速度200MIPS,指令周期10ns2.2.2C54x的引腳功能

’C5402共有144個(gè)引腳,引腳分布如下圖。按其功能可分為電源引腳、時(shí)鐘引腳、控制引腳、地址和數(shù)據(jù)引腳、串行口引腳、主機(jī)接口引腳、通用I/O引腳和測(cè)試引腳八個(gè)部分。

①電源引腳

’C5402采用雙電源供電,其引腳有:

⑴CVDD(16、52、68、91、125、142),電壓為+1.8V,為CPU內(nèi)核提供專用電源⑵DVDD(4、33、56、75、112、130),電壓為+3.3V,為各I/O引腳提供電源⑶VSS(3、14、34、40、50、57、70、76、93、106、111、128),接地②時(shí)鐘引腳

’C5402的時(shí)鐘發(fā)生器由內(nèi)部振蕩器和鎖相環(huán)PLL構(gòu)成,引腳功能如表2.2.1所示

③控制引腳控制引腳用來(lái)產(chǎn)生和接收外部器件的各種信號(hào),引腳功能如表2.2.2所示。④地址和數(shù)據(jù)引腳

’C5402芯片共有20個(gè)地址引腳,可尋址1兆字的外部程序空間、64K字外部數(shù)據(jù)空間和64K字的片外I/O空間在保持方式或EMU1/OFF為低電平時(shí),A15~A0呈高阻狀態(tài)。A19~A16用于擴(kuò)展程序存儲(chǔ)器尋址?!疌5402芯片共有16條數(shù)據(jù)引腳,用于在處理器、外部數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器和I/O器件之間進(jìn)行16為數(shù)據(jù)并行傳輸。在下列情況下,D15~D0將呈現(xiàn)高阻狀態(tài)當(dāng)沒(méi)有輸出時(shí);當(dāng)RS有效時(shí);當(dāng)HOLD有效時(shí);當(dāng)EMU1/OFF為低電平時(shí)。⑤串行口引腳

’C5402器件有兩個(gè)McBSP串行口,引腳功能如表2.2.3所示表2.2.3串行口引腳功能⑥主機(jī)接口(HPI)引腳

HPI接口是一個(gè)8位并行口,用來(lái)與主設(shè)備或主處理器接口,實(shí)現(xiàn)DSP與主設(shè)備或主處理器間的通信。引腳功能如表2.2.4所示。

⑦通用I/O引腳’C5402有2個(gè)通用的I/O引腳,分別為:

·XF(27),外部標(biāo)志輸出信號(hào),用于發(fā)送信號(hào)給外部設(shè)備

·BIO(31),控制分支轉(zhuǎn)移的輸入信號(hào),用來(lái)檢測(cè)外部設(shè)備狀態(tài)。當(dāng)BIO=0時(shí),執(zhí)行條件轉(zhuǎn)移指令。

⑧測(cè)試引腳其引腳有:

·TCK·TDI·TDO·TMS·TRST·EMU0·EMU1/OFF2.3C54x的內(nèi)部總線結(jié)構(gòu)TMS320C54x的結(jié)構(gòu)是以8組16位總線為核心,形成了支持高速指令執(zhí)行的硬件基礎(chǔ)。8組總線分為1組程序總線、3組數(shù)據(jù)總線和4組地址總線。①程序總線程序總線PB主要用來(lái)傳送取自程序存儲(chǔ)器的指令代碼和立即操作數(shù)。②數(shù)據(jù)總線在’C54x內(nèi)部結(jié)構(gòu)中,3條數(shù)據(jù)總線(CB、DB和EB)分別與不同的功能單元相連接。CB和DB總線用來(lái)傳送從數(shù)據(jù)存儲(chǔ)器讀出的數(shù)據(jù),而EB用來(lái)傳送寫入存儲(chǔ)器的數(shù)據(jù)。③地址總線’C54x的地址總線共有4組,分別為PAB、CAB、DAB和EAB,主要用來(lái)提供執(zhí)行指令所需的地址?!疌54x可以利用輔助寄存器算術(shù)運(yùn)算單元,在一個(gè)周期內(nèi)產(chǎn)生兩個(gè)數(shù)據(jù)存儲(chǔ)器的地址?!疌54x還為片內(nèi)通信提供了片內(nèi)雙向總線,用于尋址片內(nèi)外圍電路。下表列出了各種尋址方式所用到的總線情況:表2.3.1列出了各種尋址方式所用到的總線情況。2.4C54x的中央處理器中央處理器CPU是DSP器件的核心部件,它的性能直接關(guān)系到DSP器件的性能?!疌54x的CPU采用了流水線指令執(zhí)行結(jié)構(gòu)和相應(yīng)的并行結(jié)構(gòu)設(shè)計(jì),使其能在一個(gè)指令周期內(nèi),高速地完成多項(xiàng)算術(shù)運(yùn)算。CPU基本組成如下:·40位算術(shù)邏輯運(yùn)算單元(ALU)·2個(gè)40位累加器(ACCA、ACCB)·1個(gè)支持16~31位移位的桶形移位寄存器·乘法器-加法器單元(MAC)·比較、選擇和存儲(chǔ)單元(CSSU)·指數(shù)編碼器·CPU狀態(tài)和控制寄存器2.4.1算術(shù)邏輯運(yùn)算單元(ALU)’C54x使用40為的算術(shù)邏輯運(yùn)算單元和2個(gè)40位累加器,可完成寬范圍的算術(shù)邏輯運(yùn)算。功能框圖如圖2.4.1所示。

圖2.4.1ALU的功能框圖’C54x的大多數(shù)算術(shù)邏輯運(yùn)算指令都是單周期指令,其運(yùn)算結(jié)果通常自動(dòng)送入目的累加器A或B。但在執(zhí)行存儲(chǔ)器到存儲(chǔ)器的算術(shù)邏輯運(yùn)算指令時(shí)(如ADDM等),其運(yùn)算結(jié)構(gòu)則存入指令指定的目的存儲(chǔ)器。①ALU的輸入和輸出根據(jù)輸入源的不同,ALU采用不同的輸入方式。⑴ALU的X輸入源⑵ALU的Y輸入源⑶ALU輸入數(shù)據(jù)的預(yù)處理⑷ALU的輸出②溢出處理ALU的飽和邏輯可以對(duì)運(yùn)算結(jié)果進(jìn)行溢出處理。當(dāng)發(fā)生溢出時(shí),將運(yùn)算結(jié)果調(diào)整為最大正數(shù)(正向溢出)或最小負(fù)數(shù)(負(fù)向溢出)。這種功能對(duì)濾波器計(jì)算非常有用。當(dāng)運(yùn)算結(jié)果發(fā)生溢出時(shí):⑴若OVM=0,則對(duì)ALU的運(yùn)算結(jié)果不進(jìn)行任何調(diào)整,直接送入累加器。⑵若OVM=1,則需對(duì)ALU的運(yùn)行結(jié)果進(jìn)行調(diào)整。當(dāng)正向溢出時(shí),將32位最大正數(shù)007FFFFFFFH裝入累加器;當(dāng)負(fù)向溢出時(shí),將32位最小負(fù)數(shù)FF80000000H裝入累加器。⑶狀態(tài)寄存器ST0中與目標(biāo)累加器相關(guān)的溢出標(biāo)志OVA/OVB被置1。③進(jìn)位位CALU有一個(gè)與運(yùn)算結(jié)果有關(guān)的進(jìn)位位C,位于ST0的11位。進(jìn)位位C受大多數(shù)ALU操作指令的影響,包括算術(shù)操作、循環(huán)操作和移位操作。進(jìn)位位C的功能:1.用來(lái)指明是否有進(jìn)位發(fā)生;2.用來(lái)支持?jǐn)U展精度的算術(shù)運(yùn)算;3.可作為分支轉(zhuǎn)移、調(diào)用、返回和條件操作的執(zhí)行條件。進(jìn)位位C僅用于算術(shù)操作的溢出管理。④雙16位算術(shù)運(yùn)算若要將ST1中的C16置位,則ALU進(jìn)行雙16位算術(shù)運(yùn)算,即在一個(gè)機(jī)器周期內(nèi)完成兩個(gè)16位數(shù)的算術(shù)運(yùn)算,進(jìn)行兩次16位加法或兩次16位減法運(yùn)算。雙16位算術(shù)運(yùn)算對(duì)于Viterbi加法/比較/選擇操作特別有用。⑤其他控制位TC—測(cè)試/控制標(biāo)志,位于ST0的12位;ZA/ZB—累加器結(jié)果為0標(biāo)志位2.4.2累加器A和B’C54x芯片有兩個(gè)獨(dú)立的40位累加器A和B,可作為ALU或MAC得目標(biāo)寄存器,存放運(yùn)算結(jié)果,也可以作為ALU或MAC的一個(gè)輸入。在執(zhí)行并行指令和一些特殊指令時(shí),兩個(gè)累加器中的一個(gè)用于裝載數(shù)據(jù),而另一個(gè)用于完成運(yùn)算。累加器A和B之間的惟一區(qū)別是累加器A的32~16位能被用作乘法-累加單元中的乘法器輸入,而累加器B不能。累加器A和B都可以分為三部分,如圖2.4.2所示。

使用STH、STL、STLM和SACCD等指令或并行存儲(chǔ)指令,可將累加器的內(nèi)容存放到數(shù)據(jù)存儲(chǔ)器中。在存儲(chǔ)過(guò)程中,有時(shí)需要對(duì)累加器的內(nèi)容進(jìn)行移位操作。若右移時(shí),AG和BG中的各數(shù)據(jù)位分別移至AH和BH;左移時(shí),AL和BL中的各數(shù)據(jù)分別移至AH和BH,而AL和BL的低位添0。圖2.4.2累加器A和B的結(jié)構(gòu)

[例2.4.1]假設(shè)累加器A=FF01234567H,分別執(zhí)行帶移位的STH和STL指令后,數(shù)據(jù)存儲(chǔ)單元T中的結(jié)果如下:STHA,8,T;A內(nèi)容左移8位后,AH存入T中,T=2345H,A的內(nèi)容不變STHA,-8,T;A內(nèi)容右移8位后,AH存入T中,T=FF01H,A的內(nèi)容不變STLA,8,T;A內(nèi)容左移8位后,AH存入T中,T=6700H,A的內(nèi)容不變STLA,-8,T;A內(nèi)容右移8位后,AH存入T中,T=2345H,A的內(nèi)容不變

2.4.3桶形移位寄存器TMS320C54x的40位桶形移位寄存器主要用于累加器或數(shù)據(jù)區(qū)操作數(shù)的定標(biāo)。它能將輸入數(shù)據(jù)進(jìn)行0~31位的左移和0~16位的右移。所移動(dòng)的位數(shù)可由ST1中的ASM或被指定的暫存器T決定。桶形移位寄存器由多路選擇器MUX、符號(hào)控制SC、移位寄存器和寫選擇電路MSW/LSW等構(gòu)成,功能框圖如圖2.4.3所示。

①桶形移位寄存器的輸入40位桶形移位寄存器的輸入數(shù)據(jù)為以下數(shù)據(jù)中的任何一個(gè):圖2.4.3桶形移位寄存器的功能

⑴取自DB數(shù)據(jù)總線的16位輸入數(shù)據(jù);⑵取自DB和CB擴(kuò)展數(shù)據(jù)總線的32位輸入數(shù)據(jù);⑶來(lái)自累加器A或B的40位輸入數(shù)據(jù)。②桶形移位寄存器的輸出桶形移位寄存器的輸出接至:⑴算術(shù)邏輯運(yùn)算單元ALU的一個(gè)輸入端;⑵經(jīng)寫選擇電路輸出至EB總線③桶形移位寄存器的功能主要是為輸入的數(shù)據(jù)定標(biāo),功能:⑴在進(jìn)行ALU運(yùn)算之前,對(duì)輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)定標(biāo);⑵對(duì)累加器中的內(nèi)容進(jìn)行算術(shù)或邏輯移位;⑶對(duì)累加器進(jìn)行歸一化處理;⑷在累加器的內(nèi)容存入數(shù)據(jù)存儲(chǔ)器之前,對(duì)存儲(chǔ)數(shù)據(jù)進(jìn)行定標(biāo)。④桶形移位寄存器的操作⑴完成操作數(shù)的符號(hào)位擴(kuò)展根據(jù)SXM位控制操作數(shù)進(jìn)行帶符號(hào)位/不帶符號(hào)位擴(kuò)展。⑵完成操作數(shù)的移位根據(jù)指令中的移位數(shù)控制操作數(shù)的移位。移位數(shù)全部用二進(jìn)制補(bǔ)碼表示,正值時(shí)完成左移,負(fù)值時(shí)完成右移。移位數(shù)有三種形式:立即數(shù),取值范圍:-16~15;狀態(tài)寄存器ST1中的移位方式位ASM,共計(jì)5位,取值范圍:-16~15;數(shù)據(jù)暫存器T中的低6位數(shù)值,取值范圍:-16~31;這種移位操作能使CPU完成數(shù)據(jù)的定標(biāo)、位提取、擴(kuò)展算術(shù)和溢出保護(hù)等操作?!纠?.4.2】對(duì)累加器A執(zhí)行不同的移位操作。

ADD A,-4,B; 累加器A右移4位后加到累加器B中。ADD A,ASM,B;累加器A按ASM規(guī)定的移位數(shù)移位后加到累加器BNORM A;按T寄存器中的數(shù)值對(duì)累加器歸一化2.4.4乘法-累加單元(MAC)’C54x的乘法-累加單元MAC是由乘法器、加法器、符號(hào)控制、小數(shù)控制、零檢測(cè)器、舍入器、飽和邏輯和暫存器等幾部分組成,功能框圖如圖2.4.4所示。

圖2.4.4MAC功能框圖MAC單元可在一個(gè)流水線周期內(nèi)完成1次乘法運(yùn)算和1次加法運(yùn)算。MAC單元包含一個(gè)17×17位硬件乘法器,可完成有符號(hào)數(shù)和無(wú)符號(hào)數(shù)的乘法運(yùn)算。乘法器的XM輸入數(shù)據(jù)來(lái)自T寄存器、累加器A的32~16位以及由DB總線提供的數(shù)據(jù)存儲(chǔ)器操作數(shù);YM輸入的數(shù)據(jù)可以取自累加器A的32~16位、由DB總線和CB總線提供的數(shù)據(jù)存儲(chǔ)器操作數(shù)以及由PB總線傳送過(guò)來(lái)的程序存儲(chǔ)器操作數(shù)。MAC單元的乘法器能進(jìn)行有符號(hào)數(shù)、無(wú)符號(hào)數(shù)以及有符號(hào)數(shù)與無(wú)符號(hào)數(shù)的乘法運(yùn)算。根據(jù)操作數(shù)的不同情況進(jìn)行以下處理:①若是兩個(gè)有符號(hào)數(shù)相乘,則在進(jìn)行乘法運(yùn)算之前,先對(duì)兩個(gè)16位乘數(shù)進(jìn)行符號(hào)位擴(kuò)展,形成17位有符號(hào)數(shù)后再進(jìn)行相乘。②若是兩個(gè)無(wú)符號(hào)數(shù)相乘,則在兩個(gè)16位乘數(shù)的最高位前面添加“0”,擴(kuò)展為17位乘數(shù)后再進(jìn)行乘運(yùn)算。③若是有符號(hào)數(shù)與無(wú)符號(hào)數(shù)相乘,則有符號(hào)數(shù)在最高位前添加1個(gè)符號(hào)位,其值由最高位決定,而無(wú)符號(hào)數(shù)在最高位前面添加“0”,然后兩個(gè)操作數(shù)相乘2.4.5比較、選擇和存儲(chǔ)單元(CSSU)

’C54x的比較、選擇和存儲(chǔ)單元是一個(gè)特殊用途的硬件電路,專門用來(lái)完成Viterbi算法中的加法/比較/選擇操作。功能框圖如圖2.4.5所示。圖2.4.5比較、選擇和存儲(chǔ)單元功能框圖CSSU單元主要完成累加器的高階位與低階位之間最大值的比較,即選擇累加器中較大的字,并存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中。工作過(guò)程如下:①比較電路COMP將累加器A或B的高階位與低階位進(jìn)行比較;②比較結(jié)果分別送入狀態(tài)轉(zhuǎn)移寄存器TRN和狀態(tài)寄存器TC位中,記錄比較結(jié)果以便程序調(diào)試;③比較結(jié)果送入寫選擇電路,選擇較大的數(shù)據(jù);④將選擇的數(shù)據(jù)通過(guò)總線EB存入指定的存儲(chǔ)單元。圖2.4.AViterbi算法示意圖2.4.6指數(shù)編碼器(EXP)在數(shù)字信號(hào)處理中,為了提高計(jì)算精度,常采用數(shù)值的浮點(diǎn)表示法,即把一個(gè)數(shù)值分為指數(shù)部分和尾數(shù)部分。指數(shù)部分為數(shù)值的階次,尾數(shù)部分為數(shù)值的有效值。指數(shù)編碼器如圖2.4.6所示。累加器A累加器BT寄存器EXP圖2.4.6指數(shù)編碼器

指數(shù)編碼器它是一個(gè)用于支持指數(shù)運(yùn)算指令的專用硬件,可以在單周期內(nèi)執(zhí)行EXP指令,求累加器中數(shù)的指數(shù)值。該指數(shù)值以二進(jìn)制補(bǔ)碼形式存入T寄存器中,范圍為8~31位。

有了指數(shù)編碼器,可以使用EXP和NORM指令對(duì)累加器的數(shù)值進(jìn)行歸一化處理?!纠?.4.3】完成對(duì)累加器A的歸一化處理EXP A;(多余符號(hào)位-8)→T寄存器ST T,EXPONENT;將保存在T寄存器中的指數(shù)存入指定的數(shù)據(jù)存儲(chǔ)器中NORM A;對(duì)累加器A進(jìn)行歸一化處理,即A按T中的內(nèi)容移位2.4.7CPU狀態(tài)和控制寄存器’C54x提供三個(gè)16位寄存器來(lái)作為CPU狀態(tài)和控制寄存器,它們分別為:狀態(tài)寄存器0(ST0);狀態(tài)寄存器1(ST1);處理器工作方式狀態(tài)寄存器(PMST)。ST0和ST1中包含各種工作條件和工作方式的狀態(tài),PMST中包含存儲(chǔ)器的設(shè)置狀態(tài)和其他控制信息。由于這些寄存器都是存儲(chǔ)器映像寄存器,因此可以進(jìn)行如下操作:將它們快速地存放到數(shù)據(jù)存儲(chǔ)器;由數(shù)據(jù)存儲(chǔ)器對(duì)它們進(jìn)行加載;用子程序或中斷服務(wù)程序保存和恢復(fù)處理器的狀態(tài)①狀態(tài)寄存器0(ST0)ST0主要用于反映處理器的尋址要求和計(jì)算的中間運(yùn)行狀態(tài),結(jié)構(gòu)圖如圖2.4.7所示。ARPTCCOVAOVBDPST015~1312111098~0圖2.4.7狀態(tài)寄存器0狀態(tài)寄存器ST0各狀態(tài)位的功能見(jiàn)表2.4.1。表2.4.1狀態(tài)寄存器ST0各狀態(tài)位的功能②狀態(tài)寄存器1(ST1)ST1主要用于反映處理器的尋址要求、設(shè)置計(jì)算的初始狀態(tài)、I/O及中斷控制,其各位的定義如圖2.4.8所示。ASMST1BRAFCPLXFHMINTMOOVMSXMC16FRCTCMPT151413121110987654~0圖2.4.8狀態(tài)寄存器1ASM狀態(tài)寄存器ST1各狀態(tài)位的功能見(jiàn)表2.4.2。表2.4.2狀態(tài)寄存器ST1各狀態(tài)位的功能③處理器工作方式狀態(tài)寄存器(PMST)PMST主要用來(lái)設(shè)置和控制處理器的工作方式,反映處理器的工作狀態(tài),結(jié)構(gòu)如圖2.4.9所示。

IPTRMP/MCOVLYAVISDROMCLKOFFSMULSSTPMST15~76543210圖2.4.9處理器工作方式狀態(tài)寄存器PMSTPMST寄存器各狀態(tài)位的功能見(jiàn)表2.4.3表2.4.3PMST寄存器各狀態(tài)位的功能2.5C54x的存儲(chǔ)空間結(jié)構(gòu)TMS320C54x共有192千字的可尋址存儲(chǔ)空間。這192千字的存儲(chǔ)空間分成3個(gè)獨(dú)立的可選擇空間,分別為:64千字的程序存儲(chǔ)空間64千字的數(shù)據(jù)存儲(chǔ)空間64千字的I/O空間’C54x芯片都包括內(nèi)部隨機(jī)存儲(chǔ)器和只讀存儲(chǔ)器。內(nèi)部RAM又分為單尋址RAM和雙尋址RAM。雙尋址RAM在同一個(gè)周期內(nèi),CPU可對(duì)DARAM進(jìn)行讀和寫操作。單尋址RAM在同一個(gè)周期內(nèi),只能進(jìn)行一次讀或?qū)懖僮??!疌54x的并行結(jié)構(gòu)和內(nèi)部RAM的雙尋址能力,可使CPU在任何一個(gè)給定的機(jī)器周期內(nèi)同時(shí)執(zhí)行4次存儲(chǔ)器操作,包括1次取指、2次讀操作數(shù)和1次寫操作數(shù)。與外部存儲(chǔ)器相比,內(nèi)部存儲(chǔ)器有以下優(yōu)點(diǎn):不需要插入等待狀態(tài);成本低;功耗小。在C54想x系列芯片中,不同型號(hào)的芯片其內(nèi)部存儲(chǔ)器的配置有所不同。表2.5.1列出了各種C54x內(nèi)部?jī)?nèi)部存儲(chǔ)器的配置。表2.5.1各種C54x內(nèi)部?jī)?nèi)部存儲(chǔ)器的配置2.5.1存儲(chǔ)空間結(jié)構(gòu)’C54x所有內(nèi)部和外部程序存儲(chǔ)器及內(nèi)部和外部數(shù)據(jù)存儲(chǔ)器分別統(tǒng)一編址。內(nèi)部RAM總是映射到數(shù)據(jù)存儲(chǔ)空間,但也可映射到程序存儲(chǔ)空間。根據(jù)用戶的設(shè)置,ROM可以靈活地映射到程序存儲(chǔ)空間,同時(shí)也可以部分地映射到數(shù)據(jù)存儲(chǔ)空間。從圖2.5.1可以看出,’C54x的存儲(chǔ)器結(jié)構(gòu)與處理器工作方式狀態(tài)寄存器(PMST)的設(shè)置有關(guān),用戶可以通過(guò)PMST的3個(gè)控制位(MP/MC、OVLY和DROM)來(lái)配置存儲(chǔ)器空間。存儲(chǔ)器配置結(jié)構(gòu)如圖2.5.1所示。圖2.5.1C5402存儲(chǔ)器配置結(jié)構(gòu)2.5.2程序存儲(chǔ)空間程序存儲(chǔ)空間用來(lái)存放要執(zhí)行的指令和執(zhí)行中所需的系數(shù)表?!疌5402共有20條地址線,可尋址1MB外部程序存儲(chǔ)器。內(nèi)部ROM和DARAM可通過(guò)軟件映射到程序空間。①程序存儲(chǔ)空間的配置程序存儲(chǔ)空間的配置程序存儲(chǔ)空間可通過(guò)PMST寄存器的MP/MC和OVLY控制位來(lái)設(shè)置內(nèi)部存儲(chǔ)器的映射地址。MP/MC控制位用來(lái)決定程序存儲(chǔ)空間是否使用內(nèi)部存儲(chǔ)器。

MP/MC工作方式

0

1微型計(jì)算機(jī)模式微處理器模式OVLY=1,片內(nèi)RAM映像到程序和數(shù)據(jù)存儲(chǔ)空間;OVLY=0,片內(nèi)RAM只映像在數(shù)據(jù)存儲(chǔ)空間②程序存儲(chǔ)空間的分頁(yè)擴(kuò)展在TMS320C54x系列芯片中,有些芯片采用分頁(yè)擴(kuò)展的方法,使程序存儲(chǔ)空間可擴(kuò)展到1MB~8MB,如TMS320V5409和TMS320VC5416可擴(kuò)展到8MB,而TMS320VC5402只有20條外部程序地址總線,其程序空間只能擴(kuò)展到1MB。從圖2.5.2可以看出,在第1~15頁(yè)中,每一頁(yè)分為兩部分,低32K字和高32K字。如果MP/MC=0,內(nèi)部ROM只能在第0頁(yè)尋址,不能映射到程序空間的其他頁(yè)。圖2.5.2C5402擴(kuò)展程序存儲(chǔ)空間結(jié)構(gòu)如果OVLY=1,程序存儲(chǔ)空間使用內(nèi)部RAM。此時(shí),不論XPC為何值,擴(kuò)展程序存儲(chǔ)空間的所有低32KB(x0000H~x7FFFH)都被映射到內(nèi)部RAM(0000H~7FFFH)中。擴(kuò)展程序存儲(chǔ)器的頁(yè)號(hào)由XPC寄存器設(shè)定,XPC映射到數(shù)據(jù)存儲(chǔ)器的001EH單元。硬件復(fù)位時(shí),XPC被置0。③內(nèi)部ROM

’C5402有4KB的內(nèi)部ROM。當(dāng)MP/MC=0,這4KB的ROM被映射到程序空間的地址范圍F000H~FFFFH,其中高2KBROM中的內(nèi)容由TI公司定義,如圖2.5.3。這2KB程序存儲(chǔ)空間包含如下內(nèi)容:圖2.5.3C5402內(nèi)部ROM的內(nèi)容引導(dǎo)程序256μ律擴(kuò)展表256A律擴(kuò)展表256字正弦函數(shù)值查找表中斷向量表

處理器復(fù)位時(shí),復(fù)位、中斷及陷阱向量被映射到程序空間的FF80H。復(fù)位后,這些向量可以被重新映射到程序存儲(chǔ)空間的任何一頁(yè)開頭。2.5.3數(shù)據(jù)存儲(chǔ)空間數(shù)據(jù)存儲(chǔ)空間用來(lái)存放執(zhí)行指令所使用的數(shù)據(jù),包括需要處理的數(shù)據(jù)或數(shù)據(jù)處理的中間結(jié)果。

①數(shù)據(jù)存儲(chǔ)空間的配置’C54x數(shù)據(jù)存儲(chǔ)空間共有64KB,采用片內(nèi)和片外存儲(chǔ)器統(tǒng)一編址。若DROM=0,內(nèi)部ROM不映射到數(shù)據(jù)空間;若DROM=1,部分內(nèi)部ROM映射到數(shù)據(jù)存儲(chǔ)空間,并且當(dāng)MP/MC=0時(shí),內(nèi)部ROM同時(shí)映射到數(shù)據(jù)空間和程序空間。每次復(fù)位時(shí),處理器將對(duì)DROM位清零。圖2.5.4為TMS320VC5402數(shù)據(jù)存儲(chǔ)空間的結(jié)構(gòu)。當(dāng)DROM=0時(shí),F(xiàn)000H~FEFFH定義為外部ROM,F(xiàn)F00~FFFFH為外部數(shù)據(jù)存儲(chǔ)空間,此時(shí)數(shù)據(jù)存儲(chǔ)空間不使用內(nèi)部ROM;

當(dāng)DROM=1時(shí),F(xiàn)000~FEFFH定義內(nèi)部ROM,F(xiàn)F00~FFFFH保留。②存儲(chǔ)器映像寄存器在’C54x的數(shù)據(jù)存儲(chǔ)空間中,前80H個(gè)單元包含的CPU寄存器和片內(nèi)外設(shè)寄存器。這些寄存器全部映射到數(shù)據(jù)存儲(chǔ)空間,所以也稱做存儲(chǔ)器映像寄存器MMR。

采用寄存器映射的方法,可以簡(jiǎn)化CPU和片內(nèi)外設(shè)的訪問(wèn)方式。’C5402的CPU寄存器共有27個(gè),映射到數(shù)據(jù)存儲(chǔ)空間的地址為:0x0000H~0x001FH。主要用于程序的運(yùn)算處理和尋訪方式的選擇及設(shè)定。CPU訪問(wèn)這些寄存器時(shí),不需要插入等待時(shí)間。表2.5.2列出了27個(gè)CPU寄存器的名稱和地址。

片內(nèi)外設(shè)寄存器映射在數(shù)據(jù)存儲(chǔ)空間的20H~5FH,主要用來(lái)控制片內(nèi)外設(shè)電路的狀態(tài),可作為外設(shè)電路的數(shù)據(jù)存儲(chǔ)器。包括串行口通信控制寄存器組、定時(shí)器定時(shí)控制寄存器組、時(shí)鐘周期設(shè)定寄存器組。對(duì)它們尋址需要2個(gè)機(jī)器周期。片內(nèi)外設(shè)寄存器存在于一個(gè)專用的外設(shè)總線結(jié)構(gòu)中,它可以發(fā)送數(shù)據(jù)至外設(shè)總線或者從外設(shè)中接受數(shù)據(jù)。設(shè)置或清除寄存器的控制位可以激活、屏蔽或者重新配置外設(shè)狀態(tài)。表2.5.3列出了TMS320C549的片內(nèi)外設(shè)寄存器。

2.5.4I/O空間’C54x提供了一個(gè)具有64K的I/O空間,主要用于對(duì)片外設(shè)備的訪問(wèn)。可以用指令PORTR和PORTW對(duì)I/O空間尋址。所用到的總線除數(shù)據(jù)和地址總線,還要用到IOTRB、IS、R/W控制線。2.6C54x的片內(nèi)外設(shè)電路片內(nèi)外設(shè)主要包括:通用I/O引腳;定時(shí)器;時(shí)鐘發(fā)生器;串行通信接口;主機(jī)接口HPI;軟件可編程等待狀態(tài)發(fā)生器;可編程分區(qū)轉(zhuǎn)換邏輯。①通用I/O引腳每一種’C54x芯片提供了兩個(gè)通用的I/O引腳:BIO和XF。

BIO為分支轉(zhuǎn)移控制輸入引腳,用來(lái)監(jiān)控外部設(shè)備的運(yùn)行狀態(tài)。在實(shí)時(shí)控制系統(tǒng)中,對(duì)時(shí)間嚴(yán)格的循環(huán)程序中,可以用BIO引腳代替中斷與外設(shè)連接,查詢引腳狀態(tài),避免中斷引起的失控。XF位外部標(biāo)志輸出引腳,主要用于程序向外設(shè)傳輸標(biāo)志信息。可通過(guò)對(duì)狀態(tài)寄存器ST1中的XF位的置位或復(fù)位,使該引腳輸出高電平或低電平,從而控制外設(shè)。例如: SSBX XF;置位XF引腳 RSBX XF;復(fù)位XF引腳②定時(shí)器TMS320C54x的定時(shí)器是一個(gè)帶有4位預(yù)分頻器的16位減法器。這個(gè)減法計(jì)數(shù)器每來(lái)1個(gè)時(shí)鐘周期自動(dòng)減1,當(dāng)計(jì)數(shù)器減到0時(shí)產(chǎn)生定時(shí)中斷。通過(guò)編程設(shè)置特定狀態(tài)可使定時(shí)器停止、恢復(fù)運(yùn)行、復(fù)位或禁止。’C54x的定時(shí)器是一個(gè)可軟件編程的計(jì)數(shù)器,包括以下3個(gè)存儲(chǔ)器映像寄存器:定時(shí)設(shè)定寄存器TM,它是16位減法計(jì)數(shù)器定時(shí)周期寄存器PRD,16位寄存器(定時(shí)常數(shù))定時(shí)控制寄存器TCR,包括分頻系數(shù)TDDR,預(yù)標(biāo)定計(jì)數(shù)器PSC、控制位TRB和TSS等。定時(shí)中斷的周期:CLKOUTC×(TDDR+1)×(PRD+1)

其中:CLKOUT為時(shí)鐘周期,TDDR和PRD分別為定時(shí)器的分頻系數(shù)和時(shí)間常數(shù)。

若要關(guān)閉定時(shí)器,只要將TCR的TSS位置1,就能切斷時(shí)鐘輸入,定時(shí)器停止工作。③時(shí)鐘發(fā)生器時(shí)鐘發(fā)生器為CPU提供時(shí)鐘信號(hào),由內(nèi)部振蕩器和鎖相環(huán)(PLL)電路兩部分組成??赏ㄟ^(guò)內(nèi)部的晶振或外部的時(shí)鐘源驅(qū)動(dòng)。④主機(jī)接口HPI主要用于DSP與其他總線或主處理機(jī)進(jìn)行通信。HPI接口通過(guò)HPI控制器、地址寄存器、數(shù)據(jù)鎖存器和HPI內(nèi)存塊實(shí)現(xiàn)與主機(jī)通信。主要特點(diǎn)如下:接口所需要的外部硬件比較少;HPI單元允許芯片直接利用一個(gè)或兩個(gè)數(shù)據(jù)選通信號(hào);有一個(gè)獨(dú)立的或復(fù)用的地址總線一個(gè)獨(dú)立的或復(fù)用的數(shù)據(jù)總線與微控制單元MCU連接;主機(jī)和DSP可獨(dú)立地對(duì)HPI接口操作;主機(jī)和DSP握手可通過(guò)中斷方式完成;主機(jī)可通過(guò)HPI直接訪問(wèn)CPU的存儲(chǔ)空間,包括存儲(chǔ)器映像寄存器;主機(jī)可通過(guò)HPI接口裝載DSP的應(yīng)用程序、接收DSP運(yùn)行結(jié)果或診斷DSP運(yùn)行狀態(tài)。⑤串行通信接口’C54x內(nèi)部有高速的、全雙工串行通信接口,可以和其他串行器件直接接口。分類如下:同步串行口SP緩沖同步串行口BSP時(shí)分多路同步串行口TDM多通道緩沖串行口McBSP⑥軟件可編程等待狀態(tài)發(fā)生器它能把外部總線周期擴(kuò)展到最多14個(gè)機(jī)器周期,這樣可以方便地與慢速的外部存儲(chǔ)器和I/O設(shè)備接口。它不需要任何外部硬件,只由軟件完成。

⑦可編程分區(qū)轉(zhuǎn)換邏輯當(dāng)訪問(wèn)過(guò)程跨越程序或數(shù)據(jù)存儲(chǔ)器邊界時(shí),可編程分區(qū)轉(zhuǎn)換邏輯會(huì)自動(dòng)插入一個(gè)周期。

當(dāng)存儲(chǔ)過(guò)程由程序轉(zhuǎn)向數(shù)據(jù)存儲(chǔ)器時(shí),也會(huì)插入一個(gè)周期。

這一附加周期可以使存儲(chǔ)器在其他器件驅(qū)動(dòng)總線之前允許存儲(chǔ)器釋放總線,避免總線競(jìng)爭(zhēng)。2.7C54x的系統(tǒng)控制

TMS320C54x芯片的系統(tǒng)控制是由程序計(jì)數(shù)器(PC)、硬件堆棧、PC相關(guān)的硬件、外部復(fù)位信號(hào)、中斷、狀態(tài)寄存器和循環(huán)計(jì)數(shù)器(RC)等組成。2.7.1程序地址的產(chǎn)生’C54x的程序存儲(chǔ)器用來(lái)存放應(yīng)用程序的代碼、系數(shù)表和立即數(shù)。CPU取指操作時(shí),首先由程序地址生成器(PAGEN)產(chǎn)生地址,再將地址加載到程序地址總線PAB,由PAB尋址存放程序存儲(chǔ)器中的指令、系數(shù)表和立即數(shù)。①程序存儲(chǔ)器地址生成器PAGEN它通常是由程序計(jì)數(shù)器PC、重復(fù)計(jì)數(shù)器RC、塊重復(fù)計(jì)數(shù)器BRC、塊重復(fù)起始地址寄存器RSA,塊重復(fù)結(jié)束地址寄存器REA等5個(gè)寄存器組成。組成框圖如圖2.7.1所示。

程序地址生成器PAGEN程序計(jì)數(shù)器PC重復(fù)操作寄存器重復(fù)計(jì)數(shù)器PC塊重復(fù)計(jì)數(shù)器BRC塊重復(fù)起始地址寄存器RSA塊重復(fù)結(jié)束地址寄存器REA②程序計(jì)數(shù)器’C54x的程序計(jì)數(shù)器PC是一個(gè)16位計(jì)數(shù)器,用來(lái)保存某個(gè)內(nèi)部或外部程序存儲(chǔ)器的地址。這個(gè)地址就是即將取指的某條指令、即將訪問(wèn)的某個(gè)16位立即操作數(shù)或系數(shù)表在程序存儲(chǔ)器中的地址。對(duì)PC加載有以下幾種方法:當(dāng)進(jìn)行復(fù)位操作時(shí),用地址FF80H加載PC;當(dāng)程序是順序執(zhí)行時(shí),則PC被增量加載,即PC=PC+1;當(dāng)分支轉(zhuǎn)移發(fā)生時(shí),用緊跟在分支轉(zhuǎn)移指令后面的16位立即數(shù)加載PC。若由累加器分支轉(zhuǎn)移,則用累加器的低階位內(nèi)容加載PC;當(dāng)執(zhí)行塊重復(fù)指令時(shí),若PC+1等于塊重復(fù)結(jié)束地址REA+1,則用塊重復(fù)起始地址RSA加載PC;當(dāng)執(zhí)行子程序調(diào)用時(shí),將PC+2的值壓入堆棧,然后調(diào)用指令下一個(gè)長(zhǎng)立即數(shù)加載至PC。若是累加器調(diào)用子程序,則保護(hù)現(xiàn)場(chǎng)后,用累加器的低階位內(nèi)容加載PC。當(dāng)執(zhí)行返回指令時(shí),將壓入堆棧的值從棧頂取出,加載到PC,回到原來(lái)的程序處繼續(xù)執(zhí)行;當(dāng)進(jìn)行硬件中斷或軟件中斷時(shí),將PC值壓入堆棧,并將適當(dāng)?shù)闹袛嘞蛄康刂芳虞dPC;當(dāng)執(zhí)行中斷返回時(shí),將壓入堆棧的值從棧頂取出,加載到PC,繼續(xù)執(zhí)行被中斷的程序。2.7.2流水線操作流水線操作是DSP芯片不同于一般單片機(jī)的主要硬件工作機(jī)制。流水線操作可以減少指令的執(zhí)行時(shí)間,提高DSP的運(yùn)行速度,增強(qiáng)DSP的處理能力。流水線操作是指各條指令以機(jī)器周期為單位,工作原理:將指令分成幾個(gè)子操作,每個(gè)子操作有不同的操作階段完成。①流水線操作概念’C54x的流水線操作是由6個(gè)操作階段或操作周期組成。流水線結(jié)構(gòu)如圖2.7.2所示。P(預(yù)取指)F(取指)D(譯碼)A(尋址)R(讀數(shù))X(執(zhí)行)T1T2T3T4T5T6圖2.7.2流水線結(jié)構(gòu)示意圖一條指令分為預(yù)取指、取指、譯碼、尋址、讀數(shù)和執(zhí)行6個(gè)操作階段。各操作功能如下:預(yù)取指P:在T1機(jī)器周期內(nèi),CPU將PC中的內(nèi)容加載到程序地址總線PAB,找到指令代碼的存儲(chǔ)單元。取指F:在T2機(jī)器周期內(nèi),CPU從選中的程序存儲(chǔ)單元中,取出指令代碼加載到程序總線PB。譯碼D:在T3機(jī)器周期內(nèi),CPU將PB中的指令代碼加載到指令譯碼器IR,并對(duì)IR中的內(nèi)容進(jìn)行譯碼,產(chǎn)生執(zhí)行指令所需要的一系列控制信號(hào)。尋址A:即尋址操作數(shù)。讀數(shù)R:CPU在T5機(jī)器周期內(nèi),將讀出的數(shù)據(jù)1和數(shù)據(jù)2分別加載到數(shù)據(jù)總線DB和CB中。執(zhí)行X:在T6機(jī)器周期內(nèi),CPU按照操作碼要求執(zhí)行指令,并將寫數(shù)據(jù)3加載到EB中,寫入指定的存儲(chǔ)單元。在’C54x的流水線操作中,存儲(chǔ)器的存取操作要占用兩個(gè)階段。第1階段,用存儲(chǔ)單元的地址加載地址總線;第2階段,對(duì)存儲(chǔ)單元進(jìn)行讀/寫操作。各種情況如下:①取指(單周期)加載PAB從PB讀預(yù)取指P取指F譯碼D尋址A讀數(shù)R執(zhí)行/寫數(shù)X②執(zhí)行讀單操作指令例如:LD*AR1,A ;單周期指令,讀單操作數(shù)加載DAB從DB讀預(yù)取指P取指F譯碼D尋址A讀數(shù)R執(zhí)行/寫數(shù)X③執(zhí)行讀雙操作數(shù)指令例如:MAC*AR2+,*AR3,A ;單周期指令,讀雙操作數(shù)加載DAB和CAB從DB和CB讀預(yù)取指P取指F譯碼D尋址A讀數(shù)R執(zhí)行/寫數(shù)X④執(zhí)行寫單操作數(shù)指令例如:STHA,*AR1; 單周期指令,寫單操作數(shù)預(yù)取指P取指F譯碼D尋址A讀數(shù)R執(zhí)行/寫數(shù)X加載EAB寫至EB⑤執(zhí)行寫雙操作數(shù)指令例如:DSTA,*AR1; 雙周期指令,寫兩個(gè)操作數(shù)加載EAB寫至EB加載EAB寫至EB預(yù)取指P取指F譯碼D尋址A讀數(shù)R執(zhí)行/寫數(shù)X預(yù)取指P取指F譯碼D尋址A讀數(shù)R執(zhí)行/寫數(shù)X⑥執(zhí)行讀單操作數(shù)和寫單操作數(shù)指令例如:STA,*AR2||LD*AR3,B;單周期并行加載存儲(chǔ)指令,讀單操作數(shù)和寫單操作數(shù)預(yù)取指P取指F譯碼D尋址A讀數(shù)R執(zhí)行/寫數(shù)X加載DAB寫至EB從DB讀出并加載EAB②分支轉(zhuǎn)移流水線操作根據(jù)是否使用延時(shí)指令,分為無(wú)延時(shí)分支轉(zhuǎn)移和延時(shí)分支轉(zhuǎn)移。無(wú)延時(shí)分支轉(zhuǎn)移例如:無(wú)延時(shí)分支轉(zhuǎn)移程序地址指令代碼注釋a1,a2Bb1;4機(jī)器周期,兩字的無(wú)延時(shí)轉(zhuǎn)移指令a3i3;任意單周期,單字指令a4i4;任意單周期,單字指令…...b1j1對(duì)應(yīng)流水線工作情況如圖2.7.3所示。PAB=a1PB=BIR=BB預(yù)取指取指譯碼尋址讀數(shù)執(zhí)行PAB=a2PB=b1IR=b1b1預(yù)取指取指譯碼尋址讀數(shù)執(zhí)行PAB=a3PB=i3預(yù)取指取指譯碼尋址讀數(shù)執(zhí)行PAB=a4PB=i4預(yù)取指取指譯碼尋址讀數(shù)執(zhí)行PAB=b1PB=j1IR=j1j1預(yù)取指取指譯碼尋址讀數(shù)執(zhí)行12345678910Bb1流水線刷新流水線刷新j1圖2.7.3無(wú)延時(shí)分支轉(zhuǎn)移指令流水線周期1:將分支轉(zhuǎn)移指令地址a1加載至PAB;周期2、3:取出轉(zhuǎn)移指令的兩個(gè)指令字;周期4、5:對(duì)i3和i4指令取指;周期6、7:分支轉(zhuǎn)移指令的兩個(gè)字進(jìn)入執(zhí)行階段;周期8、9:由于i3和i4指令不被執(zhí)行,因此在周期8和9中,轉(zhuǎn)移指令的執(zhí)行階段無(wú)任何操作,這兩個(gè)周期會(huì)被消耗掉;周期10:執(zhí)行j1指令。延遲分支轉(zhuǎn)移延遲分支轉(zhuǎn)移指令允許其后面的兩個(gè)單周期指令(i3和i4)執(zhí)行完畢,因此采用延遲分支轉(zhuǎn)移指令可以節(jié)省2個(gè)機(jī)器周期。例如:延時(shí)分支轉(zhuǎn)移程序地址指令代碼注釋a1,a2BDb1;4機(jī)器周期,兩字的延時(shí)轉(zhuǎn)移a3i3;任意單周期,單字指令a4i4;任意單周期,單字指令…...對(duì)應(yīng)流水線工作情況如圖2.7.4所示。

PAB=a1PB=BIR=BDBD預(yù)取指取指譯碼尋址讀數(shù)執(zhí)行PAB=a2PB=b1IR=b1b1預(yù)取指取指譯碼尋址讀數(shù)執(zhí)行PAB=a3PB=i3IR=i3i3預(yù)取指取指譯碼尋址讀數(shù)執(zhí)行PAB=a4PB=i4IR=i4i4預(yù)取指取指譯碼尋址讀數(shù)執(zhí)行PAB=b1PB=j1IR=j1j1預(yù)取指取指譯碼尋址讀數(shù)執(zhí)行BDb1i3i4j1圖2.7.4延時(shí)分支轉(zhuǎn)移指令流水線12345678910周期6、7:執(zhí)行延遲分支轉(zhuǎn)移指令,需2個(gè)周期;周期8、9:執(zhí)行i3和i4指令,需2個(gè)周期。

【例2.7.1】分別用分支轉(zhuǎn)移指令B和BD編寫程序如下,試分析各程序所需要的周期。

利用分支轉(zhuǎn)移指令B編程LD @x,AADD@x,ASTLA,@sLD@s,TMPY@z,ASTLA,@rBnext利用分支轉(zhuǎn)移指令BD編程LD @x,AADD@y,ASTLA,@sLD@s,TBDnextMPY@z,ASTLA,@r采用具有延時(shí)指令功能的指令,只要合理安排前后指令的順序,可以節(jié)省機(jī)器周期。具有延遲功能的指令如表2.7.1

表2.7.1具有延遲功能的指令③條件執(zhí)行的流水線操作’C54x只有一條條件執(zhí)行指令,且為單字單周期指令。條件執(zhí)行指令格式:XC n,cond[,cond[,cond]]功能:執(zhí)行指令時(shí),先判斷給定條件cond是否滿足。若滿足,則連續(xù)執(zhí)行緊隨其后的n條指令;若不滿足,則連續(xù)執(zhí)行n條NOP指令例如:采用條件執(zhí)行指令的程序如下地址 指令代碼 注釋a1 i1a2 i2a3 XCn,conda4 i4a5 i5任意單周期,單字指令任意單周期,單字指令單周期,單字指令任意單周期,單字指令任意單周期,單字指令對(duì)應(yīng)流水框圖如圖2.7.5所示。周期3:XC指令地址a3加載到PAB;周期4:對(duì)XC指令取指;周期5:對(duì)XC指令尋址,求解XC條件。若滿足條件,i4和i5進(jìn)入譯碼并執(zhí)行;若不滿足,執(zhí)行空操作。④存儲(chǔ)器的流水操作’C54x片內(nèi)存儲(chǔ)器分為雙尋址存儲(chǔ)器和單尋址存儲(chǔ)器。⑴雙尋址存儲(chǔ)器的流水線操作’C54x的內(nèi)部雙尋址存儲(chǔ)器DARAM分成若干獨(dú)立的塊,CPU可在單個(gè)周期內(nèi)對(duì)其訪問(wèn)2次,如:在單個(gè)周期內(nèi)允許同時(shí)訪問(wèn)不同的DARAM塊;CPU同時(shí)處理兩條指令訪問(wèn)不同的存儲(chǔ)塊;處于流水線不同階段的兩條指令,可以同時(shí)訪問(wèn)同一個(gè)存儲(chǔ)塊。上述三種存儲(chǔ)器的操作,均不會(huì)發(fā)生時(shí)序沖突,因?yàn)閮纱卧L問(wèn)分別發(fā)生在機(jī)器周期的前半周期和后半周期。例如:當(dāng)執(zhí)行下列程序發(fā)生時(shí)序沖突時(shí),CPU能對(duì)取指自動(dòng)延遲一個(gè)周期。LD *AR2+,A;AR2指向程序駐留的DARAMi2 ;假定i2指令不訪問(wèn)DARAMi3 ;假定i3指令不訪問(wèn)DARAMi4當(dāng)?shù)?條指令讀操作數(shù),i4指令正在取指,故發(fā)生時(shí)序沖突。此時(shí),CPU對(duì)i4的取指延遲一個(gè)周期來(lái)解決時(shí)序沖突。對(duì)應(yīng)流水線工作圖如圖2.7.7所示。⑵單尋址存儲(chǔ)器的流水線操作’C54x的單尋址存儲(chǔ)器包括單尋址讀寫存儲(chǔ)器SARAM、單尋址只讀存儲(chǔ)器ROM和DROM。這兩類存儲(chǔ)器在流水線中的操作基本相同,只是ROM和DROM不能進(jìn)行寫操作。

對(duì)于單尋址存儲(chǔ)器,當(dāng)指令有兩個(gè)存儲(chǔ)器操作數(shù)進(jìn)行讀或?qū)憰r(shí),若兩個(gè)操作數(shù)指向同一個(gè)單尋址存儲(chǔ)塊,則在流水線上會(huì)發(fā)生時(shí)序沖突。在這種情況下,CPU先在原來(lái)的周期上執(zhí)行一次尋址操作,并將另一次尋址操作自動(dòng)地延遲一個(gè)周期。如:MAC *AR2+,*AR3+%,A,B在這條指令中,若AR2和AR3指向同一單尋址存儲(chǔ)器塊,則該指令需要兩個(gè)時(shí)鐘周期。

⑤流水線的等待周期’C54x的流水線結(jié)構(gòu),允許多條指令同時(shí)利用CPU的內(nèi)部資源。由于CPU的資源有限,當(dāng)多于一個(gè)流水線上的指令同時(shí)訪問(wèn)同一資源時(shí),可能產(chǎn)生時(shí)序沖突。⑴流水線沖突可能產(chǎn)生未保護(hù)性流水線沖突的硬件資源:·輔助寄存器 ·重復(fù)塊長(zhǎng)度寄存器·堆棧指針 ·暫存器·狀態(tài)寄存器 ·塊重復(fù)計(jì)數(shù)器·存儲(chǔ)器映像累加器·處理器工作方式寄存器對(duì)上述的存儲(chǔ)器映像寄存器,如果在流水線中同時(shí)對(duì)它們進(jìn)行尋址,就有可能發(fā)生未保護(hù)性流水沖突。沖突分析情況如圖2.7.8所示。TMS320C54xC語(yǔ)言程序不會(huì)產(chǎn)生沖突匯編語(yǔ)言程序CALU運(yùn)算不會(huì)產(chǎn)生沖突MMR寄存器寫操作早安排寫操作不會(huì)發(fā)生沖突其他MMR寫操作要用等待周期表圖2.7.8流水線沖突分析示意圖⑵等待周期表當(dāng)指令對(duì)MMR、ST0、ST1和PMST等硬件資源進(jìn)行寫操作時(shí),有可能造成流水線沖突。解決的辦法是在寫操作指令的后面插入若干條NOP指令。等待周期表給出了對(duì)MMR以及控制字段進(jìn)行寫操作的各種指令所需插入的等待周期數(shù)。為了避免流水線沖突,可根據(jù)等待周期表來(lái)選擇插入的NOP指令的數(shù)量。流水線等待周期表如表2.7.3所示。見(jiàn)P572.7.3系統(tǒng)的復(fù)位TMS320C54x芯片設(shè)有復(fù)位輸入引腳RS。

當(dāng)引腳上的電平發(fā)生變化時(shí),程序?qū)闹付ǖ拇鎯?chǔ)地址FF80H單元開始執(zhí)行。

當(dāng)時(shí)鐘電路工作后,只要在RS引腳上出現(xiàn)2個(gè)周期以上的低電平,芯片內(nèi)部所有寄存器都被初始化復(fù)位。

若RS保持低電平,則芯片始終處于復(fù)位狀態(tài)。只有到高電平時(shí),才可以從FF80H執(zhí)行。當(dāng)芯片處于復(fù)位期間,處理器進(jìn)行如下操作:將工作方式寄存器PMST中的中斷向量指針I(yè)PTR置成1FFH,MP/MC位置成與MP/MC引腳相同的狀態(tài);狀態(tài)寄存器ST0=1800H;將狀態(tài)寄存器ST1中的中斷方式位INTM置1,關(guān)閉所有可屏蔽中斷;使程序計(jì)數(shù)器PC=FF80H;使擴(kuò)展程序計(jì)數(shù)器XPC=0000H;使中斷標(biāo)志寄存器IFR=0000H;使數(shù)據(jù)總線處于高阻狀態(tài);控制吸納均處于無(wú)效狀態(tài);將地址總線置為FF80H;使IACK引腳產(chǎn)生中斷響應(yīng)信號(hào);產(chǎn)生同步復(fù)位信號(hào),對(duì)外圍電路初始化;將下列狀態(tài)位置為初值:ARP=0 CLKOFF=0 HM=0 SXM=1ASM=0 CMPT=0 INTM=1 TC=1AVIS=0 CPL=0 OVA=0 XF=1BRAF=0 DP=0 OVB=0C=1 DROM=0 OVLY=0C16=0 FRCT=0 OVM=0如果MP/MC=0,程序從片內(nèi)ROM開始執(zhí)行,否則,從片外程序存儲(chǔ)器開始執(zhí)行。2.7.4中斷操作中斷系統(tǒng)是為計(jì)算機(jī)系統(tǒng)提供實(shí)時(shí)操作、多任務(wù)和多進(jìn)程操作的關(guān)鍵部件。

’C54x的中斷系統(tǒng)既支持軟件中斷,也支持硬件中斷。

軟件中斷是由程序指令產(chǎn)生的中斷;硬件中斷是由外圍設(shè)備信號(hào)產(chǎn)生的中斷。當(dāng)同時(shí)多個(gè)硬件中斷出現(xiàn)時(shí),’C54x將按照中斷優(yōu)先級(jí)別的高低對(duì)它們進(jìn)行中斷響應(yīng),其中1為最高優(yōu)先級(jí)。VC5402中斷源和中斷優(yōu)先級(jí)見(jiàn)表2.7.4。P60

’C54x中斷可分為兩大類:①可屏蔽中斷??捎密浖O(shè)置來(lái)屏蔽或開放的中斷。②非屏蔽中斷。這些中斷都是不能屏蔽的中斷。2.7.5省電和保持方式’C54x有多種省電工作方式,可以使CPU暫時(shí)處于休眠狀態(tài)。此時(shí),CPU進(jìn)入暫停工作狀態(tài),功耗減小,但保持CPU中的內(nèi)容。表2.7.5列出了4種省電工作方式:用指令I(lǐng)DLE1、IDLE2、IDLE3進(jìn)入3種省電工作方式,保持方式是另一種省電工作方式。2.8C54x的外部總線’C54x與外部存儲(chǔ)器以及I/O設(shè)備相連,能對(duì)64K的數(shù)據(jù)存儲(chǔ)空間,64K的程序存儲(chǔ)空間,以及64K的I/O空間尋址。獨(dú)立的空間選擇信號(hào)DS、PS和IS允許進(jìn)行物理上分開的空間選擇。2.8.1外部總線接口①外部總線的組成’C54x的外部總線由數(shù)據(jù)總線、地址總線以及一組控制信號(hào)所組成,可以用來(lái)尋址’C54x的外部存儲(chǔ)器和I/O口。表2.8.1列出了’C54x的主要外部總線接口信號(hào)。

表2.8.1主要外部總線接口信號(hào)外部接口總線是一組并行接口。它有兩個(gè)互相獨(dú)立,且相互排斥的選通信號(hào)MSTRB和IOSTRB。

READY與片內(nèi)軟件可編程等待狀態(tài)發(fā)生器允許CPU與不同速度的存儲(chǔ)器以及I/O設(shè)備進(jìn)行數(shù)據(jù)交換。HOLD信號(hào)可以使’C54x工作在保持方式,將外部總線控制權(quán)交給外部控制器,直接控制程序存儲(chǔ)空間、數(shù)據(jù)存儲(chǔ)空間和I/O之間的數(shù)據(jù)交換。CPU尋址片內(nèi)存儲(chǔ)器時(shí),外部數(shù)據(jù)總線處于高阻狀態(tài),地址總線以及存儲(chǔ)器選擇信號(hào)(PS、DS、IS)保持以前狀態(tài)。此外信號(hào)MSTRB、IOSTRB、R/W、IAQ、MSC保持無(wú)效狀態(tài)。②外部總線的優(yōu)先級(jí)別’C54x的處理器共有8組16位片內(nèi)總線,8組總線包括1組程序總線PB,3組數(shù)據(jù)總線CB、DB、EB以及4組地址總線PAB、CAB、DAB、EAB。由于采用流水線結(jié)構(gòu),CPU可以同時(shí)對(duì)這些總線進(jìn)行存取操作。但是,對(duì)于外部總線,CPU在每個(gè)機(jī)器周期內(nèi)只能對(duì)它們尋址一次,否則,將會(huì)產(chǎn)生流水沖突。對(duì)于這種外部總線上的流水線沖突,CPU可根據(jù)流水線操作的優(yōu)先級(jí)別自動(dòng)解決。外部總線操作優(yōu)先級(jí)別如圖2.8.1所示。圖2.8.1外部總線操作優(yōu)先級(jí)別從圖可以看出,在一個(gè)機(jī)器周期內(nèi),若CPU對(duì)外部總線進(jìn)行一次取指操作,兩次讀操作和一次寫操作時(shí),外部總線優(yōu)先級(jí)別為數(shù)據(jù)尋址比程序存儲(chǔ)器取指具有較高的優(yōu)先權(quán)。在所有的CPU數(shù)據(jù)尋址完成之后,才能夠程序存儲(chǔ)器取指操作。2.8.2外部總線等待狀態(tài)控制’C54x片內(nèi)有兩個(gè)控制CPU等待狀態(tài)的部件:軟件可編程等待狀態(tài)發(fā)生器和可編程分區(qū)轉(zhuǎn)換邏輯電路。這兩個(gè)部件用來(lái)控制外部總線工作,分別受兩個(gè)存儲(chǔ)器映像寄存器—軟件等待狀態(tài)寄存器和可編程分區(qū)轉(zhuǎn)換邏輯寄存器控制。①軟件可編程等待狀態(tài)發(fā)生器軟件可編程等待狀態(tài)發(fā)生器可以通過(guò)編程來(lái)延長(zhǎng)總線的等待周期,最多可達(dá)到7~14個(gè)機(jī)器周期。⑴軟件等待狀態(tài)寄存器SWWSR軟件可編程等待狀態(tài)發(fā)生器受16位軟件等待狀態(tài)寄存器SWWSR的控制,它是一個(gè)存儲(chǔ)映像寄存器,其數(shù)據(jù)空間的地址為0028H’C54x的外部擴(kuò)展空間和數(shù)據(jù)空間分別由兩個(gè)32K的存儲(chǔ)塊組成,I/O空間由64K組成。這

溫馨提示

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