Categories
hardware internet tech

Machine Inside of a Chip: How Sprite_TM Built the FPGA Game Boy Badge

Kids of the 1990’s would name you a liar if you happen to informed them that inside of thirty years you’d pass to a convention and be passed a Super Nintendo Entertainment System to put on round your neck. But that’s what came about with the badge Jeroen Domburg, aka [Sprite_TM], designed for the 2020 iandroid.eu Superconference. It’s constructed within the Game Boy shape issue, entire with a cartridge slot, gorgeous display, and the acquainted button format. But there’s so a lot more right here, just like the HDMI port at the backside and the facility to totally reconfigure the tool by means of shedding a binary report onto it over USB.

Of direction what makes this conceivable is the FPGA on the center of the design. The tale of the way the badge used to be evolved is shared in nice element all through Sprite’s Supercon communicate. The timeline, the {hardware} alternatives, and the oopses alongside the best way make for a really perfect tale. But what you actually don’t need to pass over is how he constructed the system inside the FPGA — the choice of Verilog code referred to as “gateware” that brings in combination the System-on-a-Chip (SoC). From his pride at with the ability to spawn extra processor cores by means of converting a unmarried variable, to the attention-grabbing SNES-inspired graphics subsystem, the interior tale shared under is much more fascinating than the bodily tool itself.

Hardware is Hard

There’s so much happening with this badge. On the PCB you’ll discover a Lattice LFE5U-45F FPGA which is available in a 381 caBGA bundle with a whopping 203 to be had I/O alerts. Imagine routing that on a PCB to attach up a couple of RAM and Flash chips, the colour LCD, 40-pin cartridge slot, IrDA, USB, HDMI, and a couple of RGB LEDs. Now consider doing it two times!

Green FPGA badge prototypeOne of Sprite’s largest classes at the {hardware} facet of items is that you simply shouldn’t push the board space’s tolerances too exhausting. His prototype adopted the design regulations said at the corporate’s web page, however best one of the most forums he were given again in reality labored. The failure price used to be a long way too prime, with exact manufacturing a long way from said functions. The entire re-routing used to be to extend the minimal hint width which led to a lot better yields at the next batch.

He stocks a handy guide a rough tip on prototyping; make a selection a special solder masks colour for every prototype run and also you’ll at all times know which model you could have on your hand. In this undertaking he went thru inexperienced, pink, and blue, ahead of arriving at the black solder masks of the manufacturing badge.

Cores and Peripherals

The downside with FPGA tasks is that upon getting the {hardware} assembled it doesn’t in reality do anything else. You want just a little circulation — that gateware discussed previous — that tells the FPGA its function. This badge is as open supply as you’ll be able to perhaps get and that incorporates the processor cores. A variant of the RISC-V core referred to as PICORV32 used to be selected as the most efficient stability between capability, dimension, and particularly as a result of it’s written in Verilog to check the remainder of the paintings at the SoC.

Of direction the entire concept of the badge is for other folks to get below the hood and Mod at the factor. The whole machine can also be compiled the usage of open supply gear evolved over the past yr or two. To support in that, Sean Cross (aka Xobs) packed a no-dependency model of the gear appropriate for cross-platform use. User packages to run at the RISC-V can also be flashed to the badge as USB mass garage, and because of lend a hand from Sylvain Munaut, all of the SoC can also be reflashed the usage of Device Firmware Upgrade (DFU) over USB. The growth cartridge itself has just a little of flash reminiscence on it, and the FPGA will run the bitstream it reveals on any inserted cartridge.

The factor is, in spite of a somewhat speedy clock at the FPGA itself, the PICORV32 core best runs at about 6 MHz. How are you going to push lovely pixels to the 480×320 show with that clock velocity? The SNES responded that query with a artful graphics subsystem and the ones tips are constructed into this badge.

Layered Graphics Makes a Slow Processor Seem Fast

Microcontrollers deal with dense shows by means of upping the clock velocity, however the higher trick is to make use of {hardware}. Rather than processing all of the ones pixels you’ll be able to lean at the {hardware} to transport reminiscence round, which is strictly how this show will get to be blazing speedy. For any person involved in graphics, the documentation of this actual subsystem is a will have to learn (and will have to bookmark for long term reference). Five layers are used, background, framebuffer, two tile layers, and a sprite layer.

Demo graphics on Supercon badgeThis nonetheless mage does the demo no justice. You actually want to see the video.

The tile layers and sprite layer are essentially the most fascinating. They use tile maps, PNG or TGA pictures that retailer 256 16×16 sq. pictures of as much as 16 colours. Rather than copying every pixel out, the processor simply offers an index quantity to the correct tile and tells the machine which tile-sized slot to position it in at the tile layer, {hardware} handles the real copying. But it will get higher, the two tile layers can also be moved in 1/64th of a pixel increments to animate them. While the tile layers are a grid of sixteen-pixel tile places, the sprite layer means that you can draw tiles at any pixel location, and to scale the ones tiles.

Sprite_TM discusses a lot of different tips constructed into the subsystem. You can rotate each sprite and tile layers, and he demonstrates an enchanting colour palette manipulation trick that provides the appearance of animating what’s in reality a static symbol. There’s even a check in manipulation mechanism referred to as The Copper which provides to the thrill with wavy results which you’ll acknowledge whilst you see them. A few weeks after Supercon, Bob Hickman posted up a demo at the badge that places all of this to wonderful use.

Too Much for One Person

Let’s be transparent, nearly all of the trouble in this badge used to be installed my Sprite_TM himself. How he controlled this over the process best 10 months is a thriller. But many of us jumped in to lend a hand get it around the end line. A few dozen prototypes had been made and put into the arms of people that volunteered to increase workshops across the badge, serving to get other folks began on FPGA or to advancing the abilities of those that had already given this box a take a look at. Numerous other folks pitched in to seek down insects, construct out subsystems like sound, enhance the person enjoy although get started monitors and video games, and to accomplish the general meeting.

I feel I discuss for everybody who were given one of those badges in announcing thanks all who helped make this occur, and particularly to Jeroen Domburg. It’s undeniably spectacular that this undertaking got here in combination in time for Supercon, and it represents an effort that can smartly by no means be crowned. But on the similar time it’s a testomony to what occurs whilst you mix a supremely-motivated hacker with a supportive neighborhood and excellent open-source gear. This is a brilliant international we are living in.

Dig into the main points of the FPGA badge at the iandroid.eu.io undertaking web page and your complete {hardware} and instrument repository.