DSP原理及應(yīng)用-TMS320DM6437 課件 第6、7章 TMS320DM6437流水線與中斷、TMS320DM6437增強的直接存儲器訪問EDMA3_第1頁
DSP原理及應(yīng)用-TMS320DM6437 課件 第6、7章 TMS320DM6437流水線與中斷、TMS320DM6437增強的直接存儲器訪問EDMA3_第2頁
DSP原理及應(yīng)用-TMS320DM6437 課件 第6、7章 TMS320DM6437流水線與中斷、TMS320DM6437增強的直接存儲器訪問EDMA3_第3頁
DSP原理及應(yīng)用-TMS320DM6437 課件 第6、7章 TMS320DM6437流水線與中斷、TMS320DM6437增強的直接存儲器訪問EDMA3_第4頁
DSP原理及應(yīng)用-TMS320DM6437 課件 第6、7章 TMS320DM6437流水線與中斷、TMS320DM6437增強的直接存儲器訪問EDMA3_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

DSP原理及應(yīng)用第六章TMS320DM6437的流水線與中斷第六章TMS320DM6437流水線與中斷

6.1流水線6.2DSP的中斷系統(tǒng)6.3實驗及程序?qū)嵗?.1流水線操作6.1.1流水線概述在馮諾依曼結(jié)構(gòu)中,機器各部件在某些周期內(nèi)進行操作,而在某些周期內(nèi)是空閑的,導(dǎo)致機器各部分的利用率不高。

為了提高計算機各功能部件的工作效率和計算機的運行速度,這就需要流水線(pipeline)技術(shù)。流水線技術(shù)是指在程序執(zhí)行時多條指令重疊進行操作的一種準(zhǔn)并行處理技術(shù)。它是將一個重復(fù)的過程分解為若干個子過程,每個子過程有專門的功能部件來實現(xiàn)。6.1流水線操作流水線中的每個子過程及其功能部件稱為流水線的級或段,段與段相互連接形成流水線。流水線的段數(shù)稱為流水線的深度。把多個處理過程在時間上錯開,依次通過各功能段,這樣,每個子過程就可以與其他的子過程并行進行。6.1流水線操作對微處理器的每個部件來說,每隔1個時鐘周期即可進入一條新指令,這樣在同一時間內(nèi),就有多條指令交疊在不同部件內(nèi)處理,使CPU運算速度提高。但這種流水線工作方式控制較為復(fù)雜,很難全速運行。

6.1流水線操作

TMS320DM6437的DSP具有獨特的特點,它可以通過消除流水線交錯,簡化流水線的控制,并通過增加流水線消除程序提取、數(shù)據(jù)訪問和乘法運算等傳統(tǒng)結(jié)構(gòu)的瓶頸,提高了單周期的吞吐量。并且利用流水線提供的靈活性可以簡化編程,提高性能。6.1流水線操作6.1.2.流水線操作

流水線操作以CPU周期為單位,一個CPU周期是指特定的執(zhí)行包在流水線特定階段的時間。CPU周期的邊界總是發(fā)生在時鐘周期的邊界,隨著節(jié)拍代碼流流經(jīng)各個部件,各個部件根據(jù)指令代碼進行不同處理。一個指令的取出和執(zhí)行過程可以分為多個階段。

TMS320DM6437的DSP指令集流中所有的指令都通過:取指(Fetch),譯碼(Decode),執(zhí)行(Execute)3個階段,各階段的任務(wù)如下:6.1流水線操作(1)取指

取出一條指令送到指令寄存器;所有指令的取指階段都有4個節(jié)拍,即PG、PS、PW、PR節(jié)拍,每個節(jié)拍的具體功能如下:PG程序地址產(chǎn)生:CPU上取指包的地址確定PS程序地址發(fā)送:取指包的地址送至內(nèi)存PW程序訪問等待:訪問程序存儲空間PR程序取指包接收:取指包送至CPU邊界6.1流水線操作TMS320DM6437的DSP取指階段:①每個節(jié)拍采用8個字的取指包。②四個節(jié)拍從左到右依次進行。③

所有的這8個字同時通過PG、PS、PW和PR進行取指。④PR取指包有四個執(zhí)行包,PW和PS各包括兩個執(zhí)行包,PG包含有八個指令的一個執(zhí)行包。圖6-1

流水線取指級的四個節(jié)拍功能圖6.1流水線操作(2)譯碼對指令操作碼進行譯碼,讀取操作數(shù);所有指令譯碼階段都包括2個節(jié)拍,即DP和DC節(jié)拍,每個節(jié)拍的具體功能如下:DP指令分配

