DIY VGA ColorTest
看他们的ColorTest总是那么的炫的 ,一恨之下,自己写了一个
/*
* vga_ctrl.c
*
* Created on: 2010-11-27
* Author: Administrator
*/
void ColorTest(void)
{
#define RGB_x00 0x0000
#define RGB_x01 0x000f
#define RGB_x10 0x03e0
#define RGB_x11 0x03ef
#define RGB_0x0 0x0000
#define RGB_0x1 0x000f
#define RGB_1x0 0x7800
#define RGB_1x1 0x780f
#define RGB_00x 0x0000
#define RGB_01x 0x03e0
#define RGB_10x 0x7800
#define RGB_11x 0x7be0
#define RGB_X00 0x0000
#define RGB_X01 0x001f
#define RGB_X10 0x07e0
#define RGB_X11 0x07ff
#define RGB_0X0 0x0000
#define RGB_0X1 0x001f
#define RGB_1X0 0xf800
#define RGB_1X1 0xf81f
#define RGB_00X 0x0000
#define RGB_01X 0x07e0
#define RGB_10X 0xf800
#define RGB_11X 0xffe0
alt_u16 i,j;
/***************ColorTest***************
* 第一列 第二列 第三列 第四列
* 第一行 x00 x01 x10 x11
* 第二行 X00 X01 X10 X11
* 第三行 0x0 0x1 1x0 1x1
* 第四行 0X0 0X1 1X0 1X1
* 第五行 00x 01x 10x 11x
* 第六行 00X 01X 10X 11X
* ***************0~~MAX变化*************/
Write_Addr(0,0);
Write_DataPrep();
for(i=0;i<128;i++) //第一行ColorTest测试 16Bit
{
for(j=0;j<256;j++) Write_Data((j&0xf8)<<8|RGB_x00);
for(j=0;j<256;j++) Write_Data((j&0xf8)<<8|RGB_x01);
for(j=0;j<256;j++) Write_Data((j&0xf8)<<8|RGB_x10);
for(j=0;j<256;j++) Write_Data((j&0xf8)<<8|RGB_x11);
}
for(i=0;i<128;i++) //第二行ColorTest测试 16Bit
{
for(j=0;j<256;j++) Write_Data((j&0xf8)<<8|RGB_X00);
for(j=0;j<256;j++) Write_Data((j&0xf8)<<8|RGB_X01);
for(j=0;j<256;j++) Write_Data((j&0xf8)<<8|RGB_X10);
for(j=0;j<256;j++) Write_Data((j&0xf8)<<8|RGB_X11);
}
for(i=0;i<128;i++) //第三行ColorTest测试 16Bit
{
for(j=0;j<256;j++) Write_Data((j&0xfc)<<3|RGB_0x0);
for(j=0;j<256;j++) Write_Data((j&0xfc)<<3|RGB_0x1);
for(j=0;j<256;j++) Write_Data((j&0xfc)<<3|RGB_1x0);
for(j=0;j<256;j++) Write_Data((j&0xfc)<<3|RGB_1x1);
}
for(i=0;i<128;i++) //第四行ColorTest测试 16Bit
{
for(j=0;j<256;j++) Write_Data((j&0xfc)<<3|RGB_0X0);
for(j=0;j<256;j++) Write_Data((j&0xfc)<<3|RGB_0X1);
for(j=0;j<256;j++) Write_Data((j&0xfc)<<3|RGB_1X0);
for(j=0;j<256;j++) Write_Data((j&0xfc)<<3|RGB_1X1);
}
for(i=0;i<128;i++) //第五行ColorTest测试 16Bit
{
for(j=0;j<256;j++) Write_Data((j&0xf8)>>3|RGB_00x);
for(j=0;j<256;j++) Write_Data((j&0xf8)>>3|RGB_01x);
for(j=0;j<256;j++) Write_Data((j&0xf8)>>3|RGB_10x);
for(j=0;j<256;j++) Write_Data((j&0xf8)>>3|RGB_11x);
}
for(i=0;i<128;i++) //第六行ColorTest测试 16Bit
{
for(j=0;j<256;j++) Write_Data((j&0xf8)>>3|RGB_00X);
for(j=0;j<256;j++) Write_Data((j&0xf8)>>3|RGB_01X);
for(j=0;j<256;j++) Write_Data((j&0xf8)>>3|RGB_10X);
for(j=0;j<256;j++) Write_Data((j&0xf8)>>3|RGB_11X);
}
Display_VGA();
}
“看,灰机,灰过去了。。。”
我所做的是通过NIOS II写入外部SRAM,然后用Verilog读取SRAM到ADV7120,最后在VGA显示
还是有一点点的问题,是因为跨时钟域信号处理的问题,不是上面C语言的问题,再等等,我在研究研究。。。
悟出了一句话:“重大的失败,往往是因为微小的细节”
真的 没有做不到,只有想不到
再等等。。。
posted on 2010-12-04 22:11 CrazyBingo 阅读(2212) 评论(3) 编辑 收藏 举报