陳 武,夏坤健,袁 靜
(重慶金美通信有限責任公司,重慶400030)
基于FPGA的P2020處理器顯示接口設計
陳 武,夏坤健,袁 靜
(重慶金美通信有限責任公司,重慶400030)
針對目前使用的飛思卡爾高性能通信處理器P2020無內置LCD控制器,不方便在某些需要顯示界面的中小設備中直接應用的問題,提出了基于CPU+FPGA的顯示接口設計方案,給出了硬件原理框圖、FPGA邏輯實現原理框圖以及設計結果,在項目中成功應用并滿足需求。
現場可編程門陣列;LCD控制器;RGB接口;有限狀態機
在中小型通信設備尤其是需要滿足嚴酷工作環境的設備中,需要一個簡潔的顯示窗口時,由于目前大部分通信處理器沒有提供顯示接口,很多方案設計時選擇增加專用顯示控制器或增加負責人機界面的協處理器,這樣的方案既增加設備成本又增加PCB尺寸。
隨著FPGA技術的成熟應用,大部分通信設備采用的是基于CPU+FPGA的方案實現,因此為系統在FPGA中添加設計LCD控制器,是一種方便、經濟實用的方案。本方案就提出了基于xilinx公司XC3S200AN和處理器P2020的LCD顯示方案及其設計實現。
系統采用CPU+FPGA為主架構,采用SDRAM存儲芯片作為LCD控制器的顯示緩存。處理器采用飛思卡爾公司新推出的低功耗45nm高性能雙核處理器P2020E,該處理器最高主頻為1.2GHz,集成PCIE、SGMII等接口,系統原理如圖1所示。

圖1 系統原理框圖
3.1 LCD控制器邏輯組成
系統FPGA使用XC3S200AN,該FPGA內部集成flash,不需要外部配置芯片,并包含288Kb的塊RAM,系統使用這些內部塊RAM作為讀寫緩存,調度SDRAM的讀寫。
圖1中FPGA部分為LCD控制器邏輯組成及各模塊的數據流連接關系。處理器通過總線將顯示內容寫入數據緩存,總線讀寫控制模塊通過判斷數據緩存以及顯示緩存的狀態,將數據送至SDRAM控制器,SDRAM控制器負責SDRAM數據的讀寫控制。LCD時序控制模塊從顯示緩存中讀取顯示數據并將其轉換為RGB接口數據格式送至外部的LCD顯示屏。
3.2 LCD控制器設計原理
本系統使用TFT顯示屏,分辨率為320×240,刷新率60Hz。根據TFT顯示屏原理,其顯示總線接口主要包括像素時鐘(DOTCLK)、像素數據(DATA)、數據使能(DEN)、行同步信號(HSYNC)、場同步信號(VSYNC)。本系統場同步信號(VSYNC)頻率為60Hz,每一幀包含240行顯示數據,則行同步信號(HSYNC)的周期為1/(60×240)s,加上場回掃時間tvFP及tvBP,那么行同步的周期為15KHz,又因一行有320個像素點,同理計算,像素時鐘(DOTCLK)可取5MHz。系統時鐘(sys_clk)為100MHz,與DOTCLK一樣均由FPGA內部PLL輸出。
3.3 LCD時序產生
時序產生模塊使用兩個簡單關聯的有限狀態機(Finite-state machine,FSM)實現,其中HBP、HFP、VBP、VFP以及HSYNC和VSYNC的極性設計為變量,可由處理器通過參數寄存器模塊按需進行設置。圖2是LCD接口時序信號產生狀態機的狀態圖。其中H_cnt、D_cnt以DOCLK時鐘計數,V_cnt以H_start_flag計數,HBP、HFP、VBP及VFP為參數寄存器的值。用VHDL語言設計實現圖2狀態機,通過Modelsim仿真,其仿真結果如圖3所示,滿足LCD接口時序要求。
3.4 SDRAM控制器及讀寫控制
SDRAM控制器完成SDRAM上電初始化及讀寫控制。使用SDRAM必須先進行初始化,設置SDRAM工作模式。根據使用的芯片手冊,其初始化流程如圖4所示。其中預充電命令需要對所有bank進行預充電。各命令間均需要至少等待上一條指令執行的時間。在使用SDRAM期間為保持數據內容,SDRAM需要定時自動刷新,這一時間間隔要求由芯片手冊給出。本系統使用的SDRAM芯片要求自動刷新命令的最大間隔時間為15.625μS。

