Home

Awesome

CDL Hardware Repository

This repository contains hardware modules in CDL that scale from general utilities, CSR handling, and input output, down to simple CPUs and peripherals.

[https://atthecodeface.github.io/cdl_hardware/cdl_external_html/index.html]

There are regression tests for most modules, and they are fully documented (well, at present about 65% fully documented, but quickly being completed).

The modules are pulled together to form some small systems, including a complete BBC microcomputer implementation.

Purpose

The original purpose of this respository was to provide some more open source CDL hardware designs on top of the original GIP implementation (which was CDL 0.6 compatible) and on top of the CDL source regression code. This then helps enable the design of a hardware intermediate represenation (IR) that can be targeted efficiently at FPGAs, simulation/emulation and real ASICs.

Plans

Immediate plans are:

Summary of CDL source directories

Modules are broadly grouped by function into directories, and they are all in the cdl directory

cdl/utils - solid regression

Utils is for generic modules that may be used in many different areas of design - general purpose utilities, in essence.

cdl/csr - solid regression

CSRs contains modules that implement a pipelined CSR (control/status register) interface; being pipelined this bus can be used across an ASIC or FPGA to meet timing simply. The bus uses a master-to-target tree, with a wired-or response path; registers may be placed in either direction along the way.

cdl/input_devices - solid regression

This directory currently contains just a PS2 keyboard host controller and key mapper, which permit a PS2 keyboard to be attached (for example) to an FPGA.

cdl/led - solid regression

This directory contains a simple 7-segment display decoder for hexadecimal (actually not regression tested), and an Adafruit Neopixel LED chain driver that can drive any length of Neopixels with 24-bit RGB values.

cdl/video - some regression (teletext)

This directory contains simple framebuffer modules and a teletext decoder. The teletext decoder permits very simple debug data to be presented to a VGA or LCD display (or even SXGA...) using the companion 'dprintf' module.

This directory also contains implementations of some video chips, used in various older microcomputer systems.

cdl/apb - solid regression

This directory contains a number of APB targets and masters, and an APB arbiter/multiplexer.

CPU, apb, boards, bbc, serial, storage

to be written up here yet