7-segment Charlieplexing

A few weeks ago I bought the ATLYS FPGA development board from Digilent. Unlike my other two FPGA development boards (NEXYS3, BASYS2) the ATLYS does not have a 7-segment display onboard. As I often use this during debugging I wanted to add some external 7-segment display to the ATLYS board. The ATLYS boards provides two connections for add-on boards: A high-density Vmod port and a 8-pin Pmod™ port. As I'm planning to use the Vmod port for other stuff I wanted to use the Pmod™ port for the 7-segment display.

On my other two FPGA bords the 7-segment display is directly connected to the FPGA. The 4-digit 7-segment display has four anodes (one per digit) and eight cathodes (one per segment plus the decimal point) totalling in twelve pins. The display control has to be multiplexed within the FPGA. As the Pmod™ connector has only eight pins this kind of control mechanism would not work. So the most obvious alternative to send the data for pins serially and to use serial to parallel converters on the extension board. However I wanted to avoid using a lot of ICs on the boards so I went for an alternative approach: Charlieplexing. Continue reading

Screenshots over USB from Agilent DSO-X 3014A

The Agilent (now known as Keysight) oscilloscopes of the 2000X and 3000X series have a built-in USB device interface which allows them to be controlled from a USB host capable PC. It is implemented as a USB Test & Measurement Class Device (USBTMC) and is usually used by National Instruments implementation of the Virtual Instrument Software Architecture (VISA).

However there exists free alternatives such as pyvisa/pyvisa-py for Python. These allow Python to communicate with SCPI (Standard Commands for Programmable Instruments) compatible devices over RS232/TCP-IP/USB. The Agilent 2000X/3000X series oscilloscopes provide the :DISPlay:DATA? to retrieve the currently view display data as a screenshot. So I wrote a small Python script to get the data and write it to a PNG file. You can download it here: screendump.py. Continue reading

Bandwidth upgrade for Agilent DSO-X 3014A

A few weeks ago I ordered a bandwidth upgrade (DSOX3BW24) to 200 MHz for my Agilent DSO-X 3014A oscilloscope. As this is a software upgrade the hardware must be already have a bandwidth of at least 200 MHz which is limited in software. The only new hardware which is provided through the upgrade are four new N2863B probes which provide a bandwidth of up to 300 MHz instead of the N2862B which were supplied with my oscilloscope providing up to 150 MHz of bandwidth. Continue reading

U-Boot on BeagleBone Black

Understanding the boot up mechanism of the BeagleBone Black is important to be able to modify it. As we later want to change the Linux Kernel itself we need to know how it is started by the BeagleBone.

The AM335x processor on the BeagleBone Black has many configurable options where it can boot from which are all documented in Chapter 26 of the AM335x ARM® Cortex™-A8 Microprocessors Technical Reference Manual. The BeagleBone Black provides by alternative boot sequences which are selectable by the boot switch (S2). Continue reading

BeagleBone Black

For my recent electronics projects I wanted something more powerful than the usual Atmel megaAVR or AVR XMEGA microcontrollers I used in the past. The obvious step upwards in performance is some embedded system running Linux. A few years ago I played a little bit with an ALIX.3D3 embedded board, but nowadays most people would start with a Raspberry Pi and I also used to have an early model of those as well. Even though the Raspberry Pi seems to be everywhere there is a better alternative in my view: The BeagleBone Black. The most obvious advantage of the the Raspberry Pi (even compared to the Model B) is the much high flexibility concerning I/O. Most important it provides with its general-purpose memory controller (GPMC) a high-bandwidth parallel memory interface which is ideal for a fast interconnection e.g. with FPGAs.
Continue reading