FPGA小白养成记--RGB--LCD字符和图片显示实验

本文介绍了一次FPGA实验,旨在通过LCD显示自选图片和文字。实验中,作者详细解释了如何利用ROM存储像素数据,并讨论了代码中的关键部分,包括端口定义、变量设定和ROM读取。通过这个实验,读者可以理解如何在FPGA中实现RGB到LCD的显示逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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[<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值