Ressources pour FPGA

Les cartes disponibles à l'ENSIL


Des resources à consulter


Des accompagnements des TP


Quelques templates

A project template for a circuit with PicoBlaze (KCPSM6)

Un template pour écrire un process synchrone

process(clk)
begin
    if clk'event and clk='1' then
        
    end if;
end process;
  

Un template pour écrire un process pour créer un signal "clock enable"

process(clk)
begin
    if clk'event and clk='1' then
        cmp <= cmp + 1;
        en <= '0';
        if cmp = rapport-1 then
            cmp <= 0;
            en <= '1';
        end if;
    end if;
end process;

Des exemples de code

Cliquer sur chaque titre pour découvrir les détails !

Afficheurs sept-segments

Ce programme sert à afficher sur les 7-segments une valeur donnée sur 4 digits en hexa. Les entrées sont donc un std_logic_vector de taille 4*4=16, une horloge et un signal "enable" pour balayer les segments. Les sorties sont un bus de taille 7 à connecter sur les 7-segments et un bus de taille 4 pour sélectionner chacun des 7-segments (bus AN).

Clavier PS2

Ce programme synthétise l'interface clavier. Les entrées sont les broches horloge et data du clavier, plus une horloge dont la fréquence est celle de la carte spartan 3: 50 MHz. Les sorties sont le scan-code et le signal strobe. Le scan-code est à sauvegarder sur le front descendant de strobe. Les broches à mettre dans le fichier UCF pour la carte S3 sont aussi données en commentaire.

Un test benche pour tester l'interface clavier. testbench

Un circuit pour tester le clavier et afficher le code scan: test_clavier.bit

Interface avec le module PmodI2S Digital to Analog converter (réalisant le bus I2S)

Ce programme permet de créer deux signaux analogiques, un signal dent de scie et un signal sinusoïdal. Ces signaux sont transformés en analogique par le module Pmod-I2S. L’interface (Pmodi2s.vhd) fournit un signal strb qui donne le rythme d’échantillonnage au programme principal. Dans cette démonstration, j’ai utilisé une fréquence d’échantillonnage de 48 kHz, qui donne une fréquence de dent-de-scie de 187Hz, et un sinus de 1.6 kHz.
Pour rappel, la carte Pmod-i2s contient le convertisseur numérique/Analogique audio (Cirrus Logic CS4344 Stereo D/A).

Interface avec PMOD DA2 (12-bit digital to analog)

Ce petit programme permet de dialoguer facilement avec la carte PMOD DA2 contenant le TI DAC 121S101. Voici le programme main qui appelle ce component.

Interface avec PMOD I2S2 (24-bit D/A et A/D)

You can find here two interfaces, one for the A/D (CSS5343) and another one for D/A (CS4344). I used the Basys 3 board with a 100 MHz clock, in the salve mode (note the position of the jumper on the board). The sampling frequency that I fixed is 97.65625 kHz.
The main program uses the both of them to creat a in_out program. You can inject a stereo signal using line-in with your smart phone and put a head-phone to the line-out to hear the sound.
Interface for A/D (CS5343)
Interface for D/A (CS4344)
main prgram
XDC file (the pmod board is connected to JB)

Dé électronique

Ce programme réalise deux dés ce qui peut être utile quand vous jouez au backgammon avec des tricheurs : ils lancent les dés de tel sorte que les numéros obtenus sont par pairs (2 et 2, 6 et 6, etc). Un ami, Fateh, était un de ces gens qui m'a finalement obligé de crée ce petit circuit. Le fichier .bit est compatible avec la carte nexys3 et le bouton central est utilisé pour lancer les dés.

Le jeux vidéo "two cars"

Nabil Chadli et Anas Mabrouk ont créé en 2016 un jeu qui s'appelle TwoCars dans le cadre de leur projet de deuxième année. Les codes donnés ici sont en pur VHDL, donc portables sur n'importe quelle plateforme. Cependant le fichier .ucf et .bit ont été donnés pour la carte nexys3. Amusez-vous

Interface de l'écran VGA

Ce programme synthétise l'interface écran. L'entrée est l'horloge de la carte spartan3 à 50 MHz. Les sorties sont les suivantes

Interface Port série (émetteur)

Ce programme permet d'envoyer des caractères ascii sur le port série du PC.

Interface Port série (recepteur)

Ce programme est l'interface sérielle pour connecter un PC à la carte spartan3. Les caractères ASCII envoyé par le PC sont récupérés et parallélisés par l'interface. La sortie de l'interface est à prendre sur le front montant de l(horloge et quand le signal STRB est à 1.
Un projet complet de test est à trouver ici. Un programme appelé "hercules" peut être téléchargé ici: "http://www.hw-group.com/products/hercules/index_en.html"

Affichage des caractères reçus sur les afficheurs 7-SEG

Un petit programme pour afficher les deux derniers caractères reçu sur les deux 7-SEG de la carte.

Jeu vidéo Ping-Pong

Un projet en deuxième année par Vernisse et Zhang, and thanks to Hamid Meghdadi: Ping pong pour spartan 3. Le fichier .bit a charger dans le FPGA: cliquer ici

Vous pouvez téléchargér les fichiers sources, mais aussi le fichier .bit téléchargeable sur la carte nexys3.

Interface PMOD A/D1 par Digilent

Ce programme permet d'échantillonner deux signaux analogiques appliqués au module PMOD AD1. Il retourne deux sorties numériques chacun sur 12 bits. La sortie est valide sur le coup de STRB.
Ceci est un programme principale pour le testet avec son fichier ucf.


Gestion port Serie en C++

Code C pour envoyer et recevoir sur le port série


Problem with ISE and windows 10: the environment disapears !

solution 1:
use the 32 bits version of ISE. However, you must use the version 64 bits for simulation ! So, not a good solution !

solution 2:

1. Navigate to the following ISE install directory: <install_path>\Xilinx\14.7\ISE_DS\ISE\lib\nt64\

2. Rename the file "libPortability.dll" to "libPortability.dll.orig".

3. Copy the "libPortabilityNOSH.dll" file to the same folder, and rename it to "libPortability.dll".

4. Repeat steps 1-3 in the following folder: <install_path>\Xilinx\14.7\ISE_DS\common\lib\nt64\

The above steps substitute the original "libPortability.dll" with a "libPortability.dll" file that has SmartHeap disabled, the NOSmartHeap (NOSH) version.

This does not negatively impact the operation of the tools, and should successfully work around the ISE 14.7 crash documented above.

PlanAhead

1. Right click the PlanAhead shortcut from either the desktop or the start menu.

2. Select "Properties".

3. Modify the "Target" field of the "Shortcut" tab by adding a "-m32" flag at the end of the line per the screenshot below.


Problem with Vivado and windows 10 when you want to use JTAG_loader; Some dll cannot be found

You should add two environment variables to your windows.

1. Add to the environment variable "PATH", the path where you have the corresponding dll files. On my PC it is in C:\NIFPGA\programs\Xilinx14_7\ISE\lib\nt64

2. Create and initialize the "XILINX" environment variable to the directory where the Vivado executable files are saved. On my PC it was: C:\Xilinx\Vivado\2019.1\ids_lite\ISE

Note : A small internet research shows you how to add the PATH and how to create the variable XILINX.


Création d'un test-bench à partir de l'entité

Put your entity here:





Here is the result: