Pouvez-vous programmer des FPGAs dans des langues de type C? [fermé]

à l'Université, j'ai programmé une FPGA dans un langage de type C. Cependant, je sais aussi que l'on programme habituellement FPGAs dans Verilog ou VHDL. C'est un choix de designer? Si oui, quelles sont les performances des inconvénients?

j'aimerais idéalement programmer la FPGA dans un langage de type C, plutôt que VHDL.

je pensais obtenir un Xilinx Virtex-5 si cela fait une différence?

25
demandé sur Chris 2012-01-24 18:36:29

9 réponses

La réponse est "oui, certainement".

voici une excellente enquête sur les compilateurs C pour les systèmes basés sur FPGAs et FPGA.

C-à-matériel compilateur (HLL synthèse)

on trouve des inconvénients et des considérations en matière de Performance dans l'architecture du système et les largeurs de bande de communication plutôt que dans l'utilisation du langage de conception c vs. a hardware (HDL). Les considérations dans l'utilisation de C vs. un HDL réside dans le temps de programmation et les problèmes de maintenance du Logiciel, pas tellement dans la performance.

10
répondu David Pointer 2017-05-23 12:34:41

FPGA ne sont pas des processeurs. C est un langage conçu pour les processeurs.

Oui, il y a des C FPGA compilateurs.

est - ce une bonne idée? Je dirais que non. La conception avec laquelle vous allez vous retrouver est (d'après ce que j'ai vu) normalement une machine d'état qui a un état par ligne de code dans le C. La machine d'état se déplace alors à travers les États effectuant l'algorithme. Soit cela soit une autre machine de Turing est mis en place pour exécuter le code.

C'est et non comment un spécialiste en conception FPGA aborderait généralement un problème. C'est une façon lente, et potentiellement affamée de faire les choses.

de la même manière que l'anglais est une meilleure langue pour écrire un roman que Fortran, VHDL et Verilog sont de meilleures langues pour décrire des circuits logiques que C.

si vous êtes sérieux au sujet de L'utilisation des FPGAs, utilisez un langage qui est conçu pour décrire la logique circuit. Cela pourrait être une courbe d'apprentissage abrupte, mais les résultats seront beaucoup mieux IMHO.

24
répondu Paul S 2015-10-13 09:36:00

vous pouvez installer un noyau de processeur souple à l'intérieur la logique FPGA, et exécuter votre code C à l'intérieur du processeur virtuel. Xilinx a des noyaux Microblaze (sous licence) et Picoblaze (libres). Il y a d'autres noyaux mous que vous pouvez implémenter (MIPS, x86, 8051, etc).

Toutefois, cela est largement considéré comme un "hack", comme les noyaux sont très lents par rapport à de véritables noyaux. Et je pense que tout C-à-FPGA conversion est en fin de Compte commencer à sentir comme courir un noyau souple, et ne pas vous donner l'efficacité que vous méritez pour courir sur un FPGA. Les FPGA ne sont pas des machines de Turing, ils sont un sac de portes logiques. Vous pouvez construire une machine de Turing sortie des portes, mais ce n'est pas pourquoi vous avez acheté le sac de portes.

C'est un peu comme acheter un sac de Lego, et construire un marteau et un ensemble de clous à partir des briques. Il pourrait travailler, mais vous êtes mieux d'acheter un marteau pour marteler les clous, et mieux de bâtiment Des châteaux, des vaisseaux spatiaux et des casernes de pompiers avec les Legos.

4
répondu Mark Lakata 2014-02-28 21:26:16

il y a en effet quelques compilateurs qui vous permettent d'inférer (résoudre en utilisant une description incomplète) des circuits matériels en utilisant un langage de haut niveau comme C." C-to-gates " est en fait un mot à la mode populaire. Les sociétés d'image font la publicité que les programmeurs sont capables d'écrire du matériel si le langage qu'ils utilisent est celui qu'ils ont utilisé pour décrire le logiciel. C'est incroyablement mal, pour un certain nombre de raisons, notamment les différences fondamentales entre le modèle d'exécution assumée par des langues comme le C et des langues de description du matériel.

un exemple illustratif: C suppose à son cœur une grande mémoire linéaire-adressée accessible au hasard - une hypothèse qui vaut rarement pour le matériel. Un compilateur C-to-gates fait face à une tâche difficile d'interpérer le comportement du programme décrit, et de concevoir un circuit matériel avec le même comportement.

