FPGA, premiers pas


11

Eh bien, c'est la suite de ma question sur FPGA ici .

J'ai finalement sélectionné un Digilent Atlys avec un FPGA Spartan 6, je n'ai aucune expérience préalable des FPGA même si j'ai fait un peu de travail avec des micro-contrôleurs.

J'ai passé les derniers jours à lire les fiches techniques du FPGA, et je pense que ce serait un bon choix pour commencer avec Verilog. Je n'ai pas pu trouver d'exemples de code et même les fiches techniques ne sont pas adaptées aux débutants.

Je veux faire de la programmation, de la simulation, de la synthèse maintenant et c'est ce que je veux faire

  1. Générez une fréquence impaire, disons 54 MHz à partir du FPGA (il fonctionne sur une horloge de 100 MHz) et dirigez-la vers l'une des broches. Je devrais probablement utiliser le DCM ou PLL pour cela, mais aucune idée de comment commencer ici?

  2. Implémentez une sorte d'écriture de lecture I2C à partir du FPGA.

Ce que je recherche, c'est une référence, éventuellement en ligne ou un livre qui me donne des exemples de code et une description de chacun des composants matériels disponibles à l'intérieur du FPGA, comme les DCM, les tranches, les clb, etc.

Je suppose que cela devrait me permettre de me lancer dans le monde des FPGA.

Réponses:


13

Exemples de code

Passez à OpenCores et vous trouverez des dizaines de projets open source. Il existe de nombreux écrits en Verilog et couvrent la gamme des périphériques d'E / S jusqu'aux processeurs.

N'oubliez pas non plus les nombreuses notes d'application disponibles auprès de Xilinx. Ils sont très utiles avec leurs propres appareils.

Flux de conception

Procurez-vous un livre ou deux sur le flux de conception afin d'avoir un aperçu des étapes de la conception du FPGA. En résumé, ils impliqueront:

  1. Entrée de conception - dans votre cas, Verilog.
  2. Simulation fonctionnelle - à l'aide de divers outils.
  3. Synthèse - dans votre cas, à l'aide des outils Xilinx ISE.
  4. Simulation - pour vérifier votre conception post-synthèse car certains aspects de Verilog ne sont pas synthétisables.
  5. Place & Route - à l'aide des outils Xilinx ISE.
  6. Mise en œuvre - téléchargement de la conception sur le FPGA.
  7. Essai.

Composants FPGA

Quant à l'utilisation des composants FPGA, il existe différentes manières de les utiliser. Mais en supposant que vous utilisez une entrée de conception Verilog, vous pouvez déduire ou instancier les différents composants.

L'inférence implique généralement que l'outil de synthèse sélectionne les meilleurs composants à utiliser en fonction des fonctionnalités dont vous avez besoin. Le meilleur exemple serait de concevoir un additionneur.

En faisant q <= a + bou q = a + bvous pouvez déduire un additionneur. Les deux déduiront l'additionneur mais il y a une différence lorsque vous utilisez la syntaxe bloquante / non bloquante.

L'instanciation implique généralement l'appel du composant de bibliothèque exact dans le code. Certains composants ne peuvent tout simplement pas être facilement déduits dans le code, comme le DCM. Vous pouvez utiliser les outils et exemples ISE pour en savoir plus à ce sujet.

La liste réelle des composants eux-mêmes est fournie par Xilinx dans le Guide des bibliothèques .

Protip

La meilleure façon d'apprendre cela est en fait d'expérimenter avec de courts morceaux de code et de les exécuter à travers la synthèse ISE pour voir ce qu'il crache. Il existe également de nombreux exemples dans le jeu d'outils ISE lui-même.


5

Vos références absolues seront les guides d'utilisation de Spartan 6 . Par exemple, le guide des ressources d'horloge (UG382) explique comment configurer les DCM. Pour des exemples de l'apparence du code réel, ISE en a une base de données. Ouvrez les modèles de langue (l'ampoule dans la barre d'outils), puis recherchez dans la langue (VHDL ou Verilog) -> Instanciation primitive du périphérique -> famille de puces (Spartan-6) -> Composants d'horloge.

Des détails spécifiques à votre carte sont disponibles auprès de Digilent, en particulier vous voudrez l'UCF (qui nomme tous les IO) et le manuel de référence (qui explique les circuits périphériques).

La structure générale de votre langue, y compris la façon de créer un composant, est probablement mieux reprise dans des livres et des exemples. Je n'ai pas utilisé Verilog, donc je n'ai pas de suggestions spécifiques. Pourtant, les modèles incluent également des extraits de divers mécanismes génériques.


Vous spécialisez-vous en VHDL? En ce qui concerne l'UCF, pourquoi serait-il important de travailler avec la carte Digilent?
Kevin Boyd

1
Je ne me spécialise pas en tant que tel - je n'ai pas étudié Verilog. L'UCF est le fichier qui décrit les broches auxquelles vos ports se connectent, ainsi que les demandes d'horloge. Sans cela, les broches sont assignées au hasard, ce qui ne correspondra pas à la carte existante.
Yann Vernier

J'ai compris la partie affectation des broches. Qu'en est-il des demandes de synchronisation?
Kevin Boyd

1
Les contraintes de temps couvrent des choses comme la fréquence d'horloge, les temps de configuration et de maintien. Vous obtiendrez toujours les informations dans l'analyse de synchronisation, mais la spécification des exigences dans le fichier de contraintes permet aux outils de détecter leur échec, et peut-être de faire plus d'efforts pour satisfaire vos besoins lorsqu'ils sont à la limite.
Yann Vernier

1

Pour l'horloge, vous utilisez le mégacore DLL / PLL.


Le spartiate 6 a DCM et PLL, DLL non trouvée encore. Après avoir cherché sur les forums, j'ai trouvé que le Xilinx dispose d'un outil appelé Core Generator qui peut être configuré pour générer des ressources d'horloge.
Kevin Boyd du
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.