FPGA小白养成记"/>
FPGA小白养成记
1.原理
本次实验的目的是在LCD上显示一张自己喜欢的图片和自己的名字,相对于上一次的彩条实验,只有显示模块是不同的,其它的模块可以参考彩条实验的代码,此处不再赘述。
相比于彩条实验的系统框图,本次实验的实验框图还需要加上一个ROM的部分,因为图片的像素数据比较多,我们需要用ROM来存储。
本次实验需要用到的工具:VIVADO,PCtoLCD(取模),PicToLCD(实现将图片到COE文件的转换)
此处要注意的是区分Bit和Byte的概念:
Bit意为‘位’,或者说‘比特’,是计算机运行的基础
Byte意为‘字节’,是计算机文件大小的基本计算单位
接下来直接开冲!
2.代码
显示模块:
module LCD_display(
input lcd_pclk,
input rst_n,
input [10:0] pixel_xpos,
input [10:0] pixel_ypos,
output reg [23:0] pixel_data);localparam PIC_X_START = 11'd1;
localparam PIC_Y_START = 11'd1;
localparam PIC_WIDTH = 11'd100;
localparam PIC_HEIGHT = 11'd100;
localparam CHAR_X_START = 11'd1;
localparam CHAR_Y_START = 11'd110;
localparam CHAR_WIDTH = 11'd96;
localparam CHAR_HEIGHT = 11'd32;
localparam BACK_COLOR = 24'hE0FFFF;
localparam CHAR_COLOR = 24'hff0000; reg [95:0] char[31:0];
reg [13:0] rom_addr;wire [10:0] x_cnt;
wire [10:0] y_cnt;
wire rom_rd_en;
wire [23:0] rom_rd_data;assign x_cnt = pixel_xpos - CHAR_X_START;
assign y_cnt = pixel_ypos - CHAR_Y_START;
assign rom_rd_en = 1'b1;always@(posedge lcd_pclk)begin
char[0] <= 96'h000000000000000000000000;
char[1] <= 96'h000000000000000000000000;
char[2] <= 96'h000020000004000000800000;
char[3] <= 96'h102038000006020000E01000;
char[4] <= 96'h1FF03000000601C000C00C00;
char[5] <= 96'h18606000000600E000800600;
char[6] <= 96'h186060100006007009080600;
char[7] <= 96'h185FFFF80006013007FC0030;
char[8] <= 96'h18C0C00007FFFF90040BFFF8;
char[9] <= 96'h1880C0000006030005080000;
char[10] <= 96'h188088000006030004880000;
char[11] <= 96'h18818E000006030004C80000;
char[<
更多推荐
FPGA小白养成记
发布评论