ROM+VGA 图片显示

内容

1、将一幅图片制成mif文件,初始化rom,图片像素为 120 * 60

2、驱动VGA,将图片显示在屏幕上



1、VGA 时序

下面是我的笔记截图,感觉更好理解。



2、640*480 60hz

VGA 为什么要选用 25Mhz 的时钟进行驱动呢?

1s时间内显示60幅图像,每幅图像的像素总数为 800 *525 (640*480是指的有效像素,800*525是包含了所有的,具体情况见下图)

因此完成一幅图像的时间为 1s/60 =16.6ms

完成一行需要 16.6ms / 525 =31.75us

完成一个像素 16.6ms / 800 = 40 ns

40ns对应的时钟频率为25Mhz.

从上面这副图可以提取的信息如下,我们将它参数化

//行时序参数
`define    H_FRONT    11‘d16      //显示前沿
`define    H_SYNC     11‘d96      //同步脉冲
`define    H_BACK     11‘d48      //显示后沿
`define    H_DISP    11‘d640    //有效时间
`define    H_TOTAL    11‘d800     //总的
//场时序参数
`define    V_FRONT    11‘d10
`define    V_SYNC     11‘d2
`define    V_BACK     11‘d33
`define    V_DISP     11‘d480
`define    V_TOTAL    11‘d525 

行时序参数的单位是像素,场时序参数的单位是一行,根据这一点,设计两个计数器

//----------------------------------------------------------------------
//行时序设计
always  @(posedge clk or negedge rst_n)begin
    if(rst_n==1‘b0)begin
        h_cnt <= 0;
    end
    else if(h_cnt == `H_TOTAL - 1‘b1)begin
        h_cnt <= 0;
    end
    else
        h_cnt <= h_cnt + 1‘b1 ;
end
assign hs=(h_cnt >= 0 && h_cnt < `H_SYNC )? 1‘b0 : 1‘b1 ;

//----------------------------------------------------------------------
//场时序设计
always  @(posedge clk or negedge rst_n)begin
    if(rst_n==1‘b0)begin
        v_cnt<=0;
    end
    else if(h_cnt == `H_TOTAL - 1‘b1) begin
        if(v_cnt == `V_TOTAL - 1‘b1)
            v_cnt <= 0;
        else
            v_cnt <= v_cnt + 1‘b1;
    end
end

assign vs = (v_cnt >= 0 && v_cnt< `V_SYNC)? 1‘b0 : 1‘b1 ; 

以上就完成了VGA的驱动,非常简单。

本次设计的难点在于rom地址的设计,什么情况下改变地址的值。

首先设计像素左标,640*480个有效像素,第一行第一个坐标为(0,0),第二个为(0,1)以此论推,横坐标为 x_pose ,纵坐标为 y_pose 。

至于为什么是 260 和 210太难解释了,不过我会把所有工程打包,提供下载,大家可以参考分析。

assign address_1 =(area_1)? (x_pose-260)+120*(y_pose-210) : 1‘b0 ;


结果:

程序代码:链接:http://pan.baidu.com/s/1mi0eSNu 密码:8g64

由于资源的限制,只能显示很小的图片,表示很不舒服,我一定要学会设计SDRAM,走向巅峰!!

时间: 2024-11-10 07:27:27

ROM+VGA 图片显示的相关文章

Swift开发教程--如何自定义TabBarItem的图片显示

在做项目的时候,如果使用系统的UITabBarController的时候,底部的tab自定义图片显示是蓝色和灰色的,这不是我们所想要的效果. 如果想显示自定义的按下和弹起的图片效果,这个时候就需要对TabBarItem进行修改. 以下就是具体的示例: var itemNameArray:[String] = ["down_32","add_32","plane_32","circle_32"] var itemNameSele

赵雅智_运用Bitmap和Canvas实现图片显示,缩小,旋转,水印

上一篇已经介绍了Android种Bitmap和Canvas的使用,下面我们来写一个具体实例 http://blog.csdn.net/zhaoyazhi2129/article/details/32136179 运行效果: 主要代码 package com.example.guaguale; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import and

Qt添加窗口背景图片、Label图片显示、、Label文字显示

一.添加窗口背景图片 重写MainWindow绘制事件 void MainWindow::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.drawPixmap(0,0,width(),height(),QPixmap("background.png")); qDebug()<<event; }记得在头文件中声明函数. 二.图片显示 QPixmap car("Car.png"

猎豹浏览器关掉图片显示

1.关闭极速模式下的图片显示 选项-->更多设置-->网页内容(内容设置)-->图片(不显示任何图片)       2.关闭兼容模式下的图片显示 工具→Internet选项→高级→设置→多媒体→去掉"显示图片|"前的勾 3.如果向任何情况下都不显示图片则完成前面两种设置. 猎豹浏览器关掉图片显示,布布扣,bubuko.com

在VC6中基于dll开发插件用于各种图片显示(BMP/TGA/JPG/GIF/PNG/TIF/ICO/WMF/EMF/...)

一.图片显示 图片显示的方法: 1.  直接写程序 2.  第3方库 3.  调用COM组件的IPicture接口 4.  使用MFC的CPictureHolder类 5.  使用GDI+的CImage类(VC6无,从VS2003开始有) 测试过的方法有1.3.5. 测试过的格式有BMP/TGA/JPG/GIF/PNG/TIF/ICO/WMF/EMF. IPicture接口不支持的格式有:PNG和TIF. GDI+支持全部格式. 二.插件的实现(VC6) 只做了基于DLL的插件实现试验,基于“公

使用系统UITabbarItem自定义图片显示原本颜色和自定义文字颜色

...... ThirdViewController *thirdVC = [[ThirdViewControlleralloc]initWithTitle:@"搜索信息"]; //设置tabbarItem 的图片显示原图颜色: thirdVC.tabBarItem = [[UITabBarItemalloc]initWithTitle:@"搜索"image:[[UIImageimageNamed:@"login_usernick"] image

4.C#WinForm基础图片(显示和隐藏)

要求: 软件上有一张图片,默认是隐藏的.用户在文本框中输入身份证号(131226198105223452),点击按钮,如果年龄大于18岁,则显示图片. 知识点: 取当前年份,Date Time Now Year所需用到的函数 函数一: string string.Substring(int startIndex,int length)(+1重载)                从此实例检索字符串.子字符串从指定的字符位置开始且具有指定的长度          异常:              

Latex图片显示问题(1)

用latex编译后,若用dvipdf生成pdf文件,则其中有个eps图的左侧会显示不完全:若是用dvips--pspdf生成pdf文件,图像显示没问题. 这种情况的问题出在,加载 graphicx 宏包的时候没有加任何驱动选项,所以在 LaTeX 的时候,默认使用 dvips 这个驱动模式.因此,在 LaTeX - DVIPDFM(x) 工具链的时候图片显示会出问题.也就是必须使用 LaTeX - dvips - ps2pdf 这个工具链才行.

MapKit之大头针全面解析(使用系统大头针、自定义大头针callout视图、使用图片显示大头针)

首先了解一些相关知识点: 添加大头针到地图 在iOS开发中经常会标记某个位置,需要使用地图标注,也就是大家俗称的"大头针".大头针(Annotations)提供了一种方式来突出地图中具体的位置并可以提供相关的信息.我们能够使用大头针标记具体的地址,兴趣点和其他类型的目的地.当显示在地图上的时候,大头针可以使用图片作为标识,也能够点击大头针弹出小弹框提供相应的链接和具体内容.Figure6-1显示了系统标准的大头针样式标记具体的位置,并提供了小弹框显示额外的信息,使用箭头提示用户点击获取