6
CU_VHDL Centre d’usinage : Décodage à l’aide d’un PLD Système : Centre d’usinage Durée : 3 heures Travail individuel tp_cu_vhdl.doc/G.COLIN Centre d’intérêt : les circuits logiques programmables Outils : logiciel de simulation - PC avec serveur de fichiers . Documentation : Dossier technique du système. Compétences : Analyser un schéma structurel – Décrire une structure à l’aide du langage VHDL – Utiliser un logiciel de simulation. Consigne : Le compte rendu peut être fait sous Word, puis imprimé. Problème posé : On désire remplacer les fonctions logiques sur la carte de gestion par un PLD. A l’aide d’un logiciel de développement (Quartus) on décrit le comportement des fonctions à l’aide du langage VHDL, on simule les fonctions et on interprète les résultats obtenus. Les schémas structurels sont donnés en annexe. La fréquence d’horloge CLK du MPU 68000 est de 12MHz. Pour respecter au mieux les chronogrammes donnés dans la documentation du MC68000, on appliquera les stimuli suivants : On prendra une demi période de CLK de 40ns pour simplifier. Extrait de la documentation du MC68000 $0 $2 $3 CLK $1 $4 /AS A23 / A20

tp cu vhdl - MEDE · tp_cu_vhdl.doc/G.COLIN Centre d’intérêt : les circuits logiques programmables Outils : logiciel de simulation - PC avec serveur de fichiers . ... ⇒ Entrer

Embed Size (px)

Citation preview

CU_VHDL Centre d’usinage : Décodage à l’aide d’un PLD Système : Centre d’usinage Durée : 3 heures Travail individuel

tp_cu_vhdl.doc/G.COLIN Centre d’intérêt : les circuits logiques programmables Outils : logiciel de simulation - PC avec serveur de fichiers . Documentation : Dossier technique du système. Compétences : Analyser un schéma structurel – Décrire une structure à l’aide du langage VHDL – Utiliser un logiciel de simulation.

Consigne : Le compte rendu peut être fait sous Word, puis imprimé. Problème posé : On désire remplacer les fonctions logiques sur la carte de gestion par un PLD. A l’aide d’un logiciel de développement (Quartus) on décrit le comportement des fonctions à l’aide du langage VHDL, on simule les fonctions et on interprète les résultats obtenus. Les schémas structurels sont donnés en annexe. La fréquence d’horloge CLK du MPU 68000 est de 12MHz. Pour respecter au mieux les chronogrammes donnés dans la documentation du MC68000, on appliquera les stimuli suivants : On prendra une demi période de CLK de 40ns pour simplifier.

Extrait de la documentation du MC68000

$0 $2 $3

CLK

$1 $4

/AS

A23 / A20

1 – Génération du signal DTACK lent ⇒ Lancer le logiciel Quartus ⇒ Créer un nouveau projet :

• Create à New Projet (ou File / New Project Wizard) • Page 1/5 :

o Créer un répertoire sur le réseau : h:\travail\vhdl\cu_vhdl (1ère ligne à renseigner) o Donner un nom au projet : cu_vhdl (2ème ligne à renseigner) o Donner un nom au « top level design » : cu_vhdl (3ème ligne à renseigner) o Next

• Page 2/5 o Next (on n’ajoute pas de fichiers au projet)

• Page 3/5 o Sélectionner le composant EPM7032SLC44-5 de la famille MAX7000S o Next

• Page 4/5 o Next (None sur les 3 lignes)

• Page 5/5 o Finish

⇒ Éditer un nouveau fichier : File ⇒ New ⇒ VHDL File ⇒ OK ⇒ Copier le fichier vhdl ci_dessous . ⇒ à partir du schéma structurel, compléter la description en VHDL du comportement du signal DTACK à l’aide d’instructions booléennes. ⇒ Enregistrer le fichier sous le nom cu_vhdl.vhd (extension vhd obligatoire) dans le répertoire de travail : File ⇒ Save As – La case « Add file to current project » doit être cochée. ⇒ Compiler le programme : Processing ⇒ Compiler Tool ⇒ Start

⇒ Corriger les erreurs éventuelles – Fermer la fenêtre. ⇒ Editer les stimuli :

⇒ File ⇒ New ⇒ Vector Waveform File ⇒ OK

⇒ Cliquer sur l’icône pour détacher et agrandir la fenêtre ⇒ Définir le temps de simulation à 10µs : ⇒ Edit ⇒ End Time ⇒ entrer 10 us ⇒ Clic droit dans la colonne Name (ou Edit / Insert / Inser Node ou Bus) ⇒ Insert ⇒ Inser Node ou Bus node ⇒ Node Finder ⇒ Filter : Pins : All ⇒ List ⇒ Placer A, AS et DTACK dans la colonne Selected Nodes ( à l’aide de > ) ⇒ OK ⇒ Choisir « Radix » en binaire ⇒ OK

⇒ Sélectionner la ligne A et cliquer sur l’icône ⇒ Dans la rubrique Timing, entrer la valeur 320ns dans la rubrique « Count every ». ⇒ OK

