25-11-2013

HowTo build Qt5.1.1 static with MinGW.

Reduce executable size with UPX.

A simple Color Picker 1.1.

Projects Fontys

FPGA video encoder/decoder

Graduation project at Philips TASS (now TASS Software Professionals), with the goal to design and implement a FPGA based video encoder and decoder application using the Celoxica RC200 (Xilinx Virtex II FPGA based) development board and the Handel-C hardware description language.

The FPGA video encoder and decoder are based on the RmaxCmax compression algorithm developed by Philips Research Laboratories. This compression algorithm uses discrete cosine transforms (DCT), like MPEG and JPEG. The algorithm transforms pixel blocks (of 8x4 or 8x8) into DCT coefficient blocks. The bit-planes of these DCT coefficient blocks (starting with the most significant bit-plane) are then compressed using zonal coding (meaning that only a small area of the bit-plane will be transmitted/stored). This data is then serialized in a way that the most significant data is transmitted/stored first. The resulting bit-string can be cut off at any length (to increase the compression), the remaining bit-string will produce the “best possible” image quality for the remaining data size.

A graphical user interface (GUI) is programs within the FPGA itself, and provides the user with a fast and simple interface to view the encoding/decoding process and tweak the settings. The user can select a part of the video input, set the quality (read bit-rate), and can view the resulting decoded video output.

FPGA FPGA FPGA
FPGA

Wireless 3D Game Controller

The wireless 3D game controller version 1.0 is the result of HBO project (pre Wii era). The wireless game controller system uses four tilt switches and four AM signal-meters to determine the tilting position and location in 3D space of the wireless game controller. We liked to use accelerometers, but these were out of our budget.

The game controller itself is build around an Atmel AVR ATTiny15L microcontroller combined with a 433MHz AM transmitter, four tilt switches, and four normal pressure switches. The microcontroller controller is programmed using AVR assembler, the program scans all the 8 buttons (4 tilt + 4 normal) and transmits a data frame with their status using the AM transmitter.

The base station contains an Atmel C51 AT89C5132 microcontroller combined with a 433MHz AM receiver, four AM signal-meters divided over two columns (every column has one signal-meter in the  top and one in the bottom), and an USB1.1 connection to a PC. This controller is programmed using ANSI C, the program reads the data frame received from the wireless game controller, samples the signal-strength of the four AM signal-meters, and combines this information into a single USB data frame.

The PC reads the USB data from the base station using a small Delphi application, this application calculated the controller’s position using the signal strengths from the signal-meters, enables the user to calibrate the controller, and makes it possible to map virtual mouse and keyboard inputs to the controller inputs. This mapping makes it possible to use the controller in every existing application.

Controller Controller Controller Controller
Controller