FPGA实现HDMI显示图片(1)
原图片(480*480):
rgb.m(获取图片的RGB数据存在.coe文件里面)
src = imread('00743.jpg');
r = src(:,:,1);
g = src(:,:,2);
b = src(:,:,3);
data_r = reshape(r', 1,230400);
data_g = reshape(g', 1,230400);
data_b = reshape(b', 1,230400);%注意是先处理x 就是行!!!
fid=fopen('rgb_init.coe', 'wt');%打开文件
fprintf(fid, 'MEMORY_INITIALIZATION_RADIX=16;\n');
fprintf(fid, 'MEMORY_INITIALIZATION_VECTOR=\n');
for i = 1 : 230400-1fprintf(fid, '%x%x%x,\n', data_r(i),data_g(i),data_b(i));%使用%x表示十六进制数
end
fprintf(fid, '%x%x%x,\n',data_r(230400), data_g(230400),data_b(230400));%%输出结尾,每个数据后面用逗号或者空格或者换行符隔开,最后一个数据后面加分号
fclose(fid);%%关闭文件
然后把数据存在rom(480*480_24)里面;相对于上一个工程,只需要修改这个:
vga_pic.v
`timescale 1ns/1ns
//=======================================================================// Filename : vga_pic.v
// Author : Ritian73
// Created On : 2022-03-02 23:51
// Last Modified :
// Description :
//
//
//=======================================================================module vga_pic
(input wire vga_clk , //输入工作时钟input wire sys_rst_n , //输入复位信号,低电平有效input wire [11:0] pix_x , //输入VGA有效显示区域像素点X轴坐标input wire [11:0] pix_y , //输入VGA有效显示区域像素点Y轴坐标output reg [23:0] pix_data //输出像素点色彩信息
);
reg [17:0]addra;
wire [23:0]douta;
//********************************************************************//
//****************** Parameter and Internal Signal *******************//
//********************************************************************//
//parameter define
parameter H_VALID = 12'd1920 , //行有效数据xV_VALID = 12'd1080 ; //场有效数据yparameter RED = 24'hff0000, //红色ORANGE = 24'hff7d00, //橙色YELLOW = 24'hffff00, //黄色GREEN = 24'h00ff00, //绿色CYAN = 24'h0000ff, //青色BLUE = 24'h00ffff, //蓝色PURPPLE = 24'hff00ff, //紫色BLACK = 24'hff0000, //黑色WHITE = 24'hff7d00, //白色GRAY = 24'hffff00; //灰色/*
//pix_data:输出像素点色彩信息,根据当前像素点坐标指定当前像素点颜色数据
always@(posedge vga_clk or negedge sys_rst_n)if(sys_rst_n == 1'b0)pix_data <= 23'd0;else if((pix_x >= 0) && (pix_x < (H_VALID/10)*1))pix_data <= RED;else if((pix_x >= (H_VALID/10)*1) && (pix_x < (H_VALID/10)*2))pix_data <= ORANGE;else if((pix_x >= (H_VALID/10)*2) && (pix_x < (H_VALID/10)*3))pix_data <= YELLOW;else if((pix_x >= (H_VALID/10)*3) && (pix_x < (H_VALID/10)*4))pix_data <= GREEN;else if((pix_x >= (H_VALID/10)*4) && (pix_x < (H_VALID/10)*5))pix_data <= CYAN;else if((pix_x >= (H_VALID/10)*5) && (pix_x < (H_VALID/10)*6))pix_data <= BLUE;else if((pix_x >= (H_VALID/10)*6) && (pix_x < (H_VALID/10)*7))pix_data <= PURPPLE;else if((pix_x >= (H_VALID/10)*7) && (pix_x < (H_VALID/10)*8))pix_data <= BLACK;else if((pix_x >= (H_VALID/10)*8) && (pix_x < (H_VALID/10)*9))pix_data <= WHITE;else if((pix_x >= (H_VALID/10)*9) && (pix_x < H_VALID))pix_data <= GRAY;elsepix_data <= BLACK;*/always@(posedge vga_clk or negedge sys_rst_n)if(sys_rst_n == 1'b0)beginpix_data <= 24'd0; endelse if((pix_x >= 720) && (pix_x < 1920 - 720) && (pix_y >= 300) && (pix_y < 1080 - 300)) beginpix_data <= douta;endelsepix_data <= 24'hffffff;always@(posedge vga_clk or negedge sys_rst_n)if(sys_rst_n == 1'b0)beginaddra <=18'b0;endelse if((pix_x >= 720) && (pix_x < 1920 - 720) && (pix_y >= 300) && (pix_y < 1080 - 300))addra <= addra +1'b1;else if(addra == 18'd230400)addra <=18'b0; elseaddra <=addra; Rom_24_230400 Rom_24_230400 (.clka(vga_clk), // input wire clka.addra(addra), // input wire [17 : 0] addra.douta(douta) // output wire [23 : 0] douta
);
endmodule
效果图:
友情提示:注意先扫描的是x还是y,和ceo文件数据有关系。
480*480*24bit的数据差不多占了Block Ram的一半..........
FPGA实现HDMI显示图片(1)相关推荐
- HDMI系列之一:基于Nios II的HDMI显示图片
一休哥将在本文中介绍一个基于Nios II的HDMI显示图片的工程.我将主要分三个部分来介绍这一工程,从而实现工程效果. 1. Nios II的常规使用套路 2. 自定义HDMI IP核的制作 3. ...
- 基于FPGA的HDMI显示(二)
基于FPGA的720P HDMI显示 1.4.1 HDMI 硬件电路分析 本次设计采用了 IO 模拟的方式实现 HDMI 的功能.与采用专用 HDMI 芯片相比,此方案具有成本更低.效果不输于采用 ...
- FPGA - 基于FPGA的HDMI显示
写在前面 HDMI接口很早之前就想调试了,由于没有时间,就拖到了现在,而且毕业设计也是和视频处理系统有关,就趁这个机会把这个接口调试下. 开发环境 vivado 18.3 pynq - z2 HDMI ...
- 基于FPGA的HDMI显示(一)
1.1 HDMI简介 简介略,网上很多,这里也不过多描述. 1.2 基于FPGA的HDMI接口设计 HDMI输出接口在FPGA方面应用时,主要有两种方式:一种就是如图1 22所示的方式,采用Sil ...
- 基于FPGA的VGA显示图片
一.显示一张彩色图片 设计需求: 在VGA接口的显示屏上显示一张180*120彩色图片. 需求分析 (1)对图片裁剪及取数据 a.使用画图软件/美图秀秀将图片像素裁剪成180*120大小. b.取数据 ...
- activiti高亮显示图片_【正点原子FPGA连载】第二十章SD卡读BMP图片HDMI显示实验领航者 ZYNQ 之嵌入式开发指南...
1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...
- 基于FPGA的HDMI图片显示
第一次写博客,就当是练手了吧QAQ 无病呻吟[滑稽] 1.导出图片数据 2.将数据存入ROM中 3.程序设计 运行结果 总结 无病呻吟[滑稽] 首先说一下我用的板子,是XILINX的zynq-7020 ...
- 【正点原子FPGA连载】第四十四章MT9V034摄像头HDMI显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...
- 基于FPGA的 TMDS 编码 及 HDMI 显示
目录 引言 TMDS 编码 原理简介 TMDS编码实现 HDMI差分数据串行 实现方法 源码 HDMI显示方法 思路 实现 工程结构 源代码分享 板级调试视频 引言 最近在开发板上倒腾了一下 TMDS ...
最新文章
- 不被邀请又怎样!马云都快买下中国AI芯片的半壁江山了,直怼腾讯和百度
- 厉害了,程序员的高考试卷,你能拿几分?
- NYOJ 904 search 二分查找
- SAP Analytics Cloud Model的delta upload(增量导入)功能
- jq匹配偶数行_jquery怎么实现奇偶行不同背景颜色?
- 目标检测训练trick超级大礼包—不改模型提升精度,值得拥有
- 蓝牙耳机声音一顿一顿的_这次让世界听听我们的声音——声阔SoundcoreLiberty2Pro蓝牙耳机...
- 加州“电力十足 ” iPhone12加速贬值成全“十三香”
- HTML Table 冻结行列
- 创业者如何利用数字经济实现企业升级?
- centos7.4 kubeadm安装Kubernetes 1.14.1 集群
- 从 0 开始学习 GitHub 电子书免费送
- paip.提升用户体验---显示密码控件ShowPwdController
- mysql远程连接error 1045_启用远程MySQL连接:错误1045(28000):用户被拒绝访问
- JEP 尝鲜系列 3 - 使用虚线程进行同步网络 IO 的不阻塞原理
- 用vue做一个app
- 利用mysql客户端查询UCSC数据库
- apple tv 开发_如何在Apple TV上重新排列,添加和删除频道
- 关于个人的年度小目标
- 基于vue的时间轴轮播图插件 timeline-carousel
热门文章
- PCL1.12安装+VS2019环境配置+测试程序:斯坦福兔子
- Harris-Benedict等式
- PS把图标背景变为透明背景
- 甲骨文服务器测速居然能达到400多M 优秀
- 深入折腾 Weex,知乎日报客户端开发
- windows 系统查看端口号并杀死
- python异步加载图片_如何在PyQt5中正确异步加载图像?
- c语言中的float类型,C语言中float类型详解
- SpringBoot+Vue+虹软(ArcSoft) 的一个在线人脸识别Web系统,可通过调用笔记本摄像头或者网络摄像头实时的进行人脸识别。
- C语言,if循环 for 循环 while循环 switch循环 do...while()循环