PE1 Parousiasi Vasikwn Ergaleiwn Sxediasis - ellak-monades-aristeias/HDL-HELP GitHub Wiki


title: ΠΕ1 – «Παρουσίαση βασικών εργαλείων σχεδίασης»

 

Εισαγωγή στη VHDL

Το ακρωνύμιο VHDL προέρχεται από το ακρωνύμιο VHSIC HDL που εμπεριέχει τις λέξεις Very High-Speed Integrated Circuit Hardware Description Language και σημαίνει γλώσσα περιγραφής υλικού ολοκληρωμένων κυκλωμάτων πολύ υψηλής ταχύτητας. Η VHDL είναι μια από τις γλώσσες περιγραφής υλικού που χρησιμοποιείται για να διαμορφώσει ένα ψηφιακό κύκλωμα δηλώνοντας τη ροή των δεδομένων μέσα από αυτό, τόσο σε επίπεδο συμπεριφοράς και αλληλεπίδρασης όσο και σε επίπεδο διάρθρωσης των υποκυκλωμάτων του. Η γλώσσα αυτή εισήχθη για πρώτη φορά το 1981 από το Υπουργείο Άμυνας της Αμερικής ως στρατιωτικό project. Το 1983, οι εταιρίες IBM, Texas Instruments και Intermetrics άρχισαν να αναπτύσσουν τη γλώσσα για εμπορικές εφαρμογές, το 1985 κυκλοφόρησε η έκδοση VHDL 7.2 και το 1987 η IEEE τυποποίησε τη γλώσσα.

Η βασική ιδέα πίσω από την περιγραφή κυκλωμάτων με VHDL είναι η μεταφορά των φυσικών καλωδίων και υποκυκλωμάτων που βρίσκονται στο εσωτερικό οπουδήποτε ολοκληρωμένου, σε μορφή συνθηκών ελέγχου και μεταβλητών που συναντώνται σε ένα πρόγραμμα λογισμικού. Η VHDL χρησιμοποιείται για το σχεδιασμό, την επαλήθευση και τη σύνθεση μεγάλων ψηφιακών σχεδίων. Αυτό είναι από τα βασικά πλεονεκτήματα της VHDL, καθώς ο ίδιος κώδικας μπορεί να επιτύχει τους τρεις αυτούς σκοπούς, με αποτέλεσμα την εξοικονόμηση προσπάθειας και χρόνου.

Η δομή της VHDL περιέχει επίπεδα οργάνωσης του κώδικα από υψηλότερα σε χαμηλότερα ανάλογα με το τι περιγράφουν και πως χρησιμοποιούνται. Έτσι σε πρώτο επίπεδο βρίσκεται η δήλωση μια οντότητας “Entity” που στην ουσία μεταφράζεται με την απεικόνιση του εξωτερικού κυκλώματος θεωρώντας το ως μαύρο κουτί χωρίς πληροφορίες για την εσωτερική δομή του και με μόνο γνωστό στοιχείο τα κανάλια εισόδου και εξόδου από αυτό. Έστω ότι θέλουμε να σχεδιάσουμε ένα κύκλωμα αθροιστή που θα προσθέτει δύο δυαδικά ψηφία. Στην αρχική δήλωση της οντότητας “example” θα πρέπει να δηλώσουμε ότι θέλουμε ένα κύκλωμα με 2 εισόδους (ψηφίο Α, ψηφίο Β) και δύο εξόδους (το αποτέλεσμα της πρόσθεσης S και το κρατούμενο C, αν υπάρχει).

entity example is
    port(A, B : in std_logic;
         S, C : out std_logic);
end example;

Που αντιστοιχεί στο παρκάτω σχέδιο κυκλώματος:

Με τον χαρακτηρισμό “in” τα σήματα Α και Β δηλώνονται ως σήματα εισόδου ενώ αντίστοιχα τα σήματα S και C δηλώνονται με τον χαρακτηρισμό “out” ως σήματα εξόδου. Πρακτικά το κύκλωμα αναμένει την πληροφορία από δύο πηγές δεδομένων, για να εκτελέσει μια κάποιας μορφής επεξεργασία σε αυτά και να παρέχει στην έξοδό του την πληροφορία από το αποτέλεσμα της επεξεργασίας του σε δύο άλλες πηγές δεδομένων. Αξίζει να σημειωθεί ότι σε αυτή τη μορφή το μόνο που έχουμε κάνει είναι να δηλώσουμε ένα κύκλωμα με εισόδους και εξόδους. Έτσι, με την χρήση της VHDL, τα κανάλια δεδομένων του κυκλώματος αντιστοιχήθηκαν σε μεταβλητές στις οποίες για παράδειγμα, όπως θα δούμε στη συνέχεια, μπορούμε να ορίσουμε την εκτέλεση πράξεων.

