ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων Εισαγωγή στη VHDL Υλοποίηση στο Quartus Διδάσκων: Γιώργος Ζάγγουλος Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Ατζέντα 1. Στόχοι 3 ου Εργαστηρίου 2. Η γλώσσα περιγραφής υλικού VHDL 3. Μαθησιακά Αποτελέσματα 4. Υλοποίηση σχεδιασμού στο εργαστήριο 5. Ανάλυση 3 ης εργαστηριακής άσκησης Γ.Ζ. 2
1. Στόχοι 3 ου Εργαστηρίου Με την ολοκλήρωση αυτού του εργαστηρίου, θα πρέπει: 1. Να μάθετε την γλώσσα περιγραφής υλικού VHDL και με ποιο τρόπο περιγράφουμε ένα ψηφιακό κύκλωμα με περιγραφή δομής (structural) και περιγραφή ροής δεδομένων(dataflow). 2. Να είστε σε θέση να υλοποιήσετε οποιοδήποτε συνδυαστικό κύκλωμα με χρήση VHDL στο Quartus, να μπορείτε να το προσομοιώνετε και να το κατεβάζετε στο FPGA για εξομοίωση. Γ.Ζ. 3
2. Εισαγωγή στη VHDL VHDLσημαίνει Very High Speed Hardware Description Language Περιγράφει σε υψηλό επίπεδο ψηφιακά κυκλώματα. Υποστηρίζει ευέλικτες σχεδιαστικές μεθοδολογίες, όπως top-down, bottom-up. Υποστηρίζει πολλούς διαφορετικούς τρόπους περιγραφής. Γ.Ζ. 4
Τρόποι Περιγραφής στη VHDL Δομής (Structural) Το ψηφιακό σύστημα περιγράφεται ως συνδέσεις μεταξύ διακριτών στοιχείων Ροής Δεδομένων (Dataflow) Το ψηφιακό σύστημα περιγράφεται ως ταυτόχρονες αναθέσεις τιμών σε σήματα Συμπεριφορά (Behavioral) Το ψηφιακό σύστημα περιγράφεται ως σειρά από εντολές Υβριδικός (Mixed) Χρήση πολλαπλών τρόπων περιγραφής για ένα σύστημα Γ.Ζ. 5
Βασική Ορολογία Το σύνολο της περιγραφής ενός κυκλώματος στη VHDL ονομάζεται Οντότητα (Entity) Μια οντότητα όταν περιλαμβάνεται στην περιγραφή μια άλλης οντότητας, μετονομάζεται σε component Για την περιγραφή μιας οντότητας χρειαζόμαστε Entity Declaration Εξωτερικές συνδέσεις είσοδοι/εξόδοι Architecture Body Εσωτερική περιγραφή της λογικής του κυκλώματος Γ.Ζ. 6
Entity Declaration Δήλωση Οντότητας: Οι θύρες (Ports) μπορεί να είναι inή out. Παράδειγμα: entity entity_name is Port declaration; end entity_name; entity F1 is Port (A, B: in BIT; C,D: out BIT); end F1; ΒΙΤείναι ο τύπος της θύρας. Γ.Ζ. 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) Γ.Ζ. 8
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: OR2 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: OR2 port map(a_temp,b,c); O2: OR2 port map (A,B,D); end F1_STRUCTURE; Γ.Ζ. 10
Dataflow Architecture architecture F1_DATAFLOW of F1 is begin end F1_DATAFLOW; Υλοποιούμε λογικές συναρτήσεις με not, or, and Η VHDL εκτελεί όλες τις συναρτήσεις ΤΑΥΤΟΧΡΟΝΑ Μπορούμε να χρησιμοποιήσουμε και εδώ signalsως βοηθητικές συναρτήσεις Γ.Ζ. 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 Γ.Ζ. 12
Χρήση VHDL στο Quartus II Eπιλέξτε: New Quartus II Project και μετά ΟΚ Γ.Ζ. 13
Δημιουργία υλοποίησης VHDL (VHDL File) Όπως και με τη δημιουργία του αρχείου του πρότζεκτ, επιλέξτε File και σύρετε το ποντίκι σας προς τα κάτω για να επιλέξετε VHDL File για τη δημιουργία κυκλώματος με VHDL Γ.Ζ. 14
Δημιουργία υλοποίησης VHDL (VHDL File) Για να μπορέσουμε να υλοποιήσουμε ένα σχεδιασμό σε VHDL πρέπει να ορίσουμε τις κατάλληλες βιβλιοθήκες που περιέχουν τα διακριτά στοιχεία και τις λογικές συναρτήσεις που θα χρησιμοποιήσουμε. Σε όλα τα αρχεία VDHL πρέπει να έχουμε τουλάχιστον : LIBRARY ieee ; <- Standard Βιβλιοθήκη που περιέχει όλους τους κλασσικούς ορισμούς για την VHDL USE ieee.std_logic_1164.all ; <- Κομμάτι της βιβλιοθήκης ΙΕΕΕ που περιέχει τις βασικές λογικές πράξεις και ορισμούς του IEEE 1164 standard Γ.Ζ. 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: OR2 port map(a_temp,b,c); O2: OR2 port map (A,B,D); end F1_STRUCTURE; Γ.Ζ. 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; Γ.Ζ. 17
Δήλωση Κύριας Οντότητας (Top Entity) στο Project Ένα Project στο Quartus II μπορεί να έχει πολλαπλά αρχεία VHDL. Ποιό έχει τις θύρες που θα συνδεθούν με τα pins του FPGA? Απάντηση: H Κύρια Οντότητα Top Entity! Το Quartus II θεωρεί πως το αρχείο με τη κύρια οντότητα θα έχει το όνομα του Project! Σε άλλη περίπτωση, ανοίξτε το αρχείο σας και από το μενού Project επιλέξετε Set as Top- Level Entity. Τώρα η οντότητα που περιγράφεται στο ανοικτό αρχείο είναι η κύρια! Γ.Ζ. 18
Συμβολομετάφραση και έλεγχος λαθών Γ.Ζ. 19
Κατασκευή νέου Symbol από VHDL Entity To Quartus II μας επιτρέπει να προσθέτουμε οντότητες VHDL σε ιεραρχικούς σχεδιασμούς (schematics) ως έτοιμα υποσυστήματα. Ανοίξτε το αρχείο VHDL και από το μενού File > create-update επιλέξετε create symbol files. To Quartus II θα ετοιμάσει ένα νέο σύμβολο που μπορείτε πλέον να χρησιμοποιείτε σε schematics, αφού προσθέσετε το αρχείο του συμβόλου στο project σας! Γ.Ζ. 20
3. Μαθησιακά Αποτελέσματα Με την ολοκλήρωση αυτού του εργαστηρίου θα πρέπει να μπορείτε να: Σχεδιάσετε, προσομοιώσετε και εξομοιώσετε κάποιο σχεδιασμό στο Quartusμε χρήση VHDL, καθώς και να επαληθεύσετε την ορθή του λειτουργία. Γ.Ζ. 21