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