YAM - Yet Another Micro-controller
Project description
YAM is a micro-controller core aiming at simple yet fast IO sequencing with integer processing capabilities.
The YAM specification has been driven by a few basic ideas.
- Scalable data width from 8 bits to any (like 32 and larger) size.
- Possibly a large number of registers (up to 128 of them).
- Deterministic execution times (no pipeline).
- No privileged mode (definitely a micro-controller style).
- Highly configurable to meet different requirements.
- Keep compact in area and preserve fast clocking, avoiding superfluous sophistication.
Therefore the base instruction list is restricted to a minimal set of instructions. Even the possible extensions have been carefully analyzed against new functionality versus area/speed cost.
YAM is described in VHDL.
YAM is software supported by an assembler, yamasm.
YAM presentation and user manual are available from the DOCUMENTS tab, on top.
Features
YAM architecture is simple.
- The arithmetic and logic unit only operates on registers.
- The data memory access is limited to register load or store.
Main features are as follows.
- “Harvard” architecture with dedicated instruction memory.
- Arithmetic and logic unit with scalable data width.
- Rich (up to 128) regular register array, two operand simultaneous access.
- Even more registers and fast context switch by register bank swapping (optional).
- Selectable 2- or 3-operand style ALU instruction set.
- Efficient immediate data management.
- Program counter and stack for subroutines branch and return.
- Data memory (optional), externally dual ported (optional).
- External interrupt manager (optional).
- External input/output port interface (optional).
- External co-processor interface (optional).
- Deterministic execution time, 2 clock cycles per instruction in most cases.
A co-processor interface allows for even more extensions. Available co-processor are
- 32-bit floating point unit.
- Fixed point unit.
External input/output connections are ready for several interfaces
- YAM native.
- Wishbone.
- AXI4 lite.
- E-bone.
- Basic system-on-chip (timer, breakpoint, UART), namely YIOZ.
Distribution
YAM is distributed as a compressed tar file in the FILES
section.
YAM distribution includes both the core HDL and the assembler. It is
organized as follows.
/
documentation/ YAM core related documentations
firmware/
hdl/ YAM core
src/libyam Software library
tools/yamasm YAM assembler
Contacts
- Developer: Christian HERVE, ESRF
- Software support: Fabien LE MENTEC, ESRF
Status
Date | Event |
24-08-2016 | First stable V1.0 release at esrf.eu |
18-05-2017 | Created the yam project on ohwr.org. |
23-05-2017 | Updated, V1.4 |
See the release notes in the distribution at documentation/Rnotes.txt
23 May 2017