Hardware/software codesign is especially well adapted for the the design of embedded controllers for reactive real-time applications . These controllers utilize Micro-processors, Micro-controllers and Digital Signal Processors but are neither used nor perceived as computers. Generally, software is used for features and flexibility, while hardware is used for performance. Some examples of applications of embedded controllers are:
Most of complex digital systems contains some software programs to perform
the desired functions. However, when considering embedded systems, the
end-user has limited access to programming. The most software is already
provided by the system integrator, the user can program/select only the
application functions (application level programming).
System integrator uses mainly instruction level programming
with an instruction set architecture (ISA). the instruction set defines
the boundary between hardware and software, by providing a programming
model of hardware.
Examples of instruction level programmable components are: microprocessors,
microcontrollers , and digital signal microprocessors.
In embedded systems, the ISA is not visible to the user because it
runs embedded software. The lowest programming level , the hardware
programming means configuring hardware after the manufacturing process.
Microprogramming and FPGA configuration are considered as hardware
programming.
Both instruction level programmable devices and hardware level programmable
devices may be provided as VHDL models.
Codesign
of embedded systems
Depending on the application domain some embedded systems provide control
functions while others perform information processing. Single-chip
implementations of an embedded controller may integrate on the same chip
input/output interfaces/converters, timers, memory with the embedded software
and data processing units. Real-time controllers must often satisfy soft
and hard timing constraints. Embedded systems for telecommunication applications
involve data processing such as data compression/decompression, coding
and conversion.
The design of embedded systems include modeling, validation, and implementation.
Modeling is a process of conceptualization and refinement of specifications,
it produces corresponding hardware and software models. the software model
may be expressed in C language while the hardware models are usually described
in a hardware description language such as VHDL.
These tasks are quite complex because the system functions may be performed
by different and heterogeneous components, and the design requirements
and implementation constraints may involve a specific hardware/software
partitioning.
Hardware/software partitioning
A hardware/software partitioning process represents a physical partition
of overall system functionality into application-specific hardware and
software executing on one (or more) processor(s). This process may involve
different objectives including high performance and low-capacity (low cost)
formulated as performance and/or capacity constraints.
Different partitioning strategies depend on the modeling paradigms
used to capture the system functionnalities. All of them provide task partitioning,
scheduling, and resource binding. In principle all of these processes may
be carried concurrently; practically there are often serialized.
For example in Chinook environment (presented below), provided for designing reactive real-time systems, the overall system can have different modes of operation, each having a schedule. Timing watchdogs can disable modes and cause mode transitions. Upon changing of mode, the system starts running the corresponding schedule. Timing constraints may be modal or intra-modal. Each mode has a periodic set of tasks, which is unrolled and scheduled under timing constraints, using an extension of the relative scheduling formulation. With this scheduling method, Chinook supports the mapping of an embedded system model to one or more processors and peripherals while ensuring the satisfaction of timing constraints.
Chinook is a hardware-software co-design tool for heterogeneous distributed embedded systems. It supports component-based design of control dominated, reactive systems under timing constraints.
To manage complexity, the designer must raise the level of abstraction
by reasoning at a higher level. It should be possible to derive a system-level
specification using high-level components, instead of re-specifying everything
from scratch. Once the behavioral description is derived, we envision that
the designer makes the partitioning and allocation decisions, and uses
Chinook to map it onto several target architecture interactively. This
enables designers to make informed design decisions at the high level early
in the design cycle, rather than reiterate after having worked out all
the low level details.