The last week whilst not at work, has been a bit hectic. I have managed to get video output from the first prototype FT812 board, and completed a new pcb layout for the pre-production prototype - which is now called EVITA - a low cost XGA graphics adaptor.
The pcb artwork for EVITA has been sent for manufacture |
EVITA has a number of attractive new features - not present on the earlier prototype:
- 1024 x 768 60Hz XGA Graphics
- micro SD card for storing images and videos
- Audio synthesiser and output via 3.5mm jack connector
- 5V tolerant - will now work with 5V Arduino - without risk of damage
- Faster data transfer using QSPI (Quad SPI)
- Hardware pinouts compatible with GameDuino 2
- Works with a multitude of different microcontroller and FPGA development boards.
EVITA provides a complete video, audio, keyboard and mouse subsystem for any retro-game or retro computing project. It is compatible with Papilio Duo, Nucleo, Discovery F7, Arty, and many of the Arduino like dev-boards.
Meanwhile, James Bowman, in Northern California reported on December 29th that he had achieved XGA resolution of 1024 x 768 60Hz - which is something of a game-changer. The XGA shield was fitted to a Papillio Duo FPGA board running an instance of James's own J1b Forth processor. This increased resolution opens up a whole lot more applications.
In this post, I pause for thought, before diving into the next part of the FT812 XGA Shield development. I consider potential applications - now that we have a universal video board that can be added to a wide variety of microcontrollers - both big and small.
The EVE (embedded video engines) work on the principle of a "Display List" of objects that the microcontroler sends to the FT8xx as a series of SPI commands and data. The list of objects can be generated "on the fly" by the microcontroller - so as to provide an interactive user interface, such as an animated game - in which the motion of the characters is controlled on influenced by the User input. Alternatively the display list can exist as a "pre-canned" static display, stored in memory, - either flash or RAM, or communicated to the mcu via some communications link.
It's this latter option that I believe will open up a range of applications.
Compressing the Bandwidth
We are all familiar with how a browser application can create a web page from a few lines of HTML, and that the raw HTML code may easily be transferred via a communications channel - such as ethernet, WiFi or 4G. The HTML is effectively a form of shorthand - and it is the job of the browser to convert this code into a graphic-rich web page.
In a similar way, the display list commands for the FT8xx could be conveyed over a relatively low bandwidth link - such as serial, ethernet or low power wireless - and then the FT8xx renders this fairly compact display list into an attractive graphical user display. However, a typical display list could be 10,000 characters long, and sending such a list might lead to complications with very low bandwidth communications channels. This is where I believe the idea of "pre-canned" screens may be applicable.
The Universal Instrument
Suppose for example, you are an electronic engineer, and you really only want to carry around one bit of equipment - like a multimeter or handheld 'scope. By "pre-canning" the user interfaces for a range of instruments such as DVM, 'scope, logic analyser, chart recorder/datalogger, decibel meter, thermometer, infra red flir imager - then all of these instrument "identities" could be stored in flash - and you could easily switch between them.
So in theory, the only information that would need to be sent to the "Universal Instrument" would be a value, an a tag that described it's identity, and what UI screen to display it on - a datagram.
Big Screen Beckons...
Furthermore - if the data to display can be greater condensed - it can be conveyed via a low bandwidth link - for example BLE. Then the XGApcb may be packaged as a "dongle" that is plugged into the back of the TV or monitor via the VGA port - and all the data conveyed from the instrument to the large screen via BLE. Equally so, a handheld device such as a smartphone or tablet, could run an application that generates the UI datagrams.
As the XGA shield has shown - the FT812 is just as capable of generating an image for a large screen monitor as it is a compact LCD. If the image format was correctly chosen - it might even be possible to have a large monitor display a duplicate of the image on the LCD. This opens up the possibility for small portable instruments that can also display on the big screen - like a scope or logic analyser with a 32" screen for example.
Some New Features
The Evita design is currently undergoing some updates - such that it will contain additional hardware - for even more useful features:
- Interface to a Wii Nunchuck controller - for accelerometer, joystick and button controls.
- Allow a LCD of up to 7" and 800 x 480 to be driven as well as the external big screen monitor
- Interface with FPGA hardware to allow a HDMI video interface to be used.
- Extensive graphics library in both C and Forth.
We have probably reached the point where a 7" tablet would make a great user interface for the Universal Instrument - costing about $50. Is there really any point building anything for yourself these days?
The Learning Machine.
Of course there is a point to doing things for yourself - it's called education.
I would probably have no idea how to plot a pixel or draw a line on the screen of a PC or a tablet - it would involve someone else's application code, that I know little or nothing about, nor the way in which the operating system drives the graphics processor. For the newcomer or student of Computing Science, there is a huge amount of historical information to take on board, before these modern systems can be properly understood.
With Evita - coupled up to a fairly modest microcontroller - a few simple commands can produce colourful animated graphics. If you want to know more - it's all in James Bowman's Gameduino 2 Book.
Being able to output colourful text and graphics with a few commands, really increases the interaction potential between user and computer. It also brings back the joy of learning programming, immersed in a colourful world where a few keystrokes can create stunning graphical effects.
I have mentioned in previous posts the "Nand to Tetris" course - which takes the computing science student through the whole process of designing a modern computer system - hardware plus all the layers of software starting essentially with Nand gates.
When the "N2T" course started in 2005, FPGA hardware was not widely available outside industry or academia, and 7" colour LCD touchscreens were a bit more than $50. Now that there is a lot of cheap hardware available, it would seem sensible to revisit the N2T course and add in a substantial hardware element - based on modern low cost hardware.
A low cost FPGA board (about $50 to $100) and a video subsystem consisting of a 7" LCD touchscreen and the EVE embedded video engine would allow a wide range of hardware oriented teaching modules to be taught. For about $200, a first year student could design and build a complete, portable embedded computer - capable of running a high level language, using a soft core processor running on a FPGA - designed from scratch.
The handheld computer could be used for datalogging, controlling lab experiments, instrumentation and measurement (DVM, oscilloscope etc), note taking, game playing and a myriad of useful tasks. Students would become intimately familiar with the inner workings, during the course of their studies, that they could produce hardware add-ons, and share these designs with other students - worldwide.
I hope to cover this topic in greater detail in a later post.
Very nice! Quick question, why not using a DAC like the ADV7125 instead of all these resistors?
ReplyDeleteThe ADV7125 is a $7 device in 1000 off quantities - that would double the BOM cost of this project.
ReplyDeleteResistors are cheap - all those resistors comes to about 3 cents.