nusgart / uhdl

MIT CADR HDL
https://lm-3.github.io/cadr.html
BSD 2-Clause "Simplified" License
6 stars 1 forks source link
MIT CADR HDL

Preliminaries

This is a work-in progress port of the UHDL implementation of the MIT CADR to the Arty-A7-35T FPGA. Please note that some of the information below may be inaccurate or incomplete as a result of this.

Getting started

Requirements:

** Other versions have not been tested

git clone https://github.com/nusgart/uhdl
fossil clone https://tumbleweed.nu/r/hdlmake.mk hdlmake.mk.fossil

cd uhdl
mkdir hdlmake.mk
cd hdlmake.mk
fossil open  ../../hdlmake.mk.fossil

cd ../..

See hdlmake.mk/README for detailed instructions on how to run test benches, create bitstreams and download them to boards. To get an overview of available targets run "make help".

A disk image is also required, for example https://tumbleweed.nu/r/sys78/uv/disk.img.gz . But any disk image created by diskmaker in usim will work.

To generate the bitstream and to program the device:

make syn prog

Supported boards

Currently supported FPGA boards are:

In the works:

Common notes

The current MMC code is very peculiar about what kind of card it accepts; it works at least with a SDSC card (<2GB). It does not currently work with SDHC cards or higher speed SD cards.

The disk image should be written directly to the SD card, using dd(1) or similar.

Currently, all ports output VGA video.

Pipistrello

Requirements:

At the time of writing (2021-02-28, AMS), uhdl (and hdlmake.mk) for the Pipistrello are being mainly developed on Centos 8. Centos 8 requires minimal amount of work to get Xilinx ISE running properly. Other GNU/Linux systems should work as long as they can run GNU Make and Xilinx ISE.

The keyboard will be on PS/2 port A if using the Papilio Arcade Megawing (BPW5031) board. Mouse is currently non-functional.

(WIP) Arty A7

The port to this board is a work in progress and does not boot to lisp yet. Currently, it successfully loads the microcode but gets stuck some time later, usually in a FINDCORE loop.

Adding a new board

To add a new board, the following files are at a minimum needed:

Pass the BOARD variable to make to do synthesis or simulation.

Test Protocol

This is a basic test protocol to assure that things work as they should.