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.
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.
- “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-processors 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.
Project information
Distribution
YAM is distributed as a compressed tar file in the FILES
tab.
YAM distribution includes both the core HDL and the assembler. It is
organized as follows.
doc/ YAM core related documentations
hdl/ YAM core
yamasm/ YAM assembler
yamebs/ wb_yam support
Contacts
- Developer (and yamasm assembler): Christian HERVE, ESRF
- Software support: Fabien LE MENTEC
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 |
30-10-2017 | Updated, V1.4.1; yamasm V1.1 |
See the release notes in the distribution at documentation/Rnotes.txt