Overview.
Here is the overall block diagram file (BDF) for Karibu. Don't bother trying to read it; all important subsections are covered in greater detail in other sections.
It is not a very large design. Everything is done in hardware as opposed to having a general purpose processor. Everything more complicated than combinational logic is created with megafunctions and/or VHDL, with the BDF mostly serving to connect all the subsystems.
Here is a brief video showing the general operation of Karibu:
Clocks and reset pulse.
Currently, the 50MHz clock runs all clocked systems. The 27MHz clock is included as an input in the BDF simply for completeness. The block clk_div divides the 50MHz clock to provide 1Hz-100kHz in decades, which are used throughout the design.
The reset pulse generator provides an active-low reset for ~300ms after clk_div begins operating. This is used to ensure that power and clock are stable before certain systems begin to operate.
LCD.
The LCD is used to display a static welcome message:
"ECE2031 - DDL"
"Don't Panic."
Push buttons and green LEDs.
The push buttons (PBs) control the green LEDs above them and the left half of the seven-segment displays.
Seven segment displays.
The left half of the 7-seg displays scroll "ECE2031", clocked by any of the PBs. The right half of the 7-segs loops a fading, scrolling display (see main discussion for visuals).
Switches and red LEDs.
Each switch directly controls the LED above it. When an LED lights, it propagates to adjacent LEDs, creating a ripple effect. If the ripple collides with an active switch, it reflects. See the main discussion for video.
VGA display.
The VGA displays a gradually-changing rainbow, making use of the 10-bit video DAC.