搜索
bottom↓
回复: 16

Verilog版本驱动VGA显示实例-横条 竖条 棋盘格

[复制链接]

出0入0汤圆

发表于 2009-2-21 15:43:25 | 显示全部楼层 |阅读模式
VGA程序更新-Verilog版本显示四种模式

点击此处下载 ourdev_421275.rar(文件大小:127K) (原文件名:EP2C5Q208_vga.rar)




说明:对应本站的EP2C5Q208开发板和接口板直接下载即可运行,其余开发板可以自行重新建立工程文件,

不是很麻烦,本站有教如何创建工程,只需要把里面的v文件拷贝,重新建立即可



实验过程:下载代码之后,直接可以驱动VGA显示,通过接口板上的薄码开关8和7 可以控制四种模式

横条 竖条 棋盘格A 棋盘格B

例程参考周立功的试验,这里表示感谢!



关于VGA的资料可以参考以下网站,同时本站近期也将推出我们的视频驱动教程文档,敬请关注

http://www.tinyvga.com/vga-timing/640x480@60Hz

http://www.pyroelectro.com/tutorials/vhdl_vga/theory.html

  

(原文件名:1.jpg)


(原文件名:2.jpg)


(原文件名:3.jpg)


(原文件名:4.jpg)


(原文件名:5.jpg)




--------------------------------------------------------------------------------


附源程序如下啊:

module vga(
   clock,
   switch,
   disp_RGB,
   hsync,
   vsync
);
input  clock;     //系统输入时钟 50MHz
input  [1:0]switch;
output [2:0]disp_RGB;    //VGA数据输出
output  hsync;     //VGA行同步信号
output  vsync;     //VGA场同步信号

reg [9:0] hcount;     //VGA行扫描计数器
reg [9:0]   vcount;     //VGA场扫描计数器
reg [2:0]   data;
reg [2:0]  h_dat;
reg [2:0]   v_dat;

//reg [9:0]   timer;

reg   flag;
wire  hcount_ov;
wire  vcount_ov;
wire  dat_act;
wire  hsync;
wire   vsync;
reg  vga_clk;
//VGA行、场扫描时序参数表
parameter hsync_end   = 10'd95,
   hdat_begin  = 10'd143,
   hdat_end  = 10'd783,
   hpixel_end  = 10'd799,
   vsync_end  = 10'd1,
   vdat_begin  = 10'd34,
   vdat_end  = 10'd514,
   vline_end  = 10'd524;


always @(posedge clock)
begin
vga_clk = ~vga_clk;
end

//************************VGA驱动部分*******************************
//行扫描     
always @(posedge vga_clk)
begin
if (hcount_ov)
  hcount <= 10'd0;
else
  hcount <= hcount + 10'd1;
end
assign hcount_ov = (hcount == hpixel_end);
//场扫描
always @(posedge vga_clk)
begin
if (hcount_ov)
begin
  if (vcount_ov)
   vcount <= 10'd0;
  else
   vcount <= vcount + 10'd1;
end
end
assign  vcount_ov = (vcount == vline_end);
//数据、同步信号输
assign dat_act =    ((hcount >= hdat_begin) && (hcount < hdat_end))
     && ((vcount >= vdat_begin) && (vcount < vdat_end));
assign hsync = (hcount > hsync_end);
assign vsync = (vcount > vsync_end);
assign disp_RGB = (dat_act) ?  data : 3'h00;      

//************************显示数据处理部分*******************************
//图片显示延时计数器
/*always @(posedge vga_clk)
begin
flag <= vcount_ov;
if(vcount_ov && ~flag)
  timer <= timer + 1'b1;
end
*/

always @(posedge vga_clk)
begin
case(switch[1:0])
  2'd0: data <= h_dat;      //选择横彩条
  2'd1: data <= v_dat;      //选择竖彩条
  2'd2: data <= (v_dat ^ h_dat); //产生棋盘格
  2'd3: data <= (v_dat ~^ h_dat); //产生棋盘格
endcase
end

always @(posedge vga_clk)  //产生竖彩条
begin
if(hcount < 223)
  v_dat <= 3'h7;      //白   
else if(hcount < 303)
  v_dat <= 3'h6;   //黄
else if(hcount < 383)
  v_dat <= 3'h5;   //青
else if(hcount < 463)
  v_dat <= 3'h4;    //绿
else if(hcount < 543)
  v_dat <= 3'h3;   //紫
else if(hcount < 623)
  v_dat <= 3'h2;   //红
else if(hcount < 703)
  v_dat <= 3'h1;   //蓝
else
  v_dat <= 3'h0;   //黑
end

always @(posedge vga_clk)  //产生横彩条
begin
if(vcount < 94)
  h_dat <= 3'h7;        //白
else if(vcount < 154)
  h_dat <= 3'h6;   //黄
else if(vcount < 214)
  h_dat <= 3'h5;   //青
else if(vcount < 274)
  h_dat <= 3'h4;    //绿
else if(vcount < 334)
  h_dat <= 3'h3;   //紫
else if(vcount < 394)
  h_dat <= 3'h2;   //红
else if(vcount < 454)
  h_dat <= 3'h1;   //蓝
else
  h_dat <= 3'h0;   //黑
end

endmodule

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2009-2-21 15:46:47 | 显示全部楼层
还不错,可以做个显示BMP图形的程序了

出0入0汤圆

发表于 2009-2-21 18:06:05 | 显示全部楼层
如要显示汉字怎么做呢?把字符当成图片?建立缓冲区?

出0入0汤圆

发表于 2009-2-23 13:04:24 | 显示全部楼层
cool  如果还有DVI的就更好了

出0入0汤圆

发表于 2010-5-28 22:21:38 | 显示全部楼层
可以用笔记本做这个实验吗??可以的话是不是直接用vga延长线连接就行啦??

出0入0汤圆

发表于 2010-6-16 17:11:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-16 20:06:11 | 显示全部楼层
是啊   能显示图片和汉字就好了   
我打算做一个这样的

出0入0汤圆

发表于 2010-6-16 20:38:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-31 21:52:59 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-8-31 23:04:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-31 23:28:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-19 15:32:35 | 显示全部楼层
学习一下,正要做VGA

出0入0汤圆

发表于 2012-3-4 19:37:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-5 16:32:52 | 显示全部楼层
MARK

出0入24汤圆

发表于 2012-3-5 16:48:11 | 显示全部楼层
Mark!

出0入0汤圆

发表于 2012-3-6 07:59:08 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 15:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表