Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mcejp/lux
Synthesizable Uxn CPU
https://github.com/mcejp/lux
fpga uxn
Last synced: about 1 month ago
JSON representation
Synthesizable Uxn CPU
- Host: GitHub
- URL: https://github.com/mcejp/lux
- Owner: mcejp
- License: mit
- Created: 2022-06-22T20:09:26.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-07-14T17:33:04.000Z (over 2 years ago)
- Last Synced: 2023-03-09T23:32:13.519Z (almost 2 years ago)
- Topics: fpga, uxn
- Language: Python
- Homepage:
- Size: 274 KB
- Stars: 13
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
This is the repository of the Lux CPU project.
Currently it only implements one core, _Aurora-20_, which will serve as the basis of the LUX120A CPU. Documentation is TBD.
After cloning the repository, you can execute
make test
to run some tests. You will need `unxasm` and Python 3.9ish in your PATH.
To recompile the ucode you will also need the `hy` package (precompiled ucode is provided for convenience).
![datasheet](_img/datasheet.png)
## Details
The core microarchitecture is implemented in `aurora_sim.py`.
It can be executed in two ways:
./aurora_sim.py # Console output (#18 DEO) goes directly to stdout
./aurora_sim.py -hex # output is printed in hexadecimal, handy for testsNo other I/O is implemented.
_aurora_sim_ assumes that `fw/fw.rom` had been built (it contains implementation of DIV/DIV2 instructions). Makefile will normally take care of this. Note that the address range 0xFF80~0xFFFF is taken up by these routines.
Not yet implemented:
- stack under/overflow traps
- _k_ & _r_ variants of DIV/DIV2
- error code on DIV/0 trapImplemented only as high-level model:
- microcode sequencing
- multiplicationUnlikely to make it into Aurora:
- hardware division
- stack remapping to RAMNote that I/O Devices are outside the scope of this project. An address/data bus will be exposed to attach them, though.
If you are interested in the microarchitectural details, you can also generate a readable listing of the entire microcode: `make ucode_au20.html`
![ucode](_img/ucode.png)