ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων Εισαγωγή στη VHDL Υλοποίηση στο Quartus Διδάσκοντες: Δρ. Γιώργος Ζάγγουλος και Δρ. Παναγιώτα Μ. Δημοσθένους Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Ατζέντα 1. Στόχοι 3 ου Εργαστηρίου 2. Η γλώσσα περιγραφής υλικού VHDL 3. Μαθησιακά Αποτελέσματα 4. Υλοποίηση σχεδιασμού στο εργαστήριο 5. Ανάλυση 3 ης εργαστηριακής άσκησης Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 2
1. Στόχοι 3 ου Εργαστηρίου Με την ολοκλήρωση αυτού του εργαστηρίου, θα πρέπει: 1. Να μάθετε την γλώσσα περιγραφής υλικού VHDL και με ποιο τρόπο περιγράφουμε ένα ψηφιακό κύκλωμα με περιγραφή δομής (structural) και περιγραφή ροής δεδομένων(dataflow). 2. Να είστε σε θέση να υλοποιήσετε οποιοδήποτε συνδυαστικό κύκλωμα με χρήση VHDL στο Quartus, να μπορείτε να το προσομοιώνετε και να το κατεβάζετε στο FPGA για εξομοίωση. Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 3
2. Εισαγωγή στη VHDL VHDLσημαίνει Very High Speed Hardware Description Language Περιγράφει σε υψηλό επίπεδο ψηφιακά κυκλώματα. Υποστηρίζει ευέλικτες σχεδιαστικές μεθοδολογίες, όπως top-down, bottom-up. Υποστηρίζει πολλούς διαφορετικούς τρόπους περιγραφής. Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 4
Τρόποι Περιγραφής στη VHDL Δομής (Structural) Το ψηφιακό σύστημα περιγράφεται ως συνδέσεις μεταξύ διακριτών στοιχείων Ροής Δεδομένων (Dataflow) Το ψηφιακό σύστημα περιγράφεται ως ταυτόχρονες αναθέσεις τιμών σε σήματα Συμπεριφορά (Behavioral) Το ψηφιακό σύστημα περιγράφεται ως σειρά από εντολές Υβριδικός (Mixed) Χρήση πολλαπλών τρόπων περιγραφής για ένα σύστημα Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 5
Βασική Ορολογία Το σύνολο της περιγραφής ενός κυκλώματος στη VHDL ονομάζεται Οντότητα (Entity) Μια οντότητα όταν περιλαμβάνεται στην περιγραφή μια άλλης οντότητας, μετονομάζεται σε component Για την περιγραφή μιας οντότητας χρειαζόμαστε Entity Declaration Εξωτερικές συνδέσεις είσοδοι/εξόδοι Architecture Body Εσωτερική περιγραφή της λογικής του κυκλώματος Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 6
Entity Declaration Δήλωση Οντότητας: entity entity_name is Port declaration; end entity_name; Οι θύρες (Ports) μπορεί να είναι inή out. Παράδειγμα: entity F1 is Port (A, B: in BIT; C,D: out BIT); end F1; ΒΙΤείναι ο τύπος της θύρας. Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 7
ArchitectureDeclaration Δήλωση Architecture: architecture architecture_name of entity_name is architecture_declarative_part; begin Statements; end architecture_name; Κάθε Architecture πρέπει να ανήκει σε μια οντότητα Δήλωση βοηθητικών σημάτων πριν το begin Τα <statements> μπορεί να είναι γραμμένα σε οποιοδήποτε τρόπο περιγραφής (Structural, Dataflow, Behavioral, Mixed) Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 8
Structural Architecture Σεπτέμβριος 16 architecture F1_STRUCTURE of F1 is component AND2 port (X,Y: in BIT; Z: out BIT); end component; component OR2 port (L,M: in BIT; N: out BIT); end component; signal a_temp: BIT; begin A1: AND2 port map(a,b,a_temp); O1: AND2 port map(a_temp,b,c); O2: OR2 port map (A,B,D); end F1_STRUCTURE; Δηλώνουμε τις οντότητες των διακριτών στοιχείων ως components Δηλώνουμε με ποιο τρόπο συνδέονται μεταξύ τους και με τις θύρες της οντότητας Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 9
Structural Architecture architecture F1_STRUCTURE of F1 is component AND2 port (X,Y: in BIT; Z: out BIT); end component; component OR2 port (L,M: in BIT; N: out BIT); end component; signal a_temp: BIT; begin A1: AND2 port map(a,b,a_temp); O1: AND2 port map(a_temp,b,c); O2: OR2 port map (A,B,D); end F1_STRUCTURE; Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 10
Dataflow Architecture architecture F1_DATAFLOW of F1 is begin end F1_DATAFLOW; Υλοποιούμε λογικές συναρτήσεις με not, or, and Η VHDL εκτελεί όλες τις συναρτήσεις ΤΑΥΤΟΧΡΟΝΑ Μπορούμε να χρησιμοποιήσουμε και εδώ signalsως βοηθητικές συναρτήσεις Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 11
Dataflow Architecture architecture F1_DATAFLOW of F1 is begin C <= (Α and B) or B; D <= A or B; end F1_DATAFLOW; C(A,B) = AB + B D(A,B) = A + B Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 12
Χρήση VHDL στο Quartus II Eπιλέξτε: New Quartus II Project και μετά ΟΚ Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 13
Δημιουργία υλοποίησης VHDL (VHDL File) Όπως και με τη δημιουργία του αρχείου του πρότζεκτ, επιλέξτε File και σύρετε το ποντίκι σας προς τα κάτω για να επιλέξετε VHDL File για τη δημιουργία κυκλώματος με VHDL Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 14
Δημιουργία υλοποίησης VHDL (VHDL File) Για να μπορέσουμε να υλοποιήσουμε ένα σχεδιασμό σε VHDL πρέπει να ορίσουμε τις κατάλληλες βιβλιοθήκες που περιέχουν τα διακριτά στοιχεία και τις λογικές συναρτήσεις που θα χρησιμοποιήσουμε. Σε όλα τα αρχεία VDHL πρέπει να έχουμε τουλάχιστον : LIBRARY ieee ; <- Standard Βιβλιοθήκη που περιέχει όλους τους κλασσικούς ορισμούς για την VHDL USE ieee.std_logic_1164.all ; <- Κομμάτι της βιβλιοθήκης ΙΕΕΕ που περιέχει τις βασικές λογικές πράξεις και ορισμούς του IEEE 1164 standard Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 15
Δημιουργία υλοποίησης VHDL (VHDL File) Το πλήρες αρχείο VHDL για το παράδειγμα structural design στο περιβάλλον Quartus II: Σημαντικό: Προσέξτε να βάζετε δεσμευμένες λέξεις που μπορεί να υπάρχουν στα components σας σε \ \ Την πλήρη λίστα με τα primitive components, αλλά και τα ports τους μπορείτε να τα βρείτε από το Insert New Symbol wizard σε ένα schematic file του Quartus! library ieee; use ieee.std_logic_1164.all; entity F1 is Port (A, B: in BIT; C,D: out BIT); end F1; architecture F1_STRUCTURE of F1 is component AND2 port (IN1,IN2: in BIT; \OUT\: out BIT); end component; component OR2 port (IN1,IN2: in BIT; \OUT\: out BIT); end component; signal a_temp: BIT; begin A1: AND2 port map(a,b,a_temp); O1: AND2 port map(a_temp,b,c); O2: OR2 port map (A,B,D); end F1_STRUCTURE; Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 16
Δημιουργία υλοποίησης VHDL (VHDL File) Το πλήρες αρχείο VHDL για το παράδειγμα dataflow στο περιβάλλον Quartus II: Σημαντικό: Προσέξτε τις παρενθέσεις για τις λογικές πράξεις! library ieee; use ieee.std_logic_1164.all; entity F1 is Port (A, B: in BIT; C,D: out BIT); end F1; architecture F1_DATAFLOW of F1 is begin C <= (Α and B) or B; D <= A or B; end F1_DATAFLOW; Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 17
Δήλωση Κύριας Οντότητας (Top Entity) στο Project Ένα Project στο Quartus II μπορεί να έχει πολλαπλά αρχεία VHDL. Ποιό έχει τις θύρες που θα συνδεθούν με τα pins του FPGA? Απάντηση: H Κύρια Οντότητα Top Entity! Το Quartus II θεωρεί πως το αρχείο με τη κύρια οντότητα θα έχει το όνομα του Project! Σε άλλη περίπτωση, ανοίξτε το αρχείο σας και από το μενού Project επιλέξετε Set as Top- Level Entity. Τώρα η οντότητα που περιγράφεται στο ανοικτό αρχείο είναι η κύρια! Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 18
Συμβολομετάφραση και έλεγχος λαθών Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 19
Κατασκευή νέου Symbol από VHDL Entity To Quartus II μας επιτρέπει να προσθέτουμε οντότητες VHDL σε ιεραρχικούς σχεδιασμούς (schematics) ως έτοιμα υποσυστήματα. Ανοίξτε το αρχείο VHDL και από το μενού File > create-update επιλέξετε create symbol files. To Quartus II θα ετοιμάσει ένα νέο σύμβολο που μπορείτε πλέον να χρησιμοποιείτε σε schematics, αφού προσθέσετε το αρχείο του συμβόλου στο project σας! Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 20
3. Μαθησιακά Αποτελέσματα Με την ολοκλήρωση αυτού του εργαστηρίου θα πρέπει να μπορείτε να: Σχεδιάσετε, προσομοιώσετε και εξομοιώσετε κάποιο σχεδιασμό στο Quartusμε χρήση VHDL, καθώς και να επαληθεύσετε την ορθή του λειτουργία. Σεπτέμβριος 16 Εργαστήριο Ψηφιακών Συστημάτων Γ.Ζ. & Π.Δ. - 21