A brief history of my more practical electronics projects
This is not a complete list, but it covers the most interesting steps on the way.
Early days and home projects
This is just a list of some of the old electronics projects I have done. The order should be correct, but the actual time might be off by a year or two...
- 1981: My first LED blinker circuit. The basic design with 2 transistors, 2 LEDs, 2 capacitors, 2 resistors and 2 variable resistors. Loads of fun for a young boy around 7 years :-)
- 1986: A digital door bell. Contained a ROM with 24 tunes, selector circuit and a few adjusts (speed, pitch and volume, if I remember correctly).
- 1989: A solder on the motherboard memory extension for my Amiga500. This one was a scary project.
- 1990: A pair of speakers. Actual electronis limited to the audio crossover... Anyway the design of the crossover as well as the box shape and size required some study of audio electronics and acoustics.
- 1995: A Lego car. Simple Lego built car with two Microchip PIC16F84 microcontrollers, one driving the rear wheels and one "navigating" and steering. For steering and propulsion I used stepper motors from two old matrix printers I dismantled. The "navigation" was based on a few feelers/whiskers made out of paper clips.
- 1996: A stereo amplifier. A small audio amplifier with volume, balance, bass and trebble controls. Selectable output for either speakers or headphones. All built inside a 5 1/4 drive bay of a PC.
- 1997: A harddrive controller for Amiga500. Connected via a flat cable soldered on the motherboard. The hardware worked just fine, but my assembler language device driver had some bug, since the drive always appeared empty after power up. As long as the power was applied, it worked fine. Never got around to find the bug :-(
- 1998: A Video "repairer". An analog circuit for restoring lost sync signals and inverting polarity of the brightness. Remote control via JVC Compulink from my stereo connected to a PIC cannibalized from the Lego car.
- 1999: An analog filter with very long time constant. A simple low pass filter with time constant of more than two minutes and three operatig modes (bypass, run and set). Problematic due to the leaks in the high capasity condensator. This was designed for use in radiation physics laboratory, operated by students, so the design was short circuit protected on all ports. (Note, apparently this system is still being used in the spring of 2013!)
FPGA related practical projects
- 1998: First contact with FPGAs. Some very simple projects for a course on HDL based circuit design. The board might have been based on Xilinx 4000 series, not sure any more...
- 2005: First encounter with XESS 3S1000 and XST3 combination. Started with some tests for the board, displaying an image on a monitor, some image filtering, cache memory for the filter, hard drive control and so on. Finally implemented the first version of REALJava on this board. (further details about the progress of REALJava below) This board is based on a Spartan3 1000 chip.
- 2006: I got access to a ML310 board. As always, some demonstrations, both standalone and with an operating system (Linux). After some poking around I managed to implement a REALJava core on the system, with the software partition running on the hardcore PPC405, making it the first "fast" implementation. This board housed a Virtex2Pro30 FPGA chip with dual PPC405 cores.
- 2007: We obtained a ML410 board. With a relatively short learning period (the board is very much like the ML310) I ported the hardware to the new board. The main benefit being larger FPGA size, allowing up to 3 REALJava cores to be implemented in the system. The board was a step up to a new generation of FPGAs, namely the Virtex4FX60, also with dual PPC405s.
- 2008: Realtime video. Used the XESS boards to capture live television stream and send it to a monitor. Had a hard time finding monitors accepting this low sync rates (50hz for PAL video). This has been used as the starting point for student projects performing various filtering and overlay functions.
- 2009: Virtex5 era begins. We acquired a new larger (based on the amount of the FPGA logic) board from Avnet, namely AES-XLX-V5LXT-PCIE110-G with a Virtex5LX110T chip. The chip no longer contains hardcore PPCs, so a MicroBlaze softcore CPU was used instead. So far up to 8 parallel REALJava cores have been implemented on this system.
- 2010: Partial reconfiguration. The first attempts at PR, and after some playing around, a fully functional system with a runtime reconfigurable REALJava core available.
- 2010: PIC16 series CPU on several FPGA platforms. Implemented a PIC16C5X compatible CPU on the XESS, Avnet and ML605 boards. Compatible with the Microchip assembler compiler.
- 2011: FPGA for the LET. Control, communication and analysis for the LET instrument, a part of the Solar
Orbiter satellite project. Current prototype is fully functional save for the analysis part. Implemented with
Actel AP250, APE1500 and APE3000, the last is a prototyping emulator for RTAX2000SL from Aldec.
- 2011: FPGA emulator of the PHASIC chip. Implemented on XESS 3S1000, used for developing control for
the PHASIC. Three PHASICs are used for one LET unit.
- 2012: SOLOJava, a standalone version of the REALJava co-procesor core. Initially implemented on the XESS board, and then on a Virtex5 board. Some preliminary performance figures are available at the REALJava result site.
- 2013: FPGA interface to the Kovilta KOVA1 vision chip. Performance and stability improvements, maximum frame rate upto 10 000 fps for BW images and around 2 000 fps for gray scale images (~3x improvement), using a Spartan6.
- 2014: Implementing a Hough transform for lines on the FPGA connected to the Kovilta KOVA1 vision chip. Initial purpose was to enable seam tracking during high power (10kW) laser welding. Maximum frame rate for the transform is around 2 000 fps, depending on image data. The transform unit does not interfere with the normal operation of the camera.
- 2015: Implementing automatic capture of the laser center point, distance between the seam and the laser center point, and mode filter for cleaning up the distance data. The mode filter is "ultra fast" approximation, and only takes 4 clk cycles even though the search space is 8 bits wide. The output could be used to control the welding robot directly.
- 2016: FPGA-based camera. A setup with 20+ Mpixels, all prosessing done on FPGA, including ethernet for communication. The processing steps include de-bayer, black level calibration, whitebalance correction, optional sharpness enhacement and JPG compression. Data rate is quite high, as the camera chip supports upto 10 parallel channels from the chip to the FPGA, each running over 550Mbits / sec resulting in aggregate bandwidth of over 5.5 Gbits per sec.
- 2017: FPGA-based emulator for voltage and frequency scaling, 32 bit cpu + DSP core, software controllable frequency and emulated voltage levels, timing information generated from voltage-frequency combination on-the-fly with hardware, used for SW development and design verification while the actual chips are being manufactured. Debug data pushed to a monitor via HDMI and/or VGA in real time, including all the frequencies and voltages (real and emulated) and register values for the emulated on board chips that will provide the functionality on the real PCB.
- 2017: FPGA-based control system for an experimental camera, controls the experimental camera chip and on board bias sources, includes a minimal custom instruction set processor to execute sequences on the camera chip and also memories for the images and the instruction streams.