The Mock Turtle Core
Mock Turtle is a framework to develop embedded systems using FPGAs.
The need for this framework comes from the fact that in some contexts the development of a gateware core is more complex than writing a software application. Software takes more computation time than a custom-designed gateware core; but on the other hand, the development and support efforts are significantly reduced. Mock Turtle is a solution for such problems. The gateware core complexity is moved to the software domain within the Mock Turtle boundaries, without sacrificing determinism.
The Mock Turtle framework provides an infrastructure on which you can build an FPGA-based embedded system. The basic ingredient of this framework is a soft-cpu multi-core environment that can be used to write firmware to control/monitor gateware cores. In other words, you can connect Mock Turtle to your gateware cores and control them with the firmware running on the soft-cpu. In addition, the Mock Turtle framework provides a communication channel between the firmware and the host applications which can be used to configure or control the firmware.
The Mock Turtle framework focuses mainly on the determinism of the firmware running in it. Indeed, Mock Turtle does not support any kind of interrupt or scheduling which might compromise the determinism.
The Mock Turtle framework includes the following components:
- Gateware
- The Mock Turtle core
- Shared Memory among soft-CPUs and host system.
- Up to 8 soft-CPUs
- communication with the host system (input, output)
- communication with remote systems (input, output)
- The Mock Turtle core
- Software
- the Mock Turtle firmware library to access gateware cores from the firmware.
- the Mock Turtle firmware framework to develop firmware.
If the Mock Turtle is used within a Linux host system, the user can take advantage of a number of software components which run on the host and support Mock Turtle:
- the Mock Turtle Linux device driver;
- the Mock Turtle library that provides uniform access to the driver;
- the Mock Turtle Python module to access the library using Python.
Use Cases
The focus on the high determinism of the soft-cpus makes the Mock Turtle a very good candidate to implement rtc systems and control systems (which are, typically, rtc applications).
To make clear the system architecture differences let's take the classical control system from control theory: the heating system. We have a thermometer sensor, and an actuator to adjust the temperature.
The following figures show the control system architecture with and without Mock Turtle.
(align-center)/uploads/6018a5e7657db051927844a3c8efd00e/mock-turtle-use-case-1.svg) | (align-center)/uploads/519fbcc0cb61efce5ab539cb341baf40/mock-turtle-use-case-2.svg) |
In the scenario without Mock-Turtle in the figure, the user is responsible for the entire development. On the other hand, with Mock Turtle, you will be responsible for the development only of your business logic. This will limit your gateware development to the essential blocks, and move the control logic to the software domain. You do not have to care about the communication with the host system or the external world because it's already part of the Mock Turtle framework.
When Not To Consider Mock Turtle
The Mock Turtle soft-CPUs have limited computation power, this precludes some applications like: dsp.
If you really want to use Mock Turtle for dsp analysis, please consider the development of a dedicated gateware core to perform the dsp analysis and to use the Mock Turtle as a control system for the dsp gateware core.
Project information
For more information please have a look at our Documents section. Here you can find the documentation as well as presentations about Mock Turtle and articles
Known Users
Contacts
- Federico Vaga
- Tomasz Włostowski (CERN)
Status
Date | Event |
19-05-2014 | LHC Instability Trigger Distribution - design available |
14-05-2014 | Technical specification available. |
13-05-2014 | Initial VHDL version committed. Capable of communicating with the host and sending Etherbone messages. |
18-04-2014 | First ideas, creation of wr-node-core project. |
08-04-2014 | White Rabbit Node Core Technical Specification document written. |
01-10-2014 | Initial version of gateware & realtime. |
01-02-2015 | Initial version of Node Core & WR Trigger Distribution drivers. |
12-06-2018 | Mock Turtle 4.0.0 Beta 1 release |
12 June 2018