SoC
  • Home
  • Arm
  • Arm Cortex M0/M0+
  • Arm Cortex M4
  • Arm Cortex M3
  • Contact
Reading: Is it possible to port the DesignStart Eval design to a different FPGA board?
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

Is it possible to port the DesignStart Eval design to a different FPGA board?

Andrew Irwin
Last updated: September 17, 2023 2:12 am
Andrew Irwin 8 Min Read
Share
SHARE

The short answer is yes, it is possible to port the DesignStart Eval design to a different FPGA development board than the one it was originally targeted for. However, it requires some effort and hardware expertise to make the necessary modifications. The feasibility and level of difficulty will depend on how compatible the new target board is with the original one. Factors like FPGA chip family, clocking, interfaces, and more will determine how challenging the porting process is.

Contents
Overview of the DesignStart Eval Board and DesignFactors that Determine PortabilityFPGA Device FamilyClocking StructureExternal InterfacesMemory ConfigurationPeripheralsToolchain CompatibilitySteps for Porting to a New BoardExample Scenario: Porting to a Xilinx KC705 BoardWhen Starting from Scratch Makes More SenseConclusion

Overview of the DesignStart Eval Board and Design

First, let’s provide some background. The DesignStart Eval board is an FPGA development board launched by ARM in 2020. It features a Xilinx Artix-7 FPGA along with peripherals like USB, Ethernet, accelerometer, buttons, LEDs, and more. ARM provides a reference design targeting this specific Eval board that demonstrates how to integrate a Cortex-M1 CPU inside the Artix-7 FPGA fabric.

The reference design includes the Cortex-M1 CPU subsystem, peripherals, memory interfaces, and glue logic needed to connect and run on the Eval board. It’s optimized for that particular set of components. Both the hardware and software are tailored to work with each other.

Factors that Determine Portability

When porting this reference design to a new FPGA development board, there are several hardware considerations:

FPGA Device Family

The Xilinx Artix-7 FPGA on the original Eval board belongs to the 7-series FPGA family. If the new board has a compatible 7-series FPGA or an FPGA from the same technology generation, porting will be simpler. The design would require more significant changes if moving to a newer generation like UltraScale or UltraScale+.

Clocking Structure

The clocking architecture and frequencies supported by the new FPGA must match the requirements of the DesignStart design. This includes clocks for the Cortex-M1 subsystem, peripherals, interfaces like DDR memory controller, and any board-level clocks.

External Interfaces

Any external interfaces used in the design like Ethernet, USB, SPI, etc. must be available on the new board. Ideally the PHY devices should be the same or very similar. Differences in timing, signaling levels, or protocols would necessitate logic modifications.

Memory Configuration

The amount, type, and configuration of memory available on the new board must meet the minimum requirements of the reference design. This includes specifications for the DDR2/DDR3 memory controller and SRAM interfaces.

Peripherals

Peripheral interfaces like GPIO, LEDs, switches, accelerometer and their electrical characteristics should closely match. Else the logic that interfaces with them requires changes.

Toolchain Compatibility

The ported design would need to be compiled with the toolchain supported by the new FPGA board, which depends on the FPGA vendor and family. So the project would require migrating to the appropriate toolchain. For example, moving from a Xilinx 7-series board to an Intel (formerly Altera) board.

Steps for Porting to a New Board

At a high level, these are the typical steps for porting the DesignStart reference design to a new FPGA development board:

  1. Select a target board with an FPGA that can support the hardware requirements discussed earlier.
  2. Create a new Vivado or Quartus project targeting this board.
  3. Import the RTL source files, IP cores, constraints, etc. from the original project.
  4. Make FPGA pin assignments compatible with the new board schematics.
  5. Modify clocking constraints to match the new board.
  6. Update memory controller configurations if needed.
  7. Modify board-dependent logic like I/O interfaces.
  8. Resolve any toolchain-related issues.
  9. Verify ports and connections between IP cores and logic.
  10. Fix timing closure issues revealed during implementation.
  11. Validate functionality via simulation and hardware testing.

Throughout the process, replication of the original timing constraints and design structure should be attempted as much as possible. The goal is to preserve the behavior while adapting to the new target. With careful planning and effort, it’s possible to successfully port most key functions. Complete pin-for-pin compatibility is unlikely, but the Cortex-M1 subsystem can be made functional.

Example Scenario: Porting to a Xilinx KC705 Board

To make this more concrete, let’s consider an example scenario. Say we want to port the DesignStart reference design to a Xilinx KC705 demo board instead of the Eval board. This board features a Xilinx Kintex-7 FPGA, so it is from the same family. However, it has a different package, periphery, and interfaces. How feasible is this port?

The good news is that since both boards have a 7-series Xilinx FPGA, the DesignStart logic, IP cores, and RTL should synthesize fairly smoothly. The existing XDC constraints provide a starting point that can be adapted for the KC705 clocks. The KC705 has dual DDR3 instead of DDR2, but it is still supported by the memory controller with some configuration tweaks.

On the more challenging side, the accelerometer and USB PHY would need replacement since the KC705 lacks those. New logic would need to be developed to interface with the KC705 peripherals like the ADC, audio codec, SRAM, etc. The KC705 also has PCIe which is unused. Modifications would be needed to ensure timing closure due to the different speed grade and package.

With work, a functioning port should be achievable. But it will take time and hardware design expertise. For a hobbyist unfamiliar with the FPGA tools, this would be an ambitious project. It is certainly possible, but the feasibility depends greatly on the porting team’s skills and how compatible the boards are.

When Starting from Scratch Makes More Sense

In some cases, trying to port the existing DesignStart design may be too difficult or even ill-advised. If the new board has an FPGA from a totally different family or vendor, it likely makes more sense to start from scratch. Developing a new design using the IP blocks, peripherals, and constraints tailored to that board would be less effort than forcing a square peg into a round hole. For very significant architectural differences, porting reaches a point of diminishing returns.

Conclusion

Porting FPGA designs between boards is certainly possible but also challenging. For the DesignStart Eval design, porting to another similar 7-series Xilinx board like the KC705 should be achievable with concerted effort. But attempting to port to a completely different FPGA family or vendor may not be worth the effort required. The closer the boards are in specifications, the more feasible porting becomes. With careful planning and sufficiently skilled engineers, the DesignStart design can likely be migrated to a compatible board as long as timing, tools, IP cores, interfaces, and other factors are addressed.

Newsletter Form (#3)

More ARM insights right in your inbox

 


Share This Article
Facebook Twitter Email Copy Link Print
Previous Article Can I put interrupt vectors in RAM on Cortex M0 MCU after bootloader?
Next Article Could not stop Cortex-M device! Please check the JTAG cable.
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

How to make use of the GCC fixed-point types extension on ARM Cortex-M?

The GCC compiler for ARM Cortex-M microcontrollers provides built-in support…

7 Min Read

Debugging tips for Cortex-M1 vector table configuration

Setting up the vector table properly is crucial for getting…

10 Min Read

Cortex-M0 Clock Speed

The Cortex-M0 is an ultra low power 32-bit ARM processor…

7 Min Read

How does one do integer (signed or unsigned) division on ARM?

Integer division on ARM processors is done using the SDIV…

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

Sign in to your account