:確定取指包的下一個執(zhí)行包,并將其送至適當(dāng)?shù)墓δ軉卧獪?zhǔn)備譯碼。DC指令譯碼:指令在功能單元進行譯碼。(1)DP階段,取指包被分為執(zhí)行包。執(zhí)行包包括一個指令或兩到八個平行指令。在此階段,執(zhí)行包的指令被分配合適的功能單元。(2)DC階段,源寄存器、目標(biāo)寄存器和相關(guān)路徑被解碼,以執(zhí)行功能單元的指令。6.1流水線操作(3)執(zhí)行根據(jù)操作碼的要求,完成指令規(guī)定的操作,并把運算結(jié)果寫到指定的存儲或緩沖單元中。流水線的執(zhí)行階段節(jié)拍的數(shù)量不同,這取決于指令的類型。流水線的執(zhí)行部分被分為5個節(jié)拍。大多數(shù)DSP指令是單周期的,所以它們只有一個執(zhí)行節(jié)拍(E1)。只有少數(shù)指令需要多個執(zhí)行節(jié)拍。不同類型的指令需要不同數(shù)量的這些節(jié)拍來完成執(zhí)行。流水線執(zhí)行級的5個節(jié)拍如下:6.1流水線操作1>執(zhí)行節(jié)拍E1①測試指定執(zhí)行條件及讀取操作數(shù),對所有的指令適用②對于讀取和存儲指令,假定指令的條件被評估為真時,地址產(chǎn)生,其修正值寫入寄存器,若指令的條件為假,則指令在E1后不寫入任何結(jié)果或進行任何流水線操作③對于轉(zhuǎn)移指令,程序轉(zhuǎn)移目的地址取指包處于PG節(jié)拍④對于單周期指令,結(jié)果寫入寄存器6.1流水線操作1>執(zhí)行節(jié)拍E1⑤對于雙精度(DP)比較指令、ADDDP和MPYDP等指令,讀取源操作數(shù)的低32位⑥對于其他指令讀取操作數(shù)⑦對于雙周期雙精度(DP)指令,結(jié)果的低32位寫入寄存器6.1流水線操作2>執(zhí)行節(jié)拍E2①讀取指令的地址送至內(nèi)存,存儲指令的地址和數(shù)據(jù)送至內(nèi)存,對結(jié)果進行飽和處理的單周期指令,若結(jié)果飽和,置SRC的SAT位②

對于單個16×16乘法指令、乘法單元和非乘法操作指令,結(jié)果將寫入寄存器文件。TMS320C64x的M單元的非乘法操作指令,對于DP比較指令和ADDDP/SUBDP指令,讀取源操作數(shù)的高32位③

對于MPYDP指令,讀取源操作數(shù)1的低32位和源操作數(shù)2的高32位,對于MPYI和MPYID指令,讀取源操作數(shù)6.1流水線操作3>執(zhí)行節(jié)拍E3①進行數(shù)據(jù)存儲空間訪問②

對結(jié)果進行飽和處理的乘指令在結(jié)果飽和時置SAT位③對于MPYDP指令讀取源操作數(shù)1的高32位和源操作數(shù)2的低32位④

對于MPYI和MPYID指令,讀取源操作數(shù)6.1流水線操作4>執(zhí)行節(jié)拍E4①對于讀取指令,把所讀的數(shù)據(jù)送至CPU邊界;②對于乘法擴展,結(jié)果將被寫入寄存器;③

對于MPYI和MPYID指令,讀取源操作數(shù);④

對于MPYDP指令,讀取源操作數(shù)的高32位;⑤

對于4周期指令,結(jié)果寫人寄存器;⑥

對于INTDP指令,結(jié)果的低32位寫入寄存器。6.1流水線操作5>執(zhí)行節(jié)拍E5①對于讀取指令,把所讀的數(shù)據(jù)寫入寄存器②對于INTDP指令,結(jié)果寫入寄存器。TMS320DM6437中所有指令均按照以上3級流水線運行,具體流水線結(jié)構(gòu)如下圖所示:圖6-2

TMS320DM64373級流水線6.1流水線操作TMS320DM6437流水線流程圖如下圖所示,連續(xù)的各個取值包都包含8條并行指令,各個指令包以每個時鐘一個節(jié)拍的方式通過流水線。圖6-3TMS320DM6437流水線流程圖6.1流水線操作流水線的實現(xiàn)步驟如下所示:①從存儲器中取出一條指令。②判斷該指令是否支持并行執(zhí)行,如果支持,則執(zhí)行步驟①,不支持執(zhí)行步驟③。③對指令包中的每一條指令進行解析,解析過程中采用運用緩存機制提高指令的解析效率。④判斷延時隊列中是否有指令,如果有指令則執(zhí)行步驟⑤,沒有則執(zhí)行步驟⑥。6.1流水線操作⑤對延時隊列中每一條指令進行如下操作:將指令的延時間隙減1;此時,如果延時間隙為0,則執(zhí)行指令在En節(jié)拍的操作。⑥判斷指令包中是否有未執(zhí)行的指令,如果有,則執(zhí)行操作⑦,沒有則結(jié)束。⑦對執(zhí)行包中每一條指令進行如下操作:如果指令有延時間隙,則執(zhí)行步驟⑥,如果沒有執(zhí)行延時,執(zhí)行指令E1節(jié)拍的操作并跳動步驟⑥。⑧執(zhí)行指令E1節(jié)拍的操作,指令的延時間隙減1,將指令加入到延時隊列中,并跳到步驟⑥。6.1流水線操作6.13.各類指令的流水線執(zhí)行TMS320C64x+系列的DSP的流水線操作執(zhí)行指令分為6種:①單周期指令(single-cycleinstruction)

②雙周期或多周期(two-cycleormultiplyinstruction)

存儲指令(storeinstruction)④擴展乘法指令(extendedmultiplyinstructions)⑤加載指令(loadinstructions)⑥跳轉(zhuǎn)指令(branchinstructions)6.1流水線操作下表是六種類型指令的每個執(zhí)行階段中發(fā)生的操作的映射。表6-2

六種類型指令的每個執(zhí)行階段發(fā)生的操作表6.1流水線操作

當(dāng)要將同一指令讀入和存儲到相同的內(nèi)存位置時,有如下規(guī)則(i為周期):(1)在存儲之前執(zhí)行讀入指令,則以前的值被讀入,新的值被存儲。

iLDWi+1STW(2)讀入指令前執(zhí)行存儲指令,則新的值被存儲和讀入。

iSTWi+1LDW6.1流水線操作(3)當(dāng)讀入指令和存儲指令同時執(zhí)行,以前的值首先被讀入,新的值被存儲,但是都在同一節(jié)拍。

iSTWi+1LDW6.1流水線操作CPU運行時,每次取八條指令組成一個指令包,取指包一定在地址的256位邊界定位。每條指令的最后一位是并行標(biāo)志位P,P標(biāo)志位決定本條指令是否與取指包中的下一條指令并行執(zhí)行。CPU從低地址到高地址依次判讀P標(biāo)志位:如果為1,則該指令將與下一條指令并行執(zhí)行;如果為0,則下一條指令要在本指令執(zhí)行完以后才能執(zhí)行。6.1流水線操作如果流水線中的指令相互獨立,則可以充分發(fā)揮流水線的性能。但在實際中,指令間可能會相互依賴,這會降低流水線的性能。相鄰或相近的兩條指令因存在某種關(guān)聯(lián),后一條指令不能在原指定的時鐘周期開始執(zhí)行,造成流水線中出現(xiàn)“阻塞”的情況。(1)在一個取指包中有多個執(zhí)行包的流水線操作一個FP包含8條指令,可分成1~8個EP,每個EP是并行執(zhí)行的指令,每條指令在1個獨立的功能單元內(nèi)執(zhí)行。當(dāng)一個取值包包含多個執(zhí)行包時,這時將出現(xiàn)流水線阻塞。6.1流水線操作圖6-4流水線阻塞圖取指包在指令周期1~4時,通過取指級的4個節(jié)拍,同時1~4的每個指令周期都有1個新取指包進入PG節(jié)拍;在第5個指令周期的DP節(jié)拍,CPU掃描FPn的P位,檢測出有3個執(zhí)行包EPk~EPk+2,迫使流水線阻塞,允許EPk+1和EPk+2在第6和7個指令周期進入DP節(jié)拍,一旦EPk+2進入DC節(jié)拍,流水線阻塞也被釋放;6.1流水線操作FPn+1~FPn+4在第6和7個指令周期被阻塞,F(xiàn)Pn+5在第6和7個指令周期也被阻塞,直到第8個指令周期后才進入PG節(jié)拍:第8個指令周期后流水線將連續(xù)操作,直至又有多個執(zhí)行包進入DP節(jié)拍或有中斷發(fā)生。圖6-4

流水線阻塞圖6.1流水線操作(2)多周期NOP指令對流水線運行的影響單周期NOP指令與其它代碼在一個執(zhí)行包中。LD、ADD、和MPY指令的結(jié)果在適當(dāng)指令周期是可用的,NOP指令對執(zhí)行包無影響。圖6-5NOP與其它代碼在一個執(zhí)行包6.1流水線操作用一個多周期NOP5代替單周期NOP指令。NOP5將產(chǎn)生除它的執(zhí)行包內(nèi)部指令操作之外的空操作。在NOP5指令周期完成之前,任何其它指令不能使用LD、ADD、和MPY指令的結(jié)果。圖6-6

用多周期NOP指令代替單周期NOP指令6.1流水線操作跳轉(zhuǎn)指令可以影響多周期NOP指令的執(zhí)行,當(dāng)一個跳轉(zhuǎn)指令延遲間隙結(jié)束時,多周期NOP指令不管是否結(jié)束,這時跳轉(zhuǎn)都將廢棄多周期NOP指令。圖6-7

跳轉(zhuǎn)指令對多周期NOP指令的影響6.1流水線操作6.1.4.存儲器對流水線性能的影響

TMS320DM6437片內(nèi)為哈佛結(jié)構(gòu),即存儲器分為程序指令存儲空間和數(shù)據(jù)存儲空間,是一種并行體系結(jié)構(gòu)。與兩個存儲器相對應(yīng)的是體系中設(shè)置了程序總線和數(shù)據(jù)總線兩條總線,從而使數(shù)據(jù)的吞吐率提高了數(shù)倍。

6.1流水線操作

為了進一步提高運行速度和靈活性進行改進:(1)允許數(shù)據(jù)存放在程序存儲器中,并被算術(shù)運算指令直接使用,增強了芯片的靈活性;(2)將指令暫存在高速緩沖器中,當(dāng)執(zhí)行此指令時,不需要再從存儲器中讀取指令,節(jié)省了取指令周期。由于數(shù)據(jù)讀入和程序取指,內(nèi)存訪問被分為多個階段,這保證了TMS320C64x系列的DSP能進行內(nèi)存訪問。6.1流水線操作

存儲器對流水線性能的影響主要為存儲器阻塞。對于程序存儲器,存儲器阻塞發(fā)生在PW節(jié)拍。對于數(shù)據(jù)存儲器則發(fā)生在E3節(jié)拍。存儲器阻塞會使處于該流水線的所有節(jié)拍延長1個指令周期以上,從而使執(zhí)行增加額外的指令周期。圖6-8

存儲器阻塞圖6.1流水線操作6.2DSP的中斷系統(tǒng)1.中斷的基礎(chǔ)知識中斷類型和優(yōu)先級中斷是由硬件或軟件驅(qū)動的信號,為使CPU具有對外界異步事件的處理能力而設(shè)置的。中斷信號使DSP暫停正在執(zhí)行的程序,接受并響應(yīng)中斷請求,進入中斷服務(wù)程序。中斷過程包括保存當(dāng)前進程的上下文、完成中斷任務(wù)、恢復(fù)寄存器和進程上下文、恢復(fù)原始進程。中斷一旦被正確啟用,CPU將開始處理中斷并將程序流重新定向到中斷服務(wù)程序。TMS320DM6437的CPU有3種類型中斷,即RESET(復(fù)位)、不可屏蔽中斷(NMI)和可屏蔽中斷(INT4~I(xiàn)NT15)。3種中斷的優(yōu)先級別不同,復(fù)位具有最高優(yōu)先級。優(yōu)先級別見表6-4。表6-4中斷優(yōu)先級表6.2DSP的中斷系統(tǒng)(1)復(fù)位RESET

具有最高級別中斷,復(fù)位中斷時正在執(zhí)行的指令中止,所有的寄存器返回到默認(rèn)狀態(tài)。復(fù)位是低電平有效信號,必須保證低電平10個時鐘周期,然后再變高才能正確重新初始化CPU。復(fù)位中斷服務(wù)的取指包必須位于特定設(shè)備的特定地址。復(fù)位中斷不受分支指令的影響。6.2DSP的中斷系統(tǒng)(2)不可屏蔽中斷(NMI)

不可屏蔽中斷優(yōu)先級為2,它通常用來向CPU發(fā)出嚴(yán)重硬件問題的警報。出現(xiàn)在NMI線上的請求,不受中斷標(biāo)志位IF的影響,在當(dāng)前指令執(zhí)行完以后,CPU立即無條件響應(yīng)。為實現(xiàn)此中斷,在中斷使能寄存器中的不可屏蔽中斷使能位(NMIE)必須置1。NMIE為0時,所有可屏蔽中斷(INT4~I(xiàn)NT15)均都被禁止。6.2DSP的中斷系統(tǒng)(3)可屏蔽中斷(INT4~I(xiàn)NT15)

可被CPU通過指令限制某些設(shè)備發(fā)出中斷請求的中斷。有12個可屏蔽中斷,它們被鏈接到芯片外部或片內(nèi)外設(shè),也可由軟件控制或者不用。I/O設(shè)備發(fā)出的所有中斷都可以產(chǎn)生可屏蔽中斷,受標(biāo)志位IF的影響,根據(jù)中斷循環(huán)標(biāo)志的設(shè)置來判斷CPU是否響應(yīng)中斷請求。中斷發(fā)生時將中斷標(biāo)志寄存器(IFR)的相應(yīng)位置為1。6.2DSP的中斷系統(tǒng)中斷服務(wù)表(IST)IST是包含中斷服務(wù)代碼的取指包的一個地址表。當(dāng)CPU開始處理一個中斷服務(wù)時,它要參照IST進行。IST包含16個連續(xù)取指包,每個中斷服務(wù)取指包都含8條指令。圖6-9給出了IST的地址和內(nèi)容。圖6-9

中斷服務(wù)表6.2DSP的中斷系統(tǒng)中斷服務(wù)取指包(ISFP)當(dāng)中斷服務(wù)程序很小時,可以把它放在一個單獨的取指包內(nèi),為了中斷結(jié)束后能夠返回主程序,F(xiàn)P中包含一條跳轉(zhuǎn)到中斷返回指針?biāo)赶虻刂返闹噶?。接著是一條NOP5指令,它使跳轉(zhuǎn)目標(biāo)能夠有效地進入流水線的執(zhí)行級。若無這條指令,CPU將會在跳轉(zhuǎn)前執(zhí)行下一個ISFP中的5個執(zhí)行包。

圖6-10單獨的中斷取指包6.2DSP的中斷系統(tǒng)中斷服務(wù)表指針寄存器(ISTP)ISTP用于確定中斷服務(wù)程序在中斷服務(wù)表中的地址。ISTP中的ISTB確定IST的地址的基值,HPEINT確定當(dāng)前響應(yīng)的中斷,并給出這一特定中斷取指包在IST中的位置。6.2DSP的中斷系統(tǒng)圖6-12

ISTP格式描述表6-5ISTP字段描述6.2DSP的中斷系統(tǒng)2.中斷控制寄存器TMS320DM6437芯片控制寄存器組中有下列8個寄存器涉及中斷控制寄存器:(1)控制狀態(tài)寄存器(CSR)

控制全局使能或禁止中斷。該寄存器用于標(biāo)識一些狀態(tài),其中包括全局中斷使能、高速緩沖存儲器的控制位和其它各種控制位和狀態(tài)位。在控制狀態(tài)寄存器中包含控制中斷的兩個域,即GIE和PGIE。全局中斷使能(GIE)允許通過控制單個位的值來使能或禁止所有的可屏蔽中斷。6.2DSP的中斷系統(tǒng)圖6-14CSR格式全局禁用可屏蔽中斷的代碼:MVCCSR,B0;AND-2,B0,B0;MVCB0,CSR;全局使能可屏蔽中斷的代碼:MVCCSR,B0;OR1,B0,B0;MVCB0,CSR;表6-6CSR字段描述(2)中斷使能寄存器(IER)

該寄存器用于標(biāo)識某個中斷是使能還是禁止。格式圖6-15所示。圖6-15IER格式使能一個中斷(INT9)的代碼:MVK200h,B1;MVCIER,B0;ORB1,B0,B0;MVCB0,IER;禁用一個中斷(INT9)的代碼:MVKFDFFh,B1;MVCIER,B0;ANDB1,B0,B0;MVCB0,IER;6.2DSP的中斷系統(tǒng)該寄存器用于顯示中斷標(biāo)志。給出有中斷請求但尚未得到服務(wù)的中斷,存在于等待中斷的狀態(tài)中,包括INT4-INT15和不可屏蔽中斷的狀態(tài)。圖6-16

IFR格式(3)中斷標(biāo)志寄存器(IFR)、中斷設(shè)置寄存器(ISR)、中斷清除寄存器(ICR)設(shè)置一個中斷(INT6)并讀標(biāo)志寄存器的代碼:MVK40h,B3MVCB3,ISRNOPMVCIFR,B4清除一個中斷(INT6)并讀標(biāo)志寄存器的代碼:MVK40h,B3MVCB3,ICRNOP

MVCIFR,B46.2DSP的中斷系統(tǒng)(4)中斷設(shè)置寄存器(ISR)

人工設(shè)置IFR中的標(biāo)志位,使用它手動清除IFR中的可屏蔽中斷(INT15-INT4)。該寄存器用于標(biāo)識是否允許軟件控制來設(shè)置中斷。圖6-17

ISR格式6.2DSP的中斷系統(tǒng)(5)中斷清零寄存器(ICR)

人工清除IFR中的標(biāo)志位,使用它手動完成中斷處理。該寄存器用于標(biāo)識是否允許軟件來清除中斷。ICR格式如下圖所示。圖6-18ICR格式另外,ISR和ICR可用程序設(shè)置和清除IFR中的可屏蔽中斷位,設(shè)置和清除操作不影響NMI和復(fù)位。6.2DSP的中斷系統(tǒng)(6)不可屏蔽中斷返回指針寄存器(NRP)NRP保存從不可屏蔽中斷返回時的指針,該指針引導(dǎo)CPU返回到原來程序執(zhí)行的正確位置。當(dāng)NMI完成服務(wù)時,為返回到被中斷的原程序中,在中斷服務(wù)程序末尾必須安排一條跳轉(zhuǎn)到NRP指令(BNRP)。從NMI返回的代碼:BNRP;NOP5;延遲間隙6.2DSP的中斷系統(tǒng)(7)可屏蔽中斷返回指針寄存器(IRP)IRP保存從可屏蔽中斷返回時的指針,該指針引導(dǎo)CPU返回到原來程序執(zhí)行的正確位置。當(dāng)可屏蔽中斷完成服務(wù)時,為返回到被中斷的原程序中,在中斷服務(wù)程序末尾必須安排一條跳轉(zhuǎn)到NRP指令。從一個可屏蔽中斷返回的代碼:BIRP;NOP5;延遲間隙6.2DSP的中斷系統(tǒng)(8)中斷—復(fù)位狀態(tài)復(fù)位后,控制寄存器及控制位的中值如下:AMR,ISR,ICR,IFR及ISTP=0h;IER=1h;IRP和NRP未定義;CSR的位15~位0=100h(小終端模式)=000h(大終端模式)表6-7中斷控制寄存器描述6.2DSP的中斷系統(tǒng)3.中斷響應(yīng)過程根據(jù)TMS320DM6437的中斷機制,可以把中斷分為三部分:中斷請求、中斷檢查和中斷響應(yīng)。TMS320DM6437支持處理多個中斷請求:(1)當(dāng)有一個中斷正在執(zhí)行的時候,如果產(chǎn)生了一個優(yōu)先級更高的中斷請求,這時處理器便會去響應(yīng)優(yōu)先級比較高的中斷請求;(2)如果中斷請求的優(yōu)先級比較低,則該中斷請求被掛起,直到高優(yōu)先級的中斷執(zhí)行完畢后才執(zhí)行。6.2DSP的中斷系統(tǒng)1>中斷請求若有多個中斷源,CPU就需要判斷其優(yōu)先級:先響應(yīng)優(yōu)先級別高的中斷請求。6.2DSP的中斷系統(tǒng)2>中斷響應(yīng)CPU要響應(yīng)中斷需要滿足以下條件:①無同級或高級中斷正在服務(wù);②當(dāng)前指令周期結(jié)束;③

若現(xiàn)行指令是RETI、RET或者訪問IE、IP指令,則需要執(zhí)行到當(dāng)前指令及下一條指令方可響應(yīng)。響應(yīng)過程:①

置位中斷優(yōu)先級有效觸發(fā)器,關(guān)閉同級和低級中斷;②調(diào)用入口地址,斷電入棧;③

進入中斷服務(wù)程序。6.2DSP的中斷系統(tǒng)3>中斷處理中斷處理就是在確認(rèn)中斷后,執(zhí)行中斷服務(wù)程序,從中斷入口地址開始執(zhí)行,直到返回指令為止。一般包括:①

保護現(xiàn)場;②

執(zhí)行中斷服務(wù)程序;③恢復(fù)現(xiàn)場。用戶根據(jù)要完成的任務(wù)編寫中斷服務(wù)程序,要注意將主程序中的需要保護的的寄存器內(nèi)的內(nèi)容進行保護。保護和恢復(fù)現(xiàn)場可以通過堆棧操作或切換寄存器組完成。6.2DSP的中斷系統(tǒng)4>中斷返回

中斷返回是指中斷服務(wù)完成后,CPU返回到原程序的斷點,繼續(xù)執(zhí)行原來的程序,通過中斷執(zhí)行指令RETI來實現(xiàn)。6.2DSP的中斷系統(tǒng)4.中斷嵌套中斷嵌套是指中斷系統(tǒng)正在執(zhí)行一個中斷服務(wù)時,有以下兩種情況:①事先設(shè)置了中斷優(yōu)先級寄存器IP②沒有設(shè)置IP

6.2DSP的中斷系統(tǒng)6.3實驗及程序?qū)嵗?.3.1

IIR數(shù)字濾波器的MATLAB設(shè)計6.3.2

基于ICETEK-DM6437-A的IIR數(shù)字濾波器的DSP實現(xiàn)流水線是增強DSP性能的重技術(shù)。本章首先介紹TMS320DM6437流水線的線作用、級數(shù)、取指包、執(zhí)行包、流水線執(zhí)行級類型和流水線運行時應(yīng)該注意的問題等相關(guān)內(nèi)容,其中重點是TMS320DM6437的流水線作用、級數(shù)、時序和流水線操作過程中存在的問題。

本章小結(jié)DSP原理及應(yīng)用

第七章:增強型內(nèi)存直接訪問控制器EDMA3第七章:增強型內(nèi)存直接訪問控制器EDMA37.1概述7.2EDMA3控制器7.3EDMA3數(shù)據(jù)傳輸7.4參數(shù)RAM(PaRAM)7.5EDMA3的中斷7.6快速DMA(QDMA)7.7實驗及程序?qū)嵗?.1EDMA3概述

信號處理中經(jīng)常涉及大量的數(shù)據(jù)傳輸。利用DSP的指令可以完成數(shù)據(jù)的搬移,但這會占用大量的CPU資源。為降低CPU的負(fù)荷,通常都在DSP片內(nèi)設(shè)計多通道的直接存儲器訪問(DMA)控制器。DMA控制器是獨立于CPU的設(shè)備,一旦正確初始化后,就能獨立于CPU工作,在CPU操作的同時實現(xiàn)片內(nèi)存儲器、片內(nèi)外設(shè)以及外圍器件間的數(shù)據(jù)傳輸。DMA傳送時,需要使用系統(tǒng)的地址和數(shù)據(jù)總線以及一些控制信號線,但這些總線一般都是由CPU控制的,因此為了能夠?qū)崿F(xiàn)DMA需要由硬件自動實現(xiàn)總線的控制權(quán)轉(zhuǎn)移,為此一般的DMA控制器需要具有以下功能:

(1)可以向CPU發(fā)出HOLD號,請求CPU讓出總線,即CPU在這些總線上的引線

處于高阻狀態(tài);(2)CPU讓出總線后,可以接管對總線的控制;(3)可以在總線上進行尋址和讀寫控制;(4)可以決定傳送的數(shù)據(jù)個數(shù);(5)可以啟動數(shù)據(jù)的傳送,可以判斷數(shù)據(jù)傳送是否結(jié)束并發(fā)出結(jié)束信號;(6)可以在結(jié)束傳送后自動交出總線控制權(quán),恢復(fù)CPU正常工作狀態(tài)。

7.1EDMA3概述

