element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Personal Blogs
  • Community Hub
  • More
Personal Blogs
Legacy Personal Blogs NTSC/PAL Video Display Shield
  • Blog
  • Documents
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: wolfgangfriedrich
  • Date Created: 9 Apr 2018 4:04 PM Date Created
  • Views 4194 views
  • Likes 9 likes
  • Comments 7 comments
  • composite
  • video
  • arduino_projects
  • NTSC
  • arduino_classic
  • openarduinoch
  • arduino
  • tindie
  • pal
Related
Recommended

NTSC/PAL Video Display Shield

wolfgangfriedrich
wolfgangfriedrich
9 Apr 2018
image

Open Arduino

Enter Your Project for a chance to win a grand prize for the most innovative use of Arduino or a $200 shopping cart! The Birthday Special: Arduino Projects for Arduino Day!

Back to The Project14 homepage image

Project14 Home
Monthly Themes
Monthly Theme Poll

 

This Arduino shield will make an end to your 1st project being an LED to be flashed. Now you are able to connect a display (which we are all hooked to anyways) and generate a virtual LED that is going to blink in every color you have ever dreamed of.

Now seriously, the Arduino family of compatible boards is lacking a solid hardware support option to display images, animations or video. This board provides an analog composite video display with integrated frame buffer memory accessible through SPI bus. It will not display 4K video but somebody will hack it to run Doom, Joust or Ultra-Cricket. PAL and NTSC output formats are supported, resolution is up to 720x576 with reduced color count. Yes, there are software solutions available to generate video or RGB signals, but they use critical timing code and a lot of the available computing power of the limited uC.

A 2Mbit SPI FLASH memory is available on-board to store font character bitmaps or graphics.

image

The heart of this design is the VLSI VS23S010D-L chip. It is a 1 Megabit SPI SRAM with Serial and Parallel Interfaces and Integrated Video Display Controller, which outputs a composite video signal. Unused memory can be used for graphics tiles, which can be copied into the image data by the internal fast memory block move hardware.

 

Possible video resolutions, PAL and NTSC modes might be exclusive depending on the mouted crystal (4.433618MHz or 3.579545MHz):

image

The chip has a 3.3V interface, so a level shifter logic is required, which is done by a 74LVC4245A buffer. It is able to handle SPI Mbps speed better that a simple FET based level shifter. A footprint for a 512Kbit EEPROM for bitmaps and character memory is added, but is probably too slow for effective operation. The current version does have a 2Mbit SPI FLASH chip for better speed and memory size. Now I am dreaming of SPI DMA, which just gave me an idea of a small PLD and a parallel flash memory to implement that.

 

Rev3 of the board (with added SPI FLASH) is being designed, might be the final one if things go well. Writing SW is so hard in comparison. Currently NTSC 320x200 and PAL 300x240 resolutions are working with an identical color map. This is important to have an unified RGB to YUV conversion table. Both resolutions have 8bit color depth.

 

The board uses the Arduino IOREF voltage to translate between 3.3V on the shield side and the respective IO voltage on the Arduino side. This shield works together with UNO and also with any 3.3V system that uses the Arduino form factor and pinout, without modifications.

 

Specifications

  • Lead-free components and soldering
  • Operating supply voltage 4.5V - 20V
  • Board IO voltage (IOREF) 1.5V - 5.5V
  • Composite Video Output
  • Maximum resolution 720x576 in 4 colours
  • Implemented resolutions: NTSC 320x200 with 256 colours (40x25 characters text mode) and PAL 300x240 with 256 colours (37x30 characters text mode)
  • Crystal: NTSC 3.579545MHz or PAL 4.43618MHz
  • Communication interface: SPI up to 38MHz
  • Video Frame Buffer: 1Mbit = 128KByte
  • Flash: 2Mbit = 256KByte
  • EEPROM: up to 2Mbit (optional, not populated)
  • IO connectors Arduino compatible
  • Size: 61.3mm x 53.4mm (2.4" x 2.1")

 

Disclaimer

