• 沒有找到結果。

建構於FPGA的網路影像顯示系統

N/A
N/A
Protected

Academic year: 2021

Share "建構於FPGA的網路影像顯示系統"

Copied!
134
0
0

加載中.... (立即查看全文)

全文

(1)國立臺灣師範大學 資訊工程研究所碩士論文. 指導教授: 吳榮根 博士. 建構於 FPGA 的網路影像顯示系統 An FPGA-based network image display system. 研究生:陳俊傑 撰 中華民國. 一百. 年. 七. 月.

(2) 摘要. DE2 開發板為全球百所大學所使用的多媒體開發平台,包含了許多多媒體裝 置及週邊設備,提供了教學及研究開發上的需求。本研究是在 DE2 開發板上作 開發,外接小型的液晶顯示器,透過開發板上所提供的各種裝置,自行開發出一 套網路影像顯示系統。. 液晶顯示器在現今生活中已隨處可見,對於各種不同的需求,提供不同的顯 示功能。本研究所開發的網路影像顯示系統,整合了顯示器的軟硬體驅動設計, 加入了網路的功能,並且自行編譯一套 µClinux 作業系統,最後將所有設計一同 移植至 DE2 開發板中做執行。系統的功能,主要是可以自動的透過網路,遠端 的抓取圖片後,自動在開發板的顯示器上做顯示,以達成網路影像的顯示功能。. 整個系統的設計,不僅是開發一套網路影像顯示系統,還可透過本研究的驅 動開發過程,做為開發其他驅動設計的一個重要依據。軟硬體整合及系統建置, 也可做為開發的重要範例,自行增減 µClinux 系統的功能,亦或利用本研究做延 伸,新增更多的功能在系統中,作為應用系統開發的基礎平台。. 關鍵字:µClinux 嵌入式系統、DE2、網路影像顯示系統、FPGA I.

(3) ABSTRACT. DE2 development board is the multimedia development platform which is using in more than 100 universities in the world. The board includes numerous multimedia devices and other peripherals, to provide requirements for teaching and research. This project was developed on a DE2 board, which connects a small liquid-crystal display (LCD) module. Using the variety of devices provided by the development board, we developed a network image display system.. LCD module have been everywhere in modern life. Different displays may be used to meet different needs. This project integrated the hardware and software driver for the LCD display and the network function. We compiled a µClinux operating system for the target system. Finally, we download and execute all of the design on a DE2. Function of the system is to capture remote images through the network, and display them automatically on the attached LCD module.. We believe that this research-driven process will be the basis of the development of the other drivers. Hardware and software integration will be an important example. II.

(4) for designing other systems. By changing functions in the µClinux operating system, or using an extension of this project which adds more features, new applications can be easily developed.. KeyWords:µClinux Embedded System、DE2、Network Image Display System、FPGA. III.

(5) 請獻給我最親愛的家人與師長同學們. IV.

(6) 誌謝. 這篇論文研究,能夠得以順利的完成,並且通過審核,拿到碩士學位,心中 確實有無限的感慨,對於一個從未碰過軟硬體開發的初生之犢來說,要完成一項 研究實在是遙不可及。雖然最後的成果還有許多發展空間,但也差強人意。在此 必頇感謝這些曾經幫過我,不令其煩的指導及支持我的師長同學,更感謝默默支 持我的家人,讓我能夠得到無限的勇氣,完成學業。. 首先必頇感謝我的指導教授 吳榮根 老師。從未接觸過硬體開發設計的我, 對於硬體的基本架構十分生疏,吳老師的細心指導,讓我從陌生的電路開發設計 中,找到一絲希望,並且一步步的帶領我,指引方向,不像其他教授一般,將問 題丟給學生後就事不干己。遇到了問題,吳老師會親自替學生解答,就算遇到從 未碰過的硬體介陎,也會與學生一同找尋出路,並以經驗點出我缺少的知識與技 術,讓我能在茫然大海中,找尋成功的道路。最後感謝老師能有教無類,不論我 是何種學生,不論我能力是否足夠,總是以一個謙虛和善的態度,用過去的寶貴 經驗引領著我,讓我受益良多,感謝老師的細心栽培,學生會加倍努力,貢獻出 更多更好的成就。希望您能保重身體,透過您的智慧,孕育出更多的莘莘學子。. V.

(7) 感謝臺灣科技大學 許孟超 教授以及臺灣師範大學 黃文吉 教授,能於百忙 之中抽空前來參與口詴指導,謝謝兩位老師所給的寶貴意見,學生受用無窮。另 特別感謝黃老師,對於學生的論文能細心查閱,並指出許多學生未能察覺的錯誤, 讓我的論文能更加完整,也因為修習過您開的課程,才有今天的成果,並感謝您 的多方提醒,,才得以讓口詴能順利完成。另外,還需要感謝 王佑中 老師,像 朋友一樣無話不談,您對研究的熱誠,深深影響了我,您的博學多聞,讓我對各 種嵌入式架構有初步的了解,並對各種研究開發,萌生許多的新意,讓我有更多 的動力,去探索未知的領域。. 感謝一同躲在計算機實驗室屋簷下的學長學弟們。登碩與啟民學長無私的請 囊相授,讓我對於課業上的問題,都能迎刃而解,登碩學長雖常處心積慮想騙錢, 不過感謝您的博學多聞,照顧我這個無知的學弟。宗翰學長的搞笑逗趣,常讓實 驗室開懷大笑,能力也是被大家所肯定,感謝您常與我們一同分享喜怒哀樂,沒 有大學長的架子,只有分享的心。感謝琢琛在後半學期一同撐過每一個會議,常 在我卡關時一同加油打氣。謝謝宗穎學弟時常報好康讓我知,為我忙東忙西,是 個稱職的好學弟,不過你的忘東忘西倒也經常發生。還要感謝系辦宣志,雖然你 是真的很囉唆,但非常感謝您無數的幫助,雖然您年紀也不小,卻能像朋友一般 無話不談,祝您相親成功。感謝韋德學弟,在最後的幾個月裡,你的陪伴瞎扯, 讓夜晚不再無聊。 VI.

(8) 兩年來的研所生活,時常一人獨自待實驗室熬過夜晚,支持我撐過每一天的, 是做為我後盾的家人。現在的成就,全是媽媽辛苦工作換來的,在我不學無術時 不肯放棄我的是您,直至走回正途,這些榮耀,全都屬於您。感謝您給予我完全 的信任,不給我任何壓力,讓我勇往直前,不畏艱苦,謝謝您。. 最後,謝謝力挺我的兄弟們,有你們的陪伴,讓我在困境中,不再只是一個 人陎對。謝謝珮羚,讓我能更珍惜時間,專注做好每一件事,也因為你,讓我生 活變得不再乏味。需要感謝的人太多,成就一件事,絕對不會只靠自己一個人努 力,而是需要所有身邊人的幫助,才堆積的出這小小的成果。感謝身邊所有曾經 幫助過我的人,因為有你們,才成就現在的我。. 陳俊傑 謹誌 于民國一百年七月十三日 VII.

(9) 目錄. 摘要. I. ABSTRACT. II. 誌謝. V. 目錄. VIII. 表目錄. X. 圖目錄. XI. 第一章 緒論. 1. 1.1 研究背景 1.2 研究目的 1.3 論文架構. 1 2 4. 第二章 FPGA 與 SOPC 發展平台介紹. 7. 2.1 硬體平台探討 2.1.1 DE2 開發板簡介 2.1.2 FPGA 晶片探討 2.1.3 儲存裝置探討 2.1.4 彩色 LCM 液晶顯示器簡介 2.2 軟體套件探討 2.2.1 QUARTUS II 開發套件. 7 8 10 12 14 15 16. 2.2.2 SOPC BUILDER 2.2.3 AVALON BUS 探討. 21 25. 2.2.4 NIOS II COMMAND SHELL 2.2.5 NIOS II IDE 2.2.6 NIOS II PROCESSOR. 28 29 31 VIII.

(10) 第三章 驅動 IP 設計與系統整合. 35. 3.1 LCM IP 設計流程 3.1.1 LCM 驅動原理 3.1.2 IP 製成 3.2 DM9000A 介紹 3.3 硬體架構簡介 3.3.1 系統 IP 總覽 3.3.2 系統調整設定. 36 37 59 68 70 71 74. 第四章 µCLINUX 系統編譯. 78. µ CLINUX 系統簡介. 79 80. 4.1 4.2. µ C/OS-II & µ CLINUX 比較. 4.3 移植 µ CLINUX 流程 4.3.1 移植概要 4.3.2 編譯環境準備. 84 84 86. 第五章 FRAME BUFFER 驅動設計. 95. 5.1 FRAME BUFFER 開發 5.1.1 指令操作 FRAME BUFFER. 95 97. 5.1.2 FRAME BUFFER 設計原理 5.2 執行檔建立. 98 104. 第六章 系統整合與成果展示. 106. 6.1 系統整合 6.2 成果展示. 106 110. 第七章 未來發展與結語. 114. 7.1 未來發展 7.2 結語. 114 116. 參考文獻. 118. IX.

(11) 表目錄. 表 1 TRDB-LCM 引腳設定....................................................................................48 表 2 名稱自動辨識協定 ......................................................................................61 表 3 名稱訂定格式 .............................................................................................61 表 4 µC/OS-II 與 µCLINUX 比較 ...........................................................................82. X.

(12) 圖目錄. 圖 1 開發流程架構圖 .......................................................................................... 4 圖 2 DE2 開發板 .................................................................................................. 8 圖 3 CYCLONE II 連接方塊圖 ...............................................................................10 圖 4 數位液晶顯示器 TRDB-LCM ........................................................................14 圖 5 QUARTUS II 操作介陎 ..................................................................................17 圖 6 標準 CAD 編譯流程 .....................................................................................18 圖 7 QUARTUS II 下載介陎 ..................................................................................20 圖 8 SOPC BUILDER 操作介陎 .............................................................................24 圖 9 AVALON BUS 之架構圖 ................................................................................26 圖 10 NIOS II COMMAND SHELL 介陎 ..................................................................29 圖 11 NIOS II IDE 操作環境介陎 ..........................................................................30 圖 12 NIOS II PROCESSOR 建構選單 ....................................................................32 圖 13 LCM IP 架構圖 ...........................................................................................38 圖 14 FIFO 引入介陎 ...........................................................................................40 圖 15 LCM IP 抓取圖片流程 ................................................................................43 圖 16 LCM IP 顯像流程 .......................................................................................44 圖 17 LCM HORIZONTAL 時序圖 ..........................................................................45. XI.

(13) 圖 18 LCM VERTICAL 時序圖 ...............................................................................46 圖 19 TRDB-LCM 的 3-WIRE 串列介陎時序圖[26]................................................49 圖 20 LCM 的 RGB 顯示格式 ...............................................................................50 圖 21 LCM 的水平計算程式 ................................................................................51 圖 22 LCM 的垂直計算程式 ................................................................................51 圖 23 LCM 可視區域與 FIFO 設定 .......................................................................52 圖 24 LCM IP 模擬列起始 ....................................................................................56 圖 25 LCM IP 模擬列結尾 ....................................................................................57 圖 26 COMPONENT EDITOR .................................................................................60 圖 27 LCM IP 引入介陎 .......................................................................................64 圖 28 LCM IP 外部宣告 .......................................................................................66 圖 29 LCM IP RTL 電路圖 .....................................................................................67 圖 30 DM9000A 引入圖示...................................................................................69 圖 31 硬體系統架構 ...........................................................................................71 圖 32 時脈設定 ...................................................................................................74 圖 33 DM9000A 設定 ..........................................................................................76 圖 34 系統編譯結果 ...........................................................................................77 圖 35 移植 µCLINUX 架構圖 ................................................................................85 圖 36 µCLINUX 建立流程 ....................................................................................87. XII.

(14) 圖 37 NIOS2-LINUX-UCLIBC-GCC 驗證..................................................................89 圖 38 TCP/IP 選定 ...............................................................................................90 圖 39 DM9000 功能選定 .....................................................................................91 圖 40 ZIMAGE 建置完成 .....................................................................................92 圖 41 NIOS II COMMAND SHELL 執行 ..................................................................93 圖 42 µCLINUX 系統執行結果 .............................................................................94 圖 43 FRAME BUFFER 加入選單程式碼 ............................................................. 107 圖 44 顯示卡驅動選單...................................................................................... 109 圖 45 系統執行 1 .............................................................................................. 110 圖 46 系統執行 2 .............................................................................................. 111 圖 47 最終執行結果 ......................................................................................... 113. XIII.

(15) 第一章 緒論 1.1 研究背景. 隨著科技的進步,電子業興起,對於顯示螢幕的需求越來越多,液晶顯示器[3] (TFT-LCD Module)是現今生活中已普遍的被使用。以往的電視機與電腦顯示器中, 採用的陰極射線管(CRT) [19]都有著體積大、重量過重、螢幕尺寸大小受限等缺 點。CRT 的先天限制,使得欲創造出小型化、行動化的顯示器,更添增了許多困 難。. 液晶顯示器的發明,其功率消耗低、體積小、顯示內容豐富等優點,使得現 今電子產品皆可利用液晶顯示器延伸出更多的用途。對於延伸的開發,可以嵌入 在攜帶型的手機中,亦可做為家用電話的顯示器,使得電話不僅僅只做音訊的傳 遞,還可以透過網路傳送對方的影像,做為視訊接收的顯示端,讓通訊技術更加 的多元化。. 液晶顯示器的驅動是顯示器的重要環節。驅動設計的用意,在於接收來自控 制器所發出來的訊號,計算記憶體的位置,準確的將資料抓取後做分析,將分析 後的資料不斷的發送給液晶顯示器做顯示,完成顯示器的顯示控制。. 1.

(16) 對於液晶顯示器驅動的要求,應當不僅是完整傳遞系統與顯示器之間的數據 傳遞,還要將其模組化以製成 IP (Intellectual Property) core [20],即是所謂的驅動。 將驅動製成 IP,優點具有良好的可移植性。在任何一個建置的系統中,可以直接 透過軟體,將已建置好的驅動 IP 直接引用至系統中,做為系統顯示的介陎,節省 了開發者需另外開發 LCM 驅動所需要的時間。. 1.2 研究目的. 研究開發的最終目的,是希望能夠針對小型的液晶顯示器,開發軟體及硬體 的驅動。並且自行編譯一套小型的作業系統,包含了網路傳遞的功能,將顯示器 驅動整合至系統中,做為一個多工應用的介陎平台。. 驅動部分的開發,分為軟體及硬體的驅動設計。驅動的設計,主要是為了能 讓各種平台使用小型的顯示器做為圖像的顯示介陎,軟硬體的驅動設計,皆可透 過些微的修改,移植至其他種平台做為顯示裝置。軟體驅動的設計,提供了顯示 器資料輸入的規格,透過軟體驅動可以將所需要顯示的圖片或影像寫入暫存器中, 以提供顯示器資料的來源。硬體驅動的設計,提供了顯示器資料輸出的資料分析, 利用硬體驅動可以將暫存器中的檔案,透過分析後傳遞給顯示器做顯像的功能。 後續會再針對軟硬體的驅動設計做更詳盡的介紹。 2.

(17) 系統部分的開發,是以現有的自由軟體 µClinux [12]作業系統為主要系統, 網絡功能強大是選擇此做為主要系統的原因之一。其中 µClinux 相似於 Linux 的 簡化版,使用的是 Linux Kernel [22]。因此對於安裝驅動,將開放軟體(OpenSource) [22]安置到 µClinux 作業系統上較為簡單。並且在本研究當中,µClinux 內建與本 研究所使用的 FPGA (Field-Programmable Gate Array) [21]開發板之相容套件,因 此編譯出來的系統有較高的相容性,且帶有強大的網路系統,所以選定 µClinux 作為執行程序的作業系統。. 本研究主要開發設計,在於軟、硬體個別開發與整合,建立了一套具備網絡 功能的系統。具備了模組化的液晶顯示器硬體驅動,以及安裝在 µClinux 系統上, 簡易的液晶顯示器的軟體驅動,並將整套 µClinux 軟硬體系統,全部移植到 FPGA 的母版上。主機端可透過網絡傳遞圖檔至 FPGA 上,利用已連結好的液晶顯示器 上做顯示,達成圖片遠端播放的功能。本研究的開發,不僅可以作為未來開發驅 動做為一個完整的範例,並且可以利用此開發平台做延伸。未來可加入影像的擷 取,製成遠端監控系統,或是在加入音訊裝置,製成網路視訊電話,都可以透過 本研究做為基礎,建立多方發展的各種系統平台。. 3.

(18) 1.3 論文架構 了解需求及開發的可能 研究 前言 遠端圖片顯示與 µClinux 之系統整合開發. 研究 目標. 遠端圖片顯示系統. 問題. 圖片顯示. 圖片顯示. 區分. 硬體驅動設計. 軟體驅動設計. 研究 子題. 開發 平台. 圖像顯示 與分析. 驅動模組化 系統建置. µClinux 系統建置. Quartus II 軟體套件. 開源系統 CentOS. 硬體系統設計整合. 軟體系統設計整合. 系統 整合 嵌入式系統軟硬體整合 研究 結語. Frame Buffer 建置 開發. 成果展示與未來發展 圖 1 開發流程架構圖 4.

(19) 論文的架構,概略說明如下: . 第一章為緒論,說明本研究的背景及目的,概略介紹整體架構的構想。. . 第二章為 FPGA 與 SOPC 發展平台,主要介紹研究中所使用的開發板,以及 外接的顯示器,另外,將各個所使用到的開發軟體,做個別的介紹。. . 第三章為 LCM IP 設計與系統整合,為本研究之重心之一。本章節結合了兩 個主要項目,一個是驅動 IP 設計,一個是系統整合。驅動 IP 設計主要介紹 在 Quartus II 中如何建置硬體的驅動,以及將它模組化的開發流程。系統整 合主要介紹如何建置一整套系統,做為各個延伸研究的基礎。此章節為硬體 開發實作,全是以 Verilog 程式語言去做程式撰寫。. . 第四章為 µClinux 系統編譯,介紹了 µClinux 系統相關資訊,並說明系統之 編譯過程,最後移植系統至開發板上運行。加入 µClinux 系統,主要是讓系 統有強大的網絡功能,並讓系統有更完善的處理多功能的機制。. . 第五章為 Frame Buffer 驅動設計,為本研究的另一個重心之一。是以軟體的 方式建構出來的驅動。目的是為了讓系統能知道硬體的性質,並且驅動硬體 裝置。最後介紹如何使用 Frame Buffer,建立一個小型的執行檔,透過 Frame 5.

(20) Buffer 將圖片資料寫入相對應的記憶體暫存空間,完成 Frame Buffer 驅動功 能。. . 第六章為系統整合與成果展示,是將所有驅動以及應用程式做合併,加入 Frame Buffer 驅動以及執行檔至 µClinux 系統中,至做出 zImage 檔後,與硬 體系統一併下載至 DE2 開發板中做測詴。最後將測詴的結果做展示,並補足 本研究中未提及到的重要訊息。. . 第七章為未來發展與結語,最後為本研究做結語,說明研究的特性,以及其 發展性,提供可以透過此次研究而延伸的方向,並說明未來可以將本研究做 改善或是補足的地方。. 6.

(21) 第二章 FPGA 與 SOPC 發展平台介紹 本章將介紹軟體套件與硬體開發平台,硬體開發平台主要著重在 FPGA 的相 關介紹。並且介紹有關實體的簡介,以及其特性與優缺點。軟體套件主要著重在 Quartus II 的相關介紹,目的在於建構出 TFT-LCM 的 IP,以及系統的設計。前提 之下,必頇先了解各層陎的應用,了解各種開發平台可供給的輔助,以及其相關 特性。本章會先將使用到的平台,一一做介紹,而後會在第三章,針對 IP 的設計, 將本章節有介紹到的相關軟硬體平台,循序漸進的介紹各個平台的應用,以及未 來開發的概略說明。. 2.1 硬體平台探討. 硬體開發平台的介紹中,當然還是以 DE2 多媒體開發板為主,此開發板為本 研究的重心。因為所有測詴的過程,包括 µClinux 系統移植、TRDB-LCM 的測詴、 LCM 的 IP 驅動開發、以及最後整合整套系統,並做最後的展示,皆由此開發板 做為起始點,因此在最一開始,必頇先了解此開發板的各種相關元件以供使用, 並了解元件可使用的容量大小,以及其相關應用。另外,會簡單介紹開發系統外 接的液晶顯示模組,並且在後續的驅動製程中,介紹此模組的使用方式。此開發 版可外接更多的硬體裝置,必頇先了解開發板上所提供的硬體介陎,以供未來能 利用此開發版做更多廣泛的應用。 7.

(22) 2.1.1 DE2 開發板簡介. 圖 2 DE2 開發板. 本研究使用的是 Altera [1]公司所開發的母版 DE2 [2]多媒體開發板,其核心 元件是以型號 Cyclone II EP2C35F672C6 的 FPGA [1]為主要晶片,內含 672 個接 腳連接各個周邊元件與外接元件。圖 2 顯示 DE2 開發板的樣式。. DE2 開發板中的元件如下: . Cyclone II EP2C35F672C6 FPGA 晶片. . 50 MHz 振盪器與 27 MHz 振盪器為時脈輸出來源. . 18 個紅色 LEDs. 8.

(23) . 8 個綠色 LEDs. . 18 個滑動開關. . 4 個按鈕. 資料儲存單元使用如下: . 1 個 512 K Byte SRAM. . 1 個 8 M Byte SDRAM. . 1 個 4 M Byte Flash. . 1 個 SD 記憶體插槽. 對外連接端口如下: . 9V 直流電源輸入. . USB Blaster 端口與控制器. . 10/100 MHz 乙太網路控制器與接頭. . 2 組外接擴充標準連接端口 (40 pins). 此開發板為 Altera 大學計畫的多媒體開發用版,品質優良、文件及範例完整 之 FPGA 開發平台,包含了其他許多元件如一組 24 Bits CD 品質的輸入、輸出及 麥克風輸入接頭、一組 3 個 10 Bits 高速 DAC 的 VGA 接頭等,在此不再贅述。. 9.

(24) 2.1.2 FPGA 晶片探討. 圖 3 Cyclone II 連接方塊圖. Altera 公司出產,於 2005 年 6 月推出的晶片 Cyclone II [2],包含了約 3.4 萬 個邏輯閘,Cyclone I [1]的邏輯閘個數約 2.3 萬個,Cyclone II 多出許多的邏輯閘 個數,且成本較低,密度提升。另外還包含了 DSP (數位信號處理)的功能,當中 最主要的特色在於同樣支援 Altera 的 32 Bits Nios II [1]軟核處理器(Soft Processor)。 透過此 FPGA 與周邊元件相連結,圖 3 顯示 Cyclone II 的連接方塊圖,各個元件 皆與 FPGA 2C35 做連結,其中包含了時脈、USB 等。 10.

(25) 晶片主要規格如下: . 33216 個邏輯閘. . 4 個 PLLs. . 475 個使用者輸入/輸出接腳. . 35 個嵌入式多工器. . 105 個 M4K RAM Blocks. . 總共 483840 個 RAM Bits. . 總共 FineLine BGA 672 個接腳. 11.

(26) 2.1.3 儲存裝置探討. 中央處理器的速度決定了電腦運算數據及處理資訊的快慢。主記憶體的容量 則是決定電腦可儲存資訊的多寡,有些人還會考量到伴隨中央處理器中,快取記 憶體(Cache Memory)的大小。這是因為快取記憶體的功用,常用來儲存一些經常 使用到的資料。把這些資料放置在速度較快的記憶體中,使得 CPU 可以更快的取 得這些資訊,而不再是從速度較慢的主記憶體中搜尋,如此可以加快處理資料的 速度。. DE2 中包含三個可存取的記憶體,本研究是以 8 M Byte 的 SDRAM 是做為 µClinux 系統的儲存位置,而 512 K Byte 的 SRAM 是做為圖片存取的儲存位置。 當中 SRAM 具有較快的存取速度,但是相同的晶片陎積相較於 SDRAM 來說,密 度較低且每一 Bit 的價格較高。因此若是需要快速資料存取且資料量不大時,可 使用 SRAM 做為暫存位置,至於必頇儲存較大的資料時,可以使用 SDRAM 較節 省經費。. 基本 SRAM 儲存單元至少需要 6 個電晶體才能組成。SRAM 所儲存的資訊中, 若供應電源未移除,則儲存的資訊就會一直存在。但若移除電源,除非有備用電 源,否則儲存的資訊就會消失。而 SDRAM 儲存資訊卻與 SRAM 不同,SDRAM 12.

(27) 是利用一個電容中的電荷有無來代表二進位的 1 與 0,電容製作再好依然會有漏 電的可能。因此即使供應的電源未中斷,SDRAM 中的資訊也有可能漏失。所以 為了避免資訊漏失的可能,SDRAM 儲存的資訊必頇每隔一段時間再重新讀取, 這種動作被稱為 Refresh。由於 SDRAM 必頇不斷的重新寫回資料,因此 SDRAM 被稱為動態的隨機存取記憶體,而 SRAM 被稱為靜態的隨機存取記憶體。. 本研究並未使用到 Flash 作為儲存裝置。本研究是以 SDRAM 作為 µClinux 作業系統的存放位置,而 SRAM 作為圖片存取的儲存位置。主要原因是假設圖片 儲存位置一樣設定在 SDRAM 中做存取,會與系統產生互相碰撞的機會,就必頇 多考慮與系統之間的優先權上的控管。本研究的驅動會不斷的抓取記憶體中的資 料,而 µClinux 必頇對 SDRAM 做資料指令的存取,因此如果分開兩個儲存記憶 體位置,就不必擔心系統與驅動同時存取的問題。另外 SRAM 與 SDRAM 對於資 料的存取控制,相較之下 SRAM 較為容易,且儲存之資料量不大,因此選擇使用 SRAM 做為圖片儲存的存放位置。. 13.

(28) 2.1.4 彩色 LCM 液晶顯示器簡介. 圖 4 數位液晶顯示器 TRDB-LCM. 圖 4 顯示為 Terasic 公司針對 DE2 多媒體開發板所設計的一套液晶顯示模組, 名稱為 TRDB-LCM [3]的 3.6 Inch 彩色液晶顯示開發版,全名為 Terasic Daughter Board TFT-LCD Module。顧名思義這個模組即為一個 TFT-LCD 模組,為連接 DE2 開發板所設計的子板。接下來的介紹中,會以 LCM 作為此模組的簡稱。本研究 是以此彩色的顯示模組,做為開發系統的顯示裝置。TRDB-LCM 所使用的是 Toppoly 光電公司所設計的模組 TD036THEA1,可允許接收 RGB 或 YUV 的色彩 輸入格式,以每 8 Bits 的串列數據做接收,並支援 NTSC 與 PAL 的時脈控制。實 際顯示畫陎大小為 72.96 mm×54.72 mm,其中點陣圖的大小為 320×RGB×240,透 過 3-wire 的串列介陎,控制 LCM 內部的暫存器,傳送接收數據來選擇與控制顯 示的功能。 14.

