If hardware forms the body of the embedded systems, software is a soul of embedded systems. The software lends the functionality to an embedded system.
Variety of languages has emerged as the tasks to be performed by embedded systems are of quite diverse nature. One language may be good for control-dominated application but may not so good for signal processing applications.
a) Hardware languages
Verilog and Very high speed integrated circuits Hardware Description Language (VHDL) are the most popular languages in this category. Both describe systems with structural hierarchy, model systems with discrete event semantics; allow concurrent processes to be described procedurally. Verilog is destined for simulating digital integrated circuits whereas VHDL is much larger and verbose and can handle wider class of modelling and simulation tasks.
b) Software languages
Software languages use instructions to describe sequences to be executed. Software languages are of two types: Assembly and high level languages. An assembly language program contains instructions written in a symbolic form and is de?ned by opcodes, addressing modes, registers, and memories. High level languages include C, C++, RT-Java, ADA, etc. They use various constructs like functions, loops, arrays, variables, structures etc. and are written in easy to understand language.
c) Dataflow languages
Datafow languages describe systems of procedural processes that run concurrently and communicate through queues. A data flow model is composed of nodes, that transform data, and arcs, which represent the passing of data between those nodes. They are not convenient for general applications but very good for signal processing applications. Kahn process networks are one of the applications. LUSTRE is an example of synchronous dataflow language.
d) Hybrid languages
This category of languages combines ideas from other languages.
Esterel (intended for control-dominated reactive systems) combines abstract hardware semantics (concurrency, and a synchronism of digital circuits) with different kinds of constructs of typical software language.
SDL is a graphical language developed for describing telecommunication protocols (uses finite state machines)
SystemC offers synchronous VHDL-like discrete event simulation models but allows for the introduction of asynchronous execution and interaction mechanisms from software (C++).
CoCentricTM System Studio combines Kahn-like data?ow with Esterel-like FSM semantics to simulate and synthesize data?ow applications that also require control.