Bien concevoir avec un FPGA
Transcription
Bien concevoir avec un FPGA
Mise en œuvre CIRCUITS LOGIQUES PROGRAMMABLES Bien concevoir avec un FPGA Réussir une application à base de FPGA, c’est respecter un certain nombre de principes comme une bonne connaissance de la topologie du réseau logique programmable et l’adoption d’une méthodologie synchrone. ès l’origine, les FPGA, tels que Xilinx les a inventés, avaient la réputation de mettre à disposition de l’utilisateur une conception rapide, fiable et simple. Si cette réputation est totalement justifiée, les progrès technologiques ont permis, depuis, d’accéder à des matrices logiques programmables de plusieurs millions de portes. Cette complexité actuelle reste absolument gérable et permet la réalisation d’applications très performantes moyennant une bonne connaissance des ressources offertes et le respect d’une méthodologie de conception. Malheureusement, certains concepteurs Par Edgard Garcia, MVD Edgard Garcia a créé la société MVD, spécialisée dans le traitement d’images et référence française en matière de FPGA Xilinx. Depuis de nombreuses années, MVD conçoit des FPGA en langage VHDL pour tous types d’applications, y lement pour concevoir simplement et rapidement, mais aussi pour réussir leurs conceptions. La démonstration de cette méthode de Trois modes de configuration des LUT En a, un générateur de fonctions combinatoires. En b, configuration en mémoire 16 bits à écriture synchrone. En c, configuration en registre à décalage de longueur programmable. compris le prototypage d’Asic. débutants, voyant dans la souplesse du programmable une possibilité infinie de corrections d’erreurs, dédaignent toute méthode et connaissent des échecs. Ces déboires, relevant de leur entière responsabilité, les amènent parfois à déclarer à tort que l’utilisation de certains FPGA haut de gamme est difficile. L’objet de cet article est de montrer que les adjectifs « simple » ou « difficile » sont hors de propos pour ce type de conception. C’est la réussite du projet qui est facile à obtenir si l’on suit avec sérieux et méthode un certain nombre d’étapes. La haute densité des matrices de Xilinx n’est pas un obstacle car un jeu d’outils de développement accompagne efficacement Architecture simplifiée l’utilisateur. Les quatre règles de base FIGURE 1 d’un « slice » sont: - bien connaître les caractéristiques Un bloc de logique combinatoire est constitué du FPGA ciblé pour assurer son adéde deux ou quatre «slices». quation avec les besoins du projet; - respecter une méthodologie de conception et un style d’écriture; - opter pour des outils de synthèse de qualité; - maîtriser les outils d’implantation. PRE Carry D Q Autrement dit, il faut bien comLUT CE prendre les possibilités offertes par le CLR réseau logique programmable choisi ainsi que les moyens à mettre en œuvre pour en tirer le meilleur profit. PRE En nous appuyant sur différentes Carry D Q LUT architectures de FPGA, nous allons CE décrypter les principales possibilités CLR mises à la disposition des utilisateurs et les points qu’ils doivent absolument connaître et maîtriser, pas seu- D 2 FIGURE 2 Éléments mémoire initialisés à la configuration F1 F2 F3 F4 Mux 16 1 DOUT a) DIN Adr/ F ou G DEGCO Mux 16 1 DOUT Mux 16 1 DOUT Enable WR_EN CK DEL b) DIN CE CK DEL Adr 4 c) Extrait du n°125 d’Electronique - Mai 2002 Mise en œuvre conception sera faite sur des FPGA Xilinx. Les familles proposées sont Spartan-II, SpartanIIE,Virtex-E et Virtex-II. Bien connaître son sujet Les qualités et l’organisation générale des matrices de ces familles sont décrites dans l’encadré ci-dessous. Nous y voyons qu’un des modules de base est le bloc logique configurable (ou CLB), lui-même constitué de « slices ». La figure 1 illustre l’architecture simplifiée d’un slice. La logique combinatoire est implantée grâce aux LUT (look-up tables) contenues dans chaque slice. Ces LUT peuvent également être configurées comme éléments de mémoire synchrone, simple ou double-port de 16 bits, ou encore comme registres à décalage de 16 bits. Il existe donc trois modes de configuration de ces LUT. Plus précisément, le fonctionnement en mode combinatoire est obtenu en lisant le contenu pointé par les signaux d’entrée (figure 2a). Autrement dit, les LUT sont des mémoires dont le contenu est initialisé lors de la configuration du FPGA. De ce fait, elles permettent à l’utilisateur d’en disposer en mode «élément mémoire» dans chacun des slices si nécessaire (figure2b). La figure 2c décrit le mode de configuration particulier en registre à décalage de longueur programmable jusqu’à 16 bits. Par ailleurs, une logique supplémentaire utile pour la réalisation de fonctions arithmétiques est disponible dans chaque slice. Grâce à ces éléments, et au style d’écriture adapté, des modules de type accumulateur chargeable en addition/soustraction pourront être implantés à raison de 2 bits par slice. Le niveau de performance est alors prédictible et il pourra dépasser les 200MHz pour des opérateurs 32 bits. A noter que l’appel à ces éléments de logique arithmétique, comme la propagation rapide de la retenue (figure 3), implique l’utilisation de ressources de routage dédiées. En effet, afin de préserver la performance de telles fonctions, la propagation de la retenue s’effectue du bas vers le haut via des connexions directes entre slices adjacents. Ainsi, les LSB sont vers le bas de la matrice et les MSB sont vers le haut, ceci par rapport à la vue du FPGA Xilinx dans les outils graphiques que sont le «Floorplanner» et le «FPGA Editor». Les bascules dans chaque slice ont aussi des caractéristiques importantes pour le concepteur. En particulier, elles sont ini- Performances et densités à la carte horloges (DLL et DCM). - Multiplieurs câblés (Virtex-II). Et bien d’autres possibilités permettant d’optimiser à la fois la performance et la densité des fonctions logiques et/ou arithmétiques. Comme le montre la figure ciaprès sur l’organisaOrganisation des FPGA de Xilinx FIGURE tion générale des FPGA Xilinx, l’essentiel des Les matrices de Xilinx comportent essentiellement des blocs fonctions logiques sera logiques configurables. implanté en CLB (blocs de logique configuraBanque 0 Banque 1 Blocs ble), eux-mêmes consd’entrée/sortie (IOB) titués de « slices ». Un répartis en « slice » comprend 8 banques deux bascules D, de la logique combinatoire et Banque 2 arithmétique et/ou des fonctions de mémoire distribuée ou de registre à décalage. Blocs de logique Suivant les familles, configurables un CLB peut être constitué de deux ou Banque 3 quatre slices, c’est-àdire qu’il peut comprendre jusqu’à huit bascules D, et, par exemple, 128 bits de mémoire ou des Dispositifs de gestion des horloges Blocs SelectRam et buffers spécialisés fonctions arithmésimple et double port tiques et/ou logiques. ➜ Les différentes architectures de FPGA Xilinx sont Spartan-II, Spartan-IIE, Virtex-E et Virtex-II. Leurs caractéristiques principales sont : - Complexités allant de 15 000 à plus de 8 millions de portes. - Faible consommation. - Grande souplesse d’utilisation des entrées-sorties avec adaptation d’impédance (Virtex-II) et configuration en mode différentiel (Spartan-IIE, Virtex-E et Virtex-II). - Fonctions mémoire (distribuée et blocs de Ram). - Dispositifs de gestion des Extrait du n°125 d’Electronique - Mai 2002 Configuration de «slices» pour fonctions arithmétiques FIGURE 3 Une logique supplémentaire (Fast Carry) permet l’implantation de fonctions de type accumulateur chargeables en addition/soustraction. ADD_SUB A15 B15 1 slice 1 slice COUT D Q EC CK CIN A3 COUT B3 CIN A2 COUT B2 CIN A1 COUT B1 CIN A0 COUT B0 CIN D Q EC CK D Q EC CK D Q EC CK D Q EC CK Validation horloge tialisées systématiquement à la mise sous tension (par défaut à la valeur ‘0’), et sont utilisables indépendamment de la logique combinatoire disponible dans le même slice. En outre, chaque bascule bénéficie de broches de contrôle telles que : entrée dédiée de validation de l’horloge (Clock enable) permettant d’activer ou de suspendre le fonctionnement de chacune des bascules individuellement, et ceci sans avoir à insérer de la logique combinatoire sur le chemin de l’horloge ; entrées de « set » et de « reset » synchrones ou asynchrones. La polarité des signaux d’horloge, de Clock enable, de set et de reset est programmable pour chacune des bascules.Autrement dit, ces signaux peuvent être individuellement actifs au niveau haut ou au niveau bas. Les outils de synthèse appropriés permettront de tirer profit de ces détails d’architecture à partir du code source VHDL (ou Verilog). Maîtriser la propagation des signaux Une attention particulière doit être apportée à la distribution des horloges, élément crucial dans tout projet d’électronique numérique. La plupart des FPGA, et notamment ceux de Xilinx, disposent de ressources (buffers et routage associé) qui permettent une 3 Mise en œuvre Ressources de routage pour les horloges FIGURE 4 En a, les buffers d’horloge et les ressources de routage associées. En b, des dispositifs de gestion des horloges permettent d’adapter la fréquence d’horloge. En c, diagramme simplifié d’un dispositif de gestion de la phase et de la fréquence de l’horloge. Arbre d’horloge Délai de distribution de l’horloge = 0 ns (compensé par l’asservissement de la DLL) CLKDLL IPAD (dédié) I BUFG O I CLKIN IBUFG (dédié) CLKFB Délai de distribution de l’horloge RST CLK0 CLK90 CLK180 CLK270 O BUFG CLK2X CLKDV LOCKED (lié à la taille du FPGA) a) b) Mux CLK0 Arbre d’horloge BUFG CLKIN Délais élémentaires (40 à 60 ps) Comparateur de phase séquentiel CLKFB LOCKED c) 4 de garantir une gigue ne dépassant pas 100ps dans le pire des cas. Dans les FPGA Xilinx, les ressources de routage sont fortement structurées. Elles sont constituées de plusieurs types d’interconnexions (directes, générales…) et de longues lignes de métal horizontales et verticales. Ces dernières vont permettre le routage efficace de certains types de signaux. Pour résumer, nous pourrions dire que le flot de données principal doit circuler en horizontal (par rapport à la vue graphique de la matrice dans les outils Xilinx), et que les signaux de contrôle doivent être distribués en vertical pour optimiser le routage. Cette optimisation engendrera une meilleure performance, Les règles de positionnement des E/S FIGURE 5 Pour obtenir des performances optimales, il est important de respecter les lois d’implantation des bus principaux et des entrées/sorties. Entrées/sorties auxiliaires et signaux de contrôle Propagation des données MSB Bus de données répartition d’horloge parfaite, c’est-à-dire sans dérive (skew) ; un point particulièrement important pour les conceptions synchrones. Le déroulement des événements est le suivant : les outils de synthèse détectent automatiquement les sources d’horloge, et infèrent les buffers spécialisés et les ressources de routage associées (figure 4a). A la charge du concepteur de choisir une matrice offrant un nombre de tampons d’horloge suffisant pour son application. Les dispositifs de gestion des horloges permettent l’implantation aisée et efficace de fonctions comme la multiplication et la division de la fréquence, l’ajustement statique ou dynamique de la phase ou la synthèse de fréquence. Ces deux dernières caractéristiques sont propres aux FPGA Virtex-II. Grâce à cette technologie entièrement numérique, le concepteur peut faire appel à toutes ces fonctions de gestion d’horloge, sans avoir à se soucier des filtres de boucles et autres critères habituellement rencontrés avec les technologies analogiques (figure 4b et 4c). La gestion de la phase et de la fréquence d’horloge s’effectue en utilisant un grand nombre de lignes à retard (50ps environ), ce qui permet MSB Signaux de contrôle LSB Bus de données Arbre d’horloge disposant de connexions directes vers toutes les bascules et autres éléments séquenciels de même qu’une réduction des temps de placement/routage. La consommation sera également réduite car les charges capacitives inhérentes au routage seront minimales. Cependant, pour garantir un routage efficace, rien de tel que de suivre quelques règles simples pour définir le brochage du FPGA. En effet, un bon positionnement des blocs d’entrées/sorties —généralement décidé avant l’implantation sur le FPGA pour paralléliser la réalisation des lignes de cuivre— donne au logiciel toutes facilités pour utiliser les ressources de routage optimales pour chacun des signaux. En outre, si la méthode d’implantation des fonctions arithmétiques et assimilées, telles que compteurs, comparateurs, etc., est correctement respectée (position verticale avec LSB vers le bas, MSB vers le haut du FPGA), les bus principaux d’entrées/sorties suivront la même loi de positionnement. Les entrées/sorties restantes seront placées de manière intuitive en tenant compte des connexions entre les divers modules. Si la figure 5 présente ces principes de positionnement pour les entrées/sorties, précisons les caractéristiques de ces blocs d’E/S. La règle est toujours la même : plus vous connaîtrez les possibilités offertes, meilleures seront les performances. L’échange de données avec la circuiterie externe (microprocesseur, DSP, LSB Entrées/sorties auxiliaires et signaux de contrôle Extrait du n°125 d’Electronique - Mai 2002 Mise en œuvre mémoires rapides, convertisseurs Méthodologie de développement: Configuration des blocs d’E/S FIGURE 6 A/N et N/A) est souvent un critère vous avez dit synchrone? Les blocs d’entrées/sorties (IOB) comportent des important dans la perspective des bascules sur les chemins d’entrée, de sortie et de Il est important de rappeler quelques notions performances à atteindre. Les contrôle trois-états, bascules utilisées, si nécessaire, de base sur la méthodologie à adopter dans blocs d’entrées/sorties disposent par les outils de synthèse. le cadre de conception d’électronique numéde bascules sur les chemins d’enrique. La citation suivante donne une idée trée, de sortie et de contrôle troisMultiplexeurs statiques assez précise des ennuis encourus si une cerétats. Les outils de synthèse les (sélection définie pendant la configuration) taine méthodologie de conception n’est pas plus sophistiqués permettent l’utiprise en compte: «Les développements asynlisation systématique (lorsque cela TRI chrones peuvent ruiner votre projet, votre cars’applique) de ces bascules, garanEC TRI_ENABLE rière professionnelle et même votre santé. Refutissant ainsi les temps d’établissez simplement de concevoir en asynchrone…» sement et de «clock-to-out» puisLes conceptions asynchrones présentent faciqu’ils deviennent indépendants OUT lement des défauts de fonctionnement aléadu placement et donc du routage. PAD EC OBUF toires. Certaines d’entre elles manifesteront Enfin, les FPGA de la famille VirOUT_ENABLE des problèmes de fonctionnement en temtex-II comprennent des registres pérature, d’autres liés au vieillissement du doubles sur chacun de leurs trois IN composant ou autres paramètres externes. chemins, autorisant ainsi la réaIN_Q La figure 7a montre un des montages source lisation d’interfaces DDR (Double EC IBUF d’asynchronismes et donc de fonctionnement Data Rate) pour la communicaaléatoire communément appelé « Gated tion avec les mémoires SDram du CLK clock». Dans cet exemple, l’horloge est génémême nom ou autres dispositifs IN_ENABLE rée à partir d’une fonction combinatoire de du même type (figure 6). plusieurs signaux. La sortie de cette fonction La configuration électrique des présentera des parasites qui pourront être blocs d’E/S donne la possibilité d’ajuster la raideur des fronts sur les étages port B, sans que le concepteur ait à se sou- interprétés par certaines bascules comme de sortie, la sortance, les seuils de commuta- cier de la mise en parallèle ou de la sériali- des fronts d’horloge; d’où un fonctionnement non prédictible des bascules. De plus, dans ce tion et les standards de communication sation. (LVTTL, LVCmos, SSTL, PCI, LVDS…). Par Enfin, dans certains cas, la souplesse de la type de montage, le signal de sortie de la ailleurs, la famille Virtex-II offre d’adapter configuration et des signaux de contrôle de logique combinatoire sera normalement routé en impédance aussi bien les entrées que les ces blocs Ram autorise l’implantation de par des ressources d’interconnexions génésorties, sans avoir à insérer les traditionnelles fonctions logiques complexes avec une effi- rales. Le temps de propagation jusqu’à l’enrésistances d’adaptation. Résultat : un gain cacité surprenante. Pour plus d’informa- trée des bascules présentera un décalage de place important sur les circuits imprimés tions, se référer aux articles sur l’implanta- (skew) difficilement contrôlable. Ceci augtion de machines d’états en blocs Ram et mentera encore le risque de fonctionnement et une grande souplesse. sur un convolueur bidimensionnel en matrice aléatoire. Dans l’exemple illustré sur la figure Savoir tirer un bon parti des blocs 9 x 9 fonctionnant à 200 MHz (Electronique 7b, une fonction combinatoire va effectuer de Ram n°103, p.69 et n°119, p.58, et sur le site un «set» (ou un «reset») asynchrone d’une Les familles Spartan-II, Spartan-IIE et Virtex- www.mvd-fpga.com). ou plusieurs bascules. Comme dans toute E possèdent des blocs de mémoire (Ram Quelques pièges de l’asynchronisme double-port) à écriture et lecture synchrones FIGURE 7 de 4Kbits. Leur nombre va de 4 blocs pour la En a, ne pas générer une horloge à partir d’une fonction combinatoire. En b, ne pas générer matrice 2S15, à 96 blocs pour le FPGA un signal de contrôle à partir d’une fonction combinatoire. V1000E. De son côté, la série Virtex-II dispose de blocs de Ram d’une capacité de 18Kbits chacun. Ils sont entre 4 et 200 suivant COMB ? le FPGA. Chacun de ces blocs de 18Kbits est ? BUFG «accompagné» d’un multiplieur 18x18 bits signés. Chaque bloc est configurable indivi? duellement et ceci sur chacun des deux ports SET ou RESET A et B. Pour les capacités de 4Kbits, les disasynchrone a) b) positions possibles sont: 4Kx1, 2Kx2, 1Kx4, COMB ? 512x8 et 256x16. Ceux de la série Virtex-II acceptent: 16Kx1, 8Kx2, 4Kx4, 2Kx9, 1Kx18 A et 512x36. COMB B Outre l’efficacité d’implantation de fonctions C A mémoires et/ou Fifo, cette architecture perCOMB B met également la conversion automatique C et instantanée de la largeur des bus entrants et sortants. Ainsi, il est possible par exemple de recevoir (et d’envoyer) un flot de données série à 180MHz sur le port A, alors que les données seront exploitées à une fréquence moyenne de 5 MHz et 36 bits sur le Extrait du n°125 d’Electronique - Mai 2002 5 Mise en œuvre Ram Ram fonction combinatoire, le signal de quelques recommandations utiles Quelques conseils pour une conception FIGURE 8 sortie ne sera généralement pas pour une conception synchrone. Les synchrone exempt de parasites, et des remises à bascules et autres éléments séquenLe respect de ces quelques principes assure que tous les «1» intempestives sont à prévoir. cés reçoivent l’horloge précisément au éléments reçoivent les signaux nécessaires (dont l’horloge) à Afin d’éviter ces problèmes très diffimême moment, car celle-ci est disl’exact moment prévu. cilement maîtrisables par des techtribuée par un arbre spécialisé, grâce Buffer global (BUFG) niques d’implantation complexes et au buffer global, lui-même automa(automatiquement inséré coûteuses, il est important d’adopter tiquement inféré par l’outil de synpar les outils de synthèse) une méthodologie adéquate. Un dévethèse sur l’analyse du code. Le set loppement fiable doit pouvoir être (ou reset) asynchrone n’est pas utilisé reproduit de manière totalement préen cours de fonctionnement, mais dictible et indépendamment de la seulement pour l’initialisation lors technologie utilisée qui évolue tous de la mise sous tension. les jours. Il doit présenter un foncLorsque deux modules travaillant tionnement sans faille quelle que soit dans des domaines d’horloges difféla fréquence de fonctionnement, du rents échangent des données, le continu jusqu’à une fréquence limite, concepteur devra prendre les préBroche spécialisée dans toute la plage active de l’applicautions nécessaires pour s’assurer de (imposée par le concepteur cation. la validité de l’interprétation des donou librement choisie par l’outil de placement) Il se trouve que cette reproductibilité nées par l’élément récepteur. La Arbre d’horloge est particulièrement aisée à obtenir: figure 9 expose l’une des manières (automatiquement connecté en sortie du BUFG il suffit pour cela de concevoir avec de faire communiquer entre elles et garantissant un délai identique sur chacune une méthodologie synchrone. Un deux portions de circuit séquencées des destinations) développement (ou une partie de par des horloges asynchrones. Dans développement) synchrone est entiècet exemple, les échanges de donrement séquencé par une horloge. Celle-ci loges associés), de manière à garantir la simul- nées entre les deux domaines d’horloge s’efest distribuée sur des ressources spéciali- tanéité parfaite des fronts sur tous les élé- fectuent par l’intermédiaire d’une mémoire sées (buffer global ou BUFG, et arbres d’hor- ments destinataires. La figure 8 illustre Fifo. L’horloge CK2 est utilisée comme horloge Echanges de données sur deux horloges (CK1 et CK2) FIGURE 9 Dans cet exemple, l’échange des données entre les zones du circuit, contrôlées l’une par CK1 et l’autre par CK2, s’effectue par l’intermédiaire d’une mémoire Fifo. COMB CK 1 BUFG CK 2 BUFG D Q RD_CK RD ENA Fifo WR ENA WR_CK d’écriture, alors que la lecture est séquencée par CK1. Les signaux « autorisation d’écriture» (WR-ENA) et «autorisation de lecture» (RD-ENA) sont respectivement générés à partir des horloges CK2 et CK1. L’asynchronisme entre les deux horloges est absorbé dans la Fifo. Sa profondeur devra prendre en compte les différences de cadence sur chacun des deux ports. De nombreux autres cas de figure peuvent être envisagés. En tout état de cause, le passage d’informations d’un domaine d’horloge vers un autre devra faire l’objet d’une attention particulière pour assurer l’intégrité du transfert. ■ 6 Extrait du n°125 d’Electronique - Mai 2002