為便于數(shù)據(jù)傳輸,在基本操作的基礎(chǔ)上,DSP芯片的DMA控制器將數(shù)據(jù)進行了分塊(block)管理,每一塊又可以分為若干幀(frame),每幀由一定長度的數(shù)據(jù)單元(element)組成。每個DMA通道的數(shù)據(jù)塊和數(shù)據(jù)幀大小可以由用戶自行設(shè)定?;谶@些管理單元,DMA控制器提供了多種傳輸方式,包括元素傳輸、幀傳輸和塊傳輸?shù)?。三種傳輸方式的最主要區(qū)別在于傳輸數(shù)據(jù)量的大小:(1)元素傳輸只對一個數(shù)據(jù)進行讀/寫操作;(2)幀傳輸將搬移一幀內(nèi)的所有數(shù)據(jù);(3)塊傳輸搬移塊內(nèi)所有幀的數(shù)據(jù)。7.1EDMA3概述以下是DMA傳輸中的常用術(shù)語:●讀傳輸:DMA控制器從源地址讀取一個數(shù)據(jù)單元。●寫傳輸:DMA控制器將讀出的數(shù)據(jù)單元寫入目的地址?!駟卧獋鬏敚喊〝?shù)據(jù)的讀傳輸與寫什專輸?shù)臄?shù)據(jù)傳輸。●數(shù)據(jù)傳送單元:單個數(shù)據(jù)單元從源地址到目的地址傳輸,如果需要每個數(shù)據(jù)單元可以由同步事件傳輸?!駧阂唤M數(shù)據(jù)單元組成一個幀,一幀中的單元可以是間隔存放也可以連續(xù)存放的。幀傳輸可以同步傳輸,也可以異步傳輸?!駢K傳輸:完成若干幀的傳輸塊的傳輸俞,每塊內(nèi)的幀數(shù)可以通過編程來設(shè)置?!耜嚵校阂唤M連續(xù)的數(shù)據(jù)單元組成一個陣列,在一個陣列中單元的位置連續(xù)存放且不能改變。陣列多在二維數(shù)據(jù)傳輸中使用。塊:多個陣列或者多個幀組成一個塊?!褚痪S傳輸:一組幀組成一個塊。每個塊中的幀個數(shù)范圍是1~65536。●二維傳輸:一組陣列組成一個二維塊,其中第一維是一個陣列中連續(xù)單元,第二維DMA控制器的工作方式有三種:方式1:存儲器與外部設(shè)備之間進行數(shù)據(jù)交互傳輸;方式2:存儲器與存儲器之間的數(shù)據(jù)交互傳輸;方式3:外部設(shè)備與外部設(shè)備之間的數(shù)據(jù)交互傳輸。7.2EDMA3控制器EDMA3在TMS320DM6437DSP結(jié)構(gòu)中的位置7.2EDMA3控制器7.2.1EDMA3控制器的組成7.2.1.1.EDMA3控制器組成EDMA3控制器包含兩個主要模塊:EDMA3通道控制器(EDMA3_m_CC0)和EDMA3傳輸控制器(EDMA3_m_TCn)。7.2EDMA3控制器7.2.1EDMA3控制器的組成7.2.1.2.EDMA3通道控制器(EDMA3CC)7.2EDMA3控制器7.2.1EDMA3控制器的組成7.2.1.2.EDMA3通道控制器(EDMA3CC),主要模塊如下:?DMA/QDMA通道邏輯:這個模塊包括捕捉外部系統(tǒng)或外設(shè)事件用于初始化事件觸發(fā)傳輸?shù)倪壿媶卧?,也包含允許配置DMA/QDMA通道(隊列映射,參數(shù)RAM條目映射)的寄存器。.還有為不同觸發(fā)類型(手動,外部事件,鏈接和自動觸發(fā))使能/禁止事件和檢測事件狀態(tài)寄存器。?參數(shù)RAM集(PaRAM):為通道和重載參數(shù)集提供參數(shù)集條目.需要將期望的通道和連接參數(shù)集的傳輸內(nèi)容寫入到參數(shù)RAM集中。?事件隊列:它們構(gòu)成事件監(jiān)測邏輯和傳輸請求提交邏輯之間的接口。?傳輸請求提交邏輯:這個邏輯基于已提交到事件隊列的觸發(fā)事件以及提交相關(guān)事件隊列的給傳輸控制器的傳輸請求來處理參數(shù)RAM集。?結(jié)束檢測:結(jié)束檢測模塊檢測EDMA3傳輸控制或者從設(shè)備傳輸結(jié)束.傳輸結(jié)束可以使用鏈接觸發(fā)一個新傳輸或者聲明一個中斷.這個邏輯包括使能/禁止中斷(發(fā)送給CPU的)中斷處理寄存器,中斷標(biāo)志或中斷清除寄存器。另外,還有:?區(qū)域寄存器:允許DMA資源(DMA通道和中斷)被分配到唯一的區(qū)域,該區(qū)域被唯一EDMA編程者(適用于異/多核模型)或唯一的任務(wù)/進程(適用于單核設(shè)備模型)所有擁有。?調(diào)試寄存器:調(diào)試寄存器提供讀取隊列狀態(tài),通道控制器狀態(tài)(帶有CC的邏輯單元被激活)和丟失事件狀態(tài)的寄存器以使得調(diào)試可視化.7.2EDMA3控制器7.2.1EDMA3控制器的組成7.2.1.3.EDMA3傳輸控制器(EDMA3TC)7.2EDMA3控制器7.2.1EDMA3控制器的組成7.2.1.3.EDMA3傳輸控制器(EDMA3TC),主要模塊如下:?DMA程序寄存器集:DMA程序寄存器集存儲從EDMA3通道控制器(EDMA3CC)接收到的傳輸請求。?DMA源激活寄存器集:DMA源激活寄存器集存儲運行態(tài)時讀控制器中當(dāng)前DMA傳輸請求的內(nèi)容讀控制器:讀控制器發(fā)送讀命令到源地址。?目的FIFO寄存器集:目的FIFO寄存器存儲運行態(tài)或掛起態(tài)中寫控制器的當(dāng)前DMA傳輸請求的內(nèi)容。?寫控制器:寫控制發(fā)送寫命令/寫數(shù)據(jù)到目的地址。?數(shù)據(jù)FIFO:數(shù)據(jù)FIFO存儲中間態(tài)數(shù)據(jù).存儲在數(shù)據(jù)FIFO中的源外設(shè)讀數(shù)據(jù)和后續(xù)通過寫控制器寫入目的外設(shè)/從端的數(shù)據(jù)?完成接口:當(dāng)一個傳輸完成時,完成接口發(fā)送完成代碼到EDMA3CC,完成接口對生成中斷和鏈接事件都有用。7.2EDMA3控制器7.2.1EDMA3控制器的組成7.2.1.4.EDMA3控制器的觸發(fā)方式(1)DMA通道有3種觸發(fā)方式事件觸發(fā):CPU必須先通過EER使能該事件,當(dāng)一個觸發(fā)事件鎖存到ER寄存器就會啟動相應(yīng)通道的EDMA3手動觸發(fā):CPU可以通過寫ESR啟動一個EDMA3通道。鏈接觸發(fā):由一個EDMA3通道的傳輸結(jié)束來觸啟動另一個EDMA3。(2)QDMA通道有2種觸發(fā)方式:自動觸發(fā):PaRAM里設(shè)置為觸發(fā)字的域被寫入值后,觸發(fā)傳輸(通過QCHMAPn寄存器設(shè)置PaRAM的哪個域作為觸發(fā)域)。鏈接觸發(fā):由一個EDMA3通道的結(jié)束來觸發(fā),啟動另一個EDMA3。7.2EDMA3控制器7.2.2EDMA3通道控制器(EDMA3_m_CC0)的工作流程依據(jù)事件寄存器配置的觸發(fā)方式,在事件觸發(fā)之后,優(yōu)先級編碼器對兩個以上的觸發(fā)事件進行優(yōu)先級編碼,優(yōu)先級編碼器仲裁后將最高優(yōu)先級事件傳送給隊列,經(jīng)過隊列之后這個事件由通道映射提取參數(shù)RAM中的參數(shù)集,參數(shù)集里包含了EDMA3要傳輸?shù)臄?shù)據(jù)的各種數(shù)據(jù),例如,數(shù)據(jù)塊的大小、數(shù)據(jù)的源地址和目標(biāo)地址等。這些參數(shù)集傳輸給EDMA3傳輸控制器。7.2EDMA3控制器7.2.3EDMA3同步事件表7-1和表7-2是EDMA0和EDMA1的各種類型的同步事件,這些事件產(chǎn)生可以觸發(fā)EDMA3進行數(shù)據(jù)傳輸,EDMA0和EDMA1各有32個同步事件。通道控制器EDMA0的同步事件7.2EDMA3控制器7.2.3EDMA3同步事件通道控制器EDMA1的同步事件7.2EDMA3控制器7.2.4EDMA3的事件與通道的映射關(guān)系7.2.4.1.事件與通道的映射關(guān)系每個EMDA3控制器支32個同步事件,32個事每件與32個通道之間的映射關(guān)系是固定的一一對應(yīng)關(guān)系。事件與通道的映射關(guān)系7.2EDMA3控制器7.2.4EDMA3的事件與通道的映射關(guān)系7.2.4.2.DMA通道與PaRAM的映射關(guān)系event與DMAChannel一一對應(yīng),

DMA通道與PaRAM的映射也是一一對應(yīng)的。DMA通道與PaRAM的映射關(guān)系7.2EDMA3控制器7.2.4EDMA3的事件與通道的映射關(guān)系7.2.4.3.QDMA通道與PaRAM的映射關(guān)系QDMA通道不支持事件出發(fā),其觸發(fā)方式有兩種,即自動觸發(fā)和鏈接觸發(fā)。例如,將QDMA通道2映射到PaRAMSet3,這時,以SRC作為觸發(fā)字時,QCHMAP2[PAENTRY]=000000011QCHMAP2[TRWORD]=0017.2EDMA3控制器7.2.5事件隊列事件隊列是EMDA3CC的事件檢測邏輯和EDMA3CC的傳輸請求提交之間的接口。TMS320DM6437有兩個傳輸控制器,每個傳輸控制器有32個DMA通道和8個QDMA通道,當(dāng)配置多個通道進行數(shù)據(jù)傳輸時,如果多個通道同時被觸發(fā),而傳輸控制器是有限的,此時就不能完成數(shù)據(jù)傳輸。解決的辦法就是依靠事件隊列,通過對事件的仲裁設(shè)定優(yōu)先級,依據(jù)優(yōu)先級高低設(shè)置事件隊列,事件隊列依據(jù)優(yōu)先級向傳輸控制器提交傳輸請求。事件隊列與傳輸控制器7.3EDMA3數(shù)據(jù)傳輸7.3.1.EDMA3傳輸數(shù)據(jù)塊定義每一個EDMA3的傳輸數(shù)據(jù)都可看做是一個三維數(shù)據(jù),這個數(shù)據(jù)的大小由ACNT、BCNT和CCNT來描述。下圖是一個數(shù)據(jù)塊內(nèi)ACNT、BCNT和CCNT的定義。數(shù)據(jù)塊內(nèi)ACNT、BCNT和CCNT的定義7.3EDMA3數(shù)據(jù)傳輸7.3.2A-同步傳輸A-同步傳輸每次傳輸一個數(shù)據(jù)單元(array),當(dāng)一個數(shù)據(jù)單元傳輸完畢后根據(jù)B索引跳轉(zhuǎn)到下一個進行傳輸,直到一行傳輸完畢后根據(jù)C索引跳轉(zhuǎn)到下一行。B索引和C索引滿足:SRCBIDX=DSTBIDX=ACNTSRCCIDX=DSTCIDX=ACNT同步事件數(shù)=BCNT×CCNT7.3EDMA3數(shù)據(jù)傳輸7.3.3AB-同步傳輸在AB類同步傳輸中,每個EDMA3同步事件初始化二維數(shù)組或一個幀的傳輸。換句話說,每個事件或傳輸請求包攜帶BCNT個數(shù)列ACNT個字節(jié)的幀的所有信息。需要CCNT個事件服務(wù)以完成一個參數(shù)RAM集。

7.4參數(shù)RAM(PaRAM)7.4.1PaRAM集EDMA3控制器是基于RAM的結(jié)構(gòu),EDMA3CC中為DMA或者QDMA通道編程的傳輸內(nèi)容(源/目的地址,計數(shù),索引等)的RAM參數(shù)表被稱為PaRAM。PaRAM表被分解成多個參數(shù)RAM集。每個參數(shù)集包含8個4字節(jié)的參數(shù)RAM集條目,這些條目包含典型的DMA傳輸參數(shù),比如說源地址,目的地址,傳輸數(shù)量,索引,選項等。

7.4參數(shù)RAM(PaRAM)7.4.2參數(shù)RAM條目EDMA3通道控制器(EDMA3CC)的參數(shù)RAM條目。

7.4參數(shù)RAM(PaRAM)7.4.3傳輸示例例1塊傳輸示例使用EDMA3做最基本的傳輸是塊傳輸。在設(shè)備操作的時候,經(jīng)常需要從一個地方到另一個地方或者片內(nèi)和片外之間內(nèi)存?zhèn)鬏斠粋€塊數(shù)據(jù)。在這個例子中,從外部內(nèi)存到L2SRAM復(fù)制一段數(shù)據(jù)。4000,0000h地址開始的一個256K字節(jié)的數(shù)據(jù)需要傳輸?shù)絻?nèi)部地址11800000h(L2),

7.4參數(shù)RAM(PaRAM)7.4.3傳輸示例傳輸源地址被設(shè)置為外部內(nèi)存所傳數(shù)據(jù)塊的起始地址,目的地址被設(shè)置位L2中數(shù)據(jù)塊的起始地址。如數(shù)據(jù)塊小于64K字節(jié),那么參數(shù)RAM配置按照圖7-15,同步類型設(shè)置為A類同步傳輸及索引清零。如果傳輸數(shù)據(jù)量大于64K字節(jié),同步類型需要設(shè)置成AB類傳輸,BCNT和B-索引需要被設(shè)置成適當(dāng)值。OPT中STATIC位設(shè)置成先前的連接。(a)EDMA參數(shù)(b)通的選擇項參數(shù)(OPT)內(nèi)容7.5EDMA3的中斷EDMA3中斷源可以分為兩類:?傳輸完成中斷源?錯誤中斷源7.5EDMA3的中斷EDMA3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論