📄 den_lcm_test.v
字号:
// --------------------------------------------------------------------
// Copyright (c) 2005 by Terasic Technologies Inc.
// --------------------------------------------------------------------
//
// Permission:
//
// Terasic grants permission to use and modify this code for use
// in synthesis for all Terasic Development Boards and Altera Development
// Kits made by Terasic. Other use of this code, including the selling
// ,duplication, or modification of any portion is strictly prohibited.
//
// Disclaimer:
//
// This VHDL/Verilog or C/C++ source code is intended as a design reference
// which illustrates how these types of functions can be implemented.
// It is the user's responsibility to verify their design for
// consistency and functionality through the use of formal
// verification methods. Terasic provides no warranty regarding the use
// or functionality of this code.
//
// --------------------------------------------------------------------
//
// Terasic Technologies Inc
// 356 Fu-Shin E. Rd Sec. 1. JhuBei City,
// HsinChu County, Taiwan
// 302
//
// web: http://www.terasic.com/
// email: support@terasic.com
//
// --------------------------------------------------------------------
//
// Major Functions: DEN LCD Moudule Test
//
// --------------------------------------------------------------------
//
// Revision History :
// --------------------------------------------------------------------
// Ver :| Author :| Mod. Date :| Changes Made:
// V1.0 :| Joe Yang,Johnny Fan :| 07/03/30 :| Initial Revision
// --------------------------------------------------------------------
module DEN_LCM_Test
(
//////////////////// Clock Input ////////////////////
CLOCK_50, // 50 MHz
//////////////////// Push Button ////////////////////
KEY, // Pushbutton[3:0]
//////////////////// GPIO ////////////////////////////
GPIO_0, // GPIO Connection 0
);
//////////////////////// Clock Input ////////////////////////
input CLOCK_50; // 50 MHz
//////////////////////// Push Button ////////////////////////
input [3:0] KEY; // Pushbutton[3:0]
//////////////////////// GPIO ////////////////////////////////
inout [35:0] GPIO_0; // GPIO Connection 0
wire [7:0] LCM_R; // LCM Data 8 Bits
wire [7:0] LCM_G; // LCM Data 8 Bits
wire [7:0] LCM_B; // LCM Data 8 Bits
wire LCM_GRST; // LCM Global Reset
wire LCM_NCLK; // LCM Clcok
wire LCM_HD; // LCM HSYNC
wire LCM_VD; // LCM VSYNC
wire LCM_DEN; // LCM VSYNC
wire LCM_SCLK; // LCM I2C Clock
wire LCM_SDA; // LCM I2C Data
wire LCM_SCEN; // LCM I2C Enable
wire ADC_DCLK;
wire ADC_DIN;
wire ADC_DOUT;
wire ADC_CS_n;
wire ADC_PENIRQ_n;
wire [11:0] TX;
wire [11:0] TY;
wire PEN_tr;
wire X_Y;
wire XYout;
wire PWM_r;
wire PWM_g;
// Touch Screen //
wire TCH_DCLK;
wire TCH_CS;
wire TCH_PENIRQ;
wire TCH_BUSY;
wire TCH_DIN;
wire TCH_DOUT;
wire I2S_BUSY_n;
wire [1:0] Display_mode;
reg [7:0] clock;
reg [31:0] div;
////////////// GPIO_O //////////////////
assign TCH_PENIRQ =GPIO_0[0];
assign TCH_DOUT =GPIO_0[1];
assign TCH_BUSY =GPIO_0[2];
assign GPIO_0[3] =TCH_DIN;
assign GPIO_0[4] =ADC_DCLK;
assign GPIO_0[5] =LCM_B[3];
assign GPIO_0[6] =LCM_B[2];
assign GPIO_0[7] =LCM_B[1];
assign GPIO_0[8] =LCM_B[0];
assign GPIO_0[9] =~LCM_NCLK;
assign GPIO_0[10] =LCM_DEN;
assign GPIO_0[11] =LCM_HD;
assign GPIO_0[12] =LCM_VD;
assign GPIO_0[13] =LCM_B[4];
assign GPIO_0[14] =LCM_B[5];
assign GPIO_0[15] =LCM_B[6];
assign GPIO_0[16] =LCM_B[7];
assign GPIO_0[17] =LCM_G[0];
assign GPIO_0[18] =LCM_G[1];
assign GPIO_0[19] =LCM_G[2];
assign GPIO_0[20] =LCM_G[3];
assign GPIO_0[21] =LCM_G[4];
assign GPIO_0[22] =LCM_G[5];
assign GPIO_0[23] =LCM_G[6];
assign GPIO_0[24] =LCM_G[7];
assign GPIO_0[25] =LCM_R[0];
assign GPIO_0[26] =LCM_R[1];
assign GPIO_0[27] =LCM_R[2];
assign GPIO_0[28] =LCM_R[3];
assign GPIO_0[29] =LCM_R[4];
assign GPIO_0[30] =LCM_R[5];
assign GPIO_0[31] =LCM_R[6];
assign GPIO_0[32] =LCM_R[7];
assign GPIO_0[33] =LCM_GRST;
assign GPIO_0[34] =LCM_SCEN;
assign GPIO_0[35] =LCM_SDA;
assign ADC_DCLK = ( TCH_DCLK & I2S_BUSY_n ) | LCM_SCLK;
assign iTDCLK = div [14];
// ----LCM reset ---- //
assign LCM_GRST = DLY0;
// ----LCM clock ---- //
assign LCM_NCLK = div[0]; //25M hz
always @(posedge CLOCK_50)
begin
div <= div+1;
end
touch_init u1 (
.CLOCK_50(CLOCK_50),
.SW(60),
.data(8'h92),
.nRST(DLY1) ,
.iTDCLK(iTDCLK),
.TCH_DCLK(TCH_DCLK),
.TCH_CS(TCH_CS) ,
.TCH_DIN(TCH_DIN),
.TCH_BUSY(TCH_BUSY),
.TCH_DOUT(TCH_DOUT),
.TCH_PENIRQ(TCH_PENIRQ),
.X(TX),
.Y(TY),
.PEN_tr(PEN_tr),
.X_Y(X_Y),
.XYout(XYout),
.Display_mode(Display_mode)
);
pwm_12bit u2 (
.CLOCK_50(CLOCK_50),
.value (TX),
.PWM_o (PWM_r)
);
pwm_12bit u3 (
.CLOCK_50(CLOCK_50),
.value (TY),
.PWM_o (PWM_g)
);
// Touch panel timming control and RGB data output //
TCON u4 (
.X(TX),
.Y(TY),
.NCLK(LCM_NCLK),
.rstn(DLY1),
.Display_mode(Display_mode),
.Hsyn(LCM_HD),
.Vsyn(LCM_VD),
.Red(LCM_R),
.Green(LCM_G),
.Blue(LCM_B),
.DENB(LCM_DEN),
.ClkCnt(),
.HsynCnt()
);
// touch panel configuration //
I2S_LCM_Config u5 (
// Host Side
.iCLK (div[2]),
.iRST_N(DLY1),
// I2C Side
.I2S_SCLK ( LCM_SCLK ),
.I2S_SDAT ( LCM_SDA ),
.I2S_SCEN ( LCM_SCEN),
.I2S_BUSY_n (I2S_BUSY_n)
);
// system reset //
Reset_Delay u6 (.iCLK(CLOCK_50),
.iRST(KEY[0]),
.oRST_0(DLY0),
.oRST_1(DLY1),
.oRST_2(DLY2)
);
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -