Slow progress

A project log for FPGA Serial Terminal

Instant-on VT100-style serial terminal implemented in minimal FPGA board, with VGA display and PS/2 keyboard.

Howard JonesHoward Jones 09/10/2015 at 21:140 Comments

Actual characters on an actual screen. What I thought I had worked out ages ago was not really correct.

This is 800x600 @ 72Hz SVGA mode, with 9x16 character cells and 8x16 font. The red bars are 8 pixels wide which is why they drift out of step with the characters. On a VGA screen, line-drawing characters are extended into column 9, to allow you to draw continuous boxes, so column 9 of the character is generated from column 8, if the character is within particular ranges, otherwise you get the spacing between characters.

The actual character grid will start in further from the edge of the screen to allow time for the first character to spool up (fetch from screen ram, fetch from font rom, and interpret the attribute byte).

Next steps:

  1. Wire up the 2-bit R/2R VGA DAC and a new DB15 connector - currently the dev board's built in VGA port uses only one pin each for R,G,B and I need 16 colours, not 8. (Final target is a smaller board with no fancy I/O anyway)
  2. implement attribute decoding, and a latching register for the fg/bg colours to latch on the new character (after being prepared during the previous one).
  3. implement the selector logic for fg vs bg with flashing (flashing is already there).
  4. implement screen RAM with altsyncram - I already have some ANSI gfx in screen RAM format to test with.

At that point, we should be ready to hook up a CPU!

Also, on the dev board I'm currently using, the buzzer produces a high-pitched whistle, despite nothing being assigned to its I/O pin. It'd be nice to not have that. I also just noticed that C, L and U are missing from the character set below... probably not a coincidence that there's 8 characters in between each missing one.