Les cartes disponibles à l'ENSIL
- Carte XUP Virtex Pro (carte utilisée uniquement en projet étudiant)
- Carte Spartan III de Digilent (carte utilisée en TP jusqu'en 2013)
- Carte Nexys 3 (carte utilisée en TP jusqu'en 2018)
- Carte XUP Virtex 5 de Digilent (carte utilisée uniquement en projet étudiant)
- Carte Basys 3 (la carte utilisée actuellement)
Des resources à consulter
- Comment integrer un component dans votre programme
- Comment simuler un programme VHDL
- Une bonne référence sur le cours de VHDL (en anglais)
- Un article sur l'optimisation vitesse-surface
- Un exemple pour la lacture de fichier et faire un test bench
- Un exemple pour créer une interruption avec MicroBlaze.
Des accompagnements des TP
- PicoBlaze (KCPSM6)
- Oscillateur sinusoïdal utilisant un système discret numérique
- Fichier source contenant l'oscillateur sinusoïdal
- Oscillateur sinusoïdal utilisant un LUT (Look Up Table)
- Fichier de 256 échantillons d'un signal à initialiser dans une ROM.
- Les fonctions de conversion de type
- Le tableau des codes ASCII
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 !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)
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.
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
- Deux sorties de synchronisation horizontale et verticale (VS, HS)
- Deux sorties X et Y qui sont les coordonnées du pixel courant
- Sortie VIDEO_EN qui est active quand le pixel courant est dans le cadre de l'image VGA (640*480)
- Broches correspondant aux signaux VS, VH et MCLK sont données en commentaire dans le fichier.
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.
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: