基于FPGA驱动VGA显示图片的小问题
学习VGA显示图片的过程中,遇到了一个小问题,我在显示屏上开了一个60x60的框,放了一张图片进去显示,但是最终的结果如下图所示。
出现了一个竖黑边,看了看代码,分析了一下逻辑没问题,然而看这个显示那肯定是有问题的,然后仿真了一下看看,时序图如下。

正确的时序

错误的时序
我这是的是当行计数器记到200和场计数器记到200的时候显示ROM中的数据,在显示屏中开出一个60x60的正方形显示区域,对比上两幅图可得,第二幅图在当行计数器计数到200的时候lcd_data本应该是ROM里的数据,但是却输出的是16’h00,这是因为我原始的代码写的是当行计数器记到200的时候给ROM地址加1,然后有个使能信号将ROM的输出读出,但是实际上行计数记到200的同时ROM地址已经加1,那么ROM的第一个数据就没法读出来,然后从第二个数据开始显示,即每一行的第一个数据都没有给出所以最终会显示出一个竖黑边,那么这个问题怎么解决呢?很简单,就是在行计数器记到199的时候给使能信号,所以当显示屏显示第200个数据的时候,ROM的第一个数据正好读出,代码如下:显示结果如下
//---------------------------------------------
//addra
always @(posedge clk or negedge rst_n)begin
if(!rst_n)
addra <= 'd0;
else if(addra == - 'b1)
addra <= 'd0;
else if(lcd_x >= && lcd_x < && lcd_y >= && lcd_y < )
addra <= addra + 'b1;
else
addra <= addra;
end //-----------------------------------------------------------------------
//pic_en
reg pic_en;
always @(posedge clk or negedge rst_n)begin
if(!rst_n)
pic_en <= 'b0;
else if(lcd_x >= && lcd_x < && lcd_y >= && lcd_y < )
pic_en <= 'b1;
else
pic_en <= 'b0;
end //-----------------------------------------------------------------------
//data_en
reg data_en;
always @(posedge clk or negedge rst_n)begin
if(!rst_n)
data_en <= 'b0;
else if(lcd_x >= && lcd_x < && lcd_y >= && lcd_y < )
data_en <= 'b1;
else
data_en <= 'b0;
end //lcd_data
reg [:] lcd_data_r0;
reg [:] lcd_data_r1; always @(posedge clk or negedge rst_n)begin
if(!rst_n)
lcd_data_r0 <= 'b0;
else if(lcd_y > && lcd_y <= )
lcd_data_r0 <= `WHITE;
else if(lcd_y > && lcd_y <= )
lcd_data_r0 <= `GREEN;
else if(lcd_y > && lcd_y <= )
lcd_data_r0 <= `BLUE;
else
lcd_data_r0 <= 'b0;
end always @(posedge clk or negedge rst_n)begin
if(!rst_n)
lcd_data_r1 <= 'b0;
else if(pic_en == 'b1)
lcd_data_r1 <= douta;
else
lcd_data_r1 <= 'b0;
end //assign lcd_data = (pic_en == 1'b1)? `CYAN: lcd_data_r0;//开出一个紫颜色的框 assign lcd_data = (pic_en == 'b1)? lcd_data_r1: lcd_data_r0;


转载请注明出处:NingHeChuan(宁河川)
个人微信订阅号:开源FPGANingHeChuan
如果你想及时收到个人撰写的博文推送,可以扫描左边二维码(或者长按识别二维码)关注个人微信订阅号
知乎ID:NingHeChuan
微博ID:NingHeChuan
原文地址:http://www.cnblogs.com/ninghechuan/p/7577224.html
基于FPGA驱动VGA显示图片的小问题的更多相关文章
- 基于FPGA的VGA显示设计(二)
上一篇:基于FPGA的VGA显示设计(一) 参照 CrazyBingo 的 基于FPGA的VGA可移植模块终极设计代码 的工程代码风格,模块化处理了上一篇的代码,并增加了一点其它图形. 顶层 ...
- 基于FPGA的VGA显示实验设计
基于FPGA的VGA显示实验设计 成果展示(优酷视频): 视频: 基于FPGA的VGA显示技术(手机控制) http://v.youku.com/v_show/id_XNjk4ODE3ODUy.htm ...
- 基于FPGA的VGA显示静态图片
终于熬到暑假了,记过三四周的突击带考试,终于为我的大二画上了一个完整的句号,接下来终于可以静心去做自己想做的事情了,前一阵子报了一个线上培训班,学学Sobel边缘检测,之前一直在学习图像处理,但是因为 ...
- FPGA驱动VGA显示静态图片
一 .前言 本文设计思想采用明德扬至简设计法.VGA是最常见的视频显示接口,时序也较为简单.本文从利用显示屏通过VGA方式显示测试图案及静态图片着手带大家接触图像显示应用,算是为后续VGA显示摄像头采 ...
- 基于FPGA的VGA显示设计(一)
前言 FPGA主要运用于芯片验证.通信.图像处理.显示VGA接口的显示器是最基本的要求了. 原理 首先需要了解 : (1)VGA接口协议:VGA端子_维基百科 .VGA视频传输标准_百度 引脚1 RE ...
- 基于FPGA的HDMI显示设计(三)
上一篇:基于FPGA的VGA显示设计(二) 10月10日 ~ 20日期间实习,令我万万没想到的是实习题目是 “便携式高清电视显示屏测试系统原型设计” 也就是 “基于FPGA的视频显示”. 实习要求用 ...
- 纠错:基于FPGA串口发送彩色图片数据至VGA显示
今天这篇文章是要修改之前的一个错误,前面我写过一篇基于FPGA的串口发送图片数据至VGA显示的文章,最后是显示成功了,但是显示的效果图,看起来确实灰度图,当时我默认我使用的MATLAB代码将图片数据转 ...
- 基于FPGA的VGA可移植模块终极设计【转】
本文转载自:http://www.cnblogs.com/lueguo/p/3373643.html 略过天涯 基于FPGA的VGA可移植模块终极设计 一.VGA的诱惑 首先,VGA的驱动,这事, ...
- [置顶]
基于FPGA的VGA简易显存设计&NIOS ii软核接入
项目简介 本项目基于Altera公司的Cyclone IV型芯片,利用NIOS II软核,2-port RAM与时序控制模块,实现64*48分辨率的显存(再大的显存板载资源m9k不够用) 实现效果如下 ...
随机推荐
- ms sql一些技巧
1.SQL:复制数据库某一个表到另一个数据库中 SELECT * INTO 新表 FROM 旧表 (将旧表的结构和数据都复制到新表,不用事先创建新表) SELECT * INTO 新表 FROM 旧表 ...
- 使用Myeclipse为数据表创建hibernate实体对象
hibernate是orm框架的一种,orm即Object Relational Mapping,对象映射关系,其主要作用是将数据库(mysql,mssql,oracle)的对象转换为具体编程语言(如 ...
- Tuxedo:Tuxedo支持的分布式通信方式
1.RPC:用于远程方法调用.Java中类似的技术有EJB.WebService 2.Conversaction:交流.Java中类似的有JDBC. 3.Message Notification:消息 ...
- springboot整合redis
springboot-整合redis springboot学习笔记-4 整合Druid数据源和使用@Cache简化redis配置 一.整合Druid数据源 Druid是一个关系型数据库连接池,是阿 ...
- Laravel学习笔记(三)--在CentOS上配置Laravel
在Laravel框架上开发了几天,不得不说,确实比较优雅,处理问题逻辑比较清楚. 今天打算在CentOS 7上配置一个Laravel,之前都是在本机上开发,打算实际配置一下. 1)系统 ...
- 图片Ping
前面的话 在CORS出现以前,要实现跨域Ajax通信颇费一些周折.开发人员想出了一些办法,利用DOM中能够执行跨域清求的功能,在不依赖XHR对象的情况下也能发送某种请求.虽然CORS技术已经无处不在, ...
- Parallels Desktop 12 for Mac 破解版
Parallels Desktop for Mac 是功能最强大灵活度最高的虚拟化方案,无需重启即可在同一台电脑上随时访问Windows和Mac两个系统上的众多应用程序.从仅限于PC的游戏到生产力软件 ...
- ES6函数的拓展
ES里面现在支持在函数的参数直接给参数赋一个默认值,ES6支持拓展运算符(...)三个英文的点,这个形式如function(...a)这个里面...a可以接受若干的值,这个拓展运算符也可以把若干的值转 ...
- iOS----------如何检查域名是否支持ipv6
http://ipv6-test.com/validate.php 这个地址 也可以检测到! 1.检查你所用到的库,像af 3.0以上什么的(不用改),其他的库自己去搜下是否支持ipv6吧. 2. ...
- 日志框架之Logback
1 日志框架选择 日志门面:SLF4J 日志实现:Logback 2 实现控制台的日志打印输出01 2.1 在需要实现日志信息打印的类中实例化Logger对象 private final Logger ...