Για να προσδιοριστεί η συμπεριφορά επεξεργασίας του κυκλώματος θα πρέπει να πάμε ένα επίπεδο παρακάτω και να δηλώσουμε το εσωτερικό επίπεδο του κυκλώματος με την αρχιτεκτονική του. Εμπλουτίζοντας τον κώδικα παραπάνω έχουμε:

entity example is
    port(A, B : in std_logic;
         S, C : out std_logic);
end example;

architecture bhv of example is
begin

    S <= A + B;
    C <= A and B;

end;

που πλέον αντιστοιχεί στο παρκάτω σχέδιο κυκλώματος:

Έχοντας δηλώσει και την αρχιτεκτονική (“architecture”) της οντότητας (“entity”) το κύκλωμα είναι έτοιμο για να λειτουργήσει ως ένας δυαδικός αθροιστής των τιμών Α και Β. Με κόκκινο χρώμα τονίζονται οι δεσμευμένες από την VHDL λέξεις για την περιγραφή της οντότητας και της αρχιτεκτονικής του κυκλώματος. Οι μεταβλητές Α, Β, S, C αντιστοιχούν στα κανάλια εισόδου-εξόδου, ενώ με το σύμβολο “<=” γίνεται η αντιστοίχιση μιας επεξεργασίας (π.χ. εδώ η πρόσθεση) ή απλής μεταφοράς δεδομένων σε ένα άλλο κανάλι-μεταβλητή.

Δήλωση μιας Process

Ένα από τα πλέον σημαντικά στοιχεία στη VHDL είναι η δήλωση μιας process. Μια process μπορεί να περιέχει ένα σύνολο από αναθέσεις σημάτων, εκτελέσεις πράξεων, ακολουθιακή λογική, δήλωση καταχωρητών, κλπ. Χρησιμοποιώντας τον κώδικα από το προηγούμενο παράδειγμα, η δομή μιας process στην απλούστερη μορφή της φαίνεται παρακάτω:

entity example is
    port(A, B : in std_logic;
         S, C : out std_logic);
end example;

architecture bhv of example is
begin
    
    process(Α, Β) –- sensitivity list
    begin
        S <= A + B;
        C <= A and B;
    end process;

end;

Η εκτέλεση των εντολών στο εσωτερικό της process γίνεται ακολουθιακά από την αρχή προς το τέλος. Η δήλωση της λίστας ευαισθησίας (sensitivity list) της process είναι αυτή που καθορίζει πότε θα ξεκινήσει η εκτέλεση των εντολών στο εσωτερικό της. Κάθε φορά που ένα από τα σήματα της λίστας αλλάζει κατάσταση, ξεκινάει αυτόματα η εκτέλεση των εντολών. Αν μια οντότητα (entity) περιέχει πολλαπλές processes τότε αυτές εκτελούνται ταυτόχρονα ανάλογα με την ενεργοποίηση των σημάτων της λίστας ευαισθησίας (sensitivity list). Ως πρόταση καλής πρακτικής η process μπορεί να θεωρηθεί ως ο βασικός λίθος για την περιγραφή ενός κυκλώματος, με κάθε process να περιέχει ένα μικρό τμήμα του και να επικοινωνεί με τις υπόλοιπες για την σχεδίασή του βήμα προς βήμα.

Δήλωση σημάτων

Σε πιο σύνθετα κυκλώματα παρουσιάζεται η ανάγκη να χρησιμοποιηθούν επιπλέον εσωτερικά σήματα καλωδίωσης για την ένωση υποκυκλωμάτων. Για τη δήλωση αυτή θα πρέπει να χρησιμοποιηθεί η παρακάτω σύνταξη:

signal signal_name : signal_type; (π.χ. signal sum1 : std_logic;)

πριν την έναρξη της περιγραφής της αρχιτεκτονικής της οντότητας:

