• 沒有找到結果。

多級向量量化單元(Multi-stage Vector Quantization)

第二章 智慧型 DMA 控制器介紹

2.3 智慧型 DMA 控制器架構

2.3.6 多級向量量化單元(Multi-stage Vector Quantization)

圖 2-9:ALU 單元

2.3.6 多級向量量化單元(Multi-stage Vector Quantization)

智慧型 DMA 配合內建的 ALU,設計了兩種種資料路徑:分別為多級向量量化 路徑與蝴蝶運算路徑。多級向量量化單元(Multi-stage Vector Quantization) 可以針對各種影像與語音壓縮編碼進行處理,並可由使用者設定參數,適合各種

Barrel SHIFTER

4-STAGE DIV

MAC

Multiplier

ALU

DMA ALU

WMSE Path

Butterfly Path

32-bit Multiplier Complex Multiplier

量化要求的向量量化編碼。

多級向量量化單元的核心為一個四級的運算管線,實現權重失真量測 (Weighted Distortion Measure)的運算,運算中使用到 ALU 裡的兩顆 16×16 bits 的有號數(Signed)快速乘法器,實現乘上權重(Weight)與平方(Square)的運算,

最後由一 40-bit 的累加器,計算失真結果。單元內的其他功能方塊為暫存器組 (Register Bank)、比較器(Comparator)、數值表單元(Write Table)、最佳 M_Path 輸出單元(Select M_Path),與流程控制單元(Address Generator Unit)。流程 控制單元與數值表單元分別與外部記憶體(編碼簿)以及內部記憶體(數值表)作 溝通。當運算結束後發中斷給處理器取值。圖 2-10 為多級向量量化運算管線與 ALU 使用情形。

圖 2-10:運算管線與 ALU 使用情形 2.3.7 蝴蝶運算單元(Butterfly Unit)

另ㄧ個智慧型 DMA 的資料運算路徑為蝴蝶運算單元(Butterfly Unit)。蝴 蝶運算單元可取代快速複立葉轉換(Fast Fourier Theorem)中,規律且繁複的蝴 蝶運算,有效的對許多常用到快速複立葉轉換的多媒體運算作加速。

蝴蝶運算單元的核心是複數乘法,利用 ALU 裡的兩顆乘法器可以在兩個指 ALU

Fetch Weight Square Acc

16x16 Multiplier X 2 External

Ram

(Codebook)

RamA

(Table)

MSVQ 運算管線

的 Scaling 位移量,有效的處理資料範圍的問題。蝴蝶運算單元的輸入由兩顆內 部記憶體傳輸,內部記憶體 A 為輸入的資料,內部記憶體 B 為暫存正弦與餘弦函 數的係數,當運算完後將結果存回記憶體 A 準備給下ㄧ級做運算,並發中斷給處 理器。圖 2-11 為蝴蝶運算單元與周邊的溝通。

圖 2-11:蝴蝶運算單元與周邊的溝通 2.3.8 記憶體選擇器(Memory Mux)

智慧型 DMA 直接支援兩個 2KB(512×32-bit)的單埠高速同步記憶體,速度 可達 500MHz,每個記憶體包含 9 位元位址線,32 位元資料輸入/輸出線及讀寫控 制線,記憶體介面與內部記憶體資料傳輸連接方式如圖 2-12,記憶體讀取/寫入 使用相同的記憶體介面。記憶體多工器由控制暫存器的設定,觸發工作的模式;

當控制暫存器設定為通道致能時,智慧型 DMA 操作在傳輸模式或是雙通道運算,

記憶體掌控權交付給通道控制器;當控制暫存器設定通道除能時,智慧型 DMA 操作在運算模式,記憶體直接由算術運算邏輯或 IP 來溝通,如圖 2-12 所示。

ALU

SHIFTER

Multiplier Multiplier

Butterfly Unit

RamA 輸入資料

RamB 暫 存 Sine 與 Cosine 係數

圖 2-12:透過記憶體選擇器的資料傳輸

通道控制器可透過暫存器的設定(見 2.2 節)選擇要存取的記憶體。因此,

記憶體介面必須符合圖 2-13(a)(b)的存取時序。

圖 2-13(a):記憶體讀取時序圖 Channel Controller 0

Channel Controller 1

Peripheral Bus Peripheral

Bus

Data Bus Data

Bus

Memory Interface

Ram A

Ram B

ALU IPs

Memory Mux

圖 2-13(b):記憶體寫出時序圖

2.3.9 周邊匯流排(APB - Advanced Peripheral Bus)

APB 匯流排為 ARM 的 AMBA(Advanced Microcontroller Bus Architecture)

[17]架構下的一部分,其受控端介面訊號如圖 2-14 所示,並有簡單易用、省功 率的好處,主要應用在資料量不大,低頻寬的周邊裝置。內建一組音源介面 IC Sound Bus(I2S)、與外部記憶體介面,最高支援八組周邊裝置,可擴充符合 APB 介面的周邊 IP,延伸處理器的應用範圍。

圖 2-14:APB 匯流排受控端介面

APB 匯流排時序如圖 2-15,一筆資料傳輸需要二個時脈周期,通道控制器直 接支援 APB 匯流排介面的訊號。

圖 2-15(a):APB 匯流排寫入時序圖 圖 2-15(b):APB 匯流排讀取時序圖

2.4 智慧型 DMA 控制暫存器

為了發揮智慧型 DMA 最大的效能,使用者必須設定其控制暫存器以達成傳輸 或運算功能,以下分別說明控制暫存器群組內各暫存器的功能與設定方式。

2.4.1 來源暫存器(Source Register)

來源暫存器內部為 32-bit,對外為兩組 16-bit 可讀寫的暫存器。只要設定 來源暫存器後,其值會被保留,但來源位址會隨著實際的讀取位址而改變。來源 暫存器中高 16 位元用做特殊定址,低 16 位元用做資料定址,如表 2-2,

表 2-2:來源暫存器(Source Register)

Bits High Source Register 15 Source Circular 0:circular / 1:mirror 14:7 Source Base 遞增(或遞減)位址數 6:0 Source Offset 區塊起始位置

Bits Low Source Register

15 Source Device 來源裝置 0:Ram A / 1:Ram B 14:0 Source Address 來源位址

2.4.2 目的暫存器(Destination Register)

設定功能與來源暫存器相同,目的暫存器用在寫出的目標上。目的暫存器經 過設定,會保持設定過的值,但目的位址會隨著實際的寫出位址而改變。暫存器 位元排列如表 2-3 所示。

表 2-3:目的暫存器(Destination Register)

Bits High Destination Register

15 Destination Circular 0:circular / 1:mirror 14:7 Destination Base 遞增(或遞減)位址數 6:0 Destination Offset 區塊起始位置

Bits Low Destination Register

15 Destination Device 目的裝置 0:Ram A / 1:Ram B 14:0 Destination Address 目的位址

2.4.3 控制暫存器(Control Register)

控制暫存器對外為兩組 16-bit 可讀寫的暫存器,只要設定控制暫存器,其 值會被保留,但傳輸資料數會隨著實際的寫出數目而減小。控制暫存器的高 16 位元部分為來源/目的區塊大小,低 16 位元為 DMA 控制,如表 2-4。

表 2-4:控制暫存器(Control Register)

Bits Source/Destination Region Register 15:8 Source Region 來源區塊大小

7:0 Destination Region 目的區塊大小 Bits Control Register 15 Source Increase 來源位址遞增 14 Source Decrease 來源位址遞減 13 Destination Increase 目的位址遞增 12 Destination Decrease 目的位址遞減

11 Source Width 來源寬度(Reserved) Default =32 bit 10 Destination Width 目的寬度(Reserved) Default =32 bit 9:0 Transfer Size 傳輸資料數

2.4.4 配置暫存器(Configuration Register)

