Skip to main content

2000 | Buch

Languages for Digital Embedded Systems

verfasst von: Stephen A. Edwards

Verlag: Springer US

Buchreihe : The International Series in Engineering and Computer Science

insite
SUCHEN

Über dieses Buch

Appropriate for use as a graduate text or a professional reference, Languages for Digital Embedded Systems is the first detailed, broad survey of hardware and software description languages for embedded system design.
Instead of promoting the one language that will solve all design problems (which does not and will not ever exist), this book takes the view that different problems demand different languages, and a designer who knows the spectrum of available languages has the advantage over one who is trapped using the wrong language.
Languages for Digital Embedded Systems concentrates on successful, widely-used design languages, with a secondary emphasis on those with significant theoretical value. The syntax, semantics, and implementation of each language is discussed, since although hardware synthesis and software compilation technology have steadily improved, coding style still matters, and a thorough understanding of how a language is synthesized or compiled is generally necessary to take full advantage of a language.
Practicing designers, graduate students, and advanced undergraduates will all benefit from this book. It assumes familiarity with some hardware or software languages, but takes a practical, descriptive view that avoids formalism.

Inhaltsverzeichnis

Frontmatter

Language Basics

Frontmatter
1. Language Basics
Abstract
Using a language is like operating a marionette. You may not touch the puppet; instead you make it move by manipulating a handle connected to the puppet through strings. Just as a good puppeteer understands how the handle moves the puppet through the strings, a good designer understands how the syntax (the handle) of a language controls the model of computation (the puppet) through the semantics of the language (the strings).
Stephen A. Edwards

Hardware

Frontmatter
2. Hardware Basics
Abstract
Digital systems represent information using discrete values to make them resistant to noise, manufacturing variation, and aging. Consider the challenge of guessing the position of a light dimmer by observing the light it controls. You would have to ignore other sources of light in the room, consider whether the light has dimmed with age, and guess whether someone had switched your hundred-watt bulb for a seventy-five watt one when you looked away. Now consider how much easier it would be if you knew the light was controlled by a switch that was on or off. This is the advantage of digital systems.
Stephen A. Edwards
3. Verilog
Abstract
Verilog began life in 1984 as an input language for an event-driven simulator and has since become a key language in chip design because it is succinct, expressive, simulates quickly, and much of it can be automatically converted to hardware. It allows systems to be described using structural elements to closely match an implementation or behaviorally for additional simulation speed and easier specification.
Stephen A. Edwards
4. VHDL
Abstract
Vhdl was designed to be a general modeling and simulation language for digital systems. Its event-driven semantics can be used for everything from switch- to system-level modeling, and it has been pressed into service as an input language for logic synthesis. An analog subset has even been added.
Stephen A. Edwards

Software

Frontmatter
5. Software Basics
Abstract
Software languages describe instructions that will be executed in sequence by a processor. These instructions perform arithmetic on vallies in the processor’s memory or make a decision based on the results. Combinations of arithmetic instructions can be assembled to perform more complex tasks, such as evaluating a polynomial like ax 2 + bx + c. Adding decisions makes possible algorithms such as Euclid’s for computing the greatest common divisor (Figure 5.1).
Stephen A. Edwards
6. Assembly Languages
Abstract
An assembly language program is a list of processor instructions written in a symbolic, human-readable form. Each instruction consists of an opcode and some operands in certain addressing modes. E.g., the instruction add r5, r2, r4 might add the contents of two registers and write the result to a third. Although most instructions are executed in order, branch instructions can send the processor’s program counter (which points to the next instruction to execute) elsewhere to execute code, allowing for conditionals and loops.
Stephen A. Edwards
7. The C Language
Abstract
The C language is the most successful software language ever devised. Developed between 1969 and 1973 along with the Unix operating system, it has always been a pragmatic language for solving its developere problems. Limitations of early hardware (it first ran on a DEC PDP-11 with 24K of memory) forced it to be a small language, but this is one of its strengths. Since C’s simple semantics closely fit those of typical processors, C compilers produce compact, efficient code.
Stephen A. Edwards
8. C++
Abstract
C++ is a language built on C that supports object-oriented programming as well as a macro style of polymorphism. Bjarne Stroustrup, who created the language, wanted to provide more mechanisms for structuring large programs while maintaining the efficiency of generated code. The result is a much larger, more structured language with a stronger, more elaborate type system.
Stephen A. Edwards
9. Java
Abstract
Sun’s Java programming language is a newer language based on C++, but incompatible with it. Like C++, Java is an object-oriented language that provides classes and inheritance. It is a higher-level language than C++, providing object references, arrays, and strings instead of pointers. An automatic garbage collection facility frees the programmer from most memory management worries.
Stephen A. Edwards
10. Operating Systems
Abstract
An operating system (os) is a program that provides an environment for executing other programs, often providing facilities for I/O, a filesystem, networking, virtual memory, and multitasking: a way to run multiple programs concurrently on a single processor.
Stephen A. Edwards

