博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VGA接口(一)
阅读量:5904 次
发布时间:2019-06-19

本文共 2382 字,大约阅读时间需要 7 分钟。

      VGA接口共有15针,分成3排,每排5个孔,是显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。

  此前没有接触过VGA,因为单片机频率太低,不足以驱动VGA,而FPGA足以驱动VGA,今天小试牛刀,编写了一个矩形框,在液晶显示屏上显示!

//程序功能:背景红色, 小矩形为绿色, 矩形框为蓝色;module vga     (      clk,      rst_n,      hsync,      vsync,      vga_r,      vga_g,      vga_b            );input  clk;        //时钟50MHZ;input  rst_n;      //复位信号,低电平有效;output hsync;      //列同步信号;output vsync;      //行同步信号;output vga_r;      //红色信号;output vga_g;      //绿色信号;output vga_b;      //蓝色信号;reg [9:0]  x_cnt ;  //行计数;always @ (posedge clk or negedge rst_n)  begin        if(!rst_n)            x_cnt<=10'd0;        else if(x_cnt==10'd665)            x_cnt<=10'd0;        else if(y_cnt==1039)          x_cnt<=x_cnt+1'b1;        end   reg [10:0] y_cnt ;  //列计数;always @ (posedge clk or negedge rst_n)  begin        if(!rst_n)            y_cnt<=11'd0;        else if(y_cnt==11'd1039)            y_cnt<=11'd0;        else           y_cnt<=y_cnt+1'b1;        end wire valid  ;     //有效显示区标志;assign  valid=((x_cnt>=10'd31)&&(x_cnt<10'd631)&&(y_cnt>=11'd187)&&(y_cnt<11'd987));wire [9:0]  x_pos;   //有效显示区坐标;wire [10:0]  y_pos; assign  x_pos=x_cnt-10'd31;assign  y_pos=y_cnt-11'd187;reg  hsync_r;always @ (posedge clk or negedge rst_n)  begin        if(!rst_n)          hsync_r<=1'b1;        else if(y_cnt==10'd0)     //产生列同步信号;          hsync_r<=1'b0;        else if(y_cnt==10'd120)           hsync_r<=1'b1;         else           hsync_r<=hsync_r;     end  assign  hsync=hsync_r; reg  vsync_r;always @ (posedge clk or negedge rst_n)  begin        if(!rst_n)          vsync_r<=1'b1;        else if(x_cnt==11'd0)      //产生行同步信号;          vsync_r<=1'b0;        else if(x_cnt==11'd6)           vsync_r<=1'b1;         else           vsync_r<=vsync_r;     end   assign  vsync=vsync_r;  //显示一个矩形框wire a,b,c,d;      //矩形框显示区域定位;assign a=((x_pos>=160)&&(x_pos<=500))&&((y_pos>=240)&&(y_pos<=280));assign b=((x_pos>=160)&&(x_pos<=500))&&((y_pos>=600)&&(y_pos<=620));assign c=((x_pos>=160)&&(x_pos<=200))&&((y_pos>=280)&&(y_pos<=600));assign d=((x_pos>=460)&&(x_pos<=500))&&((y_pos>=280)&&(y_pos<=600));//显示一个小矩形wire rec;assign  rec=((x_pos>=300)&&(x_pos<=350)&&(y_pos>=400)&&(y_pos<=470));//r,g,b 控制液晶颜色显示,背景红色, 小矩形为绿色, 矩形框为蓝色;assign  vga_r=valid? ~(a|b|c|d):1'b0;assign  vga_g=valid? rec:1'b0;assign  vga_b=valid? (a|b|c|d):1'b0;endmodule

 

转载于:https://www.cnblogs.com/tphust/archive/2012/07/12/2588278.html

你可能感兴趣的文章
Linux文件管理和编辑常用命令
查看>>
bluz-5.47 蓝牙
查看>>
C++ 读写文件
查看>>
海外旅游最常用的100句英语口语
查看>>
http协议进阶(五)连接管理
查看>>
服务器创建好后怎样使用远程连接工具链接的一些问题
查看>>
插件~NuGet与packages管理项目的包包
查看>>
笔试算法题(34):从数字序列中寻找仅出现一次的数字 & 最大公约数(GCD)问题...
查看>>
JS基本功 | JavaScript专题之数组 - 方法总结
查看>>
matlab数字图像处理函数,MATLAB数字图像处理学习(二)|常用函数
查看>>
错误请联系管理员文件 index.php,帝国CMS订单、反馈信息、投稿与留言发邮件通知管理员的方法...
查看>>
小米笔记本装linux教程视频教程,Archlinux安装指南~小米笔记本Air 13.3英寸版本
查看>>
linux卸载nomachine,NoMachine 安装与配置及使用
查看>>
企业shell常见面试题及企业实战案例深入浅出讲解
查看>>
Load Test
查看>>
美文共赏
查看>>
RHEL6入门系列之十七,打包与压缩
查看>>
SQLite 3.7.13的加密解密(二)—— 开放宏定义
查看>>
禁止server 2008域端口的脚本
查看>>
数据结构图之二(最小生成树--普里姆算法)
查看>>