Impuls C

Medutvecklare
Designad av Impulsaccelererade teknologier
Utvecklare Impulsaccelererade teknologier
Dök först upp 2003
Stabil frisättning
3.60.a.8 / 2009-09-30
OS FPGA och relaterade inbäddade processorer
Licens FPGA-kompilator säljs och distribueras av Impulse Accelerated Technologies
Hemsida www.ImpulseC.com [ död länk ]
Influerad av
C Programming Language , Streams-C

Impuls C är en delmängd av programmeringsspråket C kombinerat med ett C-kompatibelt funktionsbibliotek som stöder parallell programmering , särskilt för programmering av applikationer som riktar sig till FPGA -enheter. Den är utvecklad av Impulse Accelerated Technologies i Kirkland, Washington.

Översikt

Högnivåsyntesverktyget CoDeveloper inkluderar en Impulse C- kompilator och tillhörande funktionsbibliotek avsett för utveckling av FPGA-baserade applikationer. Impulse C är kompatibel med standard ANSI C , vilket gör att standard C-verktyg kan användas för att designa och felsöka applikationer som är inriktade på FPGA. Impulse C-kompilatorn accepterar en delmängd av C och genererar FPGA-hårdvara i form av filer (HDL) . Impulse C gör det möjligt för inbyggda systemdesigners och programvaruprogrammerare att rikta in sig på FPGA-enheter för C-språk applikationsacceleration.

Impulse C skiljer sig från standard C genom att den tillhandahåller en parallell programmeringsmodell för blandade processorer och FPGA-plattformar. För detta ändamål inkluderar Impulse C tillägg till C, i form av funktioner och datatyper, vilket gör att applikationer skrivna i standard C kan mappas till grovkorniga parallella arkitekturer som kan inkludera standardprocessorer tillsammans med programmerbar FPGA-hårdvara.

Impulse C-verktygen inkluderar samsimuleringsverktyg för hårdvara/mjukvara samt C-till- RTL- schemaläggning/optimeringsteknik som används för att mappa applikationselement till hårdvara via FPGA- logiksyntesverktyg .

Programmeringsmodell

Impulse C stöder en variant av CSP-programmeringsmodellen ( Communicing Sequential Processes) , samtidigt som den förblir kompatibel med standard C-verktyg som debuggers och profilerare. Impulse C är designad för dataflödesorienterade streamingapplikationer, men är också designad för att stödja alternativa programmeringsmodeller inklusive användning av delat minne som kommunikationsmekanism.

I en Impulse C-streamingapplikation kommunicerar hårdvaru- och mjukvaruprocesser främst genom buffrade dataströmmar som implementeras direkt i hårdvaran. Denna buffring av data, som implementeras med hjälp FIFO:n med dubbla klockor genererade av kompilatorn, gör det möjligt att skriva parallella applikationer på en relativt hög abstraktionsnivå, utan den cykel-för-cykel-synkronisering som annars skulle krävas.

Med Impulse C kan en applikation partitioneras för att skapa en multipelprocessimplementering som är uppdelad i hårdvaru- och mjukvarukomponenter, eller implementeras helt i en FPGA-enhet. Till exempel skulle en bildfiltreringsapplikation kunna beskrivas med hjälp av Impuls C som en samling av parallella, pipelineade processer, som var och en har beskrivits med en eller flera C-subrutiner.

På mjukvarusidan av applikationen, till exempel i en inbyggd FPGA-processor, används Impulse C-biblioteksfunktioner för att öppna och stänga dataströmmar, läsa eller skriva data på strömmarna och, om så önskas, skicka statusmeddelanden eller polla för resultat. För processor-till-FPGA-kommunikation kan strömläsning och skrivning specificeras som operationer som drar fördel av FPGA-specifika, interna eller externa bussgränssnitt.

På hårdvarusidan av applikationen kompileras Impulse C-biblioteksfunktioner och andra C-satser för att generera likvärdiga, parallella hårdvaruimplementationer i form av syntetiserbara HDL-filer. Dessa filer bearbetas av FPGA-verktyg för att skapa FPGA hårdvarubitmappar.

I hjärtat av Impulse C-strömningsprogrammeringsmodellen är processer och strömmar. Processer synkroniseras oberoende och exekverar samtidigt segment av en applikation. Hårdvaruprocesser skrivs med hjälp av en delmängd av standard C och utför arbetet i en applikation genom att acceptera data, utföra beräkningar och generera utdata. I en typisk applikation flödar data från process till process med hjälp av buffrade strömmar, eller i vissa fall med hjälp av meddelanden och/eller delade minnen. Egenskaperna för varje ström, inklusive bredden och djupet för de genererade FIFO:erna, kan specificeras i C-applikationen.

Ansökningar

Impulse C används för applikationer inklusive bildbehandling och digital signalbehandling inbyggda system , såväl som för acceleration av högpresterande datorapplikationer inklusive finansiell analys , bioinformatik och vetenskaplig beräkning .

Målplattformar

, inklusive deras tillgängliga mjuka och hårda processorer Altera Nios II och Xilinx MicroBlaze och PowerPC .

externa länkar