entity example is
    port(A, B : in std_logic;
         S, C : out std_logic);
end example;

architecture bhv of example is

    signal sum1 : std_logic;

begin

    process(Α, Β)
    begin
        sum1 <= A + B;
        C <= A and B;
    end process;
    
    S <= sum1;

end;

Το κύκλωμα έχει πλέον την παρακάτω σχηματική αναπαράσταση:

Δημιουργία καταχωρητών

Το επόμενο βασικό στοιχείο για τον σχεδιασμό κυκλωμάτων είναι η δήλωση καταχωρητών ώστε να αποθηκεύεται προσωρινά πληροφορία και να μπορούμε να χωρίζουμε μεγάλα συνδυαστικά μονοπάτια του κυκλώματος σε διαδοχικά βήματα εκτέλεσης για να επιτυγχάνονται υψηλότερες συχνότητες λειτουργίες. Για τη χρήση των καταχωρητών εντάσσεται πλέον η έννοια του ρολογιού (clock, clk) στο κύκλωμα. Σε κάθε ακμή του ρολογιού τα πεδία των καταχωρητών ενημερώνονται με μία καινούρια τιμή ‘0’ ή ‘1’ ή διατηρούν την παλιά τους, ανάλογα με τη συνθήκη ελέγχου που δηλώνει ο προγραμματιστής.

Η δήλωση ενός καταχωρητή μπορεί να γίνει εύκολα με την ακόλουθη σύνταξη μιας process:

process(clk)
begin
    if rising_edge(clk) then
        sum1 <= A + B;
    end if;
end process;

Να σημειωθεί ότι για την δήλωση του καταχωρητή το μόνο σήμα που πρέπει να προκαλεί την εκτέλεση της process είναι η αλλαγή του ρολογιού (clk). Για αυτό το λόγο, η λίστα μεταβλητών περιέχει μόνο το σήμα “clk” και ότι τα “A” ή “B” όπως προηγουμένως. Το “if” χρησιμοποιείται όπως και στις υπόλοιπες γλώσσες προγραμματισμού λογισμικού για να δηλώσει την ύπαρξη μιας συνθήκης που πρέπει να πληρείται για να εκτελεστεί το σετ εντολών στο εσωτερικό της. Αντίθετα με το προγραμματισμό λογισμικού όμως, η συνθήκη δεν δηλώνει μεταφορά της εκτέλεσης του κώδικα σε άλλο σημείο, αλλά όπως και όλα τα υπόλοιπα στη VHDL, τη δημιουργία ενός κυκλωματικού στοιχείου. Το στοιχείο αυτό είναι ο πολυπλέκτης. Με τη δεσμευμένη λέξη “rising_edge” δηλώνεται η ανίχνευση της θετικής μετάβασης του σήματος του ρολογιού από τη λογική τιμή ‘0’ στη λογική τιμή ‘1’, ως απαραίτητη προϋπόθεση για την αποθήκευση του αθροίσματος Α+Β στο εσωτερικό του καταχωρητή. Άρα σε κάθε νέο χτύπο του ρολογιού η τιμή του νέου αθροίσματος μεταφέρεται στον καταχωρητή αντικαθιστώντας την προηγούμενη.

Ο κώδικα στην νέα του μορφή γίνεται:

entity example is
    port(A, B, clk : in std_logic; -- προστέθηκε το επιπλέον σήμα clk
         S, C : out std_logic);
end example;

architecture bhv of example is

    signal sum1 : std_logic; -- εσωτερικά σήματα εισόδου-εξόδου τιμών
    signal sum2 : std_logic; -- στον καταχωρητη

begin

    process(Α, Β)
    begin
        sum1 <= A + B;
        C <= A and B;
    end process;

    process(clk)
    begin
        if rising_edge(clk) then
            sum2 <= sum1;
        end if;
    end process;

    S <= sum2;

end;

που αντιστοιχεί σχηματικά σε:

Οι δύο processes εκτελούνται ανεξάρτητα ανάλογα με τις συνθήκες ενεργοποίησής τους. Ωστόσο, επειδή το αποτέλεσμα της πρώτης θα μεταφερθεί στην είσοδο της δεύτερης θα πρέπει να συνυπολογιστεί η καθυστέρηση στη διάδοση της τιμής. Αυτό γίνεται αυτόματα από το Quartus καθώς αναλύεται το προτεινόμενο σχέδιο (βλ. ενότητα «Γνωριμία με το Quartus II»).

