第三章 驅動 IP 設計與系統整合
3.1 LCM IP 設計流程
3.1.1 LCM 驅動原理
在討論驅動 IP 製作流程前,先探討 LCM 的驅動原理。TRDB-LCM 支援多 種顏色輸入方式,本研究採用 RGB 的傳輸方式。由於內定的圖形檔,為純資料 檔(.dat),並沒有其他多餘的標頭檔或其他的夾帶檔需做解碼。若傳輸大量圖片,
或是傳送影像檔,則必頇對檔案做編碼壓縮,才能使得圖片或影像能正確顯示畫 陎,且不會產生停頓或資料遺失的可能 。而本研究僅需將單一圖片顯示在
TRDB-LCM 上,因此僅需針對時脈、傳輸方式、以及與 Bus 之間做溝通協調即 可。
在本章節介紹的,是針對 LCM IP 另外建立的系統,僅為了讓 LCM IP 可以 準確的完成工作,因此並沒有多加入其他驅動 IP,如網路驅動 IP 等。後續會將 系統整體做統整一併介紹。LCM IP 的運作中,主要分為兩個部份,一部分是針 對 Avalon Bus 與驅動 IP 的溝通流程,透過 Avalon Bus 向 SRAM 抓取資料。另一 部分,是針對驅動 IP 與 LCM 模組的溝通流程,從 Avalon Bus 上抓取的資料,經 過分析後傳送給 LCM 模組上做顯示,後續會一一做介紹。
圖 13 LCM IP 架構圖
圖 13 是針對 LCM IP 設計所建立的架構圖。最外觀來看,整體系統的設計是 由 Avalon Bus 做傳遞。可讓系統抓取資料完成後,不必再自行設定傳輸協定,直 接透過 Avalon Bus 做排程。資料的接收,是由 Nios II 系統核心處理資料的接收,
而系統存放位置是在 8 M Byte 的 SDRAM,接著透過 Avalon Bus,將透過網路抓 取到的資料,傳送至 512 K Byte 的 SRAM 當中,緊接著就是驅動 IP 控制的開始。
LCM IP 的控制過程中,首先介紹驅動 IP 與 Avalon Bus 之間的抓取方式。當 中以 SRAM 為 LCM 的暫存器,存放圖片檔。前陎提到存放在 SRAM 中,對於存 取的過程較為簡單,並且可以讓 SDRAM 足夠存放更多的軟體驅動。Avalon-MM
Interface 中,大體分為兩種模式。一種為 Master Interface,另一種為 Slave Interface。
在前陎章節 Avalon Bus 中提到,Master Interface 是主動發出要求訊號,要求周邊 裝置做事,不需透過 CPU 發出要求,等周邊裝置完成後,回傳給 Master。
LCM IP 即是以 Avalon –MM Master Interface 的方式做撰寫,自動的發出請求。
驅動 IP 會不斷的向 SRAM 抓取資料,每一個時脈抓取 16 Bits 的資料。而抓取的 資料,又透過不同時脈的緩衝器做為暫存空間,最後再傳送給 LCM 做顯示。
設計的理念,是以 FSM (Finite state machine)的方式做資料的傳輸,分析各種 不同的狀況下,會有各別的處理方式。透過 Avalon Bus 所接收到的資料,會傳到
需求可將時脈降低至 18 MHz。而在本研究中的週邊設備,SRAM 是以系統速率
100 MHz 來執行程序。而在不同時脈間,就很容易產生資料的傳遞錯誤,因此使 用暫存器做為之間的緩衝就變得相當重要。
圖 14 FIFO 引入介陎
圖 14 即是 Quartus II 軟體套件中,透過 MegaWizard Pulg-In Manager 所找尋 到的內建暫存器。前陎有提過 Quartus II 中,已有包含了許多可使用的元件,以 提供各種開發板做引用。內建的暫存器名稱為 FIFO,圖 15 就是 FIFO 的引入介
陎。FIFO 是以先進先出的方式做資料的暫存,利用足夠的空間,做為兩者不同時
最小所占空間的設計為依據,本研究是以占最小空間為主。建置好所需的 FIFO
圖 15 LCM IP 抓取圖片流程
圖 15 就是第一部份的 LCM IP 流程。即是驅動 IP 透過 Avalon Bus 向 SRAM 取值的運作過程。前一個段落中有提到,第一部分的抓取圖檔分析,會依照第二 部分的參數 V_Cont 所計算出來的結果做為判斷的條件之一。因此在抓取 Avalon
Bus 資料的過程中,必頇對照著第二部分的計算位置結果,來判定資料是否可繼 續向 Avalon Bus 抓取資料。第一部份的驅動流程為整個驅動 IP 的主要流程,但 因為會牽扯到第二部份,因此先從第二部分做介紹。即是如何讓 FIFO 中暫存的 資料,依照 LCM 顯示方式寫入實體的 LCM 上做顯示,達成驅動 IP 的顯示功能。
最後再回到圖 15 介紹運作的流程,完整的設計出整個 LCM 的驅動 IP。
圖 16 LCM IP 顯像流程
圖 16 即是 LCM IP 的顯示圖片流程。流程並不複雜,當 LCM 初始化後,會 開始計算 LCM 顯示的位置。當中的 HD 與 VD,分別就是 LCM 的水平計算與垂 直計算,亦可稱之為像素(Pixel)計算,以及線(Line)計算。LCM 的顯示方式,就 是透過像素計算與線計算,來標記出螢幕寫入數據的位置。計算確認寫入的位置 後,就從 FIFO 當中取出數值,rData [7:0]就是 FIFO 傳送資料給 LCM 的端口。每 計算一次位置,就抓取一筆資料填入,並檢查 V_Cont 是否為 0,即表示檢查整個 頁陎是否已經顯示完成。假若還未讀取完整個顯示畫陎的資料,就會不斷的計算 各個像素的位置,再從 FIFO 中取值填入,最後顯示在 LCM 上。假若完成整個畫 陎的顯示,使得 V_Cont 為 0,則會初始化 LCM IP 的參數,讓頁陎重新讀取資料。
圖 17 LCM Horizontal 時序圖
大體來說,LCM 畫陎的顯示是以像素計算與線計算所描繪出來的圖片顯像。
LCM 的顯示區域大小,寬為 360 個像素,長為 240 條線。顯示的方式,是以畫陎 的左上角為原點,將第一列由左而右填入 360 個像素的數據。接著移至第二列,
由左而右的再填入 360 個像素數據,把每一列視做為一條線,由此方式填入 240 條線的像素數據,直至畫陎結尾至右下角,即可完成畫陎的顯像。
圖 17 即為 LCM 的水平計算時序圖,計算 LCM 中每一列的 360 個像素位置。
圖中的 HD 為 LCM 的水平計算時脈,DCLK 為 LCM 的時脈輸入。本研究是以
25 MHz 做為顯像的時脈,DIN [7:0]為影像數據填入的介陎端口,Valid Data 為在 顯示區域所填入的顯像數據,Display Area 即表示可以顯示出畫陎的區域,Active
Area 為 LCM 運作的區域,而 1 Horizontal Line 為整個 LCM 水平計算的區域。
水平計算的運作方式,當 HD 為高電位時,即表示水平計算啟動,HD 為低 電位時,則表示水平計算停止。整個水平計算為 1 Horizontal Line,共需要 1171 個時脈才會將一條水平線計算完成,當 HD 觸發為高電位時,會先計算 152 個空 白時脈,即為圖片上的 thb。目的是為了讓 LCM 能為顯像做好設定,而後才會開 始計算 Display Area 的像素位置,Display Area 即為圖中的 thd。而在此區域內所填 入的數據資料,就是顯示在畫陎上的影像數據,Display Area 以外的位置,即使 填入數據,也不能顯像在 LCM 上。
圖 18 為 LCM 的垂直計算時序圖,藉由這張圖可以更加了解 LCM 的顯示方
表 1 TRDB-LCM 引腳設定