VGA Shield Wing

A VGA Arduino Uno Shield or Adafruit Feather Wing
640x480 - 512 colours

Similar projects worth following
A VGA shield/wing based on the VLSI VS23S040 chip. The board has 2 sets of connectors, one for a standard Arduino Uno shield and one to connect to a Adafruit feather board as a Wing. The Wing connectors also makes is compatible to breadboards. Also 4 channel composite NTSC/PAL video output is possible with the correct crystal. A SOIC-8 standard pinout SPI flash memory is on board for graphics and character sets, as well as a I2C EEPROM also in SOIC-8 package. A level translator chip takes care of the correct voltage levels, so a 5V or 3.3V Arduino could be used (Uno or Zero). The SPI signals are routed through a pin header in line with the ICSP connector, so the shield can be used on an UNO, Mega, Due or Zero with the hardware SPI interface.

It is the next generation of my Arduino Video Display Shield.

The VLSI VS23S040 is the successor of the trusted VS23S010 composite video chip with framebuffer. This Shield/Wing uses the 23S040 to generate VGA signals instead of composite video. Initial resolution will be 640x480 with 3bit per RGB to generate 512 colours.  

  • 1 × VLSI VS23S040 4 Channel video output with 4Mbit frame buffer

  • 1st steps first

    MagicWolfi03/22/2020 at 12:53 0 comments

    Soldering the BGA was amazingly easy. I use some low-temperature solder paste and a boatload of flux with my hot air pencil and everything aligned itself into place. How do I know that I have good contact? Measuring with a multimeter in diode mode, I see a diode drop of ~0.55V between every IO and Vcc. Now I have to solder all the other parts and start talking to the chip. Then comes the hard part, writing good driver software and config code...

    The other parts went on just as easy... Well, mostly.

    This looks like a nice schematic, all signals are there (sigh):

    The board needed some wire surgery, but in the end it works and now I have 16Mbit of SPI Flash for character sets and images. 

View project log

Enjoy this project?



MagicWolfi wrote 03/23/2020 at 01:01 point

No more reply, 4 comments deep ;(

I think there was a comment from Panu in the VLSI forum about the S040 dies.

SPI works tricky, as everything else in the chip. There is a register to disable access to any of the 4 register/memory sets. So you can write all 4 or only selected ones at the same time, same as 4 identical chips connected to an external SPI bus. For read commands only one can be enabled to give a meaningful answer.

  Are you sure? yes | no

Thomas wrote 5 days ago point

These guys really have a bag of tricks! I guess it takes a while to understand the finer details of this ingenious chip design. I'm thinking of buying some and make a breakout board.

What kind of solder paste and flux did you use?

  Are you sure? yes | no

MagicWolfi wrote 4 days ago point

Try contacting VLSI sales, they sent me samples of the S010 and S040.

Yes, the datasheet is a handful, but there are some very good articles in the forum, explaining stuff in detail. And sample code, which helped me a lot. When I saw the chip, I also thought about a breakout board, but never followed up on it. I even asked around about the style.

My shield wing turned out to be OK, so I don't need a breakout any more. I am using low temperature MG Chemical M3 #4902P solder paste for my prototypes. It is lead free and has a melting point of ~140degC. For production I use Chipquik NC191SNL15 lead free paste, very easy to work with. For flux, I have Chipquik SMD 291 no clean tack, which is great gooey stuff, but ugly residue when I don't clean it!? I like clean boards.

  Are you sure? yes | no

Thomas wrote 03/22/2020 at 08:57 point

That's a very interesting chip for retro-computing! Do you know where it's commonly used?

By the way, you mention 640x400 in the project title and 640x480 in the details. There certainly enough RAM for the once-popular 800x600 format but are there other limitations?

I briefly browsed the data sheet and noticed that there is a memory-move command - nice! This means that even text mode with scrolling should be feasible. An 8bit µC playing "character generator" will still be a bottleneck, but that's likely still OK for that 80s feeling ;-)

Edit: I had a look at VLSI - they have a maker/small company friendly store (single quantities, PayPal!), and the team looks like it consists of the kind if Finnish people I've learned to value:

What's there not to love?

Edit2: I just found your post in the VLSI forum - from browsing that I now understand that achieving 800x600 isn't possible but who cares?

  Are you sure? yes | no

MagicWolfi wrote 03/22/2020 at 12:21 point

Yes, it is a family of 2 interesting chips. Thanks for pointing out the error with the resolutions. I'll fix that to ...x480 because... VGA. The RAM distribution is 1Mbit per channel as the chip is basically 4 dies of VS23S010 in one package. Higher resolutions does decrease the colour depth as well. 

My P42-Display project #NTSC/PAL Video Display Shield uses the VS23S010 chip and I have seen this one in one retro platform but have no idea about commercial applications.

My demo of the bouncing AMIGA ball uses the memory move command. The memory mapping is very unusual as the source block does not allocate a consecutive block of RAM, but has enough bits between the lines to fill up a full line! The character map could live in the free part of the video RAM as well and use the block move for fast display.

VLSI is a nice company, they shipped directly to Elecrow for a small build for me. Panu and the other guys are super helpful in the forum.

  Are you sure? yes | no

Thomas wrote 03/22/2020 at 15:33 point

Thanks for the explanation and details! The VS23S0x0 are a bit like 80s ingenuity with today's silicon and density (it address-space / control trade-off reminds me a bit of the Apple II).

I didn't notice the 4-dies-in-a-package thing. I'll check the datasheet again to learn why SPI still works!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates