首页 > 其他分享 >lcd屏幕实验

lcd屏幕实验

时间:2023-05-12 10:37:21浏览次数:29  
标签:set PIN get lcd dict 实验 屏幕 ports

显示原理与VGA原理类似。
使用屏幕为800*480分辨率,对应的时序参数如下:

行显示时序如下图:

列显示时序与行显示时序类似。

source code

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2023/05/05 15:06:26
// Design Name: 
// Module Name: lcd
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module lcd(
    input sys_clk, //系统时钟
    input sys_rst_n, //系统复位
//RGB LCD 接口
    output lcd_de, //LCD 数据使能信号
    output lcd_hs, //LCD 行同步信号
    output lcd_vs, //LCD 场同步信号
    output lcd_bl, //LCD 背光控制信号
    output lcd_clk, //LCD 像素时钟
    output lcd_rst, //LCD 复位
    output reg [23:0] lcd_rgb //LCD RGB888 颜色数据
);  
parameter hang_num=1056;
parameter lie_num=525;
parameter hang_sync=128;
parameter lie_sync=2;
parameter hang_after=88;
parameter lie_after=33;
parameter hang_display=800;
parameter lie_display=480;
parameter WHITE = 24'hFFFFFF; //白色
parameter BLACK = 24'h000000; //黑色
parameter RED = 24'hFF0000; //红色
parameter GREEN = 24'h00FF00; //绿色
parameter BLUE = 24'h0000FF; //蓝色
reg [10:0] hang_count;
reg [9:0] lie_count;
assign lcd_de=(hang_count>=hang_sync+hang_after)&& 
        (hang_count<=hang_sync+hang_after+hang_display)&& 
        (lie_count>=lie_sync+lie_after)&& 
        (lie_count<=lie_sync+lie_after+lie_display);
assign lcd_hs = hang_count > hang_sync;
assign lcd_vs = lie_count > lie_sync;
assign lcd_rst = 1;
assign lcd_bl = 1;
assign lcd_clk = sys_clk;
always @(posedge sys_clk or negedge sys_rst_n) begin
    if(!sys_rst_n)
    begin
      hang_count<=11'd0;
      lie_count<=10'd0;
    end
    else 
    begin
        if(hang_count==hang_num-1)
        begin
            hang_count<=0;
            if(lie_count==lie_num-1)lie_count<=0;
            else lie_count<=lie_count+1;
        end
        else hang_count=hang_count+1;
        case(hang_count)
            hang_display/5+hang_sync+hang_after: lcd_rgb<=WHITE;
            hang_display/5*2+hang_sync+hang_after: lcd_rgb<=BLACK;
            hang_display/5*3+hang_sync+hang_after: lcd_rgb<=RED;
            hang_display/5*4+hang_sync+hang_after: lcd_rgb<=GREEN;
            hang_sync+hang_after: lcd_rgb<=BLUE;
            default:;
        endcase
    end
end
endmodule

xdc文件

set_property -dict {PACKAGE_PIN U18 IOSTANDARD LVCMOS33} [get_ports sys_clk]
set_property -dict {PACKAGE_PIN N16 IOSTANDARD LVCMOS33} [get_ports sys_rst_n]
set_property -dict {PACKAGE_PIN W18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[0]}]
set_property -dict {PACKAGE_PIN W19 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[1]}]
set_property -dict {PACKAGE_PIN R16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[2]}]
set_property -dict {PACKAGE_PIN R17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[3]}]
set_property -dict {PACKAGE_PIN W20 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[4]}]
set_property -dict {PACKAGE_PIN V20 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[5]}]
set_property -dict {PACKAGE_PIN P18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[6]}]
set_property -dict {PACKAGE_PIN N17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[7]}]
set_property -dict {PACKAGE_PIN V17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[8]}]
set_property -dict {PACKAGE_PIN V18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[9]}]
set_property -dict {PACKAGE_PIN T17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[10]}]
set_property -dict {PACKAGE_PIN R18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[11]}]
set_property -dict {PACKAGE_PIN Y18 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[12]}]
set_property -dict {PACKAGE_PIN Y19 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[13]}]
set_property -dict {PACKAGE_PIN P15 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[14]}]
set_property -dict {PACKAGE_PIN P16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[15]}]
set_property -dict {PACKAGE_PIN V16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[16]}]
set_property -dict {PACKAGE_PIN W16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[17]}]
set_property -dict {PACKAGE_PIN T14 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[18]}]
set_property -dict {PACKAGE_PIN T15 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[19]}]
set_property -dict {PACKAGE_PIN Y17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[20]}]
set_property -dict {PACKAGE_PIN Y16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[21]}]
set_property -dict {PACKAGE_PIN T16 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[22]}]
set_property -dict {PACKAGE_PIN U17 IOSTANDARD LVCMOS33} [get_ports {lcd_rgb[23]}]
set_property -dict {PACKAGE_PIN N18 IOSTANDARD LVCMOS33} [get_ports lcd_hs]
set_property -dict {PACKAGE_PIN T20 IOSTANDARD LVCMOS33} [get_ports lcd_vs]
set_property -dict {PACKAGE_PIN U20 IOSTANDARD LVCMOS33} [get_ports lcd_de]
set_property -dict {PACKAGE_PIN M20 IOSTANDARD LVCMOS33} [get_ports lcd_bl]
set_property -dict {PACKAGE_PIN P19 IOSTANDARD LVCMOS33} [get_ports lcd_clk]
set_property -dict {PACKAGE_PIN L17 IOSTANDARD LVCMOS33} [get_ports lcd_rst]