⇒ Sélectionner la ligne AS et cliquer sur l’icône ⇒ Entrer une période de 320ns, un Offset de 80ns et un rapport cyclique de 37%. ⇒ OK ⇒ Vérifier que les chronogrammes de A et AS sont conformes aux chronogrammes donnés en début d’énoncé. ⇒ Sauvegarder le fichier : ⇒ Save As : cu_vhdl.vwf

⇒ Lancer la simulation

⇒ Processing ⇒ Simulator Toll ⇒ Simulation mode : Timing (pour prendre en compte les temps de commutation des circuits) ⇒ Cocher la case Overwrite simulation … ⇒ Start ⇒ Activer la fenêtre cu_vhdl.vwf et répondre oui à la question « do you want to reload the file… »

⇒ Vérifier le chronogramme du signal DTACK obtenu. Conclure

2 – Génération du signal RAM L’emplacement mémoire de la RAM est : 000000h à 1FFFFFh si SEL=0 et 400000h à 5FFFFFh si SEL=1. ⇒ Préciser l'état logique de /AS pour sélectionner la RAM. ⇒ Modifier la description précédente pour décrire le comportement du signal RAM à l’aide d’instructions when…else (voir la description ci-après). remarque : la notation x"7" correspond à une notation hexadécimale.(x"7" équivalent à "0111"). ⇒ Réaliser la simulation avec SEL=0 puis avec SEL=1. Remarque: - il ne faut pas fermer le logiciel de simulation

- les stimuli précédents ne sont normalement pas modifiés (répondre oui à load this interactif stimulus …)

- dans la fenêtre Wave, il faut ajouter les traces SEL et RAM

- pour fixer SEL à 1, sélectionner la ligne SEL et cliquer sur l’icône ⇒ Conclure sur les chronogrammes obtenus.

LIBRARY ieee; USE ieee.std_logic_1164.all; entity cu_vhdl is port ( AS: in std_logic; A : in std_logic_vector(23 downto 20); DTACK : out std_logic ); end cu_vhdl; architecture arch of cu_vhdl is begin DTACK <= not(…………………………………); end arch;

LIBRARY ieee; USE ieee.std_logic_1164.all; entity cu_vhdl is port ( AS,SEL: in std_logic; A : in std_logic_vector(23 downto 20); DTACK,RAM : out std_logic ); end cu_vhdl ; architecture arch of cu_vhdl is begin DTACK <= not( not(AS) and not(A(23)) ); RAM <= '0' when ( AS='0' and ( ( (A=x"0" or A=x"1") and SEL='0' ) or ( ………………………………….. ) ) ) else '1'; end arch;

3 – Génération des signaux EPROM et EEPROM ⇒ À partir du schéma structurel, donner les emplacements mémoires occupées par l'EPROM et l'EEPROM suivant le cas SELR/E=0 puis le cas SELR/E=1. Préciser l'état logique de /AS pour sélectionner les mémoires. ⇒ De la même manière qu'au paragraphe 2, modifier la description VHDL et réaliser la simulation. ⇒ Conclure sur les chronogrammes obtenus. 4 – Génération du signal Q14A On désire décrire le comportement de la bascule D du circuit IC14A. La sortie de cette bascule est appelée Q14A. Remarque : le signal RAM, précédemment déclaré en sortie, doit être déclaré maintenant en tant que buffer car il est également utilisé comme entrée. ⇒ À la description en VHDL précédente, ajouter:

• La déclaration de l'entrée CLK • La déclaration de la sortie Q14A en tant que buffer • Le comportement de la sortie Q14A en utilisant un process comme ci après:

⇒ Réaliser la simulation, en n'oubliant pas d'éditer le stimuli de l'entrée CLK, conformément aux chronogrammes donnés en début d’énoncé. ⇒ Décrire le comportement du signal Q14A à partir des chronogrammes obtenus. Conclure. 5 – Description du compteur IC15A On désire décrire le comportement du compteur IC15A. Les sorties sont appelées Q15A(0), Q15A(1) etc... ⇒ À la description en VHDL précédente, ajouter: • la librairie : USE ieee.std_logic_unsigned.all;

• la déclaration des sorties Q15A (Q15A :buffer std_logic_vector(3 downto 0)) • le comportement des sorties Q15A en utilisant un process (process(CLK,DTACK) et Q15A <= Q15A + 1)

⇒ Réaliser la simulation. Conclure sur les résultats obtenus. Remarque: le compteur ne compte ici que jusqu'à 2. En réalité le signal /AS fourni par le MC68000 est conditionné par le signal appliqué sur son entrée /DTACK. Il est difficile ici de conclure sans connaître le fonctionnement du MC68000. 5 – Description du signal DTACK_MC Le signal DTACK_MC correspond au signal appliqué sur l'entrée DTACK du MC68000 On suppose pour la suite que seul l'interrupteur branché sur la sortie QB de IC15A est fermé. ⇒ Compléter la description en VHDL du signal DTACK_MC à l'aide d'instructions booléennes et simuler. Conclure sur les résultats obtenus.

process(CL K,RAM) begin if (RAM=………) then Q14A <=………; elsif (CLK'event an d CLK=……………) then Q14A <= ……………; end if; end process;