配置暫存器對外為一組 16-bit 可讀寫的暫存器,只要設定配置暫存器,其 值會被保留,但累加器清除(High-Active)會在設定後一個時脈周期改變成 Low;通道致能後,會在傳輸結束後,自動關閉。如表 2-5,其中 Function 為設 定智慧型 DMA 的運算功能,設定如下:

„ 001:MAC: 雙通道乘加模式。

„ 010:Shifter:柱狀位移模式。

„ 011:DIV:多級除法器模式。

„ 100:FFT:蝴蝶運算單元模式。

„ 101:32-bit Multiplier:32 位元乘法模式。

„ 110:MSVQ:多級向量量化單元模式

表 2-5:配置暫存器(Configuration Register)

Bits Configuration Register

15 Halt 暫停

14 Interrupt Enable 中斷致能

13:11 Source Peripheral 來源周邊(記憶體傳輸模式時無效)

10:8 Destination Peripheral 目的周邊(記憶體傳輸模式時無效)

7:6 Transfer Type 傳輸模式 5 Sequence Transfer 連續傳輸 4:2 Function 特殊功能

1 ACC Clear 累加器清除

0 Channel Enable 通道致能

2.4.5 狀態暫存器(Status Register)

狀態暫存器對外為一組 16-bit 僅能讀取的暫存器,包含兩個通道的資訊,

高位元為通道 1,低位元為通道 0。如表 2-6。

表 2-6:狀態暫存器(Status Register)

Bits Status Register [15:8] Channel 1 / [7:0] for Channel 0 7 Interrupt 中斷

6 FIFO Full DMA FIFO 資料狀態已滿 5 FIFO Empty DMA FIFO 內無資料

4 FIFO Half DMA FIFO 資料狀態已達半數 3 Channel Select Channel 被選擇在工作模式 2:0 Error 錯誤狀態(累加器溢位發生)

2.4.6 輸出暫存器(Output Register)

智慧型 DMA 裡的 IP 如 MSVQ 單元以及 ALU 單元裡計算後的輸出,都存放在 輸出暫存器中;當進行雙通道的乘加運算時,輸出暫存器為一組 32-bit 可讀寫 累加器,僅能以 16-bit 寫入,以 32-bit 有號數讀出,內部為 40-bit 的暫存器。

如表 2-7 所示。

表 2-7:輸出暫存器(Output Register)

31:0 DSPRegOut SDMA 輸出

2.4.6 功能暫存器(Function Register)

功能暫存器對外為四組 16-bit 寫入的暫存器,負責設定智慧型 DMA 裡的運 算功能:當智慧型 DMA 進行 ALU 單元的運算時,功能暫存器為運算的輸入數值;

當智慧型 DMA 進行 MSVQ 單元運算時,功能暫存器為設定參數的輸入資訊;當智 慧型 DMA 進行 Butterfly 單元運算時,功能暫存器為記憶體的輸入位址,以及位 移量的設定。如表 2-8 所示。

表 2-8:功能暫存器(Function Register)

Bits Function Register 15:0 DSPIn1

15:0 DSPIn2 15:0 IPIn1 15:0 IPIn2

2.4.7 智慧型 DMA 使用流程

ALU IPs

IPIn2 IPIn1 DSPIn2 DSPIn1

DSPReg Out

器及功能暫存器設定後,配置暫存器必須最後一步設定,用以將通道致能。此時 可去處理其他工作,待中斷發生後,智慧型 DMA 處理的工作跟著結束。在設定暫 存器後,其值多會被保留下來,因此,若每次設定僅需選擇有改變的暫存器設定 即可。

Start

Setting Register

Source Register Destination Register

Control Register

Channel Enable

Configuration Register

Interrupt Occurred?

End

YES

NO

Do other thing

Interrupt Occurred

Finish the Job Start

Setting Register

Source Register Destination Register

Control Register

Channel Enable

Configuration Register

Interrupt Occurred?

End

YES

NO

Do other thing

Interrupt Occurred

Finish the Job

