5. 各子計畫執行進度與方式
5.4 子計畫四、數位電視解碼器之數位信號處理及系統控制
A. 向量中斷控制器(Vectored Interrupt Controller):
[1] 功能敘述
向量中斷控制器(Vectored Interrupt Controller,簡稱 VIC) 為一個相容於 AMBA(Advanced Microprocessor Bus Architecture)匯流排標準的中斷控制器,此 VIC 與傳統中斷控制器最大的不同點在於 VIC 能快速提供正確的中斷向量 (interrupt vector)給 CPU 以節省掉許多辨識中斷源與查表的動作。
在ARM 的系統中,外部中斷的型態被分為兩種,一種為傳統型式的
IRQ(Interrupt Request),另外一種為具有較低 interrupt latency 的 FIQ(Fast Interrupt Request)。本 VIC 最多可以直接控制 32 個中斷源,每一個中斷源都可以自由設
定其是屬於IRQ 型態或是 FIQ 型態。這 32 個中斷源中,最多可以有 16 個 IRQ 型態的中斷源被設定為向量化的中斷(vectored interrupt)。若系統中的中斷源大於 32 個,此 VIC 也提供了 daisy chain 介面供多個 VIC 串接以擴充中斷源的數目。
在中斷優先權(interrupt priority)的設計方面,FIQ interrupt 具有最高優先權,
vectored IRQ 第二,non-vectored IRQ 第三,若有串接另一顆 VIC,則 daisy chained vectored interrupt 佔第四優先權,優先權最低的為 daisy chained non-vectored interrupt。圖 4.29 為本 VIC 的 block diagram。
Programmable interrupt
detector
Non-vectored interrupt logic
Vectored interrupt 0
IRQ vector address and priority logic Vectored interrupt 1
……
Vectored interrupt 15 IRQ0
Daisy Chain Logic
AHB slave interface VICINTSOURCE
圖4.29: Vector Interrupt Controller block diagram [2]可參數化之資訊
I. 向量化中斷源之指派
使用者可以自行決定在32 個中斷源輸入中那些中斷源要被規劃成向量化中 斷(vectored interrupt),最多可以指派 16 個 IRQ 型態的中斷源。
II. 向量位址之設定
使用者可以為vectored IRQ 型態的中斷源設定其對應的向量位址(vector address),對於 non-vectored IRQ 的中斷源也能夠指派一個預設的向量位址(default
vector address)。
BothEdge
對於edge triggered 的中斷源,設定其為單緣觸發或雙緣觸發 0 = single edge, 1 = both edgeEventReg
選擇觸發準位或觸發緣0 = low level sensitive or falling edge triggered 1 = high level sensitive or rising edge triggered
表4.10: 三個暫存器之設定 [3] IP 設計、驗證及測試環境
I. Functional behavior model
我們提供了一個加密過的 VIC behavioral model 給使用者,此 behavioral model 模擬出本 VIC 的完整功能,我們除了可以利用此 model 來驗證 RTL VIC 之外,使用者也可以利用此 behavioral model 作快速的功能模擬。由於其 加密的特性,IP provider 可以在實際賣出此 IP 之前先讓使用者試用此 IP,例 如在開發一個 SOC 系統時,使用者可以先取得這個 model 來作整合模擬,不 一定要使用真正的 RTL VIC。
II. Full function model
為了讓使用者能進一步的模擬整個 SOC 系統的運作,我們還提供了一個完 整的 AMBA simulation model,這個 model 中包含了一顆相容於 ARM7 的 32-bit 微處理器、memory、AHB decoder、AHB arbiter、AHB/APB bridge、UART、
Keypad interface、LED interface、LCD controller 等元件。使用者透過本 model 可 以快速的模擬整個 AMBA 系統的運作,加快整體開發時程。
III. Macro functional verification
最基本的驗證策略,我們針對 VIC 電路各種運作情況去思考設計各種 test
pattern,並且直接將這些 test pattern 輸入至電路中以觀察其行為是否正確。所 謂的行為正確可以分成四個方面來討論,第一是電路內部暫存器的變化是否正確 (programmer’s model),第二是電路外部輸出入接腳的變化是否正確 (bus
model),第三是中斷優先權邏輯 (interrupt priority logic) 是否正確,第四是 interrupt latency 是否一致。除了上述的功能驗證之外,驗證的 code coverage 達 到 100% 也是我們最基本的要求,我們共使用了兩套軟體來幫我們量測 code coverage,一套是 ModelSim,另外一套是 Verification Navigator,目前兩套軟體 所量測出的 code coverage 皆已達到 100%。
IV. Real application verification
透過我們所提供的AMBA simulation model,我們可以進一步的來驗證 VIC IP 在一個 AMBA 系統中的運作情況。對於系統中每一個週邊設備撰寫其驅動程 式,並讓CPU 實際執行一些 real application,使用者可以視應用需求自行增減 AMBA 中的元件,在軟體與硬體協同驗證的情形之下,讓 VIC 的驗證工作更能 符合真實系統的運作情況,在這種系統驗證方法中,我們關注的焦點不再是VIC 單獨的行為,而是整個系統的正確運作。
[4] Application example
我們所提供給使用者的AMBA model 可以快速的發展出一個簡單的
platform,在這個 platform 中我們已經介接了幾個基本的週邊介面,如圖 4.30 所 示。圖中黃色的部份即是我們所提供的AMBA model,在 AHB 上的元件有 processor、memory、memory controller、arbiter、decoder、bridge 以及我們的 VIC IP,而其他週邊設備皆掛於 APB 中。此 model 除了在 RT-level 已經實際執行過 許多real application 之外,也已經完成 FPGA 的驗證
ARM7TM like
Arbiter
&
Decoder
BIU Memory Controller
Circuit DIP
Switch
Adjust System Clock Frequency
System Clock resetn nIRQ nFIQ
Peripheral Interrupt Requests Interrupt Request
(to ARM7TM)
B. AC-3 decoder [1] 實作平台
採用由Altera 公司生產的發展平台,Excalbur ARM,來實現 AC3 音訊解碼 的軟硬體共同設計,它提供我們ARM 9 微處理器與 Altera FPGA 等以供驗証,
總共可以分成三大部分,系統整合平台、核心模組(Core module)和邏輯模組 (LogicModule)等。
利用Altera Excalibur ARM 發展平台來實現驗証 AC-3 播放系統,首先我們 將MP3 播放系統依其時間複雜度與計算複雜度規化成軟體與硬體兩部份。軟體 部分我們利用ARM 編譯器編譯(ADS,ARM Developer Suite)成*.asm 檔後,利 用Altera ByteMaster 寫入核心模組的 PROM 中;而硬體則使用 Verilog 硬體描 述語言撰寫,經由Quartus II 合成產生*.pof 檔,再利用 Altera ByteMaster 燒入邏 輯模組的FPGA。最後,利用此系統來對*.ac3 檔解壓縮以達最後的証驗工作。
Quartus II 軟硬體設計流程如圖 4.31。
C Language Verilog-HDL
ARM assembly compiler
(ADS)
Altera FPGA compiler (QuartusII)
Altera ByteMaster connector Altera ByteMaster connector
Core Module
(Software) ARM Logic Module
Bus Interface
Finish
*.c
*.asm
*.v
*.pof
Altera Excalbur ARM
圖4.31: Quartus II 軟硬體設計流程 [2] AC-3 decoder
I. Embedded Stripe Bridge Architecture
在Altera Excalbur ARM 系列中採用了一種嵌入式的匯流排架構(Embedded Stripe Bus Architecture),圖 4.32 是一個簡單的架構示意圖。其中嵌入的處理器 (ARM)是 AHB1 最主要的一個 master 設備,且可以快速的存取在 AHB1 上的任 何一個slave。若處理器想要對 AHB2 的 slave 做控制,可透過 AHB1-2 橋接器,
再藉著Stripe to PLD 橋接器及可和 PLD 上的 slave 作溝通。通常 AHB1 較 AHB2 速度快兩倍。
圖4.32: Excalibur ARM 嵌入式匯流排架構 II. AHB
AHB 是一種針對高效率,高頻寬及快速系統模組所設計的匯流排,用來連 接微處理器、記憶體、以及PLD 上的硬體模組等等。
AHB 匯流排具有幾個特性:
1. 支援 master 發出連續筆資料(BURST)的傳輸。
2. 支援分離式(SPLIT) 的資料傳送。
3. master 在一個週期完成工作移交。
4. 只在時脈週期的正緣觸發作資料傳遞。
5. 不使用三態電路。
6. 支援 64 及 128 位元組的資料傳輸。
AHB 匯流排上的元件均為同步電路,包含 AHB master、AHB slave、arbiter 以及AMBA decoder。其中 master 主要負責提供位址和控制訊號去啟動一個讀或 寫的資料傳送。slave 會依 master 發出的讀寫要求來進行資料的傳送,並作出如 成功、失敗或資料傳遞中的訊號回應。arbiter 負責在眾多 master 同時發出資料傳 送要求訊號時,保證只有一個master 可以啟動資料的傳輸,雖然說這個 arbiter 的介面協定是固定的,但仲裁的演算法可以依不同應用而有不同仲裁的實現方 法。AMBA decoder 負責從資料傳遞的位址中解碼出一致能訊號來選擇一個可進 行資料傳送的slave。
III. 硬體方面需作之調整
為把前面提到的AHB 電路加入作者所設計的 AHB slave 部分,內容包括一 個AHB slave state machine,一個 reg-file,以及我們所提出的 IMDCT 電路。
Excalibur 中的 Stripe-to-PLD bridge 和 AHB slave state machine 這兩個部分負責 master 和 slave 間的溝通,是一種固定的架構,可使用 Quartus II 軟體所提供的 LPM MEGAFUNCTION 直接使用所以不必作修改。重點是介於 IMDCT 和 slave state machine 之間的 reg-file 電路設計。Reg-file 主要依照從 slave state machine 送出的write 訊號來動作。
1. 當 write=1 時:Reg-file 電路負責將 slave state machine 從 master 接收到 的資料一筆一筆的依照HADDRESS 來寫入到 IMDCT 內建的 RAM(data
Reg File
Write data
Read data
address
machine operand Stripe
AHB Slave
write
Send data to PLD
Receive data from PLD Signal = *FINISH;
Signal==1?
Send data to ARM Receive data from
ARM
Computation IMDCT
Generate computation finish signal ASK
Response yes
no
SOFTWARE HARDWARE
圖4.34: 軟硬體溝通介面
純軟體 Co-design 人便提出使用帶拒濾波器 (notch filter) 和帶通濾波器 (band-pass filter) 的方 法,其原理為用帶拒濾波器取出亮度訊號和用帶通濾波器取出色差訊號。帶拒濾