Impulse C

Impulse C

Infobox programming language
name = Impulse C
paradigm =
year = 2003
designer = Impulse Accelerated Technologies
developer = Impulse Accelerated Technologies
latest_release_version = 2.20
latest_release_date = 2006-12-20
typing =
implementations =
dialects =
influenced_by = C Programming Language, [http://www.streams-c.lanl.gov/ Streams-C]
influenced =
operating_system = FPGA and related embedded processors
license = FPGA compiler sold and distributed by Impulse Accelerated Technologies
website = [http://www.ImpulseC.com www.ImpulseC.com]

Impulse C is a subset of the C programming language combined with a C-compatible function library supporting parallel programming, in particular for programming of applications targeting FPGA devices. It is developed by Impulse Accelerated Technologies of Kirkland, Washington.

Overview

Impulse C includes a compiler and related function library intended for development of FPGA-based applications. Impulse C is compatible with standard ANSI C, allowing standard C tools to be used for designing and debugging applications targeting FPGAs. The Impulse C compiler accepts a subset of C and generates FPGA hardware in the form of Hardware Description Language (HDL) files. Impulse C allows embedded systems designers and software programmers to target FPGA devices for C-language application acceleration.

Impulse C is distinct from standard C in that it provides a parallel programming model for mixed processor and FPGA platforms. For this purpose, Impulse C includes extensions to C, in the form of functions and datatypes, allowing applications written in standard C to be mapped onto coarse-grained parallel architectures that may include standard processors along with programmable FPGA hardware.

The Impulse C tools include hardware/software co-simulation tools as well as C-to-RTL scheduling/optimizing technology used to map application elements to hardware via FPGA logic synthesis tools.

Programming model

Impulse C supports a variant of the communicating sequential processes (CSP) programming model, while remaining compatible with standard C tools such as debuggers and profilers. Impulse C is designed for dataflow-oriented, streaming applications, but is also designed to support alternate programming models including the use of shared memory as a communication mechanism.

In an Impulse C streaming application, hardware and software processes communicate primarily through buffered data streams that are implemented directly in hardware. This buffering of data, which is implemented using dual-clock FIFOs generated by the compiler, makes it possible to write parallel applications at a relatively high level of abstraction, without the cycle-by-cycle synchronization that would otherwise be required.

Using Impulse C, an application can be partitioned to create a multiple-process implementation that is partitioned into hardware and software components, or implemented entirely within an FPGA device. For example, an image filtering application could be described using Impulse C as a collection of parallel, pipelined processes, each of which has been described using one or more C subroutines.

On the software side of the application, for example in an embedded FPGA processor, Impulse C library functions are used to open and close data streams, read or write data on the streams and, if desired, send status messages or poll for results. For processor-to-FPGA communications, stream reads and writes can be specified as operations that take advantage of FPGA-specific, internal or external bus interfaces.

On the hardware side of the application, Impulse C library functions and other C statements are compiled to generate equivalent, parallel hardware implementations in the form of synthesizable HDL files. These files are processed by FPGA tools to create FPGA hardware bitmaps.

At the heart of the Impulse C streaming programming model are processes and streams. Processes are independently synchronized, concurrently executing segments of an application. Hardware processes are written using a subset of standard C and perform the work of an application by accepting data, performing computations and generating outputs. In a typical application, data flows from process to process by means of buffered streams, or in some cases by means of messages and/or shared memories. The characteristics of each stream, including the width and depth of the generated FIFOs, may be specified in the C application.

Applications

Impulse C is used for applications including image processing and digital signal processing on embedded systems, as well as for acceleration of high-performance computing applications including financial analytics, bioinformatics and scientific computing.

Target platforms

Impulse C supports common FPGA-based processing platforms including the Altera Nios II and Xilinx's MicroBlaze and PowerPC.

External links

* [http://www.eetimes.com/story/OEG20030929S0078 Startup Licenses Streams-C]
* [http://www.impulsec.com/ Impulse Accelerated Technologies]


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • Impulse! — est un label de jazz basé à New York aux États Unis. Sommaire 1 Historique 2 Artistes notables 3 Discographie 4 Liens externes …   Wikipédia en Français

  • Impulse — Im pulse, n. [L. impulsus, fr. impellere. See {Impel}.] [1913 Webster] 1. The act of impelling, or driving onward with sudden force; impulsion; especially, force so communicated as to produced motion suddenly, or immediately. [1913 Webster] All… …   The Collaborative International Dictionary of English

  • Impulse — steht für: Impulse! Records, auf Jazzmusik spezialisiertes Schallplattenlabel Impulse (Comicserie), eine Comicserie Impulse (Zeitschrift), ein Unternehmensmagazin Impulse (Theaterfestival), ein Theaterfestival in Nordrhein Westfalen Siehe auch:… …   Deutsch Wikipedia

  • Impulse! — es un sello discográfico estadounidense especializado en jazz que pertenece en la actualidad a la compañía Verve Music Records. Externamente, sus discos se caracterizan por su embalaje en cartón de gramaje superior a la media, carpetas dobles con …   Wikipedia Español

  • impulse — I noun actuation, drive, encouragement, impelling force, impetus, impulsio, impulsion, impulsus, incentive, motivation, motive, pressure, push, spontaneity, spontaneous inclination, stimulant, sudden desire, sudden force, thrust associated… …   Law dictionary

  • impulse — (n.) early 15c., an act of impelling, a thrust, push, from L. impulsus a push against, pressure, shock, also incitement, instigation, impulse, pp. of impellere (see IMPEL (Cf. impel)). Meaning stimulus in the mind arising from some state or… …   Etymology dictionary

  • impulse — [n1] drive, resolve actuation, appeal, bent, caprice, catalyst, desire, disposition, excitant, extemporization, fancy, feeling, flash*, goad, hunch, impellent, impulsion, incitation, incitement, inclination, influence, inspiration, instinct,… …   New thesaurus

  • impulse — [im′puls΄] n. [L impulsus < pp. of impellere: see IMPEL] 1. a) an impelling, or driving forward with sudden force b) an impelling force; sudden, driving force; push; thrust; impetus c) the motion or effect caused by such a force 2 …   English World dictionary

  • Impulse — Im*pulse , v. t. [See {Impel}.] To impel; to incite. [Obs.] Pope. [1913 Webster] …   The Collaborative International Dictionary of English

  • impulse — n *motive, spring, incentive, inducement, spur, goad Analogous words: impetus, *stimulus, incitement, stimulant, excitant: urge, passion, lust, *desire, appetite: moving or movement, driving or drive, impelling or impulsion, actuation (see… …   New Dictionary of Synonyms

  • impulse — ► NOUN 1) a sudden strong and unreflective urge to act. 2) a driving force; an impetus. 3) a pulse of electrical energy; a brief current. 4) Physics a force acting briefly on a body and producing a change of momentum. ORIGIN Latin impulsus a push …   English terms dictionary

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”