基于Avalon總線的可配置LCD控制器IP核的設計
基于NiosII 軟核的SOPC(System ON Programmable Chip)是Altera 公司提出的片上可編程系統(tǒng)解決方案,它將CPU、存儲器、I/O接口、DSP 模塊以及鎖相環(huán)(PLL)的系統(tǒng)設計所必須的模塊集成到一片F(xiàn)PGA 上,構成一個可編程的片上系統(tǒng),使所設計的電路在其規(guī)模、可靠性、體積、功耗、功能、上市周期、開發(fā)成本、產品維護以及硬件升級等多方面實現(xiàn)最優(yōu)化。
目前在Altera SOPC Builder 下集成了包括UART、SPI、Ethernet、SDRAM、Flash、DMA等控制器的IP 核。此外,用戶也可以根據(jù)系統(tǒng)的需要自己設計或者購買第三方廠商的IP 核通過Avalon 總線像搭積木一樣方便地將這些IP 捆綁的系統(tǒng)上。但是在顯示接口上,Altera公司只提供了一個16*2 的字符型LCD 控制器的IP 核,只能用來顯示數(shù)字和英文字母。如用戶需要圖形顯示(如MP4 和PDA)則需要外接專用控制芯片或自己設計IP 核,使用起來很不方便。因此我們設計一個基于Nios II 系統(tǒng)的可配置LCD 控制器的IP 核,本IP 核可以方便的通過Avalon 掛接到Nios II 的系統(tǒng)上??紤]到目前LCD 顯示屏的實際需要,我們設計的LCD 顯示控制IP 核具有以下主要功能:
·以Avalon 總線流傳輸模式提供接口;
·為LCD 屏提供掃描時序信號和顯示數(shù)據(jù);
·提供可以選擇的分辨率,最大可以支持1024*768;
·可以通過軟件配置顯存的基地址和大小;
1. Avalon 總線規(guī)范
1.1 總線概述
Avalon 總線是Altera 公司為SOPC 系統(tǒng)開發(fā)的一種專用的內部連線技術,是一種理想的用于系統(tǒng)處理器和外設之間的內聯(lián)總線。它是構建在Nios II 軟核的基礎上,由Altera 公司提供SOPC Builder 系統(tǒng)設計工具自動生成。
Avalon 總線支持多個主外設,任何一個主外設都可以直接進行存儲器訪問(DMA),而無須Nios II 處理器的干預。一般的系統(tǒng)總線(如AMBA 總線)都是采用主端總裁機制,而Avalon 采用DMA 從端仲裁機制,能夠實現(xiàn)真正意義上的多模塊DMA 并行傳輸,而不相互影響。
Avalon 總線允許多個主端口連接到總線模塊,實現(xiàn)總線的的并發(fā)多主端口傳輸?shù)墓δ?,而總線模塊不需要額外的特殊信號;當有多個主外設試圖同時訪問同一外設時,由Avalon總線模塊內部的從端口仲裁邏輯來處理沖突,對于主端口來說,它并不會感到有另一個主端口也在爭用該外設,而是簡單的發(fā)現(xiàn)它的等待請求信號一直有效,直到目標外設從端口準備好來處理自己的請求。因此,多個主外設只要不是同時訪問同一個從外設,即可同時進行總線傳輸。仲裁的詳細信息被封裝在總線內部,主外設和從外設的接口是一致的,與外設的數(shù)量無關。
1.2 Avalon 總線流傳輸模式
Avalon 規(guī)定了各種傳輸模式,這里只介紹本IP 核所使用的流傳輸模式。關于其他的總線模式讀者可以Avalon 的總線規(guī)范。
流傳輸模式是在流模式主外設和流模式從外設之間建立一個開放的信道以供連續(xù)的數(shù)據(jù)傳輸。該信道使得只要存在有效數(shù)據(jù),數(shù)據(jù)便能在主從端口對之間流動,主外設不必為了確定從端口是否可用而不斷地訪問從外設的寄存器。流傳輸模式使得主從端口之間的數(shù)據(jù)吞吐量達到最大,同時避免了從外設數(shù)據(jù)溢出。流傳輸模式最適合DMA 傳輸。一個只包含簡單的流控制信號和一個計數(shù)器的DMA 控制器就可以用來在一個從外設和一個存儲器之間連續(xù)地傳輸數(shù)據(jù)。
由于數(shù)據(jù)流是從Avalon 總線流向LCD 控制器,所以是流模式的從端口寫傳輸。圖1 顯示了流模式從端口寫傳輸?shù)哪P汀?/p>
除了基本從端口傳輸中使用的信號外,流模式外設的接口中又引入了readyfordata、dataavailable 和 endofpacket 三個信號。流模式從端口就是指使用了一個或多個上述信號的從端口。readyfordata 有效表示外設準備好接受 Avalon 總線模塊的寫傳輸;dataavailable 有效表示能夠為來自 Avalon 總線模塊的讀傳輸提供數(shù)據(jù)。Avalon 總線模塊只在 readyfordata或 dataavailable 有效時才會發(fā)起傳輸行為。endofpacket 信號的含義取決于用戶設計。
2. Avalone 流模式LCD 控制器IP 核設計
LCD 控制器按功能可劃分為三個模塊:接口模塊,數(shù)據(jù)處理模塊和時序產生模塊。接口模塊主要用來對系統(tǒng)進行配置,獲取系統(tǒng)狀態(tài)信息以及從內存讀出將要顯示的數(shù)據(jù)信息;數(shù)據(jù)處理模塊根據(jù)系統(tǒng)的配置信息,對讀入控制器的內存數(shù)據(jù)進行相應的處理,以符合用戶設置的顯示要求;時序產生模塊產生顯示時序信號,使得系統(tǒng)在不同的配置下都能產生與之相應的精確時序,以保證圖象的正確顯示。
在具體實現(xiàn)時,這三個部分又可以劃分為不同的功能模塊來完成系統(tǒng)的總體功能。整個模塊包括配置寄存器接口模塊、DMA 接口模塊組成和異步FIFO 模塊,時序產生部分由時序產生模塊構成。
2.1 DMA 接口模塊
一般情況下,LCD 顯示需要進行大批量的數(shù)據(jù)傳送。在標準 VGA(640×480 60Hz)模式下,每個像素點的掃描周期只有40ns。如此高速的數(shù)據(jù)傳輸,如果直接通過CPU 來操作,將會消耗大量的CPU 時間。為了提高CPU 的工作效率,我們在Nios II 下利用DMA(Direct Memory Access,直接存儲器訪問)來完成。利用DMA 控制器在LCD 控制器和顯示存儲器SDRAM 之間建立一條專用的DMA 傳輸通道,通過DMA 控制器自動的讀去圖象數(shù)據(jù),不需要CPU 干預。
在DMA 傳輸時,首先需要由CPU 對DMA 進行初始化,設置顯示存儲器的基地址和長度以及LCD 控制器輸入寄存器的地址,然后打開DMA 傳輸通道,使DMA 在沒有CPU 干預的情況下直接從顯示存儲器讀取顯示數(shù)據(jù)傳送到LCD控制的FIFO中。Nios II 可以在DMA暫停傳輸?shù)钠陂g操作SDRAM 中的顯存,完成LCD 顯示圖像的更新。
DMA 接口采用Avalon 主設備端口來實現(xiàn)。
2.2 配置積存器接口模塊
系統(tǒng)可以通過配置寄存器接口模塊對LCD 顯示控制器進行各種功能配置;LCD 控制器也可以通過接口模塊向系統(tǒng)反饋所需的狀態(tài)信息,從而實現(xiàn)對系統(tǒng)狀態(tài)的檢測和控制。通過針對不同種類的LCD 屏幕和不同的顯示模式提供相應寄存器,可以保證對于各種LCD 顯示屏的兼容。
2.3 異步FIFO 模塊
由于總線接口模塊和LCD 控制器工作在不同的時鐘域,如果直接傳送數(shù)據(jù)將會使電路進入亞穩(wěn)態(tài),無法正常工作。所以使用異步FIFO 做為接口在兩個時鐘之間傳遞數(shù)據(jù)。典型的異步FIFO 由異步雙端口RAM 和控制邏輯構成。[!--empirenews.page--]
2.4 LCD 時序產生模塊
通過讀取配置寄存器獲得像素時鐘,行周期,幀周期,同步頭寬度以及時鐘分頻系數(shù)等信息后,LCD 時序產生模塊產生LCD 顯示需要的行同步信號、幀同步信號以及復合消隱信號。圖7 描述了LCD 接口時序發(fā)生模塊的接口信號
3. LCD 控制器IP 核的仿真調試與安裝
3.1 LCD 控制器IP 核的仿真調試
本IP 核使用Verilog HDL 來編寫,首先在Modelsim6.1 下先進行RTL 級的功能仿真,當所有功能都滿足要求時,就可以使用綜合工具綜合后加入延時信息進行進行時序仿真。如果時序仿真也滿足電路的設計要求,就可以當做一個NiosII 系統(tǒng)自定義的組件加到Nios II 系統(tǒng)中去。
3.2 LCD 控制器IP 核的安裝
Avalon 流模式的 LCD 控制器需要安裝到 SOPC Builder 中,以便將其加入到NiosII 系統(tǒng)中。
這里的LCD 控制器是一個典型的流模式自定義外設。啟動DMA 傳輸后,DMA 控制器將批量數(shù)據(jù)送往LCD 控制器,因此也可將LCD 控制器看成 FIFO 類型的存儲器外設。選擇Avalon Components->Legacy Components->Interface to User Logic,加入LCD 控制器的IP 核。
3.3 實際測試效果圖
實際測試是在Altera的DE2開發(fā)板上進行的。使用的LCD屏是夏普公司的800*600型號為LQ080V3DG01的TFT LCD屏,實際的顯示效果圖如圖9所示
4. 總結
本文討論了基于Avalon 總線流傳輸?shù)呐渲肔CD 顯示控制器IP 核的設計,根據(jù)自頂向下的設計思想,將IP 核進行層次功能劃分設計,并對IP 核的仿真驗證,最后加入到Nios II系統(tǒng)中。該IP 核經測試效果良好。由于本IP 核是可配置的,具有很好的移植性,可以方便的應用以Nios II 為核心的各種需要圖形顯示的嵌入式系統(tǒng)中。