Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cbiffle/cfm
A 16-bit CPU and self-hosting Forth system for the Lattice ICE40 FPGA, written in Haskell.
https://github.com/cbiffle/cfm
embedded forth fpga hardware haskell
Last synced: about 1 month ago
JSON representation
A 16-bit CPU and self-hosting Forth system for the Lattice ICE40 FPGA, written in Haskell.
- Host: GitHub
- URL: https://github.com/cbiffle/cfm
- Owner: cbiffle
- License: bsd-3-clause
- Created: 2018-01-10T20:10:20.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2021-05-26T15:27:01.000Z (over 3 years ago)
- Last Synced: 2023-04-13T01:31:23.258Z (over 1 year ago)
- Topics: embedded, forth, fpga, hardware, haskell
- Language: Haskell
- Homepage:
- Size: 800 KB
- Stars: 39
- Watchers: 4
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.mkdn
- License: LICENSE
Awesome Lists containing this project
README
CFM: the Cliffle Forth Machine
==============================This is a Forth-inspired processor targeting the Lattice ICE40 FPGA series,
primarily targeting the Icoboard.The CFM core is designed for high performance (40+ MHz) on the ICE40 HX grade
parts. It is written in Haskell and synthesized using [Clash]. Because the
Haskell expression of the circuit is directly executable, we also have a
cycle-accurate emulator "for free."The distribution includes BsForth, a non-ANS Forth implementation that can
provide a bare-bones interactive development environment with optimizing
compiler in less than 5 kiB. It's interesting in the way that it bootstraps
(using the cycle-accurate emulator) and for its machine instruction fusion
algorithm.More reading:
- [Docs on the instruction set and programmer's model](doc/core.mkdn)
- [The interrupt model](doc/interrupts.mkdn)
- [The Icoboard demo](doc/icoboard.mkdn)
- [The Icestick demo](doc/icestick.mkdn)
- [Self-hosting](doc/self-hosting.mkdn): how to recompile BsForth from within
BsForth, without using a separate computer.[Clash]: www.clash-lang.org