新手入门
- 积分
- 17
- 金钱
- 17
- 注册时间
- 2020-9-8
- 在线时间
- 3 小时
|
图片用的正点原子的工具转化为MIF文件存在ROM里,仿真显示可以正常读出数据,LCD是正点原子的800X490的
显示为灰条,求大佬们赐教
- `timescale 1ns / 1ps
- module lcd_display(
- input wire lcd_clk,
- input wire rst_n,
- input [10:0] pixel_xpos,
- input [10:0] pixel_ypos,
- input [10:0] h_disp,
- input [10:0] v_disp,
- output reg [15:0] pixel_data
- );
- parameter WHITE = 16'hFFFF;
- parameter BLACK = 16'h0000;
- parameter RED = 16'hF800;
- parameter GREEN= 16'h07E0;
- parameter BLUE = 16'h001F;
- localparam PIC_X_START = 11'd1; //图片起始点横坐标
- localparam PIC_Y_START = 11'd1; //图片起始点纵坐标
- localparam PIC_WIDTH = 11'd100; //图片宽度
- localparam PIC_HEIGHT = 11'd100; //图片高度
- reg [10:0] rom_addr ; //ROM 地址
- wire [15:0] rom_rd_data;
- wire rom_rd_en;
- assign rom_rd_en =1'b1;
- always @(posedge lcd_clk or negedge rst_n) begin
- if(~rst_n)
- pixel_data <=16'd0;
- else if((pixel_xpos>=PIC_X_START && pixel_xpos <PIC_X_START+PIC_WIDTH)&&
- (pixel_ypos>=PIC_Y_START && pixel_ypos <PIC_Y_START+PIC_HEIGHT))
- pixel_data <= rom_rd_data;
- else
- pixel_data <= BLACK ;
- end
- always @(posedge lcd_clk or negedge rst_n) begin
- if(~rst_n)
- rom_addr <=11'd0;
- else if((pixel_xpos>=PIC_X_START && pixel_xpos <PIC_X_START+PIC_WIDTH)&&
- (pixel_ypos>=PIC_Y_START && pixel_ypos <PIC_Y_START+PIC_HEIGHT))
- begin
- rom_addr <=rom_addr+1'b1 ;
- end
- else if(pixel_ypos >=PIC_Y_START+PIC_HEIGHT)
- rom_addr <=11'd0;
- end
- pic pic1(
- .address (rom_addr ),
- .clock (lcd_clk ),
- .rden (rom_rd_en),
- .q (rom_rd_data)
- );
- endmodule
复制代码
|
|