Micro Code

Michael's blog about teaching, hardware, software and the things inbetween

Moving is hard...

August 20, 2017 — Michael Engel

Another project for this semester break is to finally move my stuff from my old flat (about four hours away by car...) to Coburg. However, this includes a larger number of computers in the basement...

A challenge for my readers -- can you identify all the machines?

Keller 1 Keller 2 Keller 3 Keller 4

Tags: computers, moving

From silicon to simulation and back!

August 15, 2017 — Michael Engel

Here's a link to a youtube video of a talk I gave in March at the HaSi Hackerspace in Siegen (Germany) on simulating and emulating systems on different levels of abstraction -- from behavioral to transistor-level:

Hasi Talk

The video covers a number of topics related to simulation, including:

Beware -- the talk is in German and about two hours long...

You can also download a PDF version of the slides.

Tags: 6502, emulation, synthesis, hasi, talk

Open source FPGA development on a tiny budget

August 05, 2017 — Michael Engel

Last week, I have received the delivery of an Olimex iCE40HX1K-EVB FPGA development board. This board contains a small Lattice iCE40-series FPGA with 1280 LUTs as well as a 256k x 16 SRAM.

iCE40HX1K-EVB board

The exciting thing about this board (apart from its low price) is that the bitfile format of the iCE40 FPGAs has been reverse engineered, which made a complete open source toolchain possible that is able to synthesize Verilog code. The Verilog synthesis is handled by the Clifford Wolf's yosys suite, which is integrated into the IceStorm toolchain.

The synthesis does not need large amounts of computing power -- and since all components are open source, I was able to run all tools (including programming the FPGA via SPI) on a Raspberry Pi 3! This probably makes it one of the smallest FPGA development systems...

At the moment, the board is running some simple SRAM test code. I am trying to squeeze a tiny SoC onto the FPGA. James Bowman's J1 Forth CPU should fit, it will be interesting to see if a slightly bigger core, such as Niklaus Wirth's RISC0 core, will fit together with a few peripherals.

Raspberry Pi FPGA development system

Tags: FPGA, Lattice, RaspberryPi, yosys, icestorm, open source

Blast from the past!

August 05, 2017 — Michael Engel

It's almost a year since I started my new job as Professor for Embedded Systems at Coburg University of Applied Sciences and Arts. Luckily, I did not have to start completely from scratch, but was able to build upon more than three decades of work by my predecessor, Prof. Hilmar Missbach, who retired this spring (thanks a lot for all your support, Hilmar!).

In three decades, a lot of stuff accumulated in hidden corners of some drawers. The greatest item I have found so far is an original set of intel IC's from the early 1970s - an i4004 CPU and two 320 bit (80x4) SRAMs.

intel 4004

Tags: intel, 4004, digital archaeology

The lab is getting in shape!

August 05, 2017 — Michael Engel

Here is the example layout for a typical student workplace in our microcomputer and digital signal processing labs. Thanks a lot to our resident laboratory engineer Udo and our student assistant Philipp for all of their hard work!

In addition to a standard PC running Windows 10 with the WSL Linux subsystem, you can see our Cortex M3 development board, some of our standard peripherals for the lab exercises (matrix keyboard, 4x20 memory mapped HD44780 LCD and a DAC/ADC board) and a Keysight DSOX1102G scope. The scope features two 70 MHz analog channels, a signal generator and a large amount of software options, such as serial protocol analysis, Bode plots and FFT.

Lab workplace

Tags: lab, arm, pcb, scope

PCBs for next winter term

August 05, 2017 — Michael Engel

These new PCBs, designed in-house, will be used in my courses in the upcoming winter term.

Our boards feature an LPC1778 Cortex-M3 microcontroller as well as a plethora of typical embedded interfaces, such as RS232, SPI, I2C, Ethernet, I2C and, of course, plain old GPIO ports.

The boards will be used in my courses "Microcomputer Technology", a third-semester course mandatory for all bachelor students in electrical engineering and computer science, as well as "Embedded Operating Systems" for fifth- and seventh-semester students. Here, the students are expected to develop their own small preemptive multitasking OS in the accompanying lab sessions.

The microcontroller sits on a separate board, which allows to exchange the chip. We are currently working on a Cortex-M4 (LPC4330) module, which will be used for teaching digital signal processing next summer, as well as an FPGA board, which will allow to replace the microcontroller with a soft core, e.g. a Cortex M0 or M3 from arm's DesignStart program.

We have ordered the boards from EasyEDA, which has again proven to be a reliable manufacturer with excellent quality, low prices and superbly fast turnaround times -- one week from order to delivery!

Naked boards

Naked boards

Even more boards

Tags: pcb, arm, Cortex-M3, NXP, LPC1778

First the exams, then the... research?

August 05, 2017 — Michael Engel

Phew, I'm finished with marking the exams. Next winter term will be even more fun. One particularly remarkable answer from one of the exams is shown below -- the question was asking for the value of the carry bit (of an intel 8051) after executing a number of given instruction...

Exams

Fail

Tags: exams

Semester break!

August 05, 2017 — Michael Engel

Time for research, proposal writing and hopefully a bit of relaxing.

Lazy robot

Tags: semester break, vacation