圖 2-16:智慧型 DMA 的使用流程

第三章 智慧型 DMA 運算控制器設計

本章介紹智慧型 DMA 與其他 DMA 相異的特色,利用內部的算術運算邏輯單元 (ALU),搭配各種傳輸定址模式與資料路徑,達到具有數位訊號處理(DSP)的效 能。以下將介紹智慧型 DMA 的特殊運算功能,包括多級向量量化資料路徑設計及 蝴蝶運算資料路徑設計。

3.1 多級向量量化器設計

本節介紹多級向量量化的設計,包含多級向量量化理論、M-L 搜尋法及設計 架構及硬體使用方法。

3.1.1 原理

多級向量量化器(Multistage Vector Quantization)在 1982 年由 Juang 與 Gray 提出[18]。每個向量 x 先由一個粗略的向量量化器量化xˆ1=Q x[ ],量化的 誤差即為e1= − 。接著量化的誤差 ex xˆ1 1由另ㄧ個向量量化器量化eˆ1=Q e[ ]1 ,重 複上述的過程。根據使用幾級的向量量化器,每一級皆產生出一個編碼簿的索引 值,這些索引值即為量化後的結果。在解碼端,解碼器利用這些索引值,在碼簿 中找出相對應的向量,即可得到重建後的訊號。圖 3-1 表示 3 級向量量化的編解 碼過程。

圖 3-1:三級向量量化器(I 定義為第i I 個量化器 index)[18]

M-L 搜 尋 法 多 級 向 量 量 化 器 , 也 稱 為 樹 狀 搜 尋 多 級 向 量 量 化 器 (tree-searched multistage vector quantiser),在 1993 由 LeBlanc 提出[19]。

相較於傳統循序的收尋,他使用更佳的搜尋演算法。在 MSVQ 的第一級量化器,

Vector Quantiser 1

Vector Quantiser 1

Vector Quantiser 1

Decoder 1 Decoder 1 Decoder 1 Overall Distort 1

Pre_stage_error

Find overall minimum

Select the path

Choose the last stage min.

error

END of m loop Compute difference vector

The next stage input

Compute min_d , min_i

Find the min. D[r] and recode the min. index r

Compute other_stage_error D[r]= [ ]2

Compute difference vector

Subtract the M candidate code vector and original input for being the next stage input

Compute first_stage_M_best

Find the first M min. error

Compute first_stage_error D[r]= [ ]2

END of stages loop

END

3.1.2 設計架構 迴圈實現加權均方誤差(WMSE);Level 迴圈循序抓取編碼簿的碼向量進行運算;

Stage 迴圈抓取下ㄧ級的編碼簿;Path 迴圈進行 M-L 搜尋的實現。比較器選擇 External

RAM

(Codebook)

Square

Address generator

ACCUMULATOR COMPARATOR

Write Quantization

Weight

Select M_PATH

WMSE Pipeline

M_Path Multi-stage Channel Controller

Control signal

PreFetch

APB Bus

# Level M Order Input Buffer Diff Buffer Weight Buffer 控制/輸入暫存器

WMSE 最小者,將誤差存到記憶體中,當成下ㄧ級的輸入。數值表單元負責暫存 資料。各暫存器的內容如表 3-1 所示,Next_Stage Buffer 用在多級編碼簿的情 形,代表下一級的輸入;Weight Buffer 則用在加權失真量測上(weighted mean squared error),若系統為 MSE(mean squared error),則 Weight Buffer 預設 值為 1。

表 3-1:控制輸入暫存器 控制參數

Control Register 使用者自定 Order 數、Level 數、M Path 數 輸入暫存器

Input Buffer 向量量化係數

Next_Stage Buffer 下一級的向量量化係數 Weight Buffer 權重係數

3.1.4 流程控制單元(Address Generator Unit)

流程控制單元為一個位址產生器(Address Generator),負責控制系統的各

流程控制單元為一個位址產生器(Address Generator),負責控制系統的各

相關文件