VGA Controller Interface 是介於 SOPC Nios Stratix 發展電路板和 Lancelot VGA controller 的溝通橋樑。圖 3.16 為 VGA Controller Interface 之架構圖。
圖 3.16 VGA Controller Interface 之架構
VGA controller interface 的訊號主要分兩部分,一部分用來控制 Lancelot VGA controller,例如:HSYNC、VSYNC、SYNC、blank、R (Red)、 G (Green)、
B (Blue)。另一部分用來和 Avalon 匯流排溝通,例如:CLK、endofpacket、
readyfordata、writedata、write、chipselect、address。VGA controller interface
的功能類似 camera controller。它們皆要和 Avalon 匯流排溝通,同時傳送
HSYNC 及 VSYNC 訊號至週邊。然而,VGA controller interface 傳送影像至
週邊。camera controller 從週邊接收影像。
MHz,在 FIFO 的寫入比 FIFO 的讀取快情況下,VGA controller interface 必
須有溝通協調使其同步的能力。詳細的 VGA controller interface 腳位說明見 附錄 C。
3.4.1 VGA controller interface 功能描述
(1) VGA_CU:VGA_CU 為”VGA Control Unit”之縮寫。VGA_CU 主要工作在於和 Avalon
匯流排溝通協調。當 FIFO 滿時,VGA_CU 利用 readyfordata 告知 Nios 系統
Avalon 匯流排目前的情況,並且 DMA 停止傳送資料。當 VGA controller
interface 完成傳送一張影像(640×480),VGA_CU 利用 endofpacket 訊號通知
Nios 系統結束 Avalon 匯流排資料傳輸。
(2) FIFO:
FIFO 是資料緩衝器。由於資料輸入和資料輸出速度不同,因此需要 FIFO
使 SOPC Nios Stratix 系統和 VGA controller 同步。此 FIFO 為 Altera 的
dual-clock FIFO megafunction,利用 Altera FPGA 之 dual-port 記憶體架構提
供各自獨立的資料讀取與寫入之時脈。此 FIFO 之容量大小為 1024-byte。當
FIFO 從 SDRAM 接收 1000 個像素(1000 bytes)時,我們認為 FIFO 已滿,並
且設定 readyfordata 為低電位,停止 Avalon 匯流排資料傳送。
(3) VGA timing:
VGA timing 電路控制 HSYNC 及 VSYNC 訊號。此電路也使用 look-up table
將 8-bit 像素值轉換成 8-bit R、G 及 B 值。在 VGA controller interface 中,此
look-up table 為調色盤(palette)。
(4) Palette:
此調色盤的顏色為灰階色。VGA timing 電路使用此調色盤將 8-bit 像素值
轉換成 8-bit R、G 及 B 值。此 8-bit R、G 及 B 值皆相同。
3.4.2 VGA controller 與 Nios 系統之 DMA 傳輸
儲存在 SDRAM 中的影像資料龐大,因此我們利用 DMA 將影像從 SDRAM
傳送到 Lancelot VGA controller。圖 3.17 為 VGA controller 與 Nios 系統之
DMA 傳輸。
DMA 為一主週邊(master peripheral)。DMA 首先從 SDRAM 讀取資料,然
後寫入資料至 VGA controller interface。在 DMA 架構中有 master port,例如:
read 及 write。master port 可以主動初始 Avalon 匯流排的傳輸。VGA controller
為只擁有 slave port 的從週邊(slave peripheral),slave port 為週邊上數個 port 之集合,只能被動接受 Avalon 匯流排之訊號。
圖 3.17 VGA controller 與 Nios 系統之 DMA 傳輸
當 DMA 想要寫入資料至 VGA controller interface 時,Nios CPU 對 address 作解碼。address 及 write 變有意義時,DMA 直接從 SDRAM 傳送資料至 VGA
controller interface。當 FIFO 滿了,readyfordata 訊號會設為低電位,停止資
料的寫入,當 FIFO 清空後,readyfordata 訊號會設為高電位,繼續作資料的 寫入。當 DMA 透過 Avalon 匯流排完成一張影像的傳輸後,endofpacket 會 被設為高電位,結束資料傳輸。圖 3.18 為 VGA controller interface 資料串流 時脈描述。
圖 3.18 VGA controller interface 資料串流時脈描述
(A) 第一個匯流排 cycle 在 clk 的上緣觸發。
(B) address、write、writedata 訊號有意義。
(C) Avalon 匯流排模組對 address 進行解碼,然後將 chipselect 設為高電位。
(D) VGA controller interface 在 clk 上緣觸發時從 Avalon 匯流排擷取資料。
(E-F) chipselect 及 write 在每個匯流排 cycle 持續高電位,Avalon 匯流排輸出
有意義的 writedata。VGA controller interface 必須在下個 clk 上緣觸發時 擷取資料。
(G) 當 FIFO 滿時,VGA controller interface 將 readyfordata 設為低電位,強
迫 Avalon 匯流排延緩資料串流的寫入。需注意的是 write 及 chipselect
待傳送的結束。接著 write 及 chipselect 被設為低電位,address 及 writedata 為無意義之值。
(H) FIFO 清空後,VGA controller interface 再度將 readyfordata 設為高電位。
(I) 由於 readyfordata 為高電位,Avalon 匯流排將 write 及 chipselect 設為高
電位,address 及 writedata 變成有意義。
(J-K) VGA controller interface 在 clk 上緣觸發時擷取 writedata。chipselect 及
write 在每個匯流排 cycle 持續高電位,Avalon 匯流排輸出有意義的
writedata。
(L) 當要結束一張影像的傳送時,VGA controller interface 在最後一個 clk 上
緣觸發前將 endofpacket 設為高電位。
3.4.3 VGA controller interface 之合成結果
本論文之 VGA controller interface 為由 verilog 發展而成的電路。它定義了
與 VGA controller 及 Avalon 匯流排之訊號連接。我們使用 Altera QuartusII 3.0 去編譯及合成此 VGA controller interface 並得到表 3.4 的結果。
Family LEs Pins DSP block Total memory bits
Stratix 226(2%) 44 (10%) 0(0%) 8192 (<1%)