CrazyBingo

DIY VGA ColorTest

0
阅读(3124)

看他们的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语言的问题,再等等,我在研究研究。。。

悟出了一句话:“重大的失败,往往是因为微小的细节”

真的 没有做不到,只有想不到

再等等。。。