这里只介绍模块思路,ROM的生成和设置等等其他问题,会单独开一篇总结。先放图看结果

准备阶段

首先用到这两个软件第一个用来解码,将图片中的每一个像素点用16进制表示,第二个用来转换图片。因为图片太大的话,资源太小,就不能显示。

用第二个软件修改图片的长度宽度,用第一个软件生成.coe文件。

然后,会生成一个这个在桌面。然后生成ip就可以了。

这里的100是图片的宽,然后92 是图片的高。

代码实现

module vga_display_BMP(vga_clk,rst_n,x_pixel,y_pixel,pixel_data);
//---------------------------------
input                 vga_clk   ;
input                   rst_n   ;
input       [9:0]     x_pixel   ;
input       [9:0]     y_pixel   ;
//---------------------------------
output      [15:0]    pixel_data;
//---------------------------------
//---------------------------------
parameter white = 16'b11111_111111_11111   ;
parameter black = 16'b00000_000000_00000   ;
parameter red   = 16'b11111_000000_00000   ;
parameter green = 16'b00000_111111_00000   ;
parameter bule  = 16'b00000_000000_11111   ;
//---------------------------------
parameter height = 10'd92;
parameter wide   = 10'd100;
parameter pos_x  = 0;
parameter pos_y  = 0;
/*pos_x,pos_y 这两个来控制左上角第一个点的位置*/
//---------------------------------
wire rom_rd_en;//读ROM使能信号
reg [13:0] rom_addr;//读ROM有效信号
reg [15:0] color_bar;
wire [32:0] total;
assign total = height * wide ;
//---------------------------------
wire [15:0] rom_data;
assign pixel_data =  rom_rd_en ? rom_data : color_bar;
assign rom_rd_en = (x_pixel > pos_x) && (x_pixel <= pos_x + wide ) && (y_pixel > pos_y) && (y_pixel <= pos_y + height ) ? 1'b1 : 1'b0;
always@(posedge vga_clk or negedge rst_n)
beginif(!rst_n)rom_addr <= 14'd1;else if(rom_rd_en)beginif(rom_addr < total - 1'b1 )rom_addr <= rom_addr + 1'b1;else rom_addr <= 'b0;endelse rom_addr <= rom_addr;
end
always@(posedge vga_clk or negedge rst_n)
beginif(!rst_n)color_bar <= 16'd0;else if(~rom_rd_en)if(y_pixel >= 240)color_bar <= bule;else color_bar <= green;
end
/*只是ROM例化,后面总结*/
rom your_instance_name (.clka(vga_clk), // input clka.addra(rom_addr), // input [13 : 0] addra.douta(rom_data) // output [15 : 0] douta
);
endmodule

思路是这样的,每一个在.coe文件中的数据,其实是一个个像素点的数据,在起始位置开始显示第一个,然后依次显示第一行的每一个像素,在到第二行,开始显示第二行的第一个像素,依次类推。最后显示所有的像素点。

代码仿真

代码写完之后先最好仿真,不然出来的图片很容易使雪花。这里有一个经验,查看仿真图的时候,可以看开始的一行和结束的一行,然后屏幕每一次刷新后的开始一行的像素点和.coe。第一行的数据是否一样

FPGA实现VGA显示(四)——————读取ROM显示彩色图片(a)相关推荐

  1. cv2.imread默认情况下读取的是彩色图片

    imread(filename, flags=None) flags是ImreadModes的类型的, 默认情况下是1 enum ImreadModes { IMREAD_UNCHANGED = -1 ...

  2. app显示服务器图片不显示,如何读取并显示服务器上不在webapp目录上的图片?

    自己写个servlet,可以用,但总是觉得不理想 public void doGet(HttpServletRequest request, HttpServletResponse response) ...

  3. 基于FPGA的VGA显示图片

    一.显示一张彩色图片 设计需求: 在VGA接口的显示屏上显示一张180*120彩色图片. 需求分析 (1)对图片裁剪及取数据 a.使用画图软件/美图秀秀将图片像素裁剪成180*120大小. b.取数据 ...

  4. cv2 读取、显示、保存图片

    1. 读取图片 在OpenCV中使用cv2.imread()函数来加载图片,该函数的形式如下: cv2.imread(path, flags) 参数意义如下: path: 该参数制定图片的路径,可以使 ...

  5. FPGA实现VGA显示(五)——————配置ROM测试及图片显示(b)

    如何使用ISE生成ROMip显示彩色图片 这里设置宽度,这里深度设置设置的是9200,设置的时候进行简单计算. 例化可以直接得到,修改内部连线即可 ROM简单测试总结 前面显示代码其实是有问题的,因为 ...

  6. 基于FPGA的VGA显示彩条、字符、图片

    目录 一.VGA介绍 (一) VGA协议 (二) VGA端口介绍 (三) 色彩原理 (四)VGA显示原理 VGA通信协议: VGA时序解析 时钟分频 二.实现 ​1.彩条显示 2.字符显示 3.图片显 ...

  7. 【FPGA】VGA显示文字、彩条、图片——基于DE2-115

    录 一.VGA概述 1.1 简述 1.2 管脚定义 1.3 行.场时序及分辨率 二.VGA显示文字 2.1 点阵汉字生成 2.2 工程建立 2.3 引入ip核-实现特定时钟频率+不同分辨率显示 2.3 ...

  8. 基于FPGA的VGA显示对贪吃蛇游戏的设计

    基于FPGA的VGA显示对贪吃蛇游戏的设计 摘要 目前,电子数码产品已经进入了人生活的方方面面,而大多数电子产品都依靠显示屏来传递信息,由此可见用电路对显示屏进行控制的研究有很大的实用价值和市场需求. ...

  9. FPGA实现VGA显示(六)——————多字符显示及基于fpga的“打字机”实现

    前面笔者总结了如何显示单字符,设立通过一个简单的任务来总结如何实现vga多字符显示. 实验要求 基础: 由PC通过UART发送数据在VGA显示.数据可以为字母,数字,汉字(任选10个字),VGA分为左 ...

最新文章

  1. 小白学数据分析-----聚类分析理论之K-means理论篇
  2. alphac测试和bata测试区别_电缆识别仪与电缆故障测试仪的区别
  3. Jetty:配置上下文
  4. ARM架构、指令集、内核版本、CISC与RISC、ARM产品线
  5. 188.买卖股票的最佳时机IV
  6. 数据结构_十字链表(C语言)
  7. 根据银行卡号获取银行名称
  8. 自制简单的诗歌搜索系统
  9. 【软件工具】之下载微软官方正版 windows 系统
  10. 【图床】图床、PicGo进行图片管理与上传
  11. RO、RW和ZI的区别
  12. 物理画线“救救小鸡”,支持自建关卡!技术教程分享
  13. python基础教程:__call__用法
  14. 可控硅失效现象_晶闸管常见损坏原因分析(全)
  15. 三层架构,四大天王——删
  16. 20155314 2016-2017-2 《Java程序设计》实验三 敏捷开发与XP实践
  17. 华为三层交换机配置不同网段互通
  18. 计算机相关的硬件和软件,计算机的硬件和软件
  19. springboot集成阿里ons消息队列发布订阅消息功能
  20. windows10电脑开热点只能用5G频段,不能开2.4G热点,提示所选网络波段不可用

热门文章

  1. libreoffice转换文件为pdf文件乱码问题解决办法
  2. Springboot打jar包项目无法访问jsp问题解决
  3. socket 网络通信(基于tcp协议)以及粘包解决方案
  4. 关于ajax的content-download时间过慢问题的解决方案与思考
  5. u盘怎么重装系统win11教程
  6. Win11管理员已阻止你运行此应用,有关详细信息怎么处理?
  7. win11系统正式版介绍
  8. MultiActionController
  9. oracle安装 插件的执行方法失败_解决 VS Code 中 golang.org 被墙导致的 Go 插件安装失败问题...
  10. 麦克纳姆轮全向移动机器人运动效率分析