仿真文件

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2023/05/05 15:56:56
// Design Name: 
// Module Name: lcd_test
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////

module lcd_test;
reg sys_rst_n;
reg sys_clk;
wire lcd_de; //LCD 数据使能信号
wire lcd_hs; //LCD 行同步信号
wire lcd_vs; //LCD 场同步信号
wire lcd_bl; //LCD 背光控制信号
wire lcd_clk; //LCD 像素时钟
wire lcd_rst; //LCD 复位
wire [23:0] lcd_rgb; //LCD RGB888 颜色数据
initial begin
    sys_rst_n = 1;
    #1 sys_rst_n = 0;
    #4 sys_rst_n = 1;
    sys_clk = 0;
    forever begin
        #2 sys_clk=~sys_clk;
    end
end
lcd lcd1(sys_clk, //系统时钟
    sys_rst_n, //系统复位
    lcd_de, //LCD 数据使能信号
    lcd_hs, //LCD 行同步信号
    lcd_vs, //LCD 场同步信号
    lcd_bl, //LCD 背光控制信号
    lcd_clk, //LCD 像素时钟
    lcd_rst, //LCD 复位
    lcd_rgb
);
endmodule

标签:set,PIN,get,lcd,dict,实验,屏幕,ports
From: https://www.cnblogs.com/xzh-personal-issue/p/17393061.html

相关文章

  • Chat Application 实验内容
    Contents1LabOverview42Setup43Assignments43.1MandatoryAssignment:ChatClient(0-150points)...............63.2MandatoryAssignment:TCPTraceAnalysis(0-100points)..........83.3ChatServer(250points).............
  • 计网实验
    OSPF什么是OSPF链路状态路由协议(开放式最短路由优先)工作过程邻居发现:OSPF路由器首先通过发送Hello消息来发现与自己直接相连的其他OSPF路由器。路由器之间通过交换Hello消息来确认彼此的存在,并建立邻居关系。链路状态数据库同步:一旦邻居关系建立,路由器将通过发送LinkStat......
  • S5PV210 | 裸机蜂鸣器实验
    S5PV210|裸机蜂鸣器实验目录S5PV210|裸机蜂鸣器实验电路原理DATASHEET(相关寄存器设置详解)2.2.7GPD0控制寄存器组2.2.7.1PortGroupGPD0ControlRegister(GPD0CON,R/W,Address=0xE020_00A0)2.2.7.2PortGroupGPD0ControlRegister(GPD0DAT,R/W,Address=0x......
  • S5PV210 | 裸机汇编LED闪烁实验
    S5PV210|裸机汇编LED闪烁实验目录S5PV210|裸机汇编LED闪烁实验原理图DATASHEET2.2.7PORTGROUPGPD0CONTROLREGISTER2.2.7.1PortGroupGPD0ControlRegister(GPD0CON,R/W,Address=0xE020_00A0)2.2.7.2PortGroupGPD0ControlRegister(GPD0DAT,R/W,Address......
  • S5PV210 | 裸机汇编LED流水灯实验
    S5PV210|裸机汇编LED流水灯实验目录S5PV210|裸机汇编LED流水灯实验开发板:1.原理图2.Datasheet相关3.代码3-1.代码实现(流水灯,仅作演示)3-2.工具mkv210_image代码4.运行SD卡启动5.参考开发板:1.原理图上图中,当按下POWER键后,VDD_5V和VDD_IO会产生5V和3.3V的电压,其中D26无......
  • cuda nbody实验
    1并行化非常简单得,直接分配4096线程处理,每个线程处理一个天体。每个kernel函数中的循环,就去全局变量里面找其他点的信息,进行计算就好了2优化2.1共享内存按1中的,是每个线程处理n个,这里的话,每个线程分批次处理,每次处理一部分。引入共享内存。......
  • 实验5
    试验任务11#include<stdio.h>#defineN4intmain(){intx[N]={1,9,8,4};inti;int*p;//方式1:通过数组名和下标遍历输出数组元素for(i=0;i<N;++i)printf("%d",x[i]);printf("\n");//方式2:通过指针变量遍历输出数组元素(写法1)for(p=x;p<x+......
  • 实验5
    #include<stdio.h>#defineN4intmain(){intx[N]={1,9,8,4};inti;int*p;//方式1:通过数组名和下标遍历输出数组元素for(i=0;i<N;++i)printf("%d",x[i]);printf("\n");//方式2:通过指针变量遍历输出数组元素(写法1)for(p=x;p<x+N;++p)......
  • 实验5
    实验1源代码#include<stdio.h>#defineN4intmain(){ intx[N]={1,9,8,4}; inti; int*p; for(i=0;i<N;++i) printf("%d",x[i]); printf("\n"); return0;} 实验截图 实验1.2源代码(使用指针变量p间接访问二维数组)#include<stdio.h>intmain(){......
  • 实验5
    1 #include<stdio.h>intmain(){intx[2][4]={{1,9,8,4},{2,0,4,9}};inti,j;int*p;int(*q)[4];for(i=0;i<2;++i){for(j=0;j<4;++j)printf("%d",x[i][j]);printf("\n");}......