差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
lcd240_240disp [2020/08/21 17:28]
gongyu 创建
lcd240_240disp [2020/08/22 21:30] (当前版本)
gongyu [1 FPGA控制]
行 1: 行 1:
-##240*240分辨率RGB LCD的控制+## 1.54寸240*240分辨率RGB LCD的控制 
 + 
 +### 1 FPGA控制 
 + 
 +#### 1.1 按键输入控制及显示输出主程序: 
 +<code verilog>​ 
 +//​========================================================================== 
 +// 
 +// Author: Step 
 +// Module: isp_154 
 +// Description:​  
 +// Web: www.stepfapga.com 
 +//​-------------------------------------------------------------------------- 
 +// Info: 
 +//   ​V1.0---yyyy/​mm/​dd---Initial version 
 +// 
 +//​========================================================================== 
 + 
 +//​timescale 
 +`timescale 1ns / 1ns 
 + 
 +//define 
 +//include 
 +//module 
 +module isp_154 ( 
 + input clk_12m, 
 + 
 + input key_l, key_r, key_o, 
 +  
 +    input [7:0] adc_i, 
 + 
 + output lcd_csn, 
 + output lcd_sck, 
 + output lcd_sda, 
 + output lcd_res, 
 + output lcd_dcn 
 +); 
 + 
 +wire  adc_done= 1'​b1;​ 
 + 
 +wire sample_done,​ display_done;​ 
 +wire sample_en, display_en;​ 
 +//Arbiter, control sample and display in different time 
 +Arbiter u_Arbiter ( 
 +    .clk_in (clk_12m ),​ // system clock 
 +    .rst_n_in (1'​b1 ​   ), //system reset, active low 
 +         
 +    .sample_done (sample_done ),​ 
 +    .display_done (display_done ),​ 
 +         
 +    .sample_en (sample_en ),​ 
 +    .display_en (display_en ) 
 +); 
 + 
 +wire adc_done_o;​ 
 +wire [7:0] trig_data;​ 
 +Time_Scale u_Time_Scale ( 
 +    .clk_in (clk_12m ),​ //​ system clock 
 +    .rst_n_in (1'​b1 ​  ​ ),​ //​system reset, active low 
 + 
 +    .key_l (key_l ),​ //​ encoder B 
 +    .key_r (key_r ),​ //​ encoder OK 
 +    .key_o (key_o ),​ //​  
 + 
 +    .trig_data (trig_data ),​ 
 +     
 +    .adc_done (adc_done ),​ 
 +    .adc_done_o (adc_done_o ) 
 +); 
 + 
 +wire ram_adc_clk_en;​ 
 +wire [7:0] ram_adc_addr;​ 
 +wire [7:0] ram_adc_data;​ 
 +ADC_Sample u_ADC_Sample ( 
 +    .clk_in (clk_12m ),​ // system clock 
 +    .rst_n_in (1'​b1 ​   ), //system reset, active low 
 +     
 +    .adc_done (adc_done_o ),​ 
 +    .adc_data (adc_i ),​ 
 +     
 +    .trig_data (trig_data ),​ 
 +     
 +    .sample_en (sample_en ),​ 
 +    .sample_done (sample_done ),​ 
 +     
 +    .ram_adc_clk_en (ram_adc_clk_en ),​ 
 +    .ram_adc_addr (ram_adc_addr ),​ 
 +    .ram_adc_data (ram_adc_data )  
 +); 
 + 
 +wire [7:0] QA; 
 +wire ram_lcd_clk_en;​ 
 +wire [7:0] ram_lcd_addr;​ 
 +wire [7:0] ram_lcd_data;​ 
 +dp_ram u1 ( 
 +    .ResetA ​                ( 1'​b0 ​          ),  
 +    .WrA                    ( 1'​b1 ​          ),  
 +    .ClockEnA ​              ( ram_adc_clk_en ), 
 +    .ClockA ​                ( clk_12m ​       ), 
 +    .AddressA ​              ( ram_adc_addr ​  ), 
 +    .DataInA ​               ( ram_adc_data ​  ), 
 +    .QA                     ( QA             ),  
 + 
 +    .ResetB ​                ( 1'​b0 ​          ),  
 +    .WrB                    ( 1'​b0 ​          ),  
 +    .ClockEnB ​              ( ram_lcd_clk_en ),  
 +    .ClockB ​                ( clk_12m ​       ),  
 +    .AddressB ​              ( ram_lcd_addr ​  ),  
 +    .DataInB ​               ( 8'​b0 ​          ), 
 +    .QB                     ( ram_lcd_data ​  ) 
 +); 
 + 
 + 
 +LCD_RGB u_LCD_RGB ( 
 +    .clk                     ( clk_12m ​       ), 
 +    .rst_n ​                  ( 1'​b1 ​          ), 
 +    .display_en ​             ( display_en ​    ), 
 +    .display_done ​           ( display_done ​  ), 
 + 
 +    .ram_lcd_clk_en ​         ( ram_lcd_clk_en ), 
 +    .ram_lcd_addr ​           ( ram_lcd_addr ​  ), 
 +    .ram_lcd_data ​           ( ram_lcd_data ​  ), 
 + 
 +    .lcd_csn ​                ( lcd_csn ​       ), 
 +    .lcd_res ​                ( lcd_res ​       ), 
 +    .lcd_dcn ​                ( lcd_dcn ​       ), 
 +    .lcd_sck ​                ( lcd_sck ​       ), 
 +    .lcd_sda ​                ( lcd_sda ​       ) 
 +); 
 + 
 + 
 + 
 +endmodule //isp_154 
 + 
 +</​code>​ 
 + 
 +#### 1.2 RGB LCD的控制 ​
  
-#### FPGA控制 
 <code verilog> <code verilog>
 // -------------------------------------------------------------------- // --------------------------------------------------------------------
行 46: 行 181:
 localparam INIT_DEPTH = 16'​d59;​ // the number of init command and data localparam INIT_DEPTH = 16'​d59;​ // the number of init command and data
  
-localparam RED = 16'​hf800;​+localparam RED = 16'​hf800;​
 localparam GREEN = 16'​h07e0;​ localparam GREEN = 16'​h07e0;​
 localparam BLUE = 16'​h001f;​ localparam BLUE = 16'​h001f;​
行 60: 行 195:
 localparam DELAY = 3'​d5;​ localparam DELAY = 3'​d5;​
  
-localparam LOW = 1'​b0;​+localparam LOW = 1'​b0;​
 localparam HIGH = 1'​b1;​ localparam HIGH = 1'​b1;​
  
行 262: 行 397:
 // data for init // data for init
 always @(*) begin always @(*) begin
- reg_init[0] = {1'​b0,​8'​h11};​  + reg_init[0] = {1'​b0,​8'​h11};​  
- reg_init[1] = {1'​b0,​8'​h36};​  + reg_init[1] = {1'​b0,​8'​h36};​  
- reg_init[2] = {1'​b1,​8'​ha0};​  + reg_init[2] = {1'​b1,​8'​ha0};​  
- reg_init[3] = {1'​b0,​8'​h3A};​  + reg_init[3] = {1'​b0,​8'​h3A};​  
- reg_init[4] = {1'​b1,​8'​h05};​  + reg_init[4] = {1'​b1,​8'​h05};​  
- reg_init[5] = {1'​b0,​8'​hB2};​  + reg_init[5] = {1'​b0,​8'​hB2};​  
- reg_init[6] = {1'​b1,​8'​h0C};​  + reg_init[6] = {1'​b1,​8'​h0C};​  
- reg_init[7] = {1'​b1,​8'​h0C};​  + reg_init[7] = {1'​b1,​8'​h0C};​  
- reg_init[8] = {1'​b1,​8'​h00};​  + reg_init[8] = {1'​b1,​8'​h00};​  
- reg_init[9] = {1'​b1,​8'​h33}; ​+ reg_init[9] = {1'​b1,​8'​h33}; ​
  reg_init[10] = {1'​b1,​8'​h33}; ​  reg_init[10] = {1'​b1,​8'​h33}; ​
  reg_init[11] = {1'​b0,​8'​hB7}; ​  reg_init[11] = {1'​b0,​8'​hB7}; ​