Τελεστές

Στον Πίνακα 1 δίνονται οι τελεστές που υποστηρίζονται από την VHDL και το Quartus για τη σύνθεση κυκλωμάτων.

Πίνακας 1. Οι υποστηριζόμενοι τελεστές VHDL.

Τύπος / Σύμβολο Παράδειγμα Περιγραφή
! !a one’s complement
&& a && b Logical AND
|| a || b Logical OR
NOT NOT a Bitwise invert
AND a[3..1] AND b[5..3] Bitwise AND
NAND a[3..1] NAND b[5..3] Bitwise NAND
OR a[3..1] OR b[5..3] Bitwise OR
XOR a[3..1] XOR b[5..3] Bitwise exclusive OR
NOR a[3..1] NOR b[5..3] Bitwise OR inverter
XNOR a[3..1] XNOR b[5..3] exclusive NOR
+ a + b addition
- a - b  subtraction 
* a * b Multiplication
< a < b   less than
<= a <= b  less than or equal to 
> a > b greater than
>= a >= b greater than or equal to 
= a = b  equal to 
/= a /= b not equal to

Λήψη και εγκατάσταση απαραίτητων εργαλείων

Οι κυριότεροι κατασκευαστές στο χώρο των FPGAs είναι η Altera (www.altera.com) και η Xilinx (www.xilinx.com), με αθροιστικό μερίδιο αγοράς πάνω από 90%. Σε αυτό το έργο όλα τα παραδείγματα σχεδιασμού θα στοχεύσουν πλακέτες της Altera και συνεπώς, όλο το κομμάτι του προγραμματισμού, προσομοίωσης και ελέγχου θα γίνει χρησιμοποιώντας τα αντίστοιχα EDA εργαλεία της ίδιας εταιρίας. Με δεδομένο ότι ο βασικός στόχος είναι η εξοικείωση του χρήστη με τη γλώσσα περιγραφής υλικού (Hardware Description Language, HDL), που είναι ανεξάρτητη του περιβάλλοντος σχεδίασης, ενδεχόμενα οφέλη που θα μπορούσαν να προκύψουν από σχεδιαστικές επιλογές σχετικές με την δομή, τους διαθέσιμους πόρους και τις ιδιαιτερότητες του κάθε μοντέλου FPGA δεν αποτελούν αντικείμενο μελέτης εδώ. Εξάλλου αυτό είναι κάτι που ο προγραμματιστής κερδίζει και με την εμπειρία που αποκτά μέσα από την σχεδίαση ψηφιακών κυκλωμάτων προσαρμοσμένα σε FPGAs.

Το πιο σημαντικό εργαλείο σχεδίασης ψηφιακών κυκλωμάτων για συστήματα FPGA της Altera είναι το Quartus II. Το συγκεκριμένο λογισμικό αποτελεί ένα ολοκληρωμένο πακέτο υποβοηθητικών εργαλείων που αναλαμβάνει να μετατρέψει τον πηγαίο κώδικα του κυκλώματος σε μορφή αναγνωρίσιμη για τον προγραμματισμό της FPGA, να ελέγξει την ορθότητα του κώδικα (κυρίως συντακτικά αλλά και με ποιοτικές επισημάνσεις λαθών), να ρυθμίσει τα κανάλια επικοινωνίας της FPGA με τα διάφορα περιφερειακά της, να ελέγξει αν τηρούνται οι χρονικοί περιορισμοί ώστε να είναι συνθέσιμο το κύκλωμα και να μπορεί να τρέχει σωστά, και πολλά άλλα που δεν θα απασχολήσουν τον χρήστη σε αρχικό επίπεδο.

Η Altera παρέχει δωρεάν πλήρως λειτουργική έκδοση του Quartus II (Web Edition) που μπορεί κανείς να κατεβάσει από τον παρακάτω σύνδεσμο:

https://www.altera.com/downloads/download-center.html#tabs-2

Για την λήψη του λογισμικού απαιτείται η ολοκλήρωση ηλεκτρονικής εγγραφής και εισόδου με το αντίστοιχο username & password στην ιστοσελίδα της Altera.

Προσοχή! Η έκδοση Quartus II (π.χ. v13, v14, v15) δεν δηλώνει απλώς την χρονολογική σειρά νεότερων εκδόσεων της εταιρίας, με τις διαθέσιμες αναβαθμίσεις λογισμικού, αλλά και την υποστήριξη των μοντέλων FPGA. Κατά κανόνα νεότερες εκδόσεις δεν υποστηρίζουν παλαιότερα μοντέλα, αλλά δυστυχώς και νεότερα μοντέλα της υψηλής σειράς προδιαγραφών της εταιρίας δεν υποστηρίζονται από τη δωρεάν έκδοση του Quartus II. Προτείνεται η αναζήτηση με βάση το μοντέλο FPGA που είναι διαθέσιμο (επιλογή «Select By Device») ώστε να αποφεύγονται ασυμβατότητες (π.χ. σειρά Cyclone IV E).

Η συμβατότητα των μοντέλων δίνεται και στον παρακάτω σύνδεσμο:

https://www.altera.com/en\_US/pdfs/literature/rn/rn\_qts\_dev\_support.pdf

Για την εγκατάσταση του λογισμικού εκτελείτε το αρχείο SETUP μόλις ολοκληρωθεί η λήψη, ακολουθώντας τα βήματα του οδηγού εγκατάστασης. Το εργαλείο ModelSim-Altera που εμπεριέχεται στην επιλογή λήψης “Combined Files” χρησιμοποιείται για την προσομοίωση της λειτουργίας του κυκλώματος και δεν θα χρησιμοποιηθεί καθώς είναι εκτός των απαιτήσεων του συγκεκριμένου εκπαιδευτικού σεναρίου.

Για περισσότερες πληροφορίες και απαντήσεις σε συχνές ερωτήσεις σχετικά με την λήψη και εγκατάσταση:

https://www.altera.com/support/support-resources/download/faq/dnl-v150-download-installation-faq.html

http://dl.altera.com/static/quick_start_guide/quick_start_guide_en.pdf

Γνωριμία με το Quartus II

Το ακόλουθο εδάφιο έχει βασιστεί στην έκδοση v12.0 του Quartus ΙΙ η οποία έχει εγκατασταθεί σε λειτουργικό Windows 7. Για πιθανές αλλαγές/αποκλίσεις των παρουσιασθέντων σε νεότερες εκδόσεις ή άλλα λειτουργικά συστήματα, οι χρήστες προτρέπονται να απευθυνθούν στα αντίστοιχα εγχειρίδια χρήσης του κατασκευαστή.

Αυτή η ενότητα αποτελεί μια εισαγωγή στο σύστημα Quartus II. Το Quartus II είναι ένα τυπικό εργαλείο σχεδίασης με την βοήθεια υπολογιστή (Computer Aided Design, CAD), για το σχεδιασμό κυκλωμάτων που υλοποιούνται με σκοπό τη χρήση τους σε συσκευές FPGA. Η ροή σχεδίασης όπως αυτή πραγματοποιείται στο λογισμικό Quartus ΙΙ, απεικονίζεται στη συνέχεια δίνοντας βήμα-προς-βήμα οδηγίες για τη χρήση του λογισμικού.

Το σύστημα Quartus II περιλαμβάνει πλήρη υποστήριξη για όλες τις δημοφιλείς μεθόδους για την εισαγωγή της περιγραφής του επιθυμητού κυκλώματος σε ένα σύστημα CAD. Όπως αναφέρθηκε και προηγουμένως, αυτό το σεμινάριο κάνει χρήση της μεθόδου εισόδου σχεδιασμού σε μορφή HDL, στην οποία ο χρήστης καθορίζει το επιθυμητό κύκλωμα με τη χρήση της γλώσσας περιγραφής υλικού HDL. Άλλες διαθέσιμες επιλογές για την περιγραφή κυκλωμάτων είναι η χρήση της γλώσσα περιγραφής υλικού Verilog και ο καθορισμός του επιθυμητού κυκλώματος με τη μορφή σχηματικού διαγράμματος.

Μια τυπική ροή μεταφοράς του επιθυμητού κυκλώματος σε μια FPGA με την χρήση ενός CAD εργαλείου όπως το Quartus II απεικονίζεται στο Σχήμα 1.

Σχήμα 1. Η ροή ανάλυσης και ελέγχου ενός σχεδιασμένου κυκλώματος για την μεταφορά του στο φυσικό τσιπ FPGA.

Η ροή περιλαμβάνει τα ακόλουθα βήματα:

  • Εισαγωγή Σχεδίου (Design Entry) - Το επιθυμητό κύκλωμα καθορίζεται είτε με τη βοήθεια ενός σχηματικού διαγράμματος, ή με τη χρήση μιας γλώσσας περιγραφής υλικού, όπως Verilog ή HDL.

  • Σύνθεση (Synthesis) - Το σχέδιο που έχει εισαχθεί προηγουμένως μετατρέπεται από γραμμές κώδικα σε ένα κύκλωμα που αποτελείται από τα λογικά στοιχεία (Logic Elements, LEs) που εμπεριέχονται στο FPGA και χρησιμοποιούνται για να προσομοιώσουν τη λειτουργία του.

  • Λειτουργική Προσομοίωση (Functional Simulation) - το παραγόμενο κύκλωμα ελέγχεται για να επαληθευτεί η ορθότητα της λειτουργίας του (κυκλωματικά και όχι λειτουργικά). Αυτή η προσομοίωση δε λαμβάνει υπόψη τυχόν ζητήματα μη κάλυψης των απαιτήσεων χρονισμού του κυκλώματος.

  • Τοποθέτηση (Fitting) – Εφόσον είναι σωστό το σχέδιο, το εργαλείο αποφασίζει και καθορίζει την τοποθέτησή του στους διαθέσιμους πόρους (LEs) σε ένα πραγματικό τσιπ FPGA. Σε αυτό το στάδιο επιλέγονται και τα καλώδια δρομολόγησης στο τσιπ για να γίνουν οι απαραίτητες συνδέσεις μεταξύ των στοιχείων του FPGA.

  • Ανάλυση χρονισμού (Timing Analysis) – Έχοντας αποφασίσει την κατανομή του κυκλώματος στο τσιπ, το εργαλείο χρονισμού υπολογίζει τις καθυστερήσεις διάδοσης κατά μήκος των διαφόρων διαδρομών καλωδίωσης (από το ένα λογικό στοιχείο στο επόμενο) και στο εσωτερικό του κάθε λογικού στοιχείου. Η ανάλυση αυτή παρέχει μια ένδειξη της αναμενόμενης απόδοσης του κυκλώματος από άποψη μέγιστης χρονικής καθυστέρησης διάδοσης των σημάτων, που καθορίζει και την μέγιστη συχνότητα λειτουργίας του.

  • Προσομοίωση χρονισμού (Timing Simulation)- Προσομοιώνεται το κύκλωμα για να επαληθευτεί η ορθότητα στο χρονισμό με βάση τις προβλεπόμενες απαιτήσεις της συχνότητας λειτουργίας. Αν οι απαιτήσεις δεν καλύπτονται, το εργαλείο χρονισμού αλλάζει την φυσική κατανομή του κυκλώματος στο τσιπ ώστε να εξοικονομήσει χρόνο μειώνοντας τα μονοπάτια διάδοσης σημάτων από στοιχείο σε στοιχείο, που συνήθως εισάγουν την μεγαλύτερη καθυστέρηση. Αν δεν μπορεί να βρεθεί λύση στην προτεινόμενη συχνότητα λειτουργίας, εκδίδει ενημερωτικό μήνυμα.

  • Προγραμματισμός και Διαμόρφωση - Το σχεδιασμένο κύκλωμα έχοντας περάσει όλους τους ελέγχους του Quartus II, υλοποιείται σε ένα φυσικό τσιπ FPGA: (α) προγραμματίζοντας τα περιεχόμενα των λογικών στοιχείων να εκτελέσουν τη ζητούμενη δραστηριότητα και (β) καθορίζοντας τις απαραίτητες συνδέσεις καλωδίων γύρω από τα λογικά στοιχεία για την σωστή επικοινωνία τους.

Δημιουργία ενός νέου Project

Έχοντας ολοκληρώσει με επιτυχία την εγκατάσταση του λογισμικού Quartus II, πατώντας εκτέλεση από το αντίστοιχο εικονίδιο που δημιουργείται στην Επιφάνεια Εργασίας θα ανοίξει το παράθυρο της Εικόνας 2.

Εικόνα 2. Το γραφικό περιβάλλον του Quartus II v12.0 κατά την εκκίνηση.

Αρχικά θα πρέπει να οριστεί ένα νέο σχέδιο για την υλοποίηση του έργου. Το λογισμικό Quartus ΙΙ παρέχει υποστήριξη για τη δημιουργία ενός νέου έργου με τη μορφή του οδηγού της Εικόνας 2 που εμφανίζεται αμέσως με το άνοιγμα του προγράμματος. Για την δημιουργία ενός νέου project:

- Επιλέγουμε “Create a New Project” από τον οδηγό.

- Στο εισαγωγικό παράθυρο (Εικόνα 3) που ανοίγει στη συνέχεια επιλέγουμε “Next”.

Εικόνα 3. Δημιουργία ενός project.

- Στο επόμενο παράθυρο (Εικόνα 4) δηλώνουμε τη θέση του φακέλου που επιθυμούμε να δημιουργηθεί το νέο project κάνοντας αναζήτηση της θέσης στο πεδίο “What is the working directory for this project?”. Εδώ επιλέγεται η δημιουργία ενός φακέλου “example_project” στη θέση “C:”. Φυσικά, μπορεί να χρησιμοποιηθεί κάποιο άλλο όνομα για τον φάκελο του project.

Εικόνα 4. Δημιουργία ενός project (συνέχεια).

- Το έργο πρέπει να έχει ένα όνομα, το οποίο συνήθως είναι το ίδιο με το όνομα του αρχείου υψηλότερου επιπέδου που θα συμπεριληφθεί στο πρόγραμμα και περιγράφει τη λειτουργία του σε VHDL. Εδώ έχει επιλεγεί ο τίτλος “example” (Εικόνα 4), αλλά όπως και προηγουμένως το όνομα μπορεί να επιλεγεί κατά βούληση αρκεί να ταιριάζει με αυτό του αρχείου .HDL που θα δημιουργηθεί στη συνέχεια. Πατώντας “Next” ένα μήνυμα ενδέχεται να εμφανιστεί ζητώντας επιβεβαίωση για τη δημιουργία του φακέλου στη θέση που επιλέχθηκε στο βήμα 3 αν αυτός δεν υπάρχει ήδη. Πατάμε ΝΑΙ για συνέχεια.

- Στη συνέχεια ο οδηγός ζητά να καθορίσετε τα αρχεία (αν αυτά υπάρχουν) που θα πρέπει να συμπεριληφθούν στο νέο project, κάνοντας αναζήτηση από το πεδίο “File name” και πατώντας την επιλογή “Add” (Εικόνα 5). Αν υποθέσουμε, όπως και σε αυτό το παράδειγμα, ότι δεν έχουμε οποιαδήποτε αρχεία, κάνουμε κλικ στο κουμπί “Next”.

Εικόνα 5. Δημιουργία ενός project (συνέχεια).

- Στη συνέχεια θα πρέπει να καθοριστεί το μοντέλο FPGA στο οποίο θα εφαρμοστεί τελικά το προς σχεδίαση κύκλωμα. Όπως φαίνεται και στην Εικόνα 6, από την επιλογή “ Family” επιλέγουμε την οικογένεια συσκευών FPGA που έχουμε διαθέσιμη. Από την επιλογή “Package” μπορούμε να επιλέξουμε “FBGA” για να περιοριστούν τα διαθέσιμα μοντέλα στην λίστα αναζήτησης “Available devices”. Από τη λίστα με τις διαθέσιμες συσκευές, επιλέγουμε το κατάλληλο όνομα της συσκευής, εδώ επιλέγεται για παράδειγμα το μοντέλο “Cyclone IV E EP4CE115F29C7” της εκπαιδευτικής σειράς DE2-115 της Altera. Πατήστε “Next” για συνέχεια.

Εικόνα 6. Δημιουργία ενός project (συνέχεια).

Για ευκολία, μια λίστα με τα ονόματα των συσκευών FPGA που περιέχονται στις εκπαιδευτικές σειρές (DE-series) της Altera δίνεται στον Πίνακα 2.

Πίνακας 2. Τα μοντέλα FPGA που περιέχουν οι εκπαιδευτικές πλακέτες της Altera.

Board Device Name
DE0 Cyclone III EP3C16F484C6
DE0-Nano Cyclone IVE EP4CE22F17C6
DE1 Cyclone II EP2C20F484C7
DE2 Cyclone II EP2C35F672C6
DE2-70 Cyclone II EP2C70F896C6
DE2-115 Cyclone IV E EP4CE115F29C7

 

- Ο χρήστης μπορεί να καθορίσει εργαλεία τρίτων κατασκευαστών που επιθυμεί να χρησιμοποιηθούν κατά τον σχεδιασμό, την ανάλυση και την επιβεβαίωση του project (στα βήματα που αναλύθηκαν προηγουμένως). Πρόκειται για εργαλεία που έχουν αναπτυχθεί και διατίθενται στο εμπόριο από εταιρείες εκτός της Altera. Εδώ θα βασιστούμε αποκλειστικά σε εργαλεία του Quartus ΙΙ, και δεν θα επιλεγεί κανένα άλλο εργαλείο (Εικόνα 7). Πατήστε “Next” χωρίς καμία αλλαγή.

Εικόνα 7. Δημιουργία ενός project (συνέχεια).

- Τέλος, εμφανίζεται μια σύνοψη των επιλογών που έγιναν στα προηγούμενα βήματα με τη μορφή του παραθύρου της Εικόνας 8. Πατήστε “Finish” για να ολοκληρωθεί η δημιουργία του νέου project και να επιστρέψετε στο κύριο παράθυρο του Quartus ΙΙ.

Εικόνα 8. Δημιουργία ενός project (συνέχεια).

Με την ολοκλήρωση του οδηγού δημιουργίας project, επιστρέφουμε στο βασικό παράθυρο από το γραφικό περιβάλλον του Quartus II (Εικόνα 9). Παρατηρούμε ότι εμφανίστηκε στο μενού “Entity” το όνομα του βασικού αρχείου του project “example” όπως το είχαμε ορίσει στο βήμα 4 και το οποίο είναι πρώτο στην ιεραρχία των αρχείων του project. Από εδώ μπορούμε να ανοίξουμε το αρχείο που περιέχει τη βασική πληροφορία του project πατώντας διπλό κλικ στο όνομα “example”. Εδώ εμφανίζεται το μήνυμα της Εικόνας 9 καθώς σε αυτή τη φάση δεν έχουμε ακόμα δημιουργήσει το αρχείο “example.vhd”.

Εικόνα 9. Ολοκλήρωση του οδηγού δημιουργίας project.

Για την δημιουργία του αρχείου “example.vhd” επιλέγουμε “File > New...” (Εικόνα 10) ή τη συντόμευση Ctrl + N από το κεντρικό παράθυρο του Quartus.

Εικόνα 10. Το μενού για τη δημιουργία αρχείου VHDL.

Στην καρτέλα με το μενού που ανοίγει επιλέγουμε “VHDL file” και πατάμε “OK”.

Εικόνα 11. Επιλογή του τύπου αρχείου VHDL.

Ανοίγει στο κέντρο του παραθύρου του Quartus ένα νέο πεδίο με τη μορφή Text Editor (Εικόνα 12), που επιτρέπει τον προγραμματισμό του κυκλώματος που θέλουμε να τρέξει στην FPGA.

Εικόνα 12. Το γραφικό περιβάλλον προγραμματισμού VHDL του Quartus II.

Ανοίγοντας το μενού “File ” όπως και προηγουμένως επιλέγουμε την επιλογή “Save As” για να αποθηκεύσουμε το αρχείο που δημιουργήσαμε με την ονομασία “example”. Το πρόγραμμα μεταφέρει αυτόματα τη θέση του προς αποθήκευση αρχείου στον φάκελο που είχαμε δηλώσει κατά τη δημιουργία του project ως κεντρικό φάκελο, εδώ με όνομα “example_project” (Εικόνα 13). Αφήνουμε την προεπιλογή σε “VHDL file” κάτω από το πεδίο εισαγωγής του ονόματος του αρχείου και πατάμε “Αποθήκευση”.

Εικόνα 13. Αποθήκευση του αρχείου “example.vhd”.

Στο στάδιο αυτό το αρχείο είναι έτοιμο για την εγγραφή του κώδικα περιγραφής του προς υλοποίηση κυκλώματος.

⚠️ **GitHub.com Fallback** ⚠️