All Projects → schoeberl → lipsi

schoeberl / lipsi

Licence: other
Lipsi: Probably the Smallest Processor in the World

Programming Languages

scala
5932 projects
assembly
5116 projects
Makefile
30231 projects

Projects that are alternatives of or similar to lipsi

Neorv32
A small and customizable full-scale 32-bit RISC-V soft-core CPU and SoC written in platform-independent VHDL.
Stars: ✭ 106 (+65.63%)
Mutual labels:  hardware, processor
arv
ARV: Asynchronous RISC-V Go High-level Functional Model
Stars: ✭ 18 (-71.87%)
Mutual labels:  hardware, processor
human-computer
A computer that uses nothing but human resources
Stars: ✭ 16 (-75%)
Mutual labels:  hardware
tapasco
The Task Parallel System Composer (TaPaSCo)
Stars: ✭ 66 (+3.13%)
Mutual labels:  hardware
edgeai-lab-microcontroller-series
This repository is to share the EdgeAI Lab with Microcontrollers Series material to the entire community. We will share documents, presentations and source code of two demo applications.
Stars: ✭ 15 (-76.56%)
Mutual labels:  hardware
rc-headless-transmitter
DIY 2.4 GHz RC transmitter without display, configurable through smartphone or web browser
Stars: ✭ 28 (-56.25%)
Mutual labels:  hardware
kerntroller
No description or website provided.
Stars: ✭ 31 (-51.56%)
Mutual labels:  hardware
yastack
YAStack: User-space network-stack based on DPDK, FreeBSD TCP/IP Stack, EnvoyProxy
Stars: ✭ 90 (+40.63%)
Mutual labels:  hardware
embedded-time
Time(ing) library (Instant/Duration/Clock/Timer/Period/Frequency) for bare-metal embedded systems
Stars: ✭ 72 (+12.5%)
Mutual labels:  hardware
pink-0
Ableton Link to clock/reset signals converter
Stars: ✭ 87 (+35.94%)
Mutual labels:  hardware
ansible-role-raspberry-pi
Configures a Raspberry Pi (running Raspbian).
Stars: ✭ 90 (+40.63%)
Mutual labels:  hardware
spc-player
SNES music player in your browser with original hardware and Arduino.
Stars: ✭ 37 (-42.19%)
Mutual labels:  hardware
processor
A simple and lightweight JavaScript data processing tool. Live demo:
Stars: ✭ 27 (-57.81%)
Mutual labels:  processor
xiaoai-patch
Patching for XiaoAi Speakers, add custom binaries and open source software. Tested on LX06, LX01, LX05, L09A
Stars: ✭ 58 (-9.37%)
Mutual labels:  hardware
xeda
Cross EDA Abstraction and Automation
Stars: ✭ 25 (-60.94%)
Mutual labels:  hardware
tree-core-cpu
A series of RISC-V soft core processor written from scratch. Now, we're using all open-source toolchain( chisel, mill, verilator, NEMU, AM and difftest framework, etc) to design and verify.
Stars: ✭ 22 (-65.62%)
Mutual labels:  processor
nixiepipe-hardware
Hardware design files and firmware for my Nixie Pipe modules
Stars: ✭ 20 (-68.75%)
Mutual labels:  hardware
Big Honking Button
A simple Eurorack sampler and performance module in a silly package.
Stars: ✭ 45 (-29.69%)
Mutual labels:  hardware
hardware
Get CPU, Memory and Network informations of the running OS and its processes
Stars: ✭ 70 (+9.38%)
Mutual labels:  hardware
SAMD TimerInterrupt
This library enables you to use Interrupt from Hardware Timers on an SAMD-based board. These SAMD Hardware Timers, using Interrupt, still work even if other functions are blocking. Moreover, they are much more precise (certainly depending on clock frequency accuracy) than other software timers using millis() or micros(). That's mandatory if you …
Stars: ✭ 28 (-56.25%)
Mutual labels:  hardware

Lipsi: Probably the Smallest Processor in the World

This repository contains the source code of Lipsi and supports following paper:

Martin Schoeberl, Lipsi: Probably the Smallest Processor in the World, Architecture of Computing Systems -- ARCS 2018, Springer International Publishing, 2018, 18-30

While research on high-performance processors is important, it is also interesting to explore processor architectures at the other end of the spectrum: tiny processor cores for auxiliary tasks. While it is common to implement small circuits for auxiliary duties, such as a serial port, in dedicated hardware, usually as a state machine or a combination of communicating state machines, these functionalities may also be implemented by a small processor. In this paper we present Lipsi a very tiny processor to enable implementing classic finite state machine logic in software without overhead.

Lipsi is probably the smallest processor around. Possible evaluations of Lipsi: (1) an implementation of a serial port completely in software; (2) as Lipsi is so small we can explore a massive parallel multicore processor consisting of more than 100 Lipsi cores in a low-cost FPGA (with simple point-to-point connections between cores).

Lipsi is written in Chisel and contains: (1) the hardware description, (2) an assembler, (3) a software simulator, and (4) testers for individual testing and for co-simulation, all written in Chisel/Scala and combined in a single program. Chisel made it possible that the design of all of the above took less than 14 hours.

Getting Started

You need sbt and a JVM installed. Scala and Chisel are downloaded when first used.

A plain

make

runs the default program as a test. The wave form can then be viewed with:

make wave

The default program can be overwritten with the variable APP:

make APP=asm/immop.asm

Lipsi executing the embedded hello world program, blinking and counting LEDs, can be generated as follows:

make hw APP=asm/blink.asm

The project contains a Quartus project in folder quartus.

All test cases are run with:

make test-all

The SW simulator of Lipsi is run with:

make sim

The co-simulation (for all tests) with the processor description in hardware and the SW simulator are run with:

make test-cosim

Folder asm contains various assembler program. E.g., echo.asm reads the keys from the FPGA board, adds 1, and puts out the result on the LEDs (on the DE2-115). Default IO devices are an 8-bit input port connected to the keys and 8-bit output port connected to the LEDs

To build a 432 cores manycore version of Lipsi, change the value many to val many = true in LipsiTop. The cores are then connected in a pipeline. The echo.asm program can be used to execute 432 additions and show the result on the LEDs.

As usual, have fun and feedback is appreciated,

Martin

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].