新闻  |   论坛  |   博客  |   在线研讨会
FPGA开发板DIY过程(十二)
mmqm | 2012-10-27 20:32:34    阅读:1306   发布文章

10.27

继续学习NIOS II。

参考网上资料,设计VGA的控制器IP。代码和之前的VGA实验代码差不多,增加了与SDRAM的读取方式。在SDRAM开辟一段显示缓存区域。VGA的分辨率为800x600,在50MHz时钟下,刷新频率为72Hz。

// VESA Signal 800x600 @ 72Hz timing
// Screen refresh rate: 72Hz
// Vertical refresh: 48.076923076923kHz
// Pixel freq.: 50.0MHz

// Horizontal timing (line)
parameter H_SYNC_PULSE = 120; // 行同步
parameter H_BACK_PORCH = 64; // 行同步后
parameter H_VISIBLE_AREA = 800; // 行图像显示
parameter H_FRONT_PORCH = 56; // 行同步前
parameter H_WHOLE_LINE = 1040; // 行总和

// Vertical timing (frame)
parameter V_SYNC_PULSE = 6; // 场同步
parameter V_BACK_PORCH = 23; // 场同步后
parameter V_VISIBLE_AREA = 600; // 场图像显示
parameter V_FRONT_PORCH = 37; // 场同步前
parameter V_TOTAL_FRAME = 666; // 场总和





在NIOS的测试程序,将屏幕分成32x8的小块,分别显示256色(1个字节)

#define VGA_WIDTH 800
#define VGA_HEIGHT 600
#define VGA_BUFFER_SIZE VGA_WIDTH*VGA_HEIGHT
#define VGA_SET_PIXEL(x,y,color) IOWR_8DIRECT((unsigned long)vga_buffer,(y*VGA_WIDTH)+x,color)
unsigned char vga_buffer[VGA_BUFFER_SIZE];

for(y = 0; y < VGA_HEIGHT; y++)
{
yy = y / 75;
for(x = 0; x < VGA_WIDTH; x++)
{
xx = x / 25;
color = yy * 32 + xx;
VGA_SET_PIXEL(x, y, color);
}
}



效果:

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客