Dataflow

Frontmatter
11. Kahn Process Networks
Abstract
In 1974, Gilles Kahn wrote a short paper [44] describing a simple language for parallel processing that provides a theoretical basis for dataflow computation. A system in Kahn’s language is a set of sequential processes running concurrently that communicate through single-sender, single-receiver fifo queues. A process that tries to read from an empty queue waits until data is available and cannot ask whether data is available before reading. Kahn showed these restrictions make these systems deterministic, that is, the sequence of messages that pass through each queue does not depend on the speed of the processes or the order in which they execute.
Stephen A. Edwards
12. Synchronous Dataflow
Abstract
Synchronous Dataflow (sdf) [52] is a dataflow language in which each process (called an actor) produces and consumes a fixed number of tokens per firing. This behavior makes an SDF system’s communication patterns independent of data values, allowing systems to be analyzed completely when they are compiled. Although this also limits what the language can describe, sdf is capable of describing most signal-processing algorithms, even those containing multiple sampling rates. Sdfs compile-time scheduling and expressiveness make it a natural choice for many signal-processing algorithms.
Stephen A. Edwards

Hybrid

Frontmatter
13. Esterel
Abstract
The synchronous language Esterel [8, 7] can be thought of as a concurrent software language with hardware semantics. It is a textual imperative language whose constructs and syntax resemble a traditional sequential programming language such as C, but it has deterministic concurrency based on the notion of a hardware-like clock and instantaneous broadcast communication. It is well-suited for describing control-dominated hard real-time systems because it provides precise control over when events happen through high-level control constructs including preemption and exceptions.
Stephen A. Edwards
14. Polis
Abstract
The Polis hardware/software codesign system [5] is targeted toward the design, synthesis, and verification of control-dominated embedded hardware/software systems. A research project based primarily at the University of California, Berkeley, Polis has since formed the basis of a commercial product from Cadence.
Stephen A. Edwards
15. SDL
Abstract
Sdl (Specification and Description Language) evolved from penciland-paper drawings used to describe the structure and behavior of large telecommunications systems. It formally began life in 1976 as a CCITT recommendation and has since been adopted and refined by the ITU into standard z.100 [43], first released in 1988. The 1992 revision mainly added object-orientation; the 2000 revision improved object-oriented data modeling and added exception handling.
Stephen A. Edwards
16. SystemC
Abstract
SystemC is a subset of C++ combined with a set of libraries aimed at the specification, simulation, and synthesis of digital hardware. It arose as a formal specification of what many designers had been doing for years to simulate very large systems, namely writing them in C or C++ in a structural style that would eventually lend itself to implementation in synchronous digital hardware.
Stephen A. Edwards
17. CoCentric System Studio
Abstract
CoCentric System Studio (once cailed El Greco—see Buck and Vaid-yanathan [17]) is a graphical design environment for systems built with a combination of dataflow diagrams and hierarchically-nested finite-state machines. It combines Esterel-like synchronous semantics for fsm s with Kahn’s or cyclo-static dataflow semantics for dataflow.
Stephen A. Edwards
Backmatter
Metadaten
Titel
Languages for Digital Embedded Systems
verfasst von
Stephen A. Edwards
Copyright-Jahr
2000
Verlag
Springer US
Electronic ISBN
978-1-4615-4325-1
Print ISBN
978-1-4613-6942-4
DOI
https://doi.org/10.1007/978-1-4615-4325-1