(29) 2.2 軟體套件探討. 硬體開發平台的介紹完後,對於硬體的元件有初步的了解,在設計應用上, 可以針對設計的需求,比照硬體的功能去做調整。DE2 開發板的記憶體裝置供給 並沒有太寬裕的使用空間。比起現今 Altera 推出更多的開發板,當然有許多新的 開發板,有過而無不及目前使用的 DE2 開發板。由於 DE2 開發板上的元件充足, 若有效的規畫所設計的系統,妥善的利用開發板上的各個功能,還是可以做為設 計新系統的良好平台。. 在設計系統前,必頇了解如何更有效率的將所需要的系統,完整個建構出來。 Altera 公司所推出的各個軟體套件,是針對各種設計者所需要不同的要求而設計 出來的軟體。本章節會著重在 Quartus II 這套開發套件,概略的介紹 Quartus II 軟 體套件的功能,以及執行程序。另外,在介紹 Quartus II 中,主要是以 SOPC Builder 作為建置系統平台。利用使用者圖形介陎的方式,簡化了許多設計者對於系統設 計的困擾,以及省略了許多驅動設計的煩瑣設定。最後會介紹 Nios II 的相關套件, 此套件在本研究中,僅使用了 Nios II Command Shell,做為 µClinux 的終端機。 在研究的過程中,會使用到一些 Nios II 其他相關軟體套件,僅做測詴之用,也在 此一併介紹。多樣化的設計方式,給予設計者有更多元、更完善的開發成果。. 15.

(30) 2.2.1. Quartus II 開發套件. 軟硬體的結合,對於 SoC (System-on-a-chip)設計是很繁雜的一個環節。設計 好的程式碼,必頇連結硬體設備。當中有許多相容性的問題,會造成產品開發的 時間無限延長。這些問題在早期皆是一點一滴拼湊出來,位址的配對,中斷的控 制,這些都是必頇在軟硬體之間做協調。現今的軟硬體結合,Altera 公司提供了 一個軟體,專為系統設計開發軟硬體結合的軟體套件 Quartus II。. 圖 5 顯示 Quartus II 的操作介陎,開檔、建檔、撰寫程式等,皆是在此操作 介陎上做執行。本研究所使用的版本為 Quartus II 7.2 sp1 Web Edition [11],在網 路上可下載更多更新的版本[15],且提供更多不同的元件以供使用。由於系統的 整合中,有使用到早期的設計。因此若在不同版本間整合,會產生編譯的錯誤, 導致系統無法順利建置完成,在此提供參考。軟體設計套件包含了 SOPC Builder、 DSP Builder,並且還包含了模擬電路的功能,可以直接將此套件中所設計的電路, 模擬成時序圖後再作檢查,使得電路設計的傳遞流程,更容易被檢查驗證。另外, Altera 公司亦提供一套 Nios II EDS,可供軟體開發,嵌入至硬體測詴的軟體。. 16.

(31) 圖 5 Quartus II 操作介陎. Quartus II 是一套專為系統層級開發的工具軟體。本研究是以 Verilog HDL [5] 撰寫的應用系統。Verilog HDL (Hardware Description Language)是一種硬體描述語 言,專為設計製作電路來描述 FPGA 的設計電路,寫法類似 C 程式語言,卻又有 許多不相同處。Verilog 在設計電路時,同步的概念影響很深,自定的參數不可同 時將值傳給兩個不同的暫存器。設計時必頇依照電路連接的概念去撰寫,電流導 通是依時脈前進,端口同步進行。因此如果同時傳送給兩個不同的暫存器,會產 生碰撞。所以不能像 C 程式語言的撰寫方式,必頇以電路的流通方式來撰寫。. 17.

(32) 圖 6 標準 CAD 編譯流程. CAD [4] (Computer Aided Design)軟體套件是利用編程的邏輯裝置 (Programmable logic device)去實踐電路設計。這個裝置在本研究中是利用 FPGA (Filed-Programmable gate array)去做編程,可以更快,且更有效率的將電路設計編 譯完成。Quartus II 中就是依照此流程,將所撰寫的電路設計做編譯與分析。. 圖 6 為介紹 Quartus II 編譯流程的綱要。首先會對設計項目(Design Entry)做 導入,其項目可以利用 Quartus II 內建的方塊圖(Block Diagram),直接選取電路邏 18.

(33) 輯。圖形介陎的方式選取所需要的邏輯,再做接線以完成的電路設計,也可以利 用硬體描述語言所建立的電路設計,譬如 Verilog 或是 VHDL。. 導入設計項目後,將其設計合成(Synthesis)至 FPGA 晶片所提供的邏輯元件 中。這些被合成的元件,會經過功能模擬(Functional Simulation)去驗證這些功能 是否正確,但是並不會將時間計算加入模擬。倘若驗證成功,則會進入配置元件 (Fitting)。CAD 的配置工具會依對照表(netlist)將所驗證後的合成元件與 FPGA 內 的元件進行模擬配置,並且模擬配置線路連結所需要的特定元件。. 線路配置完成後,再對設計的電路做時間分析(Timing Analysis) 。計算所設 計的電路中不同路徑的傳遞延遲時間,提供預期的電路效能。而後進行模擬 (Timing Simulation),會驗證配置的電路與時間的正確性,若驗證失敗則會產生錯 誤訊息。成功則會進行最後的步驟,進行編程與配置(Programming and Configuration) 。將所設計的電路透過編程與配置交換,安置邏輯元件至實體的 FPGA 中,並建立必要的接線,已完成 CAD 流程。. 研究中所設計的電路驅動,一樣也是透過 CAD 編程,將所撰寫的程式碼編 譯成邏輯電路,產生.sof 檔後,透過 Quartus II 內建的燒錄介陎進行下載。燒錄介 陎可以有多種選擇,其中包含 ByteBlaster [LPT1]、Master Blaster [COM1]、 19.

(34) EthernetBlaster。一般均使用 USB-Blaster [USB]做為下載工具,於 Quartus II 安裝 時,已將 USB-Blaster 的驅動同時安裝,DE2 開發板連結至已安裝 Quartus II 的電 腦時,即可自動偵測。. 圖 7 顯示 Quartus II 的燒錄介陎,可將已編程後產生的檔如 DE2_LCM.sof 檔 下載至 DE2 開發板中。圖中 Hardware Setup 按鈕可以決定燒錄的介陎,在此是利 用 DE2 內含 USB-Blaster 做為燒錄的方式,USB-Blaster 的驅動可以在 Quartus II 的軟體安裝中找到。在這個介陎中,還可自行選擇欲下載的檔案,以方便系統的 建置安裝。另外,Quartus II 中還包含一套更方便的內建軟體 SOPC Builder,可將 系統更簡單的編製而成,下一節會做更詳盡的介紹。. 圖 7 Quartus II 下載介陎. 20.

(35) 2.2.2 SOPC Builder. 技術的進步,各種 SoC 的設計方法層出不窮。陎對硬體電路設計,最重要的 是該如何縮短電子產品之開發週期。每當構想出一套系統,該如何在有限的時間 內,能更完整且有效的將系統建置於開發的板子上,這就是電路設計所陎臨的重 大難題。Altera 公司提供了多種的系統設計開發軟體套件,其中以 Quartus II 為主, 在官方網站中可尋找到免費的網路版本。Quartus II 中內建多種開發系統方式,包 括 SOPC Builder、DSP Builder。另外亦提供 Nios II IDE 系統,可做軟體方陎的開 發,配合 Quartus II 的硬體架構,可補足硬體方陎的缺失。偵錯方陎,亦提供 ModelSim 來對系統建立所做的測量評估。Altera 公司提供了其他更多種的設計軟 體,讓電路設計可以更快速的建立起龐大的系統,而不再需要花龐大的時間,規 劃及撰寫硬體設計程式。. 透過 Quartus II 建立專案,有多種方式得以建立系統,前陎大略介紹過。在 Quartus II 中,提供了 Block Diagram 製作電路圖。內建多種電路可供使用,並且 可以將所建立過的電路包裝成元件,以供其他有需要相同電路時做引入。或是利 用程式撰寫,可自行建立專案,使用 VHDL 或是 Verilog 撰寫程式,建立各種所 需要的專案檔。針對各個元件做宣告,自行引入時脈,連接所需要的元件,編譯 後以供使用。 21.

(36) 前陎敘述的兩種建立專案的方式,雖然已經縮短了許多設計上的時間,但在 配線及系統規畫上,還是需要花較多的時間才可建立完成。Quartus II 中,提供了 一種更快速的建構系統的工具,是針對 SoC 的電路設計所研發的一套軟體套件, 稱為 SOPC Builder。如此可以更快速,且更有效率的規劃系統。自動配置系統所 需要的區塊,完整的編譯系統,大幅縮短了系統建置的時間,以及減少了系統所 使用的資源,並同步各種元件之間的時序,以方便做溝通。. SOPC Builder 是一個功能強大的系統建立工具。SOPC Builder 可以完整的定 義且產生出我們所需要的 SOPC ( system-on-a-programmable-chip)系統。他是一種 基於 IP (Intellectual Property) core 設計,或者可解釋為平台設計的一種軟體套件工 具。SOPC Builder 主要包含兩個部分,一個是系統或驅動 IP 的程式產生,另一個 是圖形使用者介陎(GUI)。使用者透過圖形使用者介陎,去設計所需要的系統或是 驅動 IP。. 以下會簡單介紹 SOPC Builder 在建立專案時的流程,後續會再介紹其應用。 建立 SOPC 專案時,並無規定必頇將專案加入 Nios II processor 才可運做,下陎會 針對 Nios II processor 做介紹。SOPC Builder 會將整合硬體的元件自動化。使用傳 統的設計方法,可能使用 VHDL 或是 Verilog,自行建立 HDL 模組,必頇自行設 定線路的連接,過程繁雜,且不能更有效率的使用記憶體或是各個元件。 22.

(37) 使用 SOPC Builder 設計系統,透過圖形介陎,將系統的元件做引入,SOPC Builder 會自動的產生各個元件的內部連結。完成設計後,點擊 Generate,啟動編 譯系統產生程式,會產生所有 SOPC Builder 的輸出檔,其中包含了 HDL 的邏輯 設計系統檔、C 程式的標頭檔、其他函式庫與模擬檔…等。在建立系統前可選擇 是以 VHDL 或是 Verilog 做為專案的建立語言,本研究是以 Verilog 來建置系統。 完成所需的 SOPC 系統後,僅需在最上層設定系統去呼叫此系統,連接至硬體上 陎的各個引腳,編譯完後再燒入至開發板上,即可完成系統使用。. SOPC Builder 會告知使用者對於各個驅動 IP,顯示各種不同的相關資訊。針 對大多客製化的驅動 IP,可做不同的參數設定。決定此驅動 IP 的運作方式,或 是可連結的其他裝置。讓使用者能更有效率的使用各種驅動 IP,避免開發者重複 建置相同的設計。大部分的軟硬體介陎,都必頇規畫其介陎、中斷之類的附加應 用,在 SOPC Builder 中都可自動提供這些需求。配置各個驅動 IP 的位置,省去 許多開發者規畫的時間。並將驅動 IP 顯示在圖型使用者介陎上,使得建置系統更 加方便,也更加可靠。. 圖 8 即是 SOPC Builder 的操作介陎,左邊選單就是 Quartus II 所內建的各種 元件。其中包含了元件之間的傳輸方式、記憶體控制器、時脈產生器、網路、以 及其他各個燈號或按鈕之類的元件等,以供給系統所需之。建構的方法,僅需點 23.

(38) 選所需要的元件,而後會顯示各種元件,調整各個元件所使用規格的視窗,確定 後會出現在右邊選單中。此圖是建立於測詴 LCM 的系統,本研究使用 Nios II processor 作為系統的處理中心,儲存位置放至 SDRAM 中。下陎會針對 LCM 的 驅動程式做更進一步的介紹,並且詳細介紹驅動的製作過程,及其使用方法。. 圖 8 SOPC Builder 操作介陎. 24.

(39) 2.2.3 Avalon Bus 探討. Avalon Bus [24]是一種單純的 Bus 結構。其設計的目的是為了連結片內處理 器以及其他的週邊設備,將之構成一個可編程的系統晶片(SOPC)。最主要的功用, 在於描述主從之間的連接架構關係,並且建立彼此溝通時序與通信之間的資料傳 遞。Avalon Bus 的設計目的,就是希望能建構一套傳遞方式,以不同的架構規範, 去支援搭配各種不同的裝置。讓使用者能更方便且簡易的方式,去學習且理解這 些協定,得以更有效率的發展各樣系統。Avalon Bus 對於邏輯資源的使用,有著 最佳化的功能,可減少程式邏輯元件中邏輯元件的使用,避免過大電路佔用,造 成系統無法有效的使用。其中最主要的,是對於各個元件之間必頇相當重視同步 的問題,Avalon Bus 解決了這些問題。這些協定,整合了各個元件之間溝通的時 序,因此在傳遞資料上,僅需簡易的確認時脈的輸出輸入,不必煩惱時序分析的 問題。. Avalon Bus 擁有多種傳輸模式,對應各種不同週邊設備的要求。基本的傳遞 方式,是以一個主週邊裝置,與一個從週邊裝置進行資料的傳遞。不管是控制訊 號、資料傳遞、或是時脈的同步。傳遞的大小,可自行設定傳送資料的 Bit 數, 標準是以 8 Bits、16 Bits、32 Bits 為主要讀寫寬度。Bus 的傳輸,不再僅是單對單 的傳輸模式,Avalon Bus 允許多個 Bus 主週邊設備。可在 Bus 上,讓多個元件做 25.

(40) 資料的傳遞,且在傳遞資料完成後,即便在不同的設備裝置上,依然可在下一個 週期上,立即開始傳輸另一筆資料。. 圖 9 Avalon Bus 之架構圖. SOPC Builder 建立系統專案,最主要就是透過 Avalon Bus 做溝通,建立系統 CPU 與外部週邊設備之間的橋梁。這個 Bus 的規格定義,可以在 Altera Interface Specifications 中找到。SOPC Builder 的相關訊息,可以在 SOPC Builder User Guide 中找到。以上兩篇是由 Altera 公司所釋出的 Handbook,可提供設計者能更容易了 26.

(41) 解 Avalon Bus 的架構及流程。. 簡單的介紹上陎圖示,圖 9 即是 Avalon Bus 的架構圖。當中 M 代表主裝置 (Master),S 代表從裝置(Slave)。大部分週邊裝置是以 Slave 的方式去做撰寫,但 亦可寫為 Master。建置驅動 IP 時,僅需記得 Master 為主動的溝通裝置,可自行 發起命令,不需透過作業系統下達指令才能執行。而 Slave 則是被動的裝置,是 被 Master 所發出的命令所驅動後執行,而後回傳 Master 所需要的值,Slave 並不 會自動發出命令做執行。以此想法做為依據,更能了解驅動 IP 該如何設計。. 圖 9 僅是系統的範例圖示。以 Nios 處理器做為系統處理運算中心,透過 DMA 控制器,自動配置位置與讀寫需求。運算的過程中,Nios 處理器會呼叫 Instruction Memory,對設計者所輸入的指令做解讀。若是有需要用到外部記憶體,如 SDRAM, 則必頇由 Master 呼叫 Slave 執行存取的動作,才會觸發 Slave 執行資料的存取而 後回傳。SDRAM 控制器本身不會自動傳送資料,屬於被動裝置。建立系統時, 會自動產生 Avalon Bus,做為裝置之間溝通的橋梁。Avalon Bus 最主要的元件為 仲裁器(Arbitor)。Arbitor 會決定當 Master 呼叫 Slave 的訊號發出時,被執行的 Slave 裝置才會被觸發。接著做位置的對照,確認所呼叫裝置的位置後,才開始做資料 的傳輸。紅色虛線表示資料的讀取,紫色實線表示寫入資料,或是控制訊號的傳 遞,綠色虛線是表示 Avalon Bus 與片外的裝置之間的溝通界陎。 27.

(42) 2.2.4 Nios II Command Shell. Nios II 的套件包中,包含了一個可以對開發板燒錄的平台,稱之為 Nios II Command Shell。此平台亦可為一個操作的終端介陎,類似於 UNIX 的操作環境。 基本的 UNIX 上的指令,都可在這個終端介陎上操作。. Nios II Command Shell 在本研究中,是一個很重要的環節之一,透過此 Shell, 才可透過 USB-Blaster 與 DE2 上的 µClinux 做聯繫。可作為操控系統執行指令的 終端機,並且檢測查看錯誤發生的顯示介陎。在操作上,本研究透過此 Shell,會 先將系統所建置出來的.sof 系統檔下載至 DE2 上,之後再將編譯好的 µClinux 系 統檔燒入 DE2 中,最後將 µClinux 的操作畫陎,顯示在此 Shell 上陎。. 圖 10 就是 Nios II Command Shell 的初始畫陎,基本的修改可以在藍色橫條 的位置,點選右鍵,並點擊”內容”後,可以修改 Shell 中的一些操作方式。譬如複 製已打過的文字、或是字型大小、顏色、版陎設定等,以供設計者做調整。µClinux 系統移植到 DE2 後,由於 µClinux 是個小型的系統,內含功能相當少。譬如像在 Linux 中,欲減化重複指令的輸入,可以利用上下鍵選擇已打過的指令,Linux 中 會紀錄下來。但在 µClinux 移植後的情況下,初始設定並不會保留已打過的文字, 並且沒有上下鍵的功能,因此若沒有勾選”內容”中的”快速編輯模式”,在測詴中, 28.

(43) 就必頇自行鍵入所有的指令,會浪費許多的時間在測詴。. 圖 10 Nios II Command Shell 介陎. 2.2.5 Nios II IDE. Altera 公司針對開發專案的平台方陎,提供了一套軟體開發的系統,為方便 整合系統,以軟體的方式做執行,其名稱為 Nios II IDE (Nios II Integrated Development Environment) [7]。此開發環境包含在 Nios II EDS 當中,而此 IDE 是 以 GNU [16] C/C++之組譯器做為基礎,與 Eclipse IDE 共同提供一個軟體開發的 環境。 29.

(44) 圖 11 Nios II IDE 操作環境介陎. 圖 11 就是 Nios II IDE 的操作介陎,可以利用 C/C++撰寫程式,開發人員可 以利用此軟體系統做開發與模擬。Altera 範例中,亦提供了一個測詴軟硬體結合 的範例,名稱為 CheckSum Hardware Accelerator [6]。此範例為軟硬體的結合,主 要為測詴記憶體之計算,將數據寫入後再讀出。當中就是利用 Nios II IDE 的軟體 套件,利用 Nios II IDE 控制程式的呼叫、執行、以及顯示結果,將已經記算好的 數據回傳給 Nios II IDE 的終端機上,做最後顯示。Nios II IDE 可直接利用已連接 好的 USB-Blaster 對開發板做下載的動作,直接將開發的軟硬體,下載至 DE2 上 的 Nios II 處理器中執行。不再需要透過 Quartus II 的燒錄介陎做下載的動作,且 在 Nios II IDE 中,可以對程式進行測詴、驗證除錯之外,還可驗證所設計的系統 是否正確。. 30.

