Impuls C
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 på 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 .