【正文】
2機器周期內(nèi), CPU從選中的程序存儲單元中,取出指 令代碼加載到程序總線 PB;從 PB上取指令字并裝入指令寄存器 IR。 ? 這 6級流水線結(jié)構(gòu)的功能如下: P ( 預(yù) 取 指 ) F ( 取 指 ) D ( 譯 碼 ) A ( 尋 址 ) R ( 讀 數(shù) ) X ( 執(zhí) 行 )將 P C 的 內(nèi) 容放 到 P A B將 取 得 的 指令 放 到 P B 上將 P B 中 的 指 令 代 碼放 到 I R 中 , 并 譯 碼將 第 一 操 作 數(shù) 的 地 址 放 到 D A B將 第 二 操 作 數(shù) 的 地 址 放 到 C A B更 新 輔 助 寄 存 器 和 堆 棧 指 針將 第 一 操 作 數(shù) 放 到 D B將 第 二 操 作 數(shù) 放 到 C B將 第 三 操 作 數(shù) 的 寫 地 址 放 到 E A B執(zhí) 行 指 令 , 將 需 要寫 的 內(nèi) 容 放 到 E B 上圖 2 流水線的 6個階段中的各個操作 3. 譯碼 D: 在 T3機器周期內(nèi),對指令寄存器 IR的內(nèi)容譯碼,確定所操 作的存儲器的類型、數(shù)據(jù)地址產(chǎn)生單元 DAGEN和 CPU的控制信號。 ? 這 6級流水線結(jié)構(gòu)的功能如下: P ( 預(yù) 取 指 ) F ( 取 指 ) D ( 譯 碼 ) A ( 尋 址 ) R ( 讀 數(shù) ) X ( 執(zhí) 行 )將 P C 的 內(nèi) 容放 到 P A B將 取 得 的 指令 放 到 P B 上將 P B 中 的 指 令 代 碼放 到 I R 中 , 并 譯 碼將 第 一 操 作 數(shù) 的 地 址 放 到 D A B將 第 二 操 作 數(shù) 的 地 址 放 到 C A B更 新 輔 助 寄 存 器 和 堆 棧 指 針將 第 一 操 作 數(shù) 放 到 D B將 第 二 操 作 數(shù) 放 到 C B將 第 三 操 作 數(shù) 的 寫 地 址 放 到 E A B執(zhí) 行 指 令 , 將 需 要寫 的 內(nèi) 容 放 到 E B 上圖 2 流水線的 6個階段中的各個操作 4. 尋址 A: 即尋址操作數(shù)。 ? 此過程是 2階段操作數(shù)讀順序的第一階段,給出的是讀的地址。如果是并行操作指令,則將數(shù)據(jù) 3的寫地址加載到 EAB上。 D、 A、 R完成了數(shù)據(jù)讀入。 ? 指令在本階段中被執(zhí)行。 ? 這 6級流水線結(jié)構(gòu)的功能如下: P ( 預(yù) 取 指 ) F ( 取 指 ) D ( 譯 碼 ) A ( 尋 址 ) R ( 讀 數(shù) ) X ( 執(zhí) 行 )將 P C 的 內(nèi) 容放 到 P A B將 取 得 的 指令 放 到 P B 上將 P B 中 的 指 令 代 碼放 到 I R 中 , 并 譯 碼將 第 一 操 作 數(shù) 的 地 址 放 到 D A B將 第 二 操 作 數(shù) 的 地 址 放 到 C A B更 新 輔 助 寄 存 器 和 堆 棧 指 針將 第 一 操 作 數(shù) 放 到 D B將 第 二 操 作 數(shù) 放 到 C B將 第 三 操 作 數(shù) 的 寫 地 址 放 到 E A B執(zhí) 行 指 令 , 將 需 要寫 的 內(nèi) 容 放 到 E B 上圖 2 流水線的 6個階段中的各個操作 如 CPU訪問 DARAM會發(fā)生時序沖突的情況: ① 同時從同一存儲塊中取指令和讀操作數(shù); ② 同時對同一存儲塊進行寫操作和讀第 2操作數(shù)。 由于 CPU資源有限, 當多于一個流水線上的指令同時訪問同一資 源時,可能產(chǎn)生時序(流水線)沖突。 流水線沖突: 第 3章 C54x DSP中斷系統(tǒng) ?中斷定義 ?中斷分類 ?中斷標志寄存器和中斷屏蔽寄存器 ?中斷響應(yīng)過程 ?重新映射中斷向量地址 中斷系統(tǒng)是 DSP應(yīng)用系統(tǒng)實現(xiàn)實時操作和多任務(wù)多進程操作的關(guān)鍵部分。 中斷: CPU正處理某件事情 (執(zhí)行程序 )時,外部發(fā)生了某一事件并向 CPU發(fā)信號請求去處理, CPU暫時中斷當前工作,轉(zhuǎn)去處理這一事件 (進入中斷服務(wù)程序 ),處理完再回來繼續(xù)原來的工作。 產(chǎn)生中斷的請求源稱為 中斷源 。 ? 硬件中斷 是由外圍設(shè)備信號產(chǎn)生的中斷,有兩種形式: ? 受外部中斷信號( A/D、 D/A及其他處理器)觸發(fā)的外部硬件中斷 ? 由片內(nèi)外設(shè)電路(定時器、串行口、 HPI等)引起的內(nèi)部硬件中斷 ? 軟件中斷 一般由程序指令( INTR、 TRAP、 RESET等)引起。 硬件中斷有優(yōu)先級 ,當多個硬件中斷同時觸發(fā)時, C54x按照它們的優(yōu)先級順序進行處理,優(yōu)先級較高的中斷會被先處理( 1表示最高優(yōu)先級 ) 。故通常對每個中斷類型設(shè)置一個中斷優(yōu)先級。 中斷號 ( K ) 優(yōu)先級 名稱 向量位置 功 能 0 1 RS / S I N T R 0 復(fù)位 ( 硬件和軟件復(fù)位 ) 1 2 NM I/ S I N T 1 6 4 非屏蔽中斷 2 — S I N T 1 7 8 軟件中斷 1 7 3 — S I N T 1 8 C 軟件中斷 1 8 4 — S I N T 1 9 10 軟件中斷 1 9 5 — S I N T 2 0 14 軟件中斷 2 0 6 — S I N T 2 1 18 軟件中斷 2 1 7 — S I N T 2 2 1C 軟件中斷 2 2 8 — S I N T 2 3 20 軟件中斷 2 3 9 — S I N T 2 4 24 軟件中斷 2 4 10 — S I N T 2 5 28 軟件中斷 2 5 11 — S I N T 2 6 2C 軟件中斷 2 6 12 — S I N T 2 7 30 軟件中斷 2 7 表 1 VC5402的 30個 中斷和 16個優(yōu)先級 13 — S I N T 28 34 軟件中斷 28 14 — S I N T 29 38 軟件中斷 29 15 — S I N T 30 3C 軟件中斷 30 16 3 0I N T/ S I N T 0 40 外部用戶中斷 0 17 4 1I N T/ S I N T 1 44 外部用戶中斷 1 18 5 2I N T/ S I N T 2 48 外部用戶中斷 2 19 6 T I N T 0/ S I N T 3 4C 定時器 0 中斷 20 7 B R I N T 0 / S I N T 4 50 M c B S P 0 接收中斷 21 8 B X I N T 0/ S I N T 5 57 M c B S P 0 發(fā)送中斷 22 9 D M A C 0 / S I N T 7 58 D M A 通道 0 中斷 23 10 T I N T 1/ D M A C 1/ S I N T 7 5C 定時器 1( 默認 ) / D M A 通道 1 中斷 24 11 3I N T/ S I N T 8 60 外部用戶中斷 3 25 12 H P I N T / S I N T 9 64 H P 1 中斷 26 13 B R I N T 1/ D M A C 2/ S I N T 10 68 M c B S P 1 接收中斷 / D M A 通道 2 中斷 27 14 B X I N T 1/ D M A C 3/ S I N T 1 1 6C M c B S P 1 發(fā)送中斷 / D M A 通道 3 中斷 28 15 D M A C 4/ S I N T 12 70 D M A 通道 4 中斷 29 16 D M A C 5 / S I N T 13 74 D M A 通道 5 中斷 120 ~ 127 — 保留 78 ~ 7F 保留 表 1 VC5402中斷和優(yōu)先級(續(xù)) ? C54x 的中斷分兩類:可屏蔽中斷和不可屏蔽中斷 ? 可屏蔽中斷:可通過軟件設(shè)置來屏蔽或使能 。 ? 當 INTM=0時, IMR中某位為 1,則開放相應(yīng)中斷 。 ? 有的處理器只用了其中的一部分,如 VC5402只有 13個可屏蔽中斷 。 2. C54x中斷分類 INT3~INT0(外部中斷) BRINT0/ BXINT0/1(串行口中斷) TINT0、 TINT1(定時器中斷) DMAC DMAC5( DMA中斷) HPINT( HPI中斷) ? C54x 的中斷可分兩類:可屏蔽中斷和不可屏蔽中斷 VC5402的 13個硬件可屏蔽中斷: ? 非屏蔽中斷 :這些中斷是不能夠屏蔽的。 ? 包括所有的軟件中斷和兩個外部硬件中斷 RS(復(fù)位) 和 NMI(非屏蔽 中斷),可通過硬件控制也可通過軟件控制。 ? NMI中斷不會對 C54x的任何操作方式產(chǎn)生影響。一般,它被分給時間關(guān)鍵的中斷資源。 都是存儲器映射的 CPU寄存器。 2. 中斷屏蔽寄存器 IMR主要用 來使能或禁用除 RS和 NMI外的 硬件中斷。 ? C54x的中斷控制主要是屏蔽某些中斷,避免其他中斷對當前運行 程序的干擾,以及防止同級中斷之間的響應(yīng)競爭。 ? 如果請求的中斷是可屏蔽中斷,則不管該中斷是否被處理器應(yīng)答, IFR寄存器中相應(yīng)的中斷標志位都被置 1。 ( 1) 硬件中斷請求 ? 外部硬件中斷,由外部中斷口的信號發(fā)出請求; ? 內(nèi)部硬件中斷,由片內(nèi)外設(shè)的信號發(fā)出中斷請求。 ? 對于可屏蔽中斷,要滿足三個條件才能被 CPU響應(yīng) : INTM位為 0 ,即全局中斷開放 2. 中斷響應(yīng) 當中斷響應(yīng)后, CPU會進行如下操作: (1)保存現(xiàn)場 ,將程序計數(shù)器 PC的值 壓 入堆 棧 。 (2) 將中斷向量的地址加載到 PC (3) 從中斷向量所指向的地址開始 取指 (4) 執(zhí)行分支轉(zhuǎn)移指令, 進入用戶自定義的中斷服務(wù)程序 (5) 執(zhí)行 ISR直到出現(xiàn)返回指令 (6) 從堆棧中 彈出返回地址 到 PC中 (7) 繼續(xù)執(zhí)行主程序 。 ? 復(fù)位時, IPTR所有的位被置 1( IPTR=1FFH),并按此值將復(fù)位向 量映射到程序存儲器。 加載除 1FFH之外的值到 IPTR后,中斷向量可以映射到其他地址。 圖 2 中斷向量地址的產(chǎn)生 示例 I P T R = 0 0 0 0 0 0 0 0 10 0 0 01 5 1 4 1 3 1 20 0 0 01 1 1 0 9 81 0 016 5 470 0 0 03 2 1 0I N T = 4 0 H ( I N T 0 )矢 量位地 址 0 0 C 0例: INT0的中斷向量號 K為 16 第 4章 C54x DSP的軟件體系 ? 匯編語言源程序的格式 ? 匯編指令 ? 尋址方式 ? 公共目標文件格式 ? 匯編語言程序設(shè)計 ? CCS開發(fā)調(diào)試工具 ? 助記符指令語法格式 [label][:] mnemonic [operand list] [。 所有語句必須以標號、空格、 *或 ;開頭。 助記符指令語法格式: [標號區(qū) ][: ] 助記符 [操作數(shù) ] [;注釋區(qū) ] SYM1 .set 2 。將 2裝入 AR1 .word 016H 。返回 代數(shù)指令語法格式: [標號區(qū) ][: ] 指令 [;注釋區(qū) ] SYM1 .set 2 。將 2裝入 AR1 .word 016H 。按功能 分為如下幾類 : 二、匯編指令 表 42 指令系統(tǒng)中的 符號和縮寫 表 431 加法指令 算術(shù)運算指令 表 432 減法指令 算術(shù)運算指令 算術(shù)運算指令 表 433 減法指令(續(xù)) 表 434 乘法指令 算術(shù)運算指令 表 435 乘加和乘減指令 算術(shù)運算指令 算術(shù)運算指令 表 435 乘加和乘減指令(續(xù)) 表 436 雙精度( 32位操作數(shù))指令 算術(shù)運算指令 表 437 專用指令 算術(shù)運算指令 表 441 與邏輯運算指令 邏輯運算指令 表 442 或邏輯運算指令 邏輯運算指令