Motivation In late 2015 I was doing my usual head-scratching about what gifts to get various family members for the holiday season. My wife mentioned making something electronic for my father-in-laws boat, and after a few hours of collecting thoughts came up with an idea:
A Raspberry Pi computer, which could be powered off the boats 12v batteries. This computer would have sensors which made sense on a boat. Certainly GPS. Iād have some software which collated the sensor data and displayed it nicely. This could plug into the onboard TV using HDMI. It would all be put into a suitable enclosure.…
This is an article on porting my VHDL character generator from a Xilinx Spartan6 device to one with a Spartan3. It starts off as a simple port, analyzing device primitive differences and accounting for them in the design. Along the way, there were considerations on how clocks were generated, characteristics of block ram timing, and general algorithmic design. Iāll assume youāve read the sections of my Designing a CPU in VHDL series specifically detailing the implementation of the character generator.
Reading time: 10 minutes
When I first attempted to synthesize my TPU CPU Core design on to the miniSpartan3 developer board (made by the great folks at Scarab Hardware), the bulk of the code went without a hitch.…
This is part of a series of posts detailing the steps and learning undertaken to design and implement a CPU in VHDL. Previous parts are available here, and Iād recommend they are read before continuing.
Itās finally that time! I have committed the latest TPU VHDL, assembler and ISA to my github repository. Fair warning: The assembler is _horrid_. The VHDL contains a ISE project for the LX25 miniSpartan6+ variant, but the font ROM is empty. The font ROM Iāve been testing with doesnāt have a license attached and I donāt want to blindly add it here. You can, however simulate with ISim, and directly inspect the Text Ram blocks in ASCII mode to see any text displayed.…
The folks over at Scarab Hardware, who make the miniSpartan6+ board I do most of my FPGA tinkering on, kindly provided me with one of their other devices ā the miniSpartan3.
miniSpartan3 is a smaller board, with less features and a Spartan3 Xilinx FPGA instead of the newer generation Spartan6. However, it is very competitively priced, with the board I received costing only $39 ā which is a bargain for a small dev board with HDMI out, really.
I thought Iād write a small post about ho to get this board set up and running some āhello worldā test. To do this, we need a few things:…
This is part of a series of posts detailing the steps and learning undertaken to design and implement a CPU in VHDL. Previous parts are available here, and Iād recommend they are read before continuing.
Now we have text-mode HDMI/DVI-D output, itās about time we started writing more code for TPU. However, weāve not delved into too much detail yet about the memory subsystem ā the part of the puzzle which reinterprets the various busses from the TPU module in VHDL and manages how data flows between different memories and/or mapped āregistersā.
TPU memory interface TPU has an address bus output, a data input bus and a data output bus.…
This is part of a series of posts detailing the steps and learning undertaken to design and implement a CPU in VHDL. Previous parts are available here, and Iād recommend they are read before continuing.
Whilst having a pixel-based video output on TPU is great, there is fundamental limitations with regard to resolutions and memory. Itās very hard to convey real information with such a resolution, and really what I need is the old style text modes of past. Think 80Ć25 characters, DOS/BIOS post screens. What is needed to implement that sort of output?
First of all, we need to fix down on our ātext resolutionsā.…