/* Written by Holguer A. Becerra, Students: Andrea Paola Pabón Ortega & Daniel Enrique Mejia Rueda Description: Enhanced Verilog driver for chip XPT2046 */ module touch( ///// ADC SPI CONTROLLER CLOCK_50, reset_n, TFT_ADC_DIN, TFT_ADC_DCLK, TFT_ADC_CS_N, TFT_ADC_DOUT, TFT_ADC_BUSY, TFT_ADC_PENIRQ_N, real_x, real_y, CLK_2KHz, PEN_DOWN); //======================================================= // PORT declarations //======================================================= ///// ADC SPI CONTROLLER input CLOCK_50; input reset_n; output TFT_ADC_DIN; output TFT_ADC_DCLK; output TFT_ADC_CS_N; input TFT_ADC_DOUT; input TFT_ADC_BUSY; input TFT_ADC_PENIRQ_N; output [31:0] real_x; output [31:0] real_y; input CLK_2KHz; output PEN_DOWN; /////////////// TOUCH /////////////////// //// si funciona esto deberias meter esta parte del touch toda en un solo modulo... desde aqui hasta ////Touch localparam X_ADC_UPPER_RIGTH=3975; localparam X_POS_UPPER_RIGTH=479; localparam X_ADC_LOWER_LEFT=112; localparam X_POS_LOWER_LEFT=0; localparam Y_ADC_UPPER_RIGTH=4032; localparam Y_POS_UPPER_RIGTH=0; localparam Y_ADC_LOWER_LEFT=110; localparam Y_POS_LOWER_LEFT=271; wire [11:0] x_coord; wire [11:0] y_coord; wire new_coord; adc_spi_controller u2 ( .iCLK(CLOCK_50), //in .iRST_n(reset_n), //in .oADC_DIN(TFT_ADC_DIN), //out .oADC_DCLK(TFT_ADC_DCLK),//out .oADC_CS(TFT_ADC_CS_N),//out .iADC_DOUT(TFT_ADC_DOUT),//in .iADC_BUSY(TFT_ADC_BUSY),// in .iADC_PENIRQ_n(TFT_ADC_PENIRQ_N),//in .oX_COORD(x_coord),//out 12bits .oY_COORD(y_coord),//out 12 bits .oNEW_COORD(new_coord),//out ); wire [31:0] numeratorX=(y_coord-X_ADC_LOWER_LEFT)*(X_POS_UPPER_RIGTH-X_POS_LOWER_LEFT); wire [31:0] denominatorX=X_ADC_UPPER_RIGTH-X_ADC_LOWER_LEFT; reg [31:0] real_x; wire [31:0] numeratorY=(x_coord-Y_ADC_LOWER_LEFT)*(Y_POS_LOWER_LEFT-Y_POS_UPPER_RIGTH); wire [31:0] denominatorY=Y_ADC_UPPER_RIGTH-Y_ADC_LOWER_LEFT; reg [31:0] real_y; wire CLK_2KHz; localparam DELAY=200; reg [DELAY-1:0]TFT_ADC_PENIRQ_N_delayed; reg valid_touch=1'b1; wire PEN_DOWN=TFT_ADC_PENIRQ_N_delayed[DELAY-1]; genvar index; generate for(index=0; index