emCortex-M1 offers highly portable microcontroller design over many FPGA devices, with reusable tools and code base. It offers compatibility and ecosystem across FPGA, ASIC/ASSP/MCU. It can help designers to create ARM SoC with proprietary peripherals with limited budget. This approach also demands deeply expertise for the design team to understand both development processes.
The ARM Cortex-M1 processor combines the power of the ARM architecture with flexibility of FPGA implementation. M1 processor is optimized for synthesis on any FPGA device from leading vendors including Actel, Altera and Xilinx. It is upwards compatible with other members of Cortex processor family, enabling future migration to ASIC. According to ARM's datasheet for Cortex-M1, its 3-stage pipeline and Von Neumann architecture are upwards compatible with Cortex-M3. However, M1 is the simplest processor in Cortex family, it looks similar to M0 (Check out NXP's LPC1100), rather than M3, which introduces more features including multiple AMBA buses and memory protection unit.
The ARM Cortex-M1 implements a lightweight profile (subset) of the popular, high density Thumb-2 instruction set, which enables both processor core and software footprint to meet the area budget of the smallest FPGA devices. The Thumb-2 includes all base 16-bit Thumb instructions and a few Thumb-2 32-bit instructions (BL, MRS, MSR, ISB, DSB, and DMB). It retains compatibility with Thumb code for ARM7TDMI processor upwards. Cortex-M1 can achieve operating frequency from 70MHz - 200MHz, depending on FPGA devices. As FPGA technology advances M1 processor will continue to reach higher performance, lower power with strict area requirements.
The Cortex-M1 is optimized for synthesis on the following FPGA types:
- Actel (M1 ProASIC3 and M1 Fusion)
- Altera (Cyclone-II, Stratix-III)
- Xilinx (Spartan-3, Virtex-5)
Because Cortex-M1 is FPGA vendor independent soft core, it can be implemented on Lattice FPGA devices and other FPGA families from Altera and Xilinx as well.
Design Your Own ARM SoC
Cortex-M1 is a highly flexible ARM SoC platform. The designer can configure Cortex-M1 in many ways.
Any embedded system with microcontroller has various memories, including internal and external RAM, ROM, and interfaces to mass storage devices. Cortex-M1 has tightly coupled memories (TCM) for data (ITCM) and instruction (DTCM), which are configurable from 0k to 1024kB. The internal FPGA block RAM is used as single cycle access memory. Some NV-memory based FPGA devices (Actel ProASIC3/Fusion) offer enough (8Mb) internal flash memory as code storage. In order to interface external mass storage devices, the AMBA AHB Lite helps to collect peripheral interfaces to SPI, SDRAM, SDIO, and CFI.
Cortex-M1 has the debug interface for JTAG and SWD as usual, which supports 2 watch points and 4 hardware breakpoints. So any previous development tools for Cortex-M3 including ULINK2 can be reused in Cortex-M1. By removing internal memories and debug interface, the implementation can be reduced for cost reason. It is quite useful to remove the debug interface in final product release, so your design can drop into smaller devices and prevent unauthorized code hacking.
There are two options for multiplier implementation. The fast option uses FPGA DSP blocks. The small option uses adder to save area / DSP block use. Either option, program function is identical. The software modifications are not required for different options.
In order to support operation systems, Cortex-M1 also implements removable system timer and optional software interrupt (SVC) instruction. However, I have no idea why Cortex-M1 makes system timer as removable, since system timer is so important for an embedded system. RTC is not necessary in some applications, but timers are equipped in any microcontroller. Even the simplest PIC10 has one 8-bit timer. I can only figure out a reason behind that. Since Cortex-M1 is relatively simple, comparatively speaking, the system timer takes remarkable resources. So the core designer makes it removable, so the user can implement the timer out of the core with available resources. The software interrupt helps OS in debugging code. But it is not prerequisite instruction.
According to the specification of Cortex-M1, it has Nested Vectored Interrupt Controller (NVIC), which has configurable 1 to 32 interrupts. Each interrupt has 4 priority levels. There is also Non-Maskable Interrupt like FIQ in previous ARM version.
By default, Ccortex-M1 is working in little endian. And most of the delivery package from FPGA suppliers are also little endian. It can be configured in big endian on request.
The ARM Cortex-M1 is supplied with an AMBA AHB-Lite interface for inclusion in an AMBA-based processor system. As currently available for use in M1 devices, the ARM Cortex-M1 has an AHB-Lite external interface. The processor also contains an internal bus called the Private Peripheral Bus (PPB) for accesses to the Nested Vectored Interrupt Controller (NVIC), Data Watch point (DW) unit, and Breakpoint (BPU), but this is not directly accessible to the user. The external interface is an AHB-Lite bus interface. The processor accesses to AHB peripherals and memory are implemented over this bus. To prevent bus wait cycles from stalling the processor during data stores, buffered stores to the external interface go through a one-entry write buffer. If the write buffer is full, subsequent accesses to the bus stall until the write buffer has drained. The write buffer is only used if the bus waits for the data phase of the buffered store; otherwise, the transaction completes on the bus.
Some FPGA vendors offer free AMBA peripherals, which increase the attraction. Actel offers following AMBA/AHB peripherals:
- CorePCIF (PCI Interface)
- Core10/100 (Ethernet MAC)
- Core429 (ARINC 439, two-wire serial data bus for control communications in Avionics)
- CoreAHB2APB (AMBA Bridge, AHB slave)
- CoreAI (Analog Interface)
- CoreCFI (CFI, Common Flash Interface, embedded flash memory blocks)
- CoreFMEE (Flash Memory Endurance Extender, using internal flash blocks to emulate a serial EEPROM with extended life)
- CoreFROM (128-byte Flash ROM)
- CoreMemCtrl (external SRAM and flash memory resources)
- CorePWM (Low cost, full feature 8 channel PWM)
- CoreUARTapb (UART with FIFO)
- more peripherals are listed in its DirectCore IP Cores.
There are two license modes for Cortex-M1. The designer can buy RTL license from ARM. The RTL license is flexible and fully configurable, and highly portable at any FPGA device. With supporting from Synplify Pro and Mentor Precision, the RTL can be synthesis for FPGA devices.
Alternatively, you can get free license from FPGA vendors. Actel has licensed Cortex-M1 from ARM. According to the license between Actel and ARM, Actel can sub-license to its customers without any license fee. The files delivered to Actel's customers are encrypted. Actel also offers graphical design entry tool as well as many peripheral IPs.
Initially, the ARM Cortex-M1 processor is being made available for use in Actel M1 devices with only one user selectable option: with or without debug. The core is configured with 0K ITCM, 0K DTCM, small multiplier, little-endian, no OS extensions, and 1 interrupt. In the future, versions of the core will be offered with all of the configurable options available for configuration by the user. That means the free license has two major restrictions: portability and reconfigurability. But you can follow the development of the FPGA devices, since you get free license, verified design, better technical support, and free peripheral blocks. Actel's Fusion is another good candidate for Cortex-M1 implementation, because it is a "mixed-signal" FPGA, which supports 12-bit ADC and 40 analog GPIO. The analog features make it a perfect platform. The price for FPGA is also acceptable now.
Cortex-M1 offers highly portable microcontroller design over many FPGA devices, with reusable tools and code base. It offers compatibility and ecosystem across FPGA, ASIC/ASSP/MCU. It can help designers to create ARM SoC with proprietary peripherals with limited budget. This approach also demands deeply expertise for the design team to understand both development processes.
If you are interested in Cortex-M1, you can order Fusion Embedded Development Kit from Actel's website. It is fully RoHS-compliant and contains a credit card-sized modular board featuring the incredibly powerful ARM Cortex-M1-enabled Fusion M1AFS1500 device in the FGG484 package as well as a miniature programming stick. Actel Fusion integrates configurable analog, large flash memory blocks, comprehensive clock generation and management circuitry, and high-performance, flash-based programmable logic in a monolithic device. It is ONLY 199USD.
The ARM Processor Designed for FPGAs (Actel)
Fusion Embedded Development Kit
ARM Cortex-M1 processor for soft implementation in an FPGA (Altera)