This board is for sale in my Tindie Store.

I sell on Tindie

 

Design

Software library and design files are available on my Github page. Updates are happening.

 

 

Design Proving

 

Text output on my new 7" display. Now I can work on my desk instead in front of the 40" TV.

image

And a scope plot of a nice NTSC video signal displaying the color test image.

image

 

MEGA/DUE

 

Using the board with an Arduino MEGA or DUE requires a special cable to connect the SPI interface and a few extra commands to disable some pins on the controller. Another option would be to use a SPI soft core and map the same SPI pins as the UNO. I have not tried it yet.

To use my Video Display shield (and any other UNO shield that wants to talk SPI) with my MEGA clone, this is what I did:

 

Connect the SPI communication signals through jumper wires to the shield.

 

SCK:  Mega pin 52  -> Uno shield pin 13 - orange wire

MOSI: Mega pin 51  -> Uno shield pin 12 - brown wire

MISO: Mega pin 50  -> Uno shield pin 11 - blue wire

 

The slave select pin 53 does not need to be wired, as it is mapped as a normal GPIO in a normal Uno sketch. The picture for the pin numbers 50-51 on the Mega connector is misleading due to the parallax.

image

(The RCA connector is not in a ideal location for the wire jumpers. Here is a reason for another spin).

 

It is also possible to cut a piece of the PCB to get access to the SPI header.

image

 

 

Make pins 11 to 13 on the Mega inputs or tri-stated outputs.

Add the define somewhere in the header file for the shield or at the beginning of the sketch

#define MEGA

Add the code to disable the pins that are used by Uno for SPI in the setup() function

#ifdef MEGA 
pinMode(11, INPUT); 
pinMode(12, INPUT); 
pinMode(13, INPUT); 
#endif

This was all I needed to do and the MEGA was happily configuring the Video Display shield and outputting the test patterns. Connecting to the DUE is similar but tricky because the DUE SPI connector is sitting under the shield. To get better access I would raise the shield with an extra set of headers.

 

NTSC/PAL

 

Here are some comparison pictures. All pictures are 8 bit color depth.

NTSC resolution is 320x200                                                                PAL resolution is 300x240.

imageimage

imageimage

 

Animation

 

Finally I have got the animation demo with the famous Amiga Boing ball running. The video quality is not stunning, but it shows what is possible with very little program overhead once the memory is set up.

 

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

 

Next steps

 

The to-do list for software is still long.

Currently working on a function to display images sent over UART.

On the hardware end, a cable and more software to support grey scale VGA is next.

  • Sign in to reply

Top Comments

  • gam3t3ch
    gam3t3ch over 7 years ago +3
    Really enjoyed that love it actually, great job! Certainly would love to play with the video display shield myself.
  • wolfgangfriedrich
    wolfgangfriedrich over 7 years ago in reply to gam3t3ch +2
    Hello Wesley, Thanks for the kind words. Much appreciated. If you really want to play with it, this link is your friend: https://www.tindie.com/products/Wolfi/ntscpal-video-display-shield-for-arduino/…
  • DAB
    DAB over 6 years ago +1
    Nice project. DAB
Parents
  • gam3t3ch
    gam3t3ch over 7 years ago

    Really enjoyed that love it actually, great job!   Certainly would love to play with the video display shield myself. 

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
Comment
  • gam3t3ch
    gam3t3ch over 7 years ago

    Really enjoyed that love it actually, great job!   Certainly would love to play with the video display shield myself. 

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
Children
  • wolfgangfriedrich
    wolfgangfriedrich over 7 years ago in reply to gam3t3ch

    Hello Wesley,

    Thanks for the kind words. Much appreciated.

    If you really want to play with it, this link is your friend:

    https://www.tindie.com/products/Wolfi/ntscpal-video-display-shield-for-arduino/

    (Have to get my marketing engine going.image

    Interestingly I thought I had it saved as draft and was surprised today about all the views. But that's OK the post is finished anyways. There will be an update to the video showing some more demos that are running on the device.

    Cheers,

    - W.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube