2

我正在使用 Altera DE2 FPGA 板和 verilog,使用它们设计了一个简单的 CPU。我需要使用电路板的 VGA 输出打印寄存器的值。

我该怎么办?

4

2 回答 2

5

恐怕路还很长。

首先,您需要拥有一个 VGA 输出外围设备。这会从内存中获取值,并在相对于同步脉冲(它也必须生成)的正确时间将适当的 RGB 值发送到屏幕。

完成此操作后,您的处理器需要将一组点写入内存,这些点看起来像您要显示的字符 - 因此您需要一个简单的位图字体。或者,您可以使内存面向字符,因此处理器只需将一组 ASCII 值放入其中,然后 VGA 输出将查找 i(在内部字体查找表中) 'a'(比如说)应该在它当时正在创建的显示的任何一行上。

视频输出是一个很好玩的项目!

于 2012-06-07T14:58:16.023 回答
0

加上马丁所说的,如果你想通过破解它来缩短这条路径,你基本上可以制作一个片段库。要理解我在说什么,如果您查看 7 段显示器,每个段单独亮起以创建 0-9 的值,基本上您可以编写一个库来创建这些段中的每一个,然后将它们转置以表示一个位,十位,以此类推。这是一些代码片段,它显示了右下角的段。

/*
  __5__
 |     |
1|__6__|3
 |     |
2|_____|4
    7
  offset referring to the position meaning tens or ones place.
  If you would like ones place, call seg_1(0) for example and 
 if you would like tens place, call seg_1(1) and so forth. 
*/

void seg_1(int offset) {
    for(i = 360; i < 420; i++) //y-axis
    {
        for(j = 540-(offset*120) ; j < 560-(offset*120); j++) //x-axis
        {
            Vga_Set_Pixel(VGA_0_BASE,j,i);
        }
    }
}

void seg_2(int offset) {
    for(i = 420; i < 460; i++) //y-axis
    {
        for(j = 540-(offset*120) ; j < 560-(offset*120); j++) //x-axis
        {
            Vga_Set_Pixel(VGA_0_BASE,j,i);
        }
    }
}
...
...
于 2013-05-23T04:38:54.007 回答