SoC
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
  • Arm Cortex M3
  • Contact
Reading: Using Cortex-M1 with FPGA Tools and Kits
SUBSCRIBE
SoCSoC
Font ResizerAa
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
Search
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
Have an existing account? Sign In
Follow US
  • Looking for Something?
  • Privacy Policy
  • About Us
  • Sitemap
  • Contact Us
© S-O-C.ORG, All Rights Reserved.
Arm

Using Cortex-M1 with FPGA Tools and Kits

Ryan Ryan
Last updated: September 20, 2023 12:45 pm
Ryan Ryan 7 Min Read
Share
SHARE

The Cortex-M1 processor from ARM is a 32-bit RISC CPU core designed for microcontroller applications. It combines a high-performance processor core with memory protection unit and nested vectored interrupt controller to provide an efficient and secure solution for embedded systems. When paired with an FPGA, the Cortex-M1 opens up even more possibilities for rapid prototyping and custom hardware acceleration.

Contents
Overview of Cortex-M1 ProcessorFPGA Tools and Kits for Cortex-M1Xilinx Vivado Design SuiteIntel Quartus PrimeMicrosemi SmartFusion2 Starter KitLattice MachXO3D Starter KitDeveloping with Cortex-M1 and FPGACustom Peripheral ExampleHardware Acceleration ExampleRapid Prototyping ExampleDebugging Cortex-M1 with FPGACo-Simulation DebugConclusion

Overview of Cortex-M1 Processor

Some key features of the Cortex-M1 processor include:

  • 32-bit RISC architecture with Thumb-2 instruction set for optimal code density
  • Operating frequency up to 150 MHz
  • Memory Protection Unit (MPU) for secure software execution
  • Nested Vectored Interrupt Controller (NVIC) for managing interrupts
  • Embedded Trace Macrocell (ETM) for instruction trace capabilities
  • Debug Access Port (DAP) for debug probe connectivity

The Cortex-M1 is extremely energy efficient, delivering 150 DMIPS/mW. Its flexible memory system allows instruction and data accesses to be interleaved for maximum performance. The MPU provides configurable regions for memory access control, enhancing software reliability. NVIC offers low latency interrupt handling with configurable priority levels.

FPGA Tools and Kits for Cortex-M1

Using an FPGA with Cortex-M1 opens up opportunities to customize peripherals, accelerate algorithms, and rapidly prototype system concepts. Some popular FPGA tools and kits that work with Cortex-M1 include:

Xilinx Vivado Design Suite

The Vivado Design Suite from Xilinx supports integrating Cortex-M1 into programmable logic designs. This includes IP cores for the processor as well as peripherals like DDR memory controllers. The Vivado IDE simplifies creating custom peripherals and hardware accelerators using HDL. Example projects are available for developing Cortex-M1 systems on Xilinx FPGAs like the Zynq-7000 SoC.

Intel Quartus Prime

For Intel FPGAs, the Quartus Prime design software has support for embedded Cortex-M1. This includes optimized IP cores for the Cyclone V, Arria V, and Stratix series. The Qsys system integration tool simplifies connecting custom logic blocks. Example reference designs help speed up development of Cortex-M1 prototypes on Intel FPGAs.

Microsemi SmartFusion2 Starter Kit

This low-cost kit provides early prototyping on Microsemi FPGAs. It includes a SmartFusion2 device with integrated Cortex-M1, DDR3 memory interface, and other peripherals. Soft console provides easy access to debug and programming tools. Reference designs and tutorials help jump start custom project development.

Lattice MachXO3D Starter Kit

The MachXO3D FPGA from Lattice Semiconductor includes an embedded Cortex-M1 processor. The starter kit has onboard DDR3, flash, and peripherals to enable rapid prototyping. iCEcube2 design software supports implementation of custom accelerators and attaching external memories. Demo projects show how to build Cortex-M1 systems.

Developing with Cortex-M1 and FPGA

