DE2是Altera公司針對大學教學及研究機構推出的FPGA多媒體開發平臺,DE2開發平臺選用的FPGA是CycloneII系列FPGA中的EP2C35F672C6,通過對DE2的學習,我們能夠迅速理解和掌握實時多媒體工業產品設計的技巧,并進行系統設計的驗證,DE2平臺的設計和制造完全按照工業產品標準進行,可靠性很高,本文利用處理器FPGA與液晶顯示模塊的圖形顯示的編程技術,并以點陣為320×RGB×240的TFT LCD模塊D036THEA1為例,研究了FPGA與液晶顯示模塊的圖形顯示技術,其關鍵是對驅動芯片D036THEA1的各引腳和時序進行控制,在電路控制部分中,使用QUARTUS II 6.0開發工具來完成軟體設計、仿真,所有功能全部用硬體描述語言Verilog HDL編程實作,并下載到DE2實驗開發板上CycloneII系列EP2C35F672C6目標芯片上,使用40腳扁平電纜直接把DE2和TFT LCD模塊D036THEA1連接起來.運行驗證滿足TFT LCD模塊D036THEA1的圖形顯示,圖形資料可以從外接攝像頭獲取或者從FPGA芯片內產生圖形資料,本設計采用FPGA作為TFT LCD的控制,性能穩定,也可以靈活顯示引數以適應各種不同TFT LCD的控制,
目前,電子產品的生命周期越來越短,許多消費類電子產品的生命周期只有一年左右的時間,因而必須縮短產品的開發周期,可編程邏輯器件【1】與固定邏輯器件相比,可大大縮短開發周期,而隨著集成電路制造工藝的進步,可編程邏輯器件的設計水平不斷提高,其成本已經降低到可以在消費類電子產品中大量使用的程度,從當前技術發展的趨勢來看,可編程邏輯器件將逐漸代替大部分的固定邏輯器件,因此可編程邏輯器件應用是值得我們掌握的一門技術,
1.2 目的和意義
軟核處理器的出現以及可編程邏輯器件的片上存盤器容量的增大,使的可編程邏輯器件可以覆寫數字電子領域中的所有應用,Altera公司推出的可編程芯片系統以及NiosII軟核處理器【2】進一步明確了這個概念,DE2開發平臺是Altera公司針對大學及研究機構推出的一款多媒體開發平臺,通過使用DE2開發板可以做FPGA的開發設計及驗證,
本課題來源是科研與教學,是用于工業電子.國防.科研領域和日常生活中不可缺少的一部分,通過對其的了解而進一步認識現代社會人們所需要具備的技能,深入學習努力鉆研從而更好地運用到社會上去,
1.3國內外研究現狀及發展趨勢
嵌入式系統的將先進的計算機技術、半導體技術、電子技術和各個行業的具體應用相結合后的產物,這一點就決定了他并然是一個技術密集、資金密集、高度分散和不斷創新的知識集成系統,
FPGA并非是近年來才有的,FPGA—詞于1984年就已經出現,至今已經超過20年以上時間,不過過去十年時間內FPGA都未受到太多的重視,原因是FPGA的功耗用電、電路密度、頻率效能、電路成本都不如ASIC,在這十多年時間內,FPGA多半只用在一些特殊領域,例如芯片業者針對新產品測驗市場反應,即便初期產品未達量產規模,業能先以FPGA制成產品測驗,或者有些芯片設計公司承接了小型的設計專案,在量產規模不足下業一樣使用FPGA,或如政府、軍方的特殊要求,不期望使用開放、標準性的芯片與電路,業會傾向使用FPGA,
不過如前所述的,在愈來愈多芯片無法用開設掩膜模式投產后,這些芯片一樣要上市,就只好以FPGA模式來生產,所幸FPGA也受益于摩爾定律,在工藝技術不斷提升下,晶體管愈來愈縮密化,原來相較ASIC遜色的電路密度過低、頻率效能過低、電路成本過高等問題,在新一代FPGA上,早已拉近與ASIC間的表現差距,
液晶顯示模塊(LCM)采用的是Toppoly公司的TFTLCD模D036THEA1,可以接受RGB格式或YUV格式的8位串行資料,支持NTSC時序或PAL時序,點陣為320×240,有效顯示面積為72.96×54.72mm,通過3線串行介面與LCM內部的暫存器交換資料來實作顯示控制和功能選擇,下圖7所示為TRDB_LCM彩色液晶顯示開發板,

TRDB_LCM可以用40腳電纜直接與DE2相連,引腳定義見下表1,
| 引腳編號 | 名稱 | 方向 | 含義 |
| 1~10 | NC | N/A | 未連接 |
| 11 | VCC5 | N/A | 5V電源 |
| 12 | GND | N/A | 地 |
| 13~20 | NC | N/A | 未連接 |
| 21 | DIN6 | 輸入 | LCD資料線第6位 |
| 22 | DIN7 | 輸入 | LCD資料線第7位 |
| 23 | DIN4 | 輸入 | LCD資料線第4位 |
| 24 | DIN5 | 輸入 | LCD資料線第5位 |
| 25 | DIN2 | 輸入 | LCD資料線第2位 |
| 26 | DIN3 | 輸入 | LCD資料線第3位 |
| 27 | DIN0 | 輸入 | LCD資料線第0位 |
| 28 | DIN1 | 輸入 | LCD資料線第1位 |
| 29 | VCC33 | N/A | 3.3V電源 |
| 30 | NC | N/A | 未連接 |
| 31 | VSYNC | 輸入 | 垂直同步輸入 |
| 32 | NC | N/A | 未連接 |
| 33 | SCL | 輸入 | 3線串行介面時鐘 |
| 34 | DCLK | 輸入 | LCD資料時鐘 |
| 35 | GRESTB | 輸入 | 低電平有效的全域復位信號 |
| 36 | SHDB | 輸入 | 關斷控制,低電平有效 |
| 37 | CPW | N/A | 保留引腳 |
| 38 | SCEN | 輸入 | 3線串行介面使能 |
| 39 | SDA | 輸入/輸出 | 3線串行介面資料 |
| 40 | HSYNC | 輸入 | 水平同步輸入 |
表1 TRDB_LCM的引腳
TRDB_LCM的3線串行介面時序圖如圖8所示,SCEN為低電平時,3線串行介面有效,完成一次讀/寫暫存器的地址,第7位確定是讀還是寫,SDA為高電平則為讀,SDA為低電平則為寫,第8個時鐘周期SDA變為高阻狀態,最后8位為讀或者寫的資料,
場序彩色顯示的原理【10】如圖1所示,主要是將一場的時間分成3個子場,在每個子場的時間內分別把影像的R、G、B信號寫入顯示屏,并依次點亮紅綠藍三色光源,利用人眼的視覺暫留特性實作彩色影像的顯示,在R、G、B各子場時間內顯示屏顯示的都是單色影像資訊,而在一場時間當中R、G、B資訊分別顯示一次,所以我們看到的仍是一幅全彩色影像,如圖9所示,

module I2S_Controller( // Host Side
iCLK,
iRST,
iDATA,
iSTR,
oACK,
oRDY,
oCLK,
// Serial Side
I2S_EN,
I2S_DATA,
I2S_CLK );
// Host Side
input iCLK;
input iRST;
input iSTR;
input [15:0] iDATA;
output oACK;
output oRDY;
output oCLK;
// Serial Side
output I2S_EN;
inout I2S_DATA;
output I2S_CLK;
// Internal Register and Wire
reg mI2S_CLK;
reg [15:0] mI2S_CLK_DIV;
reg mSEN;
reg mSDATA;
reg mSCLK;
reg mACK;
reg [4:0] mST;
parameter CLK_Freq = 50000000; // 50 MHz
parameter I2S_Freq = 20000; // 20 KHz
// Serial Clock Generator
always@(posedge iCLK or negedge iRST)
begin
if(!iRST)
begin
mI2S_CLK <= 0;
mI2S_CLK_DIV <= 0;
end
else
begin
if( mI2S_CLK_DIV < (CLK_Freq/I2S_Freq) )
mI2S_CLK_DIV <= mI2S_CLK_DIV+1;
else
begin
mI2S_CLK_DIV <= 0;
mI2S_CLK <= ~mI2S_CLK;
end
end
end
// Parallel to Serial
always@(negedge mI2S_CLK or negedge iRST)
begin
if(!iRST)
begin
mSEN <= 1'b1;
mSCLK <= 1'b0;
mSDATA <= 1'bz;
mACK <= 1'b0;
mST <= 4'h00;
end
else
begin
if(iSTR)
begin
if(mST<17)
mST <= mST+1'b1;
if(mST==0)
begin
mSEN <= 1'b0;
mSCLK <= 1'b1;
end
else if(mST==8)
mACK <= I2S_DATA;
else if(mST==16 && mSCLK)
begin
mSEN <= 1'b1;
mSCLK <= 1'b0;
end
if(mST<16)
mSDATA <= iDATA[15-mST];
end
else
begin
mSEN <= 1'b1;
mSCLK <= 1'b0;
mSDATA <= 1'bz;
mACK <= 1'b0;
mST <= 4'h00;
end
end
end
assign oACK = mACK;
assign oRDY = (mST==17) ? 1'b1 : 1'b0;
assign I2S_EN = mSEN;
assign I2S_CLK = mSCLK & mI2S_CLK;
assign I2S_DATA = (mST==8) ? 1'bz :
(mST==17) ? 1'bz :
mSDATA ;
assign oCLK = mI2S_CLK;
endmodule
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/151910.html
標籤:java
