Clic droit sur le circuit et new
Ajout d'une source de type schéma, programme ou chronogramme (simulation uniquement).

Exemple pour une source schematic
Nommer le schéma.

| Pour une surface de travail plus confortable, cliquez sur cette icône.
Le curseur se transforme en Z (Zoom). - Click droit (une fois) au centre de la zone de dessin. - Click gauche pour sortir du mode Zoom. |
![]() |
Dans le projet, le schéma
apparaît avec l'extension .sch.
|
Dans le menu Add, Symbol ou F2 ou click sur l'icône
|
![]() |
| Pour l'exemple on choisit la librairie vanfunc.lib et la fonction CNT4DUDA (Compteur 4 bits Decimal Up Down A). C'est un compteur (UP)ou décompteur (DN) déclenchement sur front montant (CK) avec entrées (D0, D1, D2 & D3) de préchargement synchrone (LD) et asynchrone (CL). CO est la retenue du compteur. | ![]() |
Dans le menu Add Wire ou F3 ou click sur l'icône Add Wire
de la barre des taches de dessins on ajoute des fils de connexions.
| On reliera les entrées D0 à D3 à la masse ainsi que DN et l'entrée LD et UP à +VCC.La masse et + VCC se trouve dans la librairie Gates. | ![]() |
| Dans le menu Add Net Name ou F4 ou click sur l'icône
Add Net Name Dans la fenêtre du bas on tape le nom et return puis on le place sur la feuille par un click. |
![]() |
Dans le menu Add I/O Marker ou alt M ou click sur l'icône Add I/O Marker
de la barre des taches de dessins on place des entrées sorties.
| Une fenêtre permettant de choisir le type d'entrée sortie apparaît Choisir une sélection parmi les 4 proposés et cliquer sur le petit rectangle rouge associé au nom. Q0 à Q3 sont des sorties et CLK et RESET sont des entrées | ![]() |
Câbler les étiquettes
aux entrées sorties correspondantes.
| Le schéma final est le suivant : | ![]() |
Dans le menu Add New Block Symbol ou click sur l'icône Add
Block Symbol
de la barre des taches de schematic editor, on associe le schéma à
un symbole.
| Dans la fenêtre on clique sur Use Data From This Block (cela permet d'associer directement les entrées sorties à ce bloc) puis sur Run. | ![]() |
On peut visualiser ce nouveau composant dans la librairie
Local symbol compteur.
Dans le menu DRC Consistency Check ou click sur l'icône
Consistency
de la barre des taches de schematic editor, on vérifie les éventuelles
incohérence du schéma électrique.
Une fenêtre error report communique les erreurs.
Fermer les fenêtres de l'éditeur de schéma.
Créer un nouveau schéma (voir §3.1) appelez le transcodeur. Ajouter le composant V7449 dans la librairie vanttl.lib, puis le composant G_INV dans la librairie gates.lib.
On peut se servir des outils dupliquer
,
déplacer
et effacer
de la barre des taches de dessins, afin de réaliser un transcodeur actif
en sortie à l'état bas. Réaliser le schéma suivant
:

Créer un symbole
pour ce schéma. Le nom du symbole restera "transcodeur".
Fermer les fenêtres de l'éditeur de schéma.
Créer un nouveau schéma (voir §3.1) appelez le Principal.
Ajouter les deux composants crées depuis la librairie Local
(symbol compteur & transcodeur).
Nous allons créer une fonction puis la décrire dans un deuxième temps.
| Créer un symbole |
![]() |
Penser à
sauvegarder régulièrement
Placer le sur le schéma principal et effectuer les liaisons suivantes :
![]() |
On se servira de l'outils |
A partir de la librairie iopads.lib, placer les composants G_OUPUT et G_CLKBUFFER. Câbler le schéma suivant (ne pas oublier les noms et les entrées sorties) :

Les composants dans la librairies iopads, vont permettre de se connecter à
une des pins du composant.
Cliquer sur l'icône Edit Symbol Attribut
de la barre des taches de dessins. Une fenêtre apparaît, cliquer
sur le premier symbole
et affecter le numéro de broche souhaité (cliquer sur PinNumber
et remplacer * par celui souhaité).

Sans taper sur la touche return cliquer sur le symbole iopads suivant et affecter le numéro de broche.
Le schéma final est celui-ci :

Sur le projet ajouter une nouvelle source ABEL-HDL Module.
| Une fenêtre s'ouvre spécifier le nom du module (identique au nom du symbole crée précédemment). Spécifier le fichier (extension ABL) associé à ce module et décrire sa fonction.Pas d'accent ! | ![]() |
| Un éditeur de texte s'ouvre Taper le programme ci-contre : |
MODULE DECODEUR TITLE 'Decoder le nombre 7' Declarations "Inputs I1, I2, I3 PIN ISTYPE 'COM';" Outputs O PIN ISTYPE 'COM'; Equations O=I1 & I2 & I3 ; END DECODEUR |
Enregistrer le programme et fermer la fenêtre.
NB : on peut aussi créer le symbole à partir du fichier abel : dans la fenêtre du projet cliquer sur le fichier abel et double cliquer sur le Generate Schematic Symbol. ATTENTION SYMBOLE DEJA CREER CI-DESSUS.
Dans le projet cliquer sur principal et compiler le schéma.
On retrouve la hiérarchie du projet avec les 3 sources filles de la source
principale.
Dans le projet principal ajouter une source (voir §3.1), choisir Abel
Test vectors.
Donner un nom (diviseur.abv)
Dans l'éditeur de texte taper le programme suivant :
|
MODULE principal "Déclaration Inputs CK PIN ; " Déclaration Outputs O PIN ; [Q0..Q2 PIN]; " Equivalent à Q0, Q1, Q2 Nb=[Q0,Q1,Q2]; " Equivalence " Permet de décrire la simulation (entrées -> sorties) Test_Vectors ([CK] ->[Nb, O]) " Répète 10 fois la valeur d'entrée qui vaut une suite de 010 et calcule les 2 sorties. " La durée d'un 0 (bit) est de 100ns. @repeat 10 {[.c.]-> [.x., .x.];} END |
Enregistrer et fermer l'éditeur de texte.
Cliquer sur diviseur.abv
Dans la fenêtre Processes for a curent source du projet, double
cliquer sur compile test vector. Constater l'absence d'erreur.
Toujours dans la même fenêtre, double cliquer sur functional
simulation.
Une fenêtre " Import Source Constraints 2.0 " demande si les contraintes (affectation des numéros de broche du CPLD) relevées dans le fichier source doivent écraser celles figurant dans le fichier de contraintes par défaut. Cliquer sur [Yes].
Après le succès de la compilation une fenêtre simulator
control panel s'ouvre
Cliquer sur Run
Une fenêtre de résultats de simulation apparaît :

Interpréter les résultats obtenus
Dans le menu Edit Show cliquer sur le net que l'on veut voir. Puis cliquer sur show.
Penser
à sauvegarder régulièrement
Si l'on lance la simulation temporelle on peut constater que les sorties sont
dans un état indéterminé, en effet dans la réalité
l'état initial est inconnu.
|
Pour montrer un résultat cohérent, il faut modifier le schéma : Ouvrir Compteur.sch et modifier le composant pour obtenir le schéma ci-contre : |
![]() |
Ecraser l'ancien symbole en créant un nouveau.
Modifier le fichier principal.sch pour obtenir le schéma suivant
:
Modifier le fichier diviseur .abv de la manière suivante :
|
MODULE principal "Inputs CK PIN ; Init PIN ; "Outputs O PIN ; [Q0..Q2] PIN; Nb=[Q0,Q1,Q2]; Test_Vectors ([CK,Init] ->[Nb, O]) @repeat 2 {[.c.,0]-> [.x., .x.];} @repeat 10 {[.c.,1]-> [.x., .x.];} END |
Compiler et faire une simulation temporelle
Résultat de la compilation après un run ![]()

Résultat de simulation :

Interpréter les résultats obtenus
On peut créer un stimulus d'entrée graphiquement à la place d'un fichier de vecteur de test.
Créer un nouveau fichier (voir chap 3.1) waveform stimulus associé au composant M4 nom du fichier Div.

Cliquer sur l'icône New Wave
Ajouter les entrées CK et INIT (sélection de Input et Add), Ajouter
Les Sorties O et Q0 (sélection de Output et Add).

Fermer la fenêtre.
Sélectionner Edit Mode ![]()
| Cliquer sur CK I, amener la souris dans la partie chronogramme devant 10ns et sur l'alignement de CK I 0 cliquer, un niveau logique apparaît, sélectionner dans la fenêtre le niveau low (on peut modifier la durée). | ![]() |
Faire de même de à 20ns avec un niveau haut (automatique).
| Sélectionner l'ensemble de la période (de 0 à 20ns) (la sélection apparaît par un trait gras sous le chronogramme) et dans la fenêtre rentrer 10 dans repeat (10 périodes horloge) et 2 dans Scale (double la période). | ![]() |
Stimulis init
On sélectionne Init, durant les 2 premières périodes de
l'horloge on force à 0, le reste du temps à 1.
Le résultat graphique est le suivant :
Enregistrer et fermer la fenêtre de stimuli.
Dans le projet cliquer sur le fichier div.wdl, puis double click sur
functional simulation ensuite sur RUN dans la fenêtre de dialogue
le résultat est le suivant :
Interpréter les résultats obtenus
Même chose avec timing simulation :

Interpréter les résultats obtenus
Penser à
sauvegarder régulièrement