Files in the top-level directory from the latest check-in of branch trunk
- .fossil-settings
- boards
- CADR4
- cores
- block_dev_dpi.cpp
- block_dev_dpi.v
- block_dev_mmc.v
- busint.v
- busint.vh
- busint_disk_tb.v
- busint_tb.v
- cadr.mk
- cadr.v
- cadr.vh
- CADR4-notes.text
- CADR4.lisp
- CADR4.netlist
- CADR4.wires
- cadr_tb.v
- COPYING.md
- GNUmakefile
- keyboard.v
- keyboard_tb.v
- led_controller.sv
- mmc.v
- mmc_dpi.cpp
- mmc_dpi.v
- mmc_model.v
- mmc_tb.v
- mmc_wrapper.v
- mouse.v
- mouse_tb.v
- ps2_support.v
- ram_controller.v
- ram_controller_arty_a7.v
- ram_controller_arty_a7_tb.v
- ram_controller_pipistrello.v
- ram_controller_tb.v
- README.md
- scancode_convert.v
- scancode_convert_tb.v
- scancode_rom.v
- spy_port.v
- spy_port_tb.v
- support_arty_a7.v
- support_pipistrello.v
- support_tb.v
- template.v
- TODO
- uhdl.v
- uhdl_arty_a7.v
- uhdl_arty_a7.xpr
- uhdl_arty_a7_tb.v
- uhdl_common.v
- uhdl_pipistrello.v
- uhdl_pipistrello.xise
- uhdl_pipistrello_tb.v
- uhdl_sim.cpp
- vga_display.v
- vga_dpi.cpp
- vga_dpi.v
- xbus_disk.v
- xbus_io.v
- xbus_ram.v
- xbus_spy.v
- xbus_tv.v
- xbus_unibus.v
Getting started
Requirements:
- Icarus Verilog
- Verilator
fossil clone https://tumbleweed.nu/r/uhdl uhdl.fossil
fossil clone https://tumbleweed.nu/r/hdlmake.mk hdlmake.mk.fossil
mkdir uhdl
cd uhdl
fossil open ../uhdl.fossil
mkdir hdlmake.mk
cd hdlmake.mk
fossil open --nested ../../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:
- Pipistrello (Xilinx Spartan-6), with a Papilio Arcade Megawing (BPW5031) wing.
In the works:
Arty A7-100T with a Pmod shield, with VGA, 2 x PS/2, micro SD card Pmods.
- VGA is on port JC/JD.
- Ps/2 (keyboard is bottom, and mouse is top) is on port JB.
- Micro SD is on port JA.
Pipistrello
Requirements:
- Xilinx ISE 14.7
- fpgaprog (https://tumbleweed.nu/r/fpgaprog/)
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.
The current MMC code is very peculiar about what kind of card it accepts; it works at least with a SDSC card (<2GB). And might not 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.
Adding a new board
To add a new board, the following files are at a minimum needed:
- boards/BOARD.mk
- uhdl_BOARD.v
- uhdl_BOARD_tb.v
- ram_controller_BOARD.v
- support_BOARD.v
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.
- Check that that CC can talk to the board.
- Check that Lisp boots (output on the display)
- Check that keyboard can send input by trying out (DEMO:HACKS).