alors que les langues de type C sont un excellent outil de productivité cas d'utilisation limitée, ces compilateurs ne vous permettent certainement pas de savoir soudainement comment concevoir du matériel si vous êtes familier avec C.

Espère que cette aide,

2
répondu Ilia Lebedev 2014-04-08 17:24:42

J'imagine que vous avez utilisé Handel C. C'est un sous-ensemble de C. D'après ce que je sais, le résultat n'est pas très optimisé. Verilog et VHDL permettent plus d'optimisation. Je dis cela sur la base de mon expérience avec Handel C il y a quelques années

1
répondu Josnidhin 2012-01-24 15:35:00

vous pourriez vouloir jeter un oeil à la technologie c-to-hardware, où vous pouvez écrire le code C et il sera compilé/traduit en VHDL ou Verilog. Ce post énumère quelques-unes des compilateurs. Ne l'ai pas utilisé moi-même donc je n'ai aucune expérience avec elle. Espérons que cette aide!

1
répondu Carlito 2017-05-23 12:34:41

beaucoup de concepteurs écrivent VHDL/Verilog au lieu d'un langage de haut niveau, pour les mêmes raisons que beaucoup de programmeurs ont l'habitude (et le font encore dans certains cas) d'écrire assembly au lieu de Java: vous pouvez ajuster l'utilisation des ressources et la performance à un bas niveau. VHDL et Verilog sont des langages conçus pour concevoir du matériel. C ne l'est pas. Avec assez de temps, vous pouvez toujours écrire un programme en VHDL/Verilog qui surpassera un programme de langue de haut niveau. Ce qu'un HLL vous donne est de 1) plus rapide développement, 2) facilité de maintenance, et 3) peut-être une plus grande portabilité.

de nombreux efforts ont été déployés pour compiler les langages de programmation de haut niveau existants (C is one) en fonction des objectifs de la FPGA. La plupart d'entre eux produisent, en fait, du code optimisé. L'impulsion C, par exemple, est un sous-ensemble de C avec quelques bibliothèques supplémentaires qui prennent en charge le parallélisme au niveau du processus, plus un compilateur qui optimise l'entrée C pour le parallélisme au niveau de l'instruction, aussi. Il pipelines boucles, cartes de certaines opérations pour les primitives de matériel de haute performance, il connaît la famille FPGA sous-jacente fournit,etc. (Divulgation complète: j'ai aidé à construire la chaîne D'impulsion C.)

Le C-à-environnements matériels liste de Carlito et David Pointeur lien est assez exhaustive. Xilinx Virtex-5 est supporté par beaucoup d'entre eux, et si vous utilisez une famille récente de FPGA d'un fournisseur majeur, le choix du matériel ne devrait pas être un problème. Certains des HLL environnements de soutien intégré (ou softcore) ont intégré les CPU mieux que d'autres.

1
répondu rkb 2017-05-23 12:26:10

vous devriez jeter un oeil à SystemC. Les avantages d'utiliser un langage basé sur le C sont abondants. En particulier, sur une perspective de conception de système, vous pouvez utiliser que votre autre logiciel (firmware et autres choses de bas niveau) est écrit en C. Par conséquent, votre équipe de logiciel peut sur un test très tôt contre le code rtl.

en 2011, Xilinx a acheté la société AutoESL qui avait développé une synthèse de haut niveau avec SystemC. Xilinx a réutilisé le nom lors de la sortie de son produit "AutoESL". En particulier avec leur nouveau circuit Zynq, il y a un Cortex à double bras A9 intégré avec la logique FPGA, cela deviendra probablement un outil puissant pour le développement du système.

1
répondu Karl Lunden 2012-03-08 10:15:29

j'aimerais ajouter quelque chose qui, je crois, est la réponse la plus proche à la question de L'OP. Si vous recherchez un langage de type C (qui n'est pas le même que C), vous devez absolument vérifier Synflow . L'idée est d'avoir un langage moderne qui vous permet de concevoir plus rapidement, sans une courbe d'apprentissage de VHDL/Verilog et sans surcharge. Il est de plus gratuit et open source!

Divulgation: je suis co-fondateur de Synflow :-)

1
répondu Matthieu Wipliez 2014-07-03 07:51:51