Pfinal Extras
for more visit: www.fpgalover.com
If you like my FREE FPGA tutorials, buy me a coffee, or a biscuit or whatever you like.
Written by Holguer A Becerra.
Nota: Esta practica fue realizada basada en la plataforma DE0-NANO, en este caso usted usara la plataforma DE2-115 y debera adaptarla a esta
En este caso, debe modificar las caracterisiticas de la memoria SDRAM y en vez de usar una memoria EPCS usara la memoria Flash de la DE2-115.
En esta sección usted podrá encontrar algunos ejemplos de ayuda usando la pantalla(WQVGA) 4.3inch-480x272-Touch-LCD, los cuales pueden ser útiles a la hora de hacer el proyecto final:
Ejemplo TouchScreen Driver(using Nios II).
Touch Without Nios:
//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),
.iRST_n(reset_n),
.oADC_DIN(TFT_ADC_DIN),
.oADC_DCLK(TFT_ADC_DCLK),
.oADC_CS(TFT_ADC_CS_N),
.iADC_DOUT(TFT_ADC_DOUT),
.iADC_BUSY(TFT_ADC_BUSY),
.iADC_PENIRQ_n(TFT_ADC_PENIRQ_N),
.oX_COORD(x_coord),
.oY_COORD(y_coord),
.oNEW_COORD(new_coord),
);
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;
always@(posedge CLOCK_50)
begin
real_y<=real_y;
real_x<=real_x;
if(!TFT_ADC_PENIRQ_N && new_coord)
begin
real_y<= Y_POS_LOWER_LEFT-(numeratorY/denominatorY);
real_x<= (numeratorX/denominatorX)+X_POS_LOWER_LEFT;
end
end
Test Video+Touch(.sof) & Pinout.
Nota: No montare el source de esta prueba hasta después del proyecto final, ya que mis estudiantes deben diseñar el modulo de sincronización
Test Video With PCEngine(.sof) & Pinout(GPIO_1[27]=AUDIO_L; assign GPIO_1[29]=AUDIO_R).
Utilizando el control panel de la DE0-NANO, programe la EPCS desde la posición 0x7d000 con el archivo siguiente(.pce): JackieChan.pce
Luego programe el .sof, ponga los SW[3:1] en la posición 3'b011 y oprima el KEY[0] para ver en funcionamiento el juego sobre su pantalla.
Nota: No montare el source de esta prueba hasta después del proyecto final, ya que mis estudiantes deben diseñar el modulo de sincronización
Notas:
Para diseñar el sincronizador de video, sugiero revisar las paginas 63 y pagina 65 del datasheet.
for more visit: www.fpgalover.com
If you like my FREE FPGA tutorials, buy me a coffee, or a biscuit or whatever you like.