原创 良子USB2.0摄像头开发板15_8位彩条生成程序

2015-3-16 20:56 1450 29 29 分类: MCU/ 嵌入式 文集: USB2.0摄像头开发板

       摄像头的数据信号可以经过电路上的VGA接口,在液晶显示器上显示图像。电路板上有一片8位视频DAC芯片ADV7123,可以将数字图像信号转换成液晶显示器需要的模拟信号,直接成像。具体的信号流是摄像头到FPGA,FPGA再将图像信号提供给ADV7123,ADV7123最后驱动液晶显示器。

        这里简化一下上面的信号流,由FPGA产生8个彩条信号,而不用摄像头产生彩条信号(多数摄像头都可以产生测试用的8位彩条信号)。关于VGA信号的工作原理,这里不做介绍,用户可以百度一下,资料多的是。在编写FPGA程序前,首先要百度VGA的时序,如800*600分辨率下,系统时钟是多少?计算如下:1056*628*60=39790080=40M。其中60为刷新频率,1056=128+88+800+40,四个值分别对应abcd四个值,可以对照下图,(更多分辨率可以查看这个地址:http://tinyvga.com/vga-timing)

此处为图片,

      FPGA中的程序很简单,下面是关于800*600分辨率下各种时序常数的定义,需要和上面对应上,如下,

--/**************** 800*600@60HZ ********************/
constant H_SYNC: INTEGER:=128; --a
constant H_BACK:   INTEGER:=88; --b
constant H_ACTIVE: INTEGER:=800; --c
constant H_FRONT:  INTEGER:=40; --d
constant H_BLANK:INTEGER:= H_FRONT + H_SYNC + H_BACK;--
constant H_TOTAL: INTEGER:= H_SYNC + H_ACTIVE + H_FRONT + H_BACK;--1056
 
constant V_SYNC: INTEGER:=4; --o
constant V_FRONT: INTEGER:=23; --p
constant V_ACTIVE: INTEGER:=600; --q
constant V_BACK: INTEGER:=1; --r
constant V_BLANK: INTEGER:= V_FRONT + V_SYNC + V_BACK;--
constant V_TOTAL: INTEGER:= V_SYNC + V_ACTIVE + V_FRONT + V_BACK;--628

       第二点是一个PLL模块,输入电路板上的时钟信号是48M,经过PLL输出时钟是40,具体前面也计算过,如下,

Gen_clk40m:
pll_core PORT MAP (
inclk0 => clkin_48m,
c0 => clk_40M
); 
 
      第三部分就是产生彩条的代码,
 

正在更新,,,,,

 

 

 

(另公布一群号178338109,CYUSB3014开发专业讨论区)

 

 

淘宝店铺:http://liangziusb.taobao.com

良子.2015年    承接USB开发工程  

QQ:2687652834

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
29
关闭 站长推荐上一条 /3 下一条