A typical workflow for developing a Cortex-M1 system on an FPGA involves:

  1. Configuring the processor system using IP integrator tools like Vivado IP catalog
  2. Creating custom peripherals and hardware accelerators with HDL
  3. Connecting processor subsystem and custom logic in top level design
  4. Synthesizing and implementing design for target FPGA
  5. Developing software with ARM compiler and debugger
  6. Co-simulating design with embedded software
  7. Deploying bitstream to FPGA and debugging

Key tools used in this flow are:

  • ARM Keil MDK – For compiling embedded C/C++ code and debugging
  • FPGA Vendor IDE – For building hardware design and co-simulation
  • Board Support Package – Device drivers for embedded software

Let’s look at some specific examples of developing with Cortex-M1 and FPGA:

Custom Peripheral Example

A custom peripheral, such as a sensor interface or motor controller can be added using HDL. The FPGA tool will generate a wrapper component that connects to the AXI bus. Software drivers access the custom peripheral registers mapped into the Cortex-M1 memory space.

Hardware Acceleration Example

For time critical operations like video processing, a hardware accelerator can speed up execution. The accelerator connects to memory buses and includes control registers accessible from software. Data gets transferred from processor memory into accelerator, processed, and results written back.

Rapid Prototyping Example

Using an FPGA with Cortex-M1 enables rapidly testing out concepts like new bus architectures or memory technologies. Custom IP blocks can be quickly developed in HDL and synthesized into prototype chip-level system for validation.

Debugging Cortex-M1 with FPGA

Debugging Cortex-M1 software running on an FPGA requires using the embedded debug components built into the processor system. This includes:

  • Embedded Trace Macrocell (ETM) – Provides instruction and data trace information used for debugging code execution.
  • Debug Access Port (DAP) – Allows debugger to set breakpoints, access registers, and control code execution.
  • ARM Serial Wire (SW) – Serial wire output contains debug messages created by software APIs.

A JTAG probe connected to the FPGA can access the ETM, DAP, and SW interfaces on Cortex-M1. The ARM Keil MDK toolkit has support for multi-core debugging to visualize software execution across Cortex-M1 and the FPGA logic.

Co-Simulation Debug

For pre-silicon validation, the FPGA tools also provide co-simulation options. This allows debugging the hardware design and embedded software together in a virtual environment before loading onto physical FPGA.

Conclusion

The Cortex-M1 processor combines high performance 32-bit RISC core with ARM Thumb-2 instruction set for embedded microcontroller applications. When mapped into an FPGA, the Cortex-M1 enables creating custom peripherals, hardware accelerators, and rapid prototypes. Tools like ARM Keil MDK, FPGA vendor IDEs, and board support packages enable an efficient design flow. Debug capabilities like ETM, DAP, and co-simulation help validate the hardware and software.

Overall, the Cortex-M1 + FPGA combination provides a flexible and powerful platform for embedded system development.

Newsletter Form (#3)

More ARM insights right in your inbox

 


Share This Article
Facebook Twitter Email Copy Link Print
Previous Article What are the differences between Arm Cortex-M1 and Cortex-R4?
Next Article Integrating AMBA Bus with Cortex-M1 in FPGA Designs
Leave a comment Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

2k Followers Like
3k Followers Follow
10.1k Followers Pin
- Sponsored-
Ad image

You Might Also Like

Why ARM Processors are Low Power?

ARM processors are designed to be power-efficient and low-power for…

6 Min Read

What are the four major components of ARM Cortex-M processor?

ARM Cortex-M processors are designed for embedded applications requiring low…

4 Min Read

Modified Harvard Architecture in ARM Cortex-M Chips

The ARM Cortex-M series of microcontroller chips utilize a modified…

18 Min Read

What is low power mode in microcontroller?

Microcontrollers are integrated circuits that contain a processor core, memory,…

5 Min Read
SoCSoC
  • Looking for Something?
  • Privacy Policy
  • About Us
  • Sitemap
  • Contact Us
Welcome Back!

Sign in to your account