I. Introduction

Pour commencer, voici une courte vidéo de démonstration du projet réalisé dans ce tutoriel (les fichiers sources sont fournis en annexeAnnexe : fichiers sources) :


[FPGA] [DE0-Nano] Communication série SPI avec un convertisseur A/N 12 bits - Quartus Prime Signal Tap Logic Analyzer


Un potentiomètre rotatif est connecté à un port situé sous la carte. Son curseur est relié à une entrée analogique d’un convertisseur Analogique-Numérique (A/N) soudé en surface de la carte FPGA DE0-Nano. En tournant le bouton du potentiomètre, on active les LED qui s’animent comme un bargraphe pour indiquer le niveau de tension sur l’entrée analogique.

Voilà le genre de projets sans réelles difficultés si la carte était une carte à microcontrôleur, surtout si c’était une Arduino. La programmation d’un FPGA est bien différente de celle d’un microcontrôleur, mais j’ai déjà évoqué aussi ses avantages, ici et , notamment en matière de flexibilité et de traitements parallèles. Dans le cas d’un contrôleur pour écran VGA (640x480@60Hz) par exemple, un FPGA est un excellent choix.

La vidéo montre également en arrière-plan l’écran du PC de développement avec les chronogrammes des signaux comme sur l’écran d’un analyseur logique ou d’un oscilloscope.

Pour vous familiariser avec l’environnement de développement sur FPGA tel que celui d’Intel Quartus Prime, je vous recommande de commencer avec le tutoriel Débuter avec les FPGA dans l’environnement Intel Quartus Prime.

II. La cible FPGA et le convertisseur A/N

J’ai déjà présenté le kit DE0-Nano lors d’un tutoriel précédent. La carte intègre en surface un convertisseur Analogique-Numérique 12 bits (réf : ADC128S022) à 8 entrées, en surbrillance et en bas à droite sur l’image ci-dessous.

Image non disponible
Image d’après « DE0-Nano User Manual »

La puce FPGA Cyclone IV communique avec le convertisseur A/N grâce aux quatre fils ADC_CS_N, ADC_SADDR, ADC_SDAT, et ADC_SCLK permettant d’établir une communication série compatible SPI (Serial Peripheral Interface) :