圖2 LCD時序產生狀態機

圖3 接口時序仿真結果

圖4 SDRAM初始化流程
系統利用兩個內建FIFO及LCD接口回掃時間(HFP、HBP)調度SDRAM數據的讀寫。首先在判定CPU接口FIFO的empty_flag有效時讀取顯示FIFO的狀態和RGB總線狀態。當FIFO為full或者almos empty_flag無效時則將CPU接口FIFO的數據讀取寫入SDRAM中,否則應從SDRAM中讀取數據存入顯示FIFO中。當顯示FIFO的almos empty_ flag有效時,則判斷RGB總線狀態是否處于回掃(HFP或HBP),若是則將CPU接口FIFO的數據讀取寫入SDRAM中,否則應從SDRAM中讀取數據存入顯示FIFO中。
3.5 內建FIFO
顯示緩存FIFO由FPGA內部塊RAM設計為環形FIFO緩存,并有指針清零使能。該使能位用于復位塊RAM讀寫指針,每當一幀開始時使能該標志以使得FIFO中數據與顯示坐標點一一對應。
由于P2020的LocalBUS的高16位地址與數據位為復用接口,需先對地址鎖存,之后與數據一同存入CPU接口FIFO,SDRAM讀寫模塊根據地址將數據寫入SDRAM相應地址中,這樣系統就可以單獨修改任意一個像素點數據。
3.6 系統軟件設計
本項目操作系統為linux2.6.x,顯示部分采用傳統的幀緩沖(framebuffer)接口,framebuffer通過對圖像硬件底層的屏蔽以及顯示緩沖區的抽象,允許上層應用程序直接操作顯示緩沖區而不關心底層的具體硬件實現,是Linux系統為顯示設備提供的一個接口。
Framebuffer設備為標準的字符設備,系統中對應/dev/fb%d設備文件,主設備號29。對于這類framebuffer設備而言,只要在與顯示像素點一一對應的顯示緩沖區域寫入顏色值,對應的像素點將自動顯示寫入的顏色。表1列出了RGB565接口中顯示緩沖區與顯示像素點的對應關系,例如要在第n點顯示紅色,則在緩沖區偏移量為n的地址寫入0xf800即可。

表1 顯示緩沖與像素點對應關系
圖5展示了系統利用framebuffer接口移植的QT圖形界面。

圖5 QT圖形界面
本系統利用FPGA的高度靈活性,在不增加系統成本及PCB空間的基礎上,為通信處理器設計實現了顯示接口,在實際應用中刷新率達到了60Hz,完全滿足項目的需求。同時通過簡單的修改接口邏輯,該顯示方案還支持軍用設備常使用的超寬溫的4位EL顯示屏,并且已經在多個項目中使用。
[1] 薛小剛,葛毅敏.Xilinx ISE 9.X FPGA/CPLD設計指南[M].北京:人民郵電出版社,2007.
[2] 宋寶華.Linux設備驅動開發詳解[M].北京:人民郵電出版社,2008.
[3] 余春蕾,張長明.基于FPGA的TFT-LCD控制器設計[J].電子技術,2008,45(5):15-17.
[4] Xilinx Corp.Spartan-3AN FPGA Family DataSheet[M].2008-6.www.xilinx.com.
Design of Disp lay Interface of P2020 Processor Base on FPGA
CHENWu,XIA Kun-jian,YUAN Jing
(Chongqing Jinmei Communication Co.,Ltd.,Chongqing 400030,China)
Aiming at the problems caused by the most of the high-performance communication processor,which has no built-in LCD controller and is not convenient to be used in some middle and small size communication apparatus for display interface,a new design of the display interface based on CPU+FPGA is described in this paper.It provides the block diagram of hardware,FPGA logic block diagram and achievement results,which are successfully applied in the project tomeet the requirements.
LCD control;FPGA;Framebuffer;FSM
10.3969/j.issn.1002-2279.2014.02.003
TP37
A
1002-2279(2014)02-0008-03
陳武(1984-),男,桂林人,本科,主研方向:嵌入式系統硬件設計及其應用。
2013-07-26