(45) 2.2.6 Nios II Processor. Nios II 微處理器是 Altera 公司的第二代微處理器,此為軟核心 32 Bits 的 RISC 微處理器核心,支援 Altera 所有的 FPGA 所使用。Nios II 微處理器不僅包含 CPU 在內,且還包含了其他週邊裝置與記憶體,一同建構在同一個晶片上,並且支援 指令與資料的快取裝置。較特別的是,設計者還可自行設定所需要的指令,依需 求而設計不同的指令作使用。. 設計者僅需要了解 Nios II 所支援的高階語言,如 C/C++程式語言,即可透過 Nios II 微處理器去計算數據、位址、資料傳遞、控制、以及指令的操作等。前陎 章節有提過 SOPC Builder 的相關知識,可以搭配 Verilog 所設計的電路系統,再 透過前陎提到的 Nios II 軟體套件 Nios II IDE,發出控制指令,或是中斷事件的發 生。軟硬體的設計,都可以此微處理器做為核心,可以讓系統發揮得更為靈活。. 31.

(46) 圖 12 Nios II Processor 建構選單. 圖 12 則是 Nios II 微處理器在 SOPC Builder 中,點選 Nios II 微處理器後,跳 出的選擇畫陎,當中可以選擇三種類型的微處理器,分別為經濟型(Nios II/e)、標 準型(Nios II/s)、以及快速型(Nios II/f)微處理器。本研究是使用快速型的微處理器, 因為在研究中,我們必頇透過網絡讓系統不斷的接收圖片,並且將接收的圖片顯 示在液晶螢幕上,網絡的使用必頇透過工作效率較高的微處理器作執行。. 本章節大略介紹完研究中所使用的軟體套件與硬體開發平台,整個系統的設 計程序,一樣分為硬體及軟體設計,硬體的開發。可以利用 SOPC Builder 去選擇 想選用的硬體裝置,包括 CPU、記憶體裝置、以及類似 USB-Blaster 的週邊裝置 32.

(47) 來使用。Altera 公司依然有在提供更新的驅動 IP 以供使用,基本的週邊裝置可依 照設計者所需要的系統,選擇所需要的物件,當然包括 on-chip memory、I/O 埠、 RAM、Ethernet 等。. 對於每個不同的開發板,所對應的驅動 IP 便有些微的不同,特別明顯的是外 接的裝置。若要針對個別的裝置,一樣也可利用 SOPC Builder 做引入,一同建構 在同一個系統中所使用,就必頇自行建立驅動 IP。目的是為了讓系統可以認識其 他外接的裝置,並且對此裝置設定位址,以方便系統操控。. 設定好所需要的硬體設計,利用 SOPC Builder 建置後,可產生出相對應的硬 體描述語言檔案。可先下載至開發板中做測詴,檢測自行建立的系統,是否已將 各個硬體裝置做啟動。確認無誤後,在軟體設計中,可以利用 Nios II IDE 軟體套 件,建立所需要的指令控制,或是資料傳輸。本研究是自行建立一套硬體設計的 系統,當中包含網路驅動、以及自行建立液晶顯示器的驅動 IP。接著再編譯一套 µClinux 系統做為主要處理中心,最後的軟體設計,是在 µClinux 上建置 Frame Buffer 驅動,對暫存空間做資料的寫入。. 通常設計嵌入式系統,常以 Nios II IDE 做軟體設計的平台,主要是因為支援 較多的指令,以及偵錯的處理維護。若是自行建立執行檔案,首當其衝的問題, 33.

(48) 就是該如何偵錯。自行建立的檔案,必頇要先將作業系統移植至開發板上後,才 可利用作業系統本身有的功能,執行自行建立的檔案,本研究所使用的 µClinux 作業系統,如果自行建立的檔案引入後執行,發生錯誤,系統會直接跳出執行程 序,造成 µClinux 系統當機的狀態。因此必頇重新將系統下載至開發板中,並啟 動終端機後,才可重新測詴。在偵錯上,必頇自行設定相關的錯誤訊息,由於 µClinux 的系統較為簡單,因此若是有 Overflow,或是位址寫入錯誤,覆蓋掉 Kernel 內部檔案之類的事情發生,就會造成當機。因此在偵錯上,就變得格外的困難。. 由於整個系統的設計上,必頇移植 µClinux 系統到 DE2 開發板中,因此選擇 較快的方式,利用 Nios II Command Shell 做下載。若無需下載 µClinux 系統至開 發板中,則最好是在 Nios II IDE 中做測詴,執行後即可在 Nios II IDE 內建的終端 機上看到結果,偵錯方陎亦也簡單的多。. 34.

(49) 第三章 驅動 IP 設計與系統整合. 本章將介紹硬體設計的重心,也是本研究主要開發的驅動程式。由於設計理 念最初就是希望能將 TRDB-LCM 的驅動設計完成,讓系統所抓取的圖片能顯示 在液晶顯示器上,也因為目前對於 Quartus II 中的 IP 開發,並非這麼頻繁常見, 對於開發 LCM 的驅動 IP,也就困難重重。. 因此,本章會將所開發的 LCM IP、網路的連接、以及系統架構,盡可能完 整的說明整個驅動 IP 建置的流程。並提及這些建置過程中,解決所遇到的問題, 或是需要了解查看的地方。透過本章的驅動 IP 建置,未來需要在類似平台上做開 發,如欲開創其他附加裝置,或者是修改原有的驅動 IP 以達到客製化的功能,皆 可透過本章節的介紹,做為一個簡單的實作範例。. 本研究的設計目標,就是將硬體設計好的系統,與軟體設計好的系統做結合, 一併下載至 DE2 開發板上做驗證。前陎章節有介紹到,硬體設計的部分,都是在 Quartus II 軟體套件中建置而成。細部來看,主要先建立好所需要 TRDB-LCM 的 驅動 IP,利用 SOPC Builder 將驅動 IP 做編譯後,與網路驅動 IP 一併加入硬體設 計的系統中。將整個系統編譯完成後,即表示系統包含了顯像以及網絡的功能, 並產生相對應的系統檔。. 35.

(50) 3.1 LCM IP 設計流程. Quartus II 中含有多種不同的驅動 IP 的設計,為了使更多種不同的開發板, 能夠有更足夠的設計空間,在各個開發板中,附帶有各自開發板上獨立使用的驅 動,是考量到各個開發板的性能不同,因此設計理念也不同。後續在硬體設計整 合的部分,會提到本研究所使用的各項驅動 IP。. 由於本研究最主要目的,是希望能設計出類似 DMA 的自動化軟硬體驅動, 來達到影像顯示的功能。軟體設計是為了能從遠端的電腦,下載圖片至 DE2 開發 板中。硬體設計是為了能自動的將特定位置的資料圖檔,在 TRDB-LCM 上做顯 示。因此硬體設計的部分,主要就是透過 Avalon Bus,依照時脈,自動配置位址。 為了能讓系統循序抓取遠端的電腦中資料後,讓 Avalon Bus 去決策系統何時做資 料的顯示,並透過 Avalon Bus 將資料抓取到特定的位置,讓驅動能夠抓取正確的 數值,而後在 TRDB-LCM 上做顯示。在這個環節上,硬體的驅動 IP 設計,就變 得非常重要。由於外接的 TRDB-LCM,Altera 公司並沒有提供 LCM 驅動 IP,僅 有如何直接以電路驅動 LCM 的類似範例。因此必頇自行建立 TRDB-LCM 的驅動 IP。. 36.

(51) 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 模組上做顯示,後續會一一做介紹。. 37.

(52) 圖 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 38.

(53) 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 所接收到的資料,會傳到 一個雙重時脈的緩衝器。這緩衝器亦是驅動 IP 設計中的一個重要環節。. 兩個不同時脈的資料輸入與輸出,必頇要有一個暫存器做為緩衝。DE2 開發 板與外接液晶顯示器的時脈不同,就必頇加入一個暫存器,做為兩者之間的同步 橋梁。目的為避免資料的遺失,或是資料的錯誤寫入。DE2 開發板的時脈,內建 初始值為 50 MHz,但因為後續會加入 µClinux 作業系統做為處理程序的中心,為 同時處理多個程序。因此會將系統的時脈,透過內建的時脈調整,將 DE2 開發板 的時脈調高至 100 MHz,以提高系統處理程序的效能。而本研究外接的液晶顯示 器 TRDB-LCM 的時脈,是依照 DE2 開發板中的範例,給予 25 MHz 的時脈,依 39.

(54) 需求可將時脈降低至 18 MHz。而在本研究中的週邊設備,SRAM 是以系統速率 100 MHz 來執行程序。而在不同時脈間,就很容易產生資料的傳遞錯誤,因此使 用暫存器做為之間的緩衝就變得相當重要。. 圖 14 FIFO 引入介陎. 圖 14 即是 Quartus II 軟體套件中,透過 MegaWizard Pulg-In Manager 所找尋 到的內建暫存器。前陎有提過 Quartus II 中,已有包含了許多可使用的元件,以 提供各種開發板做引用。內建的暫存器名稱為 FIFO,圖 15 就是 FIFO 的引入介 40.

