Amber Core: Open Source ARMv2a FPGA Implementations

Amber Core: Open Source ARMv2a FPGA Implementations

The Amber project offers a sophisticated approach to open-source hardware by providing a complete embedded system based on the ARMv2a instruction set. Developed using Verilog 2001, these cores are specifically optimized for field-programmable gate array (FPGA) synthesis. By utilizing the ARMv2a architecture, the project avoids the patent restrictions associated with newer ARM versions, allowing for implementation without a license from ARM Holdings.

To maximize efficiency on FPGA hardware, the Amber cores omit traditional reset logic, relying instead on the FPGA's native initialization process to reset all registers. Beyond the processor cores, the project delivers a full system ecosystem including essential peripherals such as timers, universal asynchronous receiver/transmitters (UARTs), and an Ethernet MAC.

[ไม่มีภาพประกอบ]

Key Facts

  • Architecture: Fully compatible with the ARMv2a instruction set.
  • Toolchain: Supported by the standard GNU toolchain.
  • Optimization: Written in Verilog 2001 and optimized for FPGA synthesis.
  • OS Support: Verified with Linux 2.4 kernel; supports non-virtual memory variants like µClinux.
  • Interface: Both core versions utilize a Wishbone interface.

Comparing the Amber 23 and Amber 25 Cores

The Amber project provides two distinct core versions. While they share the same Instruction Set Architecture (ISA) and are fully software compatible, they differ significantly in pipeline depth and performance.

Amber 23: Compact Efficiency

The Amber 23 is a small 32-bit core featuring a 3-stage pipeline and a unified cache for both instructions and data. It delivers a performance rating of 0.75 DMIPS (Dhrystone MIPS) per MHz. In this model, register-based instructions typically execute in a single cycle, with the exception of multiplication. Load and store operations require three cycles. The pipeline stalls during Wishbone accesses or when a cache miss occurs.

Amber 25: Enhanced Performance

The Amber 25 is designed for higher throughput, utilizing a 5-stage pipeline and separate caches for data and instructions. This architecture results in a 30% to 40% increase in performance over the Amber 23, reaching 1.0 DMIPS per MHz, though it requires 30% to 40% more area. Most instructions, including load and store, execute in one cycle, provided there is no register conflict with subsequent instructions. Stalls occur during cache misses, instruction conflicts, complex shift operations, or Wishbone accesses.

[ไม่มีภาพประกอบ]

Technical Specifications Summary

Comparison of Amber Core Versions
Feature Amber 23 Amber 25
Pipeline Stages 3-stage 5-stage
Cache Architecture Unified Separate (Instruction/Data)
Performance (DMIPS/MHz) 0.75 1.0
Load/Store Execution 3 cycles 1 cycle (unless conflict)
Relative Size Baseline 30-40% larger

Operating System and Software Compatibility

Both Amber cores have been successfully verified by booting a Linux 2.4 kernel. Because these cores lack a Memory Management Unit (MMU)—the hardware component responsible for translating virtual addresses to physical addresses—they cannot run standard virtual memory Linux. Instead, they are compatible with non-virtual memory variants such as µClinux.

While the Linux 2.4 branch and earlier versions include native configurations for the ARMv2a ISA, users attempting to run Linux 2.6 or later will find that these versions do not explicitly support ARMv2a and will require modifications to function.

Frequently Asked Questions

Why was the ARMv2a instruction set chosen?

ARMv2a was selected because it is not covered by patents, enabling the Amber project to implement the core without requiring a license from ARM Holdings.

What is the difference in performance between Amber 23 and Amber 25?

The Amber 25 provides 30% to 40% better performance than the Amber 23, increasing from 0.75 DMIPS/MHz to 1.0 DMIPS/MHz.

Can these cores run a standard Linux distribution?

No. Because the cores do not have a Memory Management Unit (MMU), they can only run non-virtual memory variants of Linux, such as µClinux.

How is the reset process handled in these FPGA cores?

There is no dedicated reset logic within the cores; instead, all registers are reset during the standard FPGA initialization process.

Which toolchain is used for development?

The Amber cores are fully supported by the GNU toolchain.

References

  1. Spooner, John G. (January 2, 2002). "Open-source credo moves to chip design". Tech Industry. CNET. Retrieved 2018-05-15.
  2. "Amber RISC Core". Soft Processor. 32bit micro. Archived from the original on 2015-02-02.
  3. van Someren, Alex; van Someren, Nic (February 1989). Archimedes Operating System: A Dabhand Guide (PDF). Dabs Press. ISBN 1-870336-48-8. Retrieved 2018-05-15..
  4. VLSI Technology (1990). Acorn RISC Machine (ARM) Data Manual (PDF). Prentice Hall. ISBN 0-13-781618-9. Retrieved 2018-05-15..