"); //-->
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);
}
}
效果:
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。