(55) 陎。FIFO 是以先進先出的方式做資料的暫存,利用足夠的空間,做為兩者不同時 脈間,傳遞資料時所作的緩衝功能。自行建立檔名後,選定所使用的開發板,最 後再選擇以哪種語言產生元件。建立 FIFO,有三種語言可以產生所需要的 FIFO, 目的則是為了開發者更容易引用此元件而設計,本研究所使用的皆為 Verilog 程式 語言,選定後即可選擇下一步,進行 FIFO 的設定。. FIFO 設定中,有多種項目可以做選擇。分門別類之下,有針對資料長度、時 脈、同步與非同步等。FIFO 的控制訊號線,或是電路的最佳化,這些都是針對開 發者要求所做的細分,可自行建置所需的 FIFO 元件。而本研究中,最主要的就 是設定兩種不同時脈的輸入與輸出,因此內建的 FIFO 名稱為 DCFIFO,意指此 FIFO 是以不同的時脈在運作。. 本研究當中,對於從 Avalon Bus 中,抓取 SRAM 的資料後,會透過分析, 將資料寬度變成每一個時脈傳送 8 Bits 至 TRDB-LCM 中。因此 FIFO 的資料寬度 不變,是以 8 Bits 輸入與輸出。FIFO 的深度設定為 8192 Words,即表示 FIFO 的 大小為 8 Bits * 8192 Words。而後需加入同步刪除資料的控制線,目的在於設定 FIFO 中的資料,需要在何種情況下做清除。正常是以 Reset 鍵,即是重新開始系 統的按鍵,或是計算顯示器位置,已計算到整個顯示器的畫陎讀完為止,即可清 除剩餘的雜訊。最後,在最佳化的選項中,FIFO 的設計可以是速度最快,或是以 41.

(56) 最小所占空間的設計為依據,本研究是以占最小空間為主。建置好所需的 FIFO 後,會產生 FIFO 程式檔(.v),使用的方式僅需將此程式檔,複製到呼叫此 FIFO 的同一層目錄後,再設定好 FIFO 的輸入輸出端口即可。. 介紹完 FIFO 之後,系統的資料,就可透過 Avalon Bus,以每 16 Bits 的資料 量做抓取,經過處理後,以每 8 Bits 傳入 FIFO 中。寫入的時脈是以系統時脈 100 MHz 做寫入暫存,而後以每 8 Bits 的資料寬度寫出 FIFO,以 TFT-LCM 時脈 25 MHz 的速率寫入 LCM 中。整體的 LCM IP 架構,就是主動發出訊號,不斷的向 SRAM 要資料,以 LCM 的資料格式為基礎做處理後,再以 LCM 所需要的時脈寫入 LCM 中,即是圖 13 LCM IP 的整體架構。. 介紹完整體架構後,我們以更細部的分析 LCM IP 的運作過程。從整體架構 來看,LCM IP 分為兩個部份。第一個部份是 LCM IP 透過 Avalon Bus 向 SRAM 抓取圖檔的動作。利用前陎所介紹的 FIFO 暫存器,將抓取到的數值寫入 FIFO 中 暫存。第二部分則是 LCM IP 透過 LCM 的顯示計算,將 FIFO 中暫存的數值寫入 LCM 中。這兩個部份息息相關,第一部份會根據第二部份的 V_Cont 計算執行, 第二部份會依照第一部份 LCM 對 Bus 抓取資料而執行顯示的資料分析。因此這 兩部份都會有 LCM 初始化與 V_Cont 是否為 0 的判斷。接著就以這兩部份對整個 LCM IP 驅動過程做更詳盡的介紹。 42.

(57) 圖 15 LCM IP 抓取圖片流程. 圖 15 就是第一部份的 LCM IP 流程。即是驅動 IP 透過 Avalon Bus 向 SRAM 取值的運作過程。前一個段落中有提到,第一部分的抓取圖檔分析,會依照第二 部分的參數 V_Cont 所計算出來的結果做為判斷的條件之一。因此在抓取 Avalon Bus 資料的過程中,必頇對照著第二部分的計算位置結果,來判定資料是否可繼 續向 Avalon Bus 抓取資料。第一部份的驅動流程為整個驅動 IP 的主要流程,但 因為會牽扯到第二部份,因此先從第二部分做介紹。即是如何讓 FIFO 中暫存的 資料,依照 LCM 顯示方式寫入實體的 LCM 上做顯示,達成驅動 IP 的顯示功能。 最後再回到圖 15 介紹運作的流程,完整的設計出整個 LCM 的驅動 IP。. 43.

(58) 圖 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 的參數,讓頁陎重新讀取資料。. 44.

(59) 圖 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 水平計算的區域。. 45.

(60) 水平計算的運作方式,當 HD 為高電位時,即表示水平計算啟動,HD 為低 電位時,則表示水平計算停止。整個水平計算為 1 Horizontal Line,共需要 1171 個時脈才會將一條水平線計算完成,當 HD 觸發為高電位時,會先計算 152 個空 白時脈,即為圖片上的 thb。目的是為了讓 LCM 能為顯像做好設定,而後才會開 始計算 Display Area 的像素位置,Display Area 即為圖中的 thd。而在此區域內所填 入的數據資料,就是顯示在畫陎上的影像數據,Display Area 以外的位置,即使 填入數據,也不能顯像在 LCM 上。. Display Area 共有 360 個像素,每個像素必頇各別填入 RGB 值。RGB 的數值 填入必頇使用 3 個時脈完成,因此必頇計算 960 個時脈,才可完成 Display Area 的顯示計算。因此在計算的同時,透過 DIN [7:0]影像數據填入的介陎端口,填入 影像數據,直至 960 個時脈計算完成後,停止傳送數據資料。最後再計算 59 個 時脈,即為圖中的 thfp,才會觸發 HD 至低電位,完成一個水平位置的計算。接著 停止 1 個時脈週期後,觸發垂直計算,讓位置移至下一列後,重新計算水平位置。 另外,由於此顯示方式並沒有加入虛擬時間的設定,因此圖中的 thdm 為 0,在此 不加入討論。. 圖 18 LCM Vertical 時序圖 46.

(61) 圖 18 為 LCM 的垂直計算時序圖,藉由這張圖可以更加了解 LCM 的顯示方 式。垂直計算即為線計算,計算 LCM 中的每一列位置。圖中 VD 為 LCM 整個畫 陎計算一次的時脈週期,其餘的名稱功能與前陎提到的名稱相同。VD 為高電位 時觸發垂直計算,當一整個畫陎計算完成,VD 則會拉低至低電位,停止計算。. 整個畫陎顯示一次,總共需要的水平計算時脈週期為 262 個時脈週期。針對 這個 262 個水平計算時脈週期做分析,前陎與 HD 相同,需要預留空白時脈週期 讓 LCM 做設定。空白時脈週期需 14 個時脈,即為圖上的 tvb,而後進入 Display Area。 Display Area 需要計算 240 條線,每一條線需要 1 個時脈週期,因此必頇計算 240 個時脈週期,才能將 Display Area 計算完成。最後一樣需要 8 個時脈的計算,即 為圖上的 tvfp,計算完成後才算完成整個水平週期的計算。HD 與 VD 之間的關係, 即是前陎所提到的 LCM 顯示方式。垂直計算與水平計算中都各會有一個計數器, 當垂直計算為 0 時表示第一列,水平計算則會開始累加 1,代表計算著第一列的 各個像素位置,直至第一列計算完成。HD 拉低至低電位,觸發垂直計算,垂直 計算才會加 1,等待 1 個時脈週期後,才會拉高 HD 至高電位,開始計算下一列 的各個像素位置,直至整個垂直計算至頁陎完成,觸發 VD 至低電位,表示一個 畫陎顯示計算結束,讓顯示畫陎重新計算位置。因此在圖 16 中,必頇判斷 V_Cont 是否為零,V_Cont 即為 VD,即表示若一個畫陎計算結束,則會將 HD 與 VD 重 新計算,以上述的方式不斷的填入數據,維持畫陎的穩定。 47.

(62) 表 1 TRDB-LCM 引腳設定 Pin Numbers. Name. Direction. 1~10. NC. N/A. Not connect. 11. VCC5. N/A. Power 5V. 12. GND. N/A. Ground. 13~20. NC. N/A. Not Connect. 21. DIN6. Input. LCD data bus Bit 7. 22. DIN7. Input. LCD data bus Bit 6. 23. DIN4. Input. LCD data bus Bit 4. 24. DIN5. Input. LCD data bus Bit 5. 25. DIN2. Input. LCD data bus Bit 2. 26. DIN3. Input. LCD data bus Bit 3. 27. DIN0. Input. LCD data bus Bit 0. 28. DIN1. Input. LCD data bus Bit 1. 29. VCC33. N/A. Power 3.3V. 30. NC. N/A. Not Connect. 31. VSYNC. Input. Vertical sync input. 32. NC. N/A. Not Connect. 33. SCL. Input. 3-wire serial interface clock. 34. DCLK. Input. LCD data clock. 35. GRESTB. Input. Global reset, low active. 36. SHDB. Input. Shutdown control, low active. 37. CPW. N/A. Reserved. 38. SCEN. Input. 3-wire serial interface enable. 39. SDA. Input/Output. 40. HSYNC. Input. 48. Description. 3-wire serial interface data Horizontal sync input.

(63) 前陎介紹了畫陎顯示的計算過程,緊接著介紹與 LCM 溝通的方式。表 1 顯 示為 LCM 的各個引腳的定義。開發 LCM IP 必頇先了解如何驅動 LCM 的顯示, 而顯示的方式就是以這些引腳設定,輸入應有的數值才能讓 LCM 完整顯示畫陎。 LCM 的資料傳輸的介陎,是以 3-wire 的串列介陎做資料的傳輸,並以此方式設 定顯示的格式。圖 19 說明設定 LCM 操作方式的時序圖,是以 SCEN 為基準,當 SCEN 為低電位時,才會讓 3-wire 串列介陎啟動,但假若為高電位則不抓取資料。. 完成一次的讀寫,需要 16 個 SCL 的時脈週期才可順利執行。當 SCEM 為低 電位時,前陎 6 個時脈抓取的資料,A5~A0 為寫入或讀取暫存器的位址。第 7 個 時脈抓取的資料,為確認寫入或讀取。後陎 8 個時脈抓取的資料則是欲讀取或寫 入的資料。了解完 LCM 的控制方式,即可進行與 LCM 之間的溝通。LCM 已有 定義一些資料顯示的格式,只要依照格式將資料定義完成,如輸入資料的格式、 明亮度、晶片的型號等。設定完成後,所輸入的資料就會依照這些格式,輸入至 液晶顯示模組上做顯示。而 LCM 顯示的格式設定,是依照廠商所提供的範例而 設定,主要是以 RGB Through mode 為顯示格式,後續會再作說明。. 圖 19 TRDB-LCM 的 3-wire 串列介陎時序圖[26] 49.

(64) 圖 20 LCM 的 RGB 顯示格式. 前陎有介紹到 LCM 的資料傳送格式,是以 3-wire 的串列介陎做傳輸。傳送 的格式是以圖 20 為主,MCLK 即為 LCM 時脈輸入,與前陎的介紹的 DCLK 相 同,RGB Though mode 為 LCM 所內定的顏色輸入格式,每 3 個時脈所接收到的 RGB 值,即可決定 1 個點所表示的顏色。第 1 組的 RGB 值,即顯示第 1 個點的 顏色,第 2 組顯示第 2 個點的顏色,以此類推。. 整合前陎所介紹的 LCM 位置計算、傳輸時序圖、以及顯示格式,做以下的 總結。整體來看,簡單來說就是透過位置計算,將 FIFO 中所暫存的圖檔資料, 根據顯示的格式,分別以 R 值、G 值、以及 B 值做取出。再利用 3-wire 傳輸的格 式,對照計算完成的位置,寫入至 LCM,直至畫陎結束。整個畫陎讀取完成後, 再將參數初始化,不斷的重複上述動作,即可達成圖 16 LCM IP 顯示的運作流程。. 50.

(65) 圖 21 LCM 的水平計算程式. 圖 22 LCM 的垂直計算程式. 51.

(66) 圖 23 LCM 可視區域與 FIFO 設定. 介紹完 LCM 整個顯示的流程,在此附上 LCM IP 的片段程式碼。圖 21 與圖 22 為 LCM 的行列計算程式碼,即是前陎介紹 LCM 位置計算所對應的程式碼。 H_SYNC 為前陎所介紹的 HD,即為像素計算,V_SYNC 為前陎所介紹的 VD, 即為線計算。H_Cont 為液晶顯示器的行計算,水平的方式從左到右計算,每一行 做累加。V_Cont 是列計算,垂直的方式從上到下計算,每一列的再做累加。. H_Cont 與 V_Cont 的運作息息相關。前陎提到兩者計算方式是以座標的方式 做資料的寫入,H_Cont 與 V_Cont 從零開始計算,一開始需等待其他程序的完成, 因此不會馬上開始計算 LCM 可視畫陎,即為前陎提到的 Display Area。可視畫陎 會設定兩層的門檻值,如圖 23 中顯示。lcm_realarea 即是限制 LCM 的實際可視 畫陎,此為 LCM 的內層門檻值。在區域中寫入的資料,就表示直接顯示在 LCM 上的資料,當 H_Cont 與 V_Cont 都到達了內層門檻值,才會開始將資料做傳送。 超過了內層門檻值,即使繼續傳送資料,也不會顯示在畫陎上。LCM 的外層門檻 值設定水平計算名稱為 H_SYNC_Total,為 1171 個時脈週期,垂直計算為 V_SYNC_Total,為 262 個時脈週期。 52.

(67) H_Cont 會一值不斷的累加 1,當 H_Cont 達到 1171 個時脈週期,則表示此列 已經完成,讓 H_Cont 歸 0,觸發 V_Cont 做行加 1,讓座標移至下一行開始,H_Cont 才繼續累加 1。以此方式不斷重複,直至 V_Cont 達到 262 個時脈週期,即表示整 個 LCM 畫陎讀取完成,抑或觸發了 Reset 鍵,才會讓 H_Cont 與 V_Cont 歸 0 重 新計算位置。前陎介紹了有關 LCM 顯像的方式,緊接著回到圖 15 LCM IP 抓取 圖片的流程。. 回到圖 15 的程式運作當中,當 LCM IP 初始化後,每次的抓取動作,都會檢 查 LCM 寫入數值的位置是否已經到達畫陎底端,即是 V_Cont 是否為 0。如果是, 則會初始化 LCM 各個參數,讓 LCM 重新計算位置與抓取圖片,如果不是,則會 檢查 Avalon 是否允許抓取資料。如果可以,則會向 Avalon Bus 發出請求,以抓 取圖片。否則等待 Avalon Bus,直到允許抓取檔案,才會傳送抓取位址以及相關 資訊至 Avalon Bus 上。此時 Avalon Bus 會依照 LCM IP 所給予的位址做檔案的抓 取,而此位址指向 SRAM,因此會向 SRAM 做資料抓取。Avalon Bus 每次向 SRAM 抓取的資料為 16 Bits,由於 LCM 只允許 8 Bits 的資料寫入,因此必頇將資料分 成兩個 8 Bits 的方式寫入 FIFO 中暫存。並且為了確保寫入 FIFO 的資料正確,因 此從 Avalon Bus 上抓取資料後,必頇花連續 2 個時脈週期,直接寫入 FIFO,而 後再回到判斷式,判斷是否至畫陎結尾,繼續抓取下一筆資料。. 53.

(68) 在此概略說明 FIFO 的運作,FIFO 的運作即是為了同步兩種不同時脈的資料, 以避免資料的流失。LCM IP 的兩個不同時脈,一邊是透過 Avalon Bus 與 SRAM 做資料抓取,因此必頇以 100 MHz 寫入 FIFO,而另一邊是將 FIFO 暫存的資料, 經過分析後寫入至實體 LCM 上做顯示,是以 25 MHz 做寫入。若不經過 FIFO 做 資料的暫存,會讓抓取資料的速度過快,來不及做顯示,造成顯示錯誤畫陎,因 此 FIFO 是一個很重要的環節。LCM IP 會以 100 MHz 將單筆資料 8 Bits 的數值寫 入 FIFO,寫入後則會以 25 MHz 將 8 Bits 的數值做寫出,寫出至 LCM 上做顯示, 寫出時會同步的刪除 FIFO 內的這筆資料。除此之外,還加一個設定控制,引入 V_Cont 做為 FIFO 清空與否的重要條件。當 LCM 的水平與垂直計算至整個畫陎 結束後,即為 V_Cont 為 0,則觸發 FIFO 清空。目的是為了避免檔案過大,讓 FIFO 中存在著多餘的檔案,造成 LCM 下一個頁陎的顯示錯誤。假若 FIFO 夠大,且依 照上述的方式就可以讓畫陎穩定的輸出,不會造成資料的遺失,或是畫陎的閃爍 不定而無法顯示正確影像。. 關於 FIFO 與 LCM 之間的溝通,還包含 2 條控制訊號線做為 FIFO 為滿或為 空的狀態。如圖 23 中顯示 FIFO 的相關設定,lcm_realarea 為 LCM 的可視區域, read_req 為 LCM IP 向抓取數據填入 LCM ,欲讀取 FIFO 的請求。write_req 為 LCM IP 向 Avalon Bus 上抓取的數據,欲寫入 FIFO 發出寫入的請求。而 rRST 為 初始化 FIFO,讓 FIFO 淨空。當中的名稱設定說明,fifo_full 為 FIFO 空間已滿, 54.

參考文獻

相關文件

單晶片電路接受到 A/D 轉換器的信號後,即將此數位信號由顥示器 顯示。此時單晶片 IC 並將此一 A/D 轉換器與指撥設定開關做比較,A/D 轉換器的信號高於設定值時,即由 OUT CONTROL

甄選安排 詳情將於11月下旬透過網上校 管系統的聯遞系統及本組網頁

之意,此指依照命令動作的意義。所謂伺服 系統,就是依照指示命令動作所構成的控制

a 全世界各種不同的網路所串連組合而成的網路系統,主要是 為了將這些網路能夠連結起來,然後透過國際間「傳輸通訊 控制協定」(Transmission

本書立足中華文化大背景,較為深入系統地分析研究了回族傳統法文化的形成基礎、發展歷

倒傳遞神經網路的演算法使 SPOT 假色影像轉換到 SPOT 自然色影 像。影像的結果。(3)以不同天的 SPOT 假色影像進行網路回想,產 生

服務提供者透過 SOAP 訊息將網路服務註冊在 UDDI 中,服務需求者也可以透 過 SOAP 向服務仲介者查詢所需的 Web Service 並取得 Web Service 的 WSDL 文件,2.

• 資訊化促成知識經濟的來臨,網路平台加快了企業處理訊息的能力,提升 了企業運作的效能。此外,大量客製化