40
Σημειώσεις εργαστηριακών ασκήσεων Σχεδιασμός Ολοκληρωμένων Συστημάτων με Τεχνικές VLSI Υπεύθυνος Καθηγητής: Κωνσταντίνος Γκούτης Συγγραφή: Κωνσταντίνος Γκούτης Αθανάσιος Κακαρούντας Πανεπιστήμιο Πατρών

VHDL Lab Notes

  • Upload
    aoule

  • View
    478

  • Download
    6

Embed Size (px)

Citation preview

Page 1: VHDL Lab Notes

Σηµειώσεις εργαστηριακών

ασκήσεων

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

Υπεύθυνος Καθηγητής: Κωνσταντίνος Γκούτης

Συγγραφή:

Κωνσταντίνος Γκούτης Αθανάσιος Κακαρούντας

Πανεπιστήµιο Πατρών

Page 2: VHDL Lab Notes
Page 3: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 1 -

1 Περιγραφή Υλικού µε τη χρήση

Γλωσσών Περιγραφής Υλικού (HDL’s) Λόγω της διαρκούς αύξησης, τόσο του µεγέθους όσο και της πολυπλοκότητας, των σχεδιαζόµενων ψηφιακών ολοκληρωµένων συστηµάτων, νέες µέθοδοι αναζητούνται για την σχεδίαση συστηµάτων µε γρήγορους ρυθµούς και µε µεγάλο βαθµό αξιοπιστίας. Με αυτό το συλλογισµό αναπτύχθηκαν οι Γλώσσες Περιγραφής Υλικού (Hardware Description Languages, HDL’s), προκειµένου να περιγραφεί το χρησιµοποιούµενο υλικό µε απλό και κατανοητό τρόπο (κείµενο) και να εξοµοιωθεί η λειτουργία του πριν το φυσικό σχεδιασµό του. Με αυτό τον τρόπο, επιτυγχάνεται τόσο η µείωση του χρόνου σχεδιασµού και υλοποίησης ενός συστήµατος όσο και το κόστος παραγωγής του. Επίσης µε αυτό τον τρόπο βελτιώνεται και η µεθοδολογία σχεδιασµού αφού ο κώδικας είναι εύκολα τροποποιήσιµος και έτσι είναι απλή η µετάβαση σε νέας γενιάς προϊόν, ενώ θεωρείται και επαναχρησιµοποιούµενος σε άλλα συστήµατα (reuse) όταν θέλουµε να χρησιµοποιήσουµε κοινά λογικά µέρη (components).

1.1 ∆ιαδικασία σχεδίασης ψηφιακών συστηµάτων Στο σχήµα 1.1 φαίνεται µια τυπική µεθοδολογία σχεδίασης ψηφιακών συστηµάτων.

Σχήµα 1.1: Τυπική µεθοδολογία σχεδίασης ψηφιακών συστηµάτων

Schematic Capture Hardware Description Language

Data Path Design

Logic Design

Physical Design

Manufacturing

Page 4: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 2 -

Η διαδικασία σχεδίασης ενός συστήµατος ξεκινά από τον καθορισµό της συµπεριφοράς του συστήµατος (behavioral description) . Σε αυτό το πρώτο στάδιο του σχεδιασµού, µπορούµε να περιγράψουµε το σύστηµα είτε µε διασυνδεδεµένα υποσυστήµατα (σχηµατική αναπαράσταση, schematic capture) είτε µε την περιγραφή του συστήµατος, ή των επι µέρους υποσυστηµάτων, µε τη χρήση µιας γλώσσας περιγραφής υλικού. Στη συνέχεια σχεδιάζουµε τα data paths του συστήµατος. Καθορίζονται, βάσει της συµπεριφοράς του συστήµατος, οι διαδικασίες µεταφοράς των δεδοµένων µεταξύ των registers και των λογικών µονάδων. Κατά το τρίτο βήµα, το λογικό σχεδιασµό, χρησιµοποιούνται στοιχειώδης πύλες και flip-flops για την υλοποίηση data registers, buses, λογικών µονάδων και του υλικού ελέγχου. Το επόµενο βήµα είναι η σχεδίαση των στοιχειωδών πυλών και flip-flops σαν στοιχεία της βιβλιοθήκης. Λαµβάνονται υπ’ όψιν και τα κυκλωµατικά ισοδύναµα και οι απαιτήσεις ως προς την ταχύτητα για τα συγκεκριµένα στοιχεία. Στο τελευταίο στάδιο, χρησιµοποιείται το φυσικό επίπεδο σχεδιασµό που έχει εξαχθεί από την παραπάνω διαδικασία προκειµένου να κατασκευαστεί το ολοκληρωµένο σύστηµα. Οι διαδικασίες αυτές έχουν αυτοµατοποιηθεί και χρησιµοποιώντας µια συγκεκριµένη βιβλιοθήκη τεχνολογίας εξάγεται από την περιγραφή του υλικού, που έχει γίνει στο πρώτο στάδιο της διαδικασίας, ο σχεδιασµός σε φυσικό επίπεδο. Για να επιτευχθεί αυτό χρησιµοποιούνται εργαλεία τα οποία αποκαλούνται εργαλεία σύνθεσης. Αυτά θα χρησιµοποιηθούν και για τη διεκπεραίωση των εργαστηριακών ασκήσεων.

1.2 Ιεραρχική σχεδίαση Ένα βασικό πλεονέκτηµα της σχεδίασης ολοκληρωµένων συστηµάτων είναι η έννοια της ιεραρχίας. Θεωρούµε το ολοκληρωµένο σύστηµα ως το πρώτο επίπεδο ιεραρχίας. Αποτελείται από διάφορα υποσυστήµατα, τα οποία συνιστούν το αµέσως χαµηλότερο ιεραρχικό επίπεδο. Αυτά τα υποσυστήµατα αποτελούνται από διάφορες πύλες, flip-flops κ.ο.κ. στοιχεία τα οποία αποτελούν µέρος της βιβλιοθήκης τεχνολογίας. Αυτά αποτελούν και το επόµενο ιεραρχικό επίπεδο. Στο τελευταίο επίπεδο της ιεραρχίας βρίσκεται ο φυσικός σχεδιασµός των πυλών και όλων των

στοιχείων της βιβλιοθήκης. Σχήµα 1.2: Ιεραρχική σχεδίαση

S1

S2

D

C ENB

MultiplexerS1

S2

c

D

Top-level logic-level physical-level

VDD=5V

VSS=0V

a

a

b

b

out

Page 5: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 3 -

1.3 Γλώσσες Περιγραφής Υλικού (HDL’s) Οι γλώσσες περιγραφής υλικού χρησιµοποιούνται για σκοπούς εξοµοίωσης, δηµιουργίας µοντέλων, ελέγχου και σχεδίασης ψηφιακών συστηµάτων. Ικανοποιώντας την παραπάνω µεθοδολογία και τα επίπεδα ιεραρχίας προσφέρουν µια τυποποιηµένη µορφή για τον ορισµό των επιπέδων ιεραρχίας και διασύνδεσης των ψηφιακών συστηµάτων. Οι απαιτήσεις που προέκυψαν από τη µελέτη του Τµήµατος Άµυνας των Η.Π.Α. (DoD) προκειµένου µία γλώσσα περιγραφής να είναι ικανή να περιγράψει υλικό είναι οι παρακάτω: • Ταυτόχρονη (ή σύγχρονη) δήλωση, της λειτουργίας των επι µέρους στοιχείων

του συστήµατος, αφού θα πρέπει όλα να είναι ικανά/δυνατόν να λειτουργούν ταυτόχρονα όπως συµβαίνει σε οποιοδήποτε ψηφιακό σύστηµα.

• Σειριακή δήλωση, λειτουργίας, ώστε να είναι δυνατή η διαδοχική εκτέλεση διαδικασιών που ορίζονται από τις απαιτήσεις/προδιαγραφές του συστήµατος.

• Υποστήριξη Ιεραρχικής Σχεδίασης, όπως έχει αναφερθεί παραπάνω. • Υποστήριξη βιβλιοθηκών, προκειµένου να χρησιµοποιούνται µοντέλα που

έχουν οριστεί από το χρήστη και έχουν γίνει compiled από τον compiler της HDL. Αυτά θα χρησιµοποιηθούν στη συνέχεια για να καθοριστούν οι απαιτήσεις της λειτουργίας ενός συστήµατος.

• ∆ήλωση τύπων, ώστε να µην περιορίζεται η HDL µόνο σε τύπους bit ή boolean. • Χρήση υποπρογραµµάτων, προκειµένου να καθορίζονται εύκολα λειτουργίες

(functions) και υπορουτίνες (procedures). • Έλεγχο του χρονισµού, ώστε να είναι δυνατός ο καθορισµός της καθυστέρησης

ενός σήµατος ή της αναµονής για ένα σήµα ή ενός γεγονότος (event). Πρέπει να επισηµάνουµε την ανάγκη να κατανοηθεί η ταυτόχρονη δήλωση, αφού αποτελεί και τη βασική διαφορά από τις κλασσικές γλώσσες προγραµµατισµού και δυσκολεύει σε πρώτο στάδιο την κατανόηση της λειτουργίας των γλωσσών περιγραφής υλικού. Ο καλύτερος τρόπος για να εξηγήσουµε αυτή τη διαφορά είναι µερικά παραδείγµατα που είναι ενδεικτικά της διαφοράς του concurrent από το sequential. Παράδειγµα 1 Όταν βρισκόµαστε σε δήλωση concurrent τότε ότι δηλώνουµε, εκτελείται ταυτόχρονα και όχι γραµµή-γραµµή όπως στις γλώσσες προγραµµατισµού.

(α)Concurrent statement

ARCHITECTURE dataflow OF cu IS BEGIN d0<=(in0 AND in1) OR (in0 AND in3); d1<=(in1 AND in2); END dataflow;

Page 6: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 4 -

Παράδειγµα 2 Όταν βρισκόµαστε σε δήλωση σειριακή (sequential), τότε εκτελείται όπως στις γλώσσες προγραµµατισµού.

(β)Sequential statement Παράδειγµα 3 Έστω ότι βρισκόµαστε σε δήλωση ταυτόχρονη (concurrent) και η είσοδος i1 έχει την τιµή ‘1’ και η ενδιάµεση αποθηκευµένη κατάσταση tmp είχε την τιµή ‘0’. Τότε µε την εκτέλεση του παρακάτω κώδικα η τιµή του z (έξοδος) είναι ‘1’ και όχι ‘0’ όπως θα περιµέναµε αν οι δηλώσεις εκτελούνταν γραµµή-γραµµή.

… z<=tmp; tmp<=i1; …

(γ)Concurrent statement 1.3.1 ∆οµή περιγραφής υλικού µε χρήση της VHDL Η γλώσσα περιγραφής υλικού που θα χρησιµοποιηθεί είναι η VHDL (VHSIC Hardware Description Language). Περιλαµβάνει όλα τα παραπάνω χαρακτηριστικά που απαιτούνται από µια γλώσσα περιγραφής υλικού και είναι η πλέον χρησιµοποιούµενη τόσο από τα Πανεπιστήµια όσο και από τις εταιρίες ανάπτυξης και κατασκευής υλικού. Παρακάτω θα αναπτυχθούν οι βασικές αρχές που διέπουν τη συγγραφή κώδικα σε VHDL και θα ακολουθήσει βήµα-βήµα η παρουσίαση όλων των συστατικών που απαρτίζουν και δοµούν µια περιγραφή υλικού σε VHDL. Προκειµένου να περιγράψουµε συστήµατα και υποσυστήµατα υλικού χρησιµοποιούµε µία περιγραφή διασύνδεσης και ένα χαρακτηρισµό αρχιτεκτονικής. Όπως φαίνεται στο σχήµα 1.3 µία περιγραφή διασύνδεσης ξεκινά µε την εντολή ENTITY και περιέχει τις εισόδους και εξόδους του υποσυστήµατος. Είναι η αντίστοιχη διαδικασία µε τη σχηµατική αναπαράσταση ενός συστήµατος µε ένα block σχηµατικό. Περιλαµβάνονται σε αυτή την περιγραφή και άλλα εξωτερικά χαρακτηριστικά του υποσυστήµατος όπως οι εξαρτήσεις από το χρόνο και τη θερµοκρασία.

ARCHITECTURE behav OF cu2 IS BEGIN PROCESS VARIABLE tmp: BIT:=’1’; BEGIN IF en = ‘1’ THEN tmp:= NOT in0; END IF; z <= tmp; END PROCESS; END behav;

Page 7: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 5 -

(α) (β)

Σχήµα 1.3: Αντιστοιχία περιγραφής διασύνδεσης σε (α)schematic capture και (β)VHDL

Στη συνέχεια πρέπει να καθοριστεί µια αρχιτεκτονική, µε τη χρήση της εντολής ARCHITECTURE, προκειµένου να περιγράψουµε τη λειτουργία του (υπο)συστήµατος. Στο σχήµα 1.4 βλέπουµε τη δοµή µιας τέτοιας δήλωσης.

Σχήµα 1.4: Περιγραφή αρχιτεκτονικής σε VHDL

Παρατηρείστε ότι η δοµή και των δύο δηλώσεων, ξεκινούν µε το χαρακτηρισµό τους ως ENTITY και ARCHITECTURE, την ιδιαίτερη ονοµασία του συστήµατος (component_name), την λέξη IS, το κυρίως σώµα των δηλώσεων και τελειώνουν µε END. Ειδικά για τη δήλωση αρχιτεκτονικής (ARCHITECTURE) ενός (υπο)συστήµατος, χρησιµοποιείται επιπρόσθετα και µια αναγνωριστική ονοµασία (identifier). Ο λόγος της ύπαρξης του identifier έγκειται στο γεγονός ότι το (υπο)σύστηµα είναι ένα και µοναδικό (µία δήλωση ENTITY), ενώ µπορούν σε αυτό να αντιστοιχούν περισσότερες της µιας περιγραφές αρχιτεκτονικής. Χρησιµοποιείται αυτή που απαιτείται από την περίσταση. Με αυτόν τον τρόπο είναι δυνατή και η σχεδίαση νέας τεχνολογίας προϊόντων, αλλάζοντας δηλαδή την περιγραφή αρχιτεκτονικής. Τηρείται δηλαδή η απαιτούµενη ιεραρχία. Στο σχήµα 1.5 βλέπουµε το συσχετισµό του ENTITY µε τις διάφορες δηλώσεις αρχιτεκτονικής (ARCHITECTURE). Οι διάφορες δηλώσεις αρχιτεκτονικής είναι ουσιαστικά διαφορετικές εκφάνσεις της ίδιας οντότητας και ιεραρχικά «κρέµονται» από αυτή σαν φύλλα δέντρου. Αυτό είναι ιδιαίτερο χαρακτηριστικό της ιεραρχικής σχεδίασης και ακολουθείται σε όλα τα επίπεδα ιεραρχίας.

Component name

(various parameters)

ENTITY component_name IS input and output ports physical and other parameters END component_name;

inputs outputs

ARCHITECTURE identifier OF component_name IS declerations BEGIN Specification of the functionality of the component in terms of its Input lines and as influenced by physical and other parameters END identifier;

Page 8: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 6 -

Σχήµα 1.5: Πολλαπλές αρχιτεκτονικές περιγραφές

1.3.2 Χαρακτηριστικό Παράδειγµα: Ανιχνευτής Ακολουθίας Στη συνέχεια χρησιµοποιώντας ένα παράδειγµα θα παρουσιαστεί και ο τρόπος των δηλώσεων των ENTITIES και ARCHITECTURES και των επιπέδων ιεραρχίας. Έστω ότι θέλουµε να σχεδιάσουµε ένα ανιχνευτή ακολουθίας, της ακολουθίας 110. Αν εµφανιστεί αυτή η ακολουθία τότε στην έξοδο παράγεται το συµπληρωµατικό µιας δεύτερης εισόδου. Στο σύστηµα πρέπει να ληφθεί υπ’ όψιν και σήµα enable. Έστω εποµένως x_in, y_in, en οι είσοδοι και z_out η έξοδος. Τότε το σύστηµα περιγράφεται από το block του σχήµατος 1.6, ενώ παρατίθεται και η Mealy State Machine για το FSM µέρος του συστήµατος.

Σχήµα 1.6: Σύστηµα ανίχνευσης ακολουθίας 110 στην είσοδο x_in Θα χρειαστούµε για το σύστηµα ένα ρολόι (clk) ώστε να είναι δυνατή η ανίχνευση της ακολουθίας. Το block διάγραµµα του ανιχνευτή φαίνεται στο σχήµα 1.7 καθώς και το επίπεδο πυλών του FSM. Στη συνέχεια θα δηλώσουµε τις οντότητες sequence_detector, fsm_component και clock_component. ENTITY sequence_detector IS PORT (x_in, y_in, enable : IN BIT; z_out : OUT BIT); END sequence_detector; ENTITY fsm_component IS PORT (x, y, clk : IN BIT; z : OUT BIT); END fsm_component;

ENTITY component IS…

ARCHITECTURE behavioral

OF component

IS …

ARCHITECTUREstructural

OF component

IS …

ARCHITECTURE dataflow

OF component

IS …

IF 110 found on x_inTHEN z_out:=NOT y_in

ELSE z_out:=0

x_iny_in

enable

z_outa b c

0/0

0/01/0 1/0

1/0

0/(z_out:=NOT y_in)

(α) Ανιχνευτής ακολουθίας (β) Mealy State Machine του ανιχνευτή ακολουθίας 110

Page 9: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 7 -

ENTITY clock_component IS PORT (en : IN BIT; ck : OUT BIT); END clock_component; Όπως έχει αναφερθεί, στη δήλωση των οντοτήτων (ENTITIES) δηλώνουµε όλες τις εισόδους και εξόδους καθώς και τον τύπο των σηµάτων αυτών (BIT, BYTE κ.ο.κ.).

Σχήµα 1.7: Block διάγραµµα του ανιχνευτή και επίπεδο πυλών του FSM

Όπως φαίνεται στο σχήµα 1.7, το FSM component αποτελείται από δύο επι µέρους κοµµάτια, τα logical_part και memory_part. Αναπαριστώντας τα µε blocks βρίσκουµε ενδιάµεσες διασυνδέσεις µεταξύ τους, οι οποίες ονοµάστηκαν is1, is2, is3, is4, d_out0, d_out1, d_in0, d_in1, d0, d1, q0, q1, out1, clocking, in0, in1 και οι οποίες αναπαριστούν διασυνδέσεις που πρέπει να δηλωθούν. Οι δηλώσεις γίνονται στα ENTITIES των logical_part και memory_part. ENTITY logical_part IS PORT (in0,in1,q0,q1 : IN BIT; d0,d1,out1 : OUT BIT); END logical_part; ENTITY memory_part IS PORT (d_in0,d_in1,clocking : IN BIT; d_out0, d_out1 : OUT BIT); END memory_part;

ckCLOCKen

(a) clock component

FSM

clk

xy

z

(b) fsm component

Q

QSET

CLR

D

Q

QSET

CLR

D

y

z

clk

x

logical_part memory_part

(c) Gate level υλοποίηση του FSM

Page 10: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 8 -

Σχήµα 1.8: Εσωτερικό block διάγραµµα του FSM

Αν περιγράψουµε την δοµή του ανιχνευτή ακολουθίας θα προκύψει µία δοµή δένδρου όπως φαίνεται στο σχήµα 1.9.

Σχήµα 1.9: ∆οµή δένδρου του ανιχνευτή ακολουθίας

Αφού έχουν οριστεί οι οντότητες οι οποίες αναπαρίστανται στο σχήµα 1.9, το επόµενο βήµα είναι η δήλωση αρχιτεκτωνικών. Οι µορφές αρχιτεκτονικής µε τις οποίες θα ασχοληθούµε είναι οι behavioral, structural και dataflow. Αναλυτικά, όταν χρησιµοποιούµε αρχιτεκτονική structural περιγράφουµε τη διασύνδεση διαφόρων οντοτήτων (ENTITIES) µεταξύ τους, χρησιµοποιώντας για να δηλώσουµε τις διαφορετικές οντότητες µε την κωδικολέξη COMPONENT. Στην περίπτωση που χρησιµοποιείται αρχιτεκτονική behavioral, χρησιµοποιώντας την κωδικολέξη PROCESS ορίζουµε σειριακή δήλωση και περιγράφουµε την λειτουργία της οντότητας. Αντίθετα, στην περίπτωση της αρχιτεκτονικής dataflow, η εκτέλεση είναι concurrent και δηλώνουµε την ροή των δεδοµένων. Παρακάτω θα οριστούν αρχιτεκτονικές για όλες τις οντότητες και θα αποσαφηνιστεί η περιγραφή αρχιτεκτονικής. ARCHITECTURE structural OF sequence_detector IS COMPONENT clock_component PORT(en:IN BIT; ck:OUT BIT); END COMPONENT; COMPONENT

LOGICAL_PART

MEMORY_PART

clk

xy

in0in1

q0q1

out1

d0d1

d_in0d_in1

z

is1

is2

is3is4

clockingd_out0d_out1

sequence_detector

clock_component fsm_component

memory_part logical_part

Page 11: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 9 -

fsm_component PORT(x,y,clk:IN BIT; z:OUT BIT); END COMPONENT; SIGNAL inernal_line : BIT; BEGIN c1 : clock_component PORT MAP (enable, internal_line); c2 : fsm_component PORT MAP (x_in, y_in, internal_line, z_out); END structural; ARCHITECTURE structural OF fsm_component IS COMPONENT logical_part PORT (in0,in1,q0,q1:IN BIT; d0,d1,out1:OUT BIT); END COMPONENT; COMPONENT memory_part PORT (d_in0,d_in1,clocking:IN BIT; d_out0,d_out1:OUT BIT); END COMPONENT; SIGNAL is1,is2,is3,is4:BIT; BEGIN c1 : logical_part PORT MAP (x,y,is1,is2,is3,is4,z); c2 : memory_part PORT MAP (is3,is4,clk,is1,is2); END structural;

∆ιασύνδεση των κυρίων µερών του fsm_component και του sequence_detector ARCHITECTURE behavioral OF clock_component IS BEGIN PROCESS VARIABLE periodic: BIT := ‘1’; BEGIN IF en = ‘1’ THEN periodic := NOT periodic; END IF; ck <= periodic; WAIT FOR 1 US; END PROCESS; END behavioral;

Περιγραφή συµπεριφοράς του clock_component

ARCHITECTURE dataflow OF logical_part IS BEGIN d0 <= (in0 AND q0) OR (in0 AND q1) AFTER 12 NS; d1 <= (NOT q0) AND (NOT q1) AND in0 AFTER 14 NS; out1 <= (NOT in0) AND (NOT in1) AND q0 AFTER 14 NS; END dataflow; ARCHITECTURE dataflow OF memory_part IS BEGIN BLOCK (clcking = ‘1’ AND clocking’ EVENT) BEGIN d_out0 <= GUARDED d_in0 AFTER 11 NS;

Page 12: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 10 -

d_out1 <= GUARDED d_in1 AFTER 11 NS; END BLOCK; END dataflow;

Περιγραφή ροής δεδοµένων (dataflow) στα logical_part και memory_part Με τις παραπάνω δηλώσεις και περιγραφές έχουµε καταφέρει να περιγράψουµε πλήρως τον ανιχνευτή ακολουθίας. Χρησιµοποιώντας ένα εργαλείο σύνθεσης και την κατάλληλη βιβλιοθήκη έιναι δυνατή η κατασκευή αυτού του συστήµατος. Βέβαια, ο σκοπός του παραπάνω παραδείγµατος είναι η κατανόηση των δηλώσεων ENTITY και ARCHITECTURE και πώς αυτές χρησιµοποιούνται. Είναι σηµαντικό να παρατηρήσουµε τη σειρά µε την οποία έγιναν αυτές οι δηλώσεις και να τη συγκρίνουµε µε τη δοµή δένδρου του ανιχνευτή ακολουθίας, το οποίο απεικονίστηκε στο σχήµα 1.9. Είναι σαφές ότι δεν απαιτείται η γνώση των υπολοίπων εντολών, που εµφανίστηκαν στο παραπάνω παράδειγµα, αφού η εκµάθησή τους θα µας απασχολήσει στη συνέχεια. 1.3.3 Περιγραφή Υλικού σε VHDL Παρακάτω θα αναφερθούν µερικές εντολές και χειριστήρια που χρησιµοποιούνται για την περιγραφή υλικού σε VHDL. 1.3.3.1 VHDL χειριστήρια Στον παρακάτω πίνακα, πίνακας 1.1 παρουσιάζονται όλα τα χειριστήρια που χρησιµοποιεί η VHDL. Αναφέρεται το χειριστήριο, τι είδους είναι (π.χ. λογικό), καθώς και σε τι τύπου ορίσµατα εφαρµόζεται και τι τύπου είναι το αποτέλεσµα. Θα αναφερθούµε µόνο στο τελευταίο χειριστήριο ‘&’ το οποίο συνδέει δύο σήµατα (concatenate). Το χειριστήριο αυτό χρησιµοποιείται στην περίπτωση που θέλουµε να ενώσουµε δύο σήµατα του ίδιου τύπου σε έναν άλλο, π.χ. δύο 8-bits σήµατα x_byte και y_byte, τότε η πράξη x_byte & y_byte µας δίνει ένα νέο πεδίο 16 bits που περιέχει τις τιµές των x_byte και y_byte. Ο τύπος των ορισµάτων της πράξης σύνδεσης είναι ρητά ο ίδιος.

Πίνακας 1.1: Χειριστήρια της VHDL Λογικά χειριστήρια:Τύπος ορισµάτων:

Τύπος αποτελέσµατος:

Χειριστήρια σύγκρισης: Τύπος ορισµάτων:

Τύπος αποτελέσµατος:

Αριθµητικά χειριστήρια: Τύπος ορισµάτων:

Τύπος αποτελέσµατος:

Χειριστήριο σύνδεσης: Τύπος ορισµάτων:

Τύπος αποτελέσµατος:

NOT AND OR NAND NOR XOR BIT BOOLEAN BIT BOOLEAN = /= < <= > >= ΚΑΘΕ ΤΥΠΟΣ BOOLEAN + - * / ** MOD REM ABS INTEGER REAL Physical INTEGER REAL Physical & πεδίο οποιουδήποτε µεγέθους πεδίο διπλάσιου µεγέθους των ορισµάτων

Page 13: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 11 -

1.3.3.2 Υποπρογράµµατα Προκειµένου να δηλώσουµε τι τύπο µεταβλητών θέλουµε, χρησιµοποιούµε τη δήλωση TYPE όπως φαίνεται στο παράδειγµα όπου ορίζουµε ένα byte σαν ένα πεδίο 8 bits. π.χ. TYPE byte IS ARRAY (7 DOWNTO 0) OF BIT; Στη VHDL µπορούν να χρησιµοποιηθούν υποπρογράµµατα, όπως και στις γλώσσες προγραµµατισµού, που δηλώνονται µέσα στην περιγραφή αρχιτεκτονικής. Τα υποπρογράµµατα µπορούν να λάβουν σαν είσοδο και να επιστρέψουν τιµές οτιδήποτε έχει οριστεί ήδη σαν τύπος µεταβλητής. Τα υποπρογράµµατα µπορεί να είναι δύο µορφών, όπως και στις γλώσσες προγραµµατισµού, είτε FUNCTION είτε PROCEDURE. Συνήθως τα υποπρογράµµατα χρησιµοποιούνται για µετατροπές ενός τύπου σήµατος σε ένα άλλο, για περιγραφή απαριθµητών ή για µετατροπή αναλογικού σε ψηφιακό. Παράδειγµα, για να µετατρέψουµε ένα byte σε integer: PROCEDURE byte_to_integer (b : IN byte; i : OUT INTEGER) IS VARIABLE result : INTEGER :=0; BEGIN FOR j IN 0 TO 7 LOOP IF b(j) = ‘1’ THEN result := result + 2**j; END IF; END LOOP; i := result; END byte_to_integer; Παράδειγµα, για να εκτελείται η συνάρτηση a AND b AND (NOT c) για κάθε a,b,c FUNCTION f(a,b,c :BIT) RETURN BIT IS VARIABLE x : BIT; BEGIN x:= ((NOT c) AND a AND b); RETURN x; END f; 1.3.3.3 Σήµατα και µεταβλητές Η VHDL επειδή περιγράφει υλικό αντιµετωπίζει τις εισόδους και τις εξόδους ως σήµατα. Τα σήµατα (signals) έχουν ιδιαιτερότητες υλικού και µεταφέρουν στη δήλωσή τους και πιθανές καθυστερήσεις που έχουν αντιστοιχηθεί σε αυτά. Τους µεταφέρουµε τιµές µε το σύµβολο <= και αν θέλουµε να καθορίσουµε την καθυστέρηση ακολουθεί η κωδικολέξη AFTER και ο χρόνος καθυστέρησης.

Page 14: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 12 -

Χρησιµοποιούνται τόσο σε sequential, όσο και σε concurrent κώδικες, αλλά µπορούν να δηλωθούν µόνο σε concurrent κώδικα. Φυσικά, η VHDL υποστηρίζει και τη χρήση µεταβλητών (variables), όπως τις γνωρίζουµε από τις γλώσσες προγραµµατισµού, οι οποίες όµως ουσιαστικά περιγράφουν εσωτερικές καταστάσεις του σε behavioral περιγραφές. Αντίθετα από τα σήµατα, δεν χρειάζονται χρονική καθυστέρηση, τους προσδίδουµε τιµές µε το σύµβολο := και χρησιµοποιούνται µόνο σε sequential κώδικα.

Page 15: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 13 -

2 Εργαλεία που χρησιµοποιούνται

για τις εργαστηριακές ασκήσεις Το περιβάλλον στο οποίο θα πραγµατοποιηθούν οι εργαστηριακές ασκήσεις είναι τα HP-Workstations µε λειτουργικό HP-Unix. Επειδή έχει παρατηρηθεί δυσκολία στη χρήση αυτού του λειτουργικού, εξαιτίας της εξοικείωσης των φοιτητών µε διαφορετικά λειτουργικά συστήµατα, θα παρουσιαστεί παρακάτω, συνοπτικά, η συνήθης διαδικασία που ακολουθείται κατά τη διάρκεια των περισσοτέρων εργαστηριακών ασκήσεων. Κάθε εργαστηριακή άσκηση ξεκινά µε τη συγγραφή του κώδικα σε VHDL, προκειµένου να περιγράψουµε το υλικό που απαιτείται από την άσκηση. Η συγγραφή του κώδικα γίνεται σε κάποιο απλό κειµενογράφο, ακόµα και στον προσωπικό µας υπολογιστή. Ο κειµενογράφος που θα χρησιµοποιηθεί στην περίπτωσή µας είναι ο απλός Text Editor που προσφέρει κάθε λειτουργικό σύστηµα, και ενεργοποιείται είτε επιλέγοντας το εικονίδιό του, είτε δίνοντας την εντολή edit στο dterm στο οποίο δουλεύουµε. Ο editor έχει τη µορφή που φαίνεται στο Σχήµα 2.1.

Σχήµα 2.1: O Text Editor Αφού ολοκληρώσουµε τη συγγραφή του κώδικα σε VHDL, το επόµενο βήµα είναι να κάνουµε compile τον κώδικα και να ελέγξουµε τυχόν λάθη που έχουν προκύψει, για να τα διορθώσουµε. Ο compiler της VHDL είναι ο qvhcom και συντάσσεται, µε τις παραµέτρους που χρησιµοποιούµε συνήθως, qvhcom –93 –synth <VHDL file> όπου VHDL file, το όνοµα του αρχείου της VHDL που θέλουµε να κάνουµε compile.

Page 16: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 14 -

Όλες αυτές τις διαδικασίες τις κάνουµε στο dterm (γραµµή εντολής). Στο σχήµα 2.2 βλέπουµε τον τρόπο µε τον οποίο συντάσσουµε την εντολή.

Σχήµα 2.2: Σύνταξη της εντολής qvhcom

Είναι σηµαντικό να τονίσουµε ότι προκειµένου να χρησιµοποιηθεί η παράµετρος –synth, δηλαδή η περιγραφή να είναι συνθέσιµη, πρέπει η βιβλιοθήκη που θα χρησιµοποιηθεί να είναι η arithmetic και όχι η ΙΕΕΕ. Στην περίπτωση που χρησιµοποιείται αυτή η βιβλιοθήκη, είναι διαφορετικές οι δηλώσεις των τύπων των σηµάτων και πρέπει να δοθεί µεγάλη προσοχή σε αυτή την διαφορά. Με αυτή τη βιβλιοθήκη έχουµε τη δυνατότητα για προσηµασµένες πράξεις. Αφού εξετάσουµε όλα τα µηνύµατα που προκύπτουν από τη διαδικασία του compiling και διορθώσουµε τον κώδικα, προκύπτει ένα αρχείο που περιέχει όλες τις απαραίτητες πληροφορίες για το υλικό που περιγράψαµε στον κώδικά µας, προκειµένου να χρησιµοποιήσουµε αυτή την περιγραφή σε άλλα εργαλεία. Εφόσον έχουµε ελέγξει τον κώδικά µας για λάθη, τα έχουµε διορθώσει και έχει ολοκληρωθεί το compiling, αυτό που µας ενδιαφέρει είναι ο έλεγχος της σωστής λειτουργίας του υλικού. Η καλύτερη λύση για αυτή την περίπτωση είναι η γνώση εξ αρχής η απόκριση αυτού που έχουµε περιγράψει, σε µια συγκεκριµένη ακολουθία εισόδων. Εποµένως απαιτείται ένα εργαλείο εξοµοίωσης το οποίο θα θέτει ορισµένες τιµές στις εισόδους του συστήµατός µας και θα µας δίνει την απόκριση του σύµφωνα µε την περιγραφή που έχουµε κάνει σε VHDL. Το εργαλείο αυτό είναι το qhsim (QuickSim II). Ενεργοποιείται µε την εντολή qhsim <VHDL file> και σε παραθυρικό περιβάλλον (σχήµα 3) µας δίνει τη δυνατότητα να εξοµοιώσουµε τη λειτουργία του υλικού. Τα βήµατα που πρέπει να ακολουθηθούν είναι τα παρακάτω:

Page 17: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 15 -

Σχήµα 2.3: Περιβάλλον εργασίας του qhsim

• View -> signals… • Επιλογή όλων των σηµάτων. • Wave -> selected signals. • View -> wave… • Run Στη συνέχεια επεµβαίνουµε στις τιµές των σηµάτων που βρίσκονται στο παράθυρο Signals και διαλέγοντας αυτό που θέλουµε να τροποποιήσουµε, επιλέγουµε την τιµή την οποία θα το δώσουµε µε την επιλογή Force… Ένα διαλογικό παράθυρο εµφανίζεται και µας ζηταέι να δώσουµε τη νέα τιµή του σήµατος. Την αλλαγή στην έξοδο την βλέπουµε στο παράθυρο Wave όπου βλέπουµε τόσο την αλλαγή στην είσοδο, όσο και την οποιαδήποτε επιρροή στην έξοδο. Με αυτόν τον τρόπο είναι δυνατός ο έλεγχος της σωστής λειτουργίας του υλικού που έχουµε περιγράψει µε VHDL. Μετά τον έλεγχο της σωστής λειτουργίας του περιγραφέντος υλικού, ακολουθεί η σύνθεσή του. Μας ενδιαφέρει να µετατρέψουµε την περιγραφή σε σχηµατική αναπαράσταση του υλικού. Αν και αυτό σε µικρά συστήµατα δεν είναι δύσκολο να γίνει µε το χέρι (schematic capture from scratch), σε µεγαλύτερα συστήµατα η πολυπλοκότητα είναι αυξηµένη και δύσκολα γίνεται µε το χέρι. Για αυτό το λόγο δηµιουργήθηκε το εργαλείο Autologic II, ώστε να αυτοµατοποιεί τη µετάβαση από την περιγραφή του υλικού στο σχηµατικό του, απλά επεµβαίνοντας σε κάποιες παραµέτρους σύνθεσης που καθορίζονται από τις προδιαγραφές του συστήµατος. Προκειµένου να ενεργοποιήσουµε το Autologic δίνουµε την εντολή: alui. Το περιβάλλον είναι παραθυρικό και το κύριο παράθυρο του εργαλείου φαίνεται στο σχήµα4. Τα πρώτα βήµατα είναι ο καθορισµός των Schematic Generation και Destination Technology που βρίσκονται στο µενού Setup. Σηµειώνεται ότι πρέπει στο Schematic Generation να ορίσουµε οπωσδήποτε #of pages = 1. Αφού ορίσουµε σωστά αυτές τις διαδικασίες, οι οποίες είναι υπεύθυνες για την δηµιουργία του σχηµατικού σε συγκεκριµµένη τεχνολογία, το επόµενο βήµα είναι να ανοίξουµε τον HDL Browser και να ανοίξουµε στη συνέχεια τη βιβλιοθήκη που περιέχει τα στοιχεία

Page 18: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 16 -

του υλικού. Η βιβλιοθήκη που χρησιµοποιούµε είναι η work και είναι αυτή που έχουµε δηµιουργήσει στη διαδικασία του compiling. Για να χρησιµοποιήσουµε µια βιβλιοθήκη, από τον HDL Browser επιλέγουµε Open Library. Στη συνέχεια, αφού επιλέξουµε την οντότητα και την αρχιτεκτονική που θέλουµε να συνθέσουµε, πρέπει να επιλέξουµε Syntesize->HDL_Design και έτσι µετατρέπουµε τα ports σε generic. Το επόµενο βήµα είναι να κάνουµε Optimization ως προς area προκειµένου να βελτιστοποιηθεί η σχεδίαση. Ακολουθώντας αυτά τα βήµατα έχουµε πραγµατοποιήσει όλες τις απαραίτητες διαδικασίες που απαιτούνται για τη δηµιουργία του σχηµατικού. Το τελευταίο βήµα είναι να το αποθηκεύσουµε και να δώσουµε υπόσταση στο σχηµατικό. Αυτό επιτυγχάνεται µε την επιλογή Save EDDM επιλέγοντας στο παράθυρο διαλόγου το Generate Schematic και δίνοντας όνοµα στο σχηµατικό. Αυτή είναι και η διαδικασία δηµιουργίας του σχηµατικού από τον κώδικα της VHDL. Το σχηµατικό βρίσκεται αποθηκευµένο στο φάκελο eddm.

Σχήµα 2.4: Το περιβάλλον εργασίας του Autologic II

Όπως παρατηρήσαµε στο Autologic II, η τεχνολογία, για την οποία δηµιουργήσαµε το σχηµατικό, είναι η es2. Αν θελήσουµε να δούµε το σχηµατικό που δηµιουργήσαµε, ή να διασύνδεουµε τα διάφορα components που θα προκύψουν στις εργαστηριακές ασκήσεις, χρησιµοποιούµε το εργαλείο Design Architect, το οποίο ενεργοποιείται µε την εντολή es2_da. Μπορούµε τώρα να επιλέξουµε το σχηµατικό που δηµιουργήσαµε µε την επιλογή Open Sheet… και επιλέγοντας από το eddm φάκελο το component. Προκειµένου να κάνουµε τυχόν διασυνδέσεις µε άλλα components χρησιµοποιούµε τις πληροφορίες που υπάρχουν στο Παράρτηµα Α1 των εργαστηριακών σηµειώσεων. Όπως µπορεί να παρατηρηθεί εύκολα, στο σχηµατικό που δηµιουργήσαµε, υπάρχουν όλες οι πληροφορίες των µοντέλων που χρησιµοποιήθηκαν. Σε αυτό το επίπεδο αν θελήσουµε να εξοµοιώσουµε τη συµπεριφορά του νέου σχηµατικού, ή του προκύπτοντος συστήµατος από τις διασυνδέσεις των components, πρέπει να δηµιουργήσουµε αρχικά ένα viewpoint, ένα ενδιάµεσο αρχείο µεταξύ του Design Architect και του εξοµοιωτή µέσω του οποίου θα επικοινωνούν, µε την

Page 19: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 17 -

εντολή es2_dve <schematic_sheet> -ind. Ο εξοµοιωτής που θα χρησιµοποιήσουµε δεν είναι άλλος από τον QuickSim II, την έκδοση για VHDL του οποίου συναντήσαµε σε προηγούµενη παράγραφο, και ο οποίος ενεργοποιείται µε την εντολή: es2_qsim <component name>. Περισσότερες πληροφορίες για το QuickSim II υπάρχουν στο Παράρτηµα Α2.

Page 20: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 18 -

Page 21: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 19 -

3 Εργαστηριακές Ασκήσεις

Οι εργαστηριακές ασκήσεις που θα πραγµατοποιηθούν στα πλαίσια του εργαστηρίου του µαθήµατος «Σχεδίαση Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI», ακολουθούν µια ροή κλιµακούµενης δυσκολίας. Σε όλες τις εργαστηριακές ασκήσεις θα πρέπει να αναπτυχθεί κώδικας σε VHDL. Ξεκινώντας έτσι από απλές περιγραφές σε VHDL θα καταλήξουµε σε πολύπλοκες δοµές ακολουθώντας την παρακάτω πορεία. • Βασικές Αρχές – Συνδυαστικά Κυκλώµατα. • Ακολουθιακά Κυκλώµατα. • Σύνθετα Κυκλώµατα (συνεργασία FSMs και συνδυαστικών κυκλωµάτων). • Υποµονάδες Επεξεργαστών. • ∆οµή System on Chip (SoC). • System on Chip για FIR φίλτρο. Κάθε υποκεφάλαιο που ακολουθεί αποτελεί και την περιγραφή της κάθε εργαστηριακής άσκησης και είναι ενδεδειγµένη η µελέτη τους πριν από την διεξαγωγή κάθε εργαστηριακής άσκησης προκειµένου να ολοκληρωθεί σωστά µέσα στα επιτρεπτά χρονικά όρια. Σε κάθε εργαστηριακή άσκηση πρέπει να αναπτυχθεί κώδικας σε VHDL για κάθε υποκύκλωµα που ζητείται να περιγραφεί και εν συνεχεία να γίνει εξοµοίωση της λειτουργίας της περιγραφής που έχουµε δηµιουργήσει. Είναι σηµαντικό να δηµιουργηθούν τα κατάλληλα σήµατα ελέγχου (test vectors) ώστε να ελέγξουµε σωστά την περιγραφή µας. Στη συνέχεια συνθέτουµε την περιγραφή µας και ελέγχουµε για τυχόν λάθη κατά τη σύνθεση, κάνουµε τις κατάλληλες τροποποιήσεις και τέλος ελέγχουµε ξανά την λειτουργία του κυκλώµατος, το οποίο έχουµε πια σε σχηµατικό. Κατά τη σύνθεση µας ενδιαφέρει να δούµε µε ποιο τρόπο γίνεται η βελτιστοποίηση στη σύνθεση µε παραµέτρους Εµβαδό (Area) και Χρόνο (Time).

3.1 Εργαστηριακή Άσκηση 1 (Βασικές Αρχές – Συνδυαστικά Κυκλώµατα) Η εργαστηριακή άσκηση σκοπό έχει να µάθουµε να δηµιουργούµε µοντέλα συµπεριφοράς (behavioral model) και δοµικά µοντέλα (structural model). Πώς δηµιουργείται το σχηµατικό των κυκλωµάτων και µε ποιο τρόπο µπορούµε να το εξοµοιώσουµε µε test benches. Τέλος, θα µελετήσουµε και τους διάφορους τύπους που µπορούν να οριστούν στην περιγραφή σε VHDL.

Η πρώτη περιγραφή που πρέπει να γίνει σε VHDL είναι το µοντέλο συµπεριφοράς ενός πολυπλέκτη δύο εισόδων (1-bit). Πρέπει να γραφτεί δηλαδή µια δήλωση οντότητας (entity declaration) και µια αρχιτεκτονική συµπεριφοράς για ένα πολυπλέκτη δύο εισόδων, µε εισόδους a, b και sel και έξοδο z. Όταν το sel είναι ‘0’ τότε στην έξοδο z θα περνά η είσοδος a και στην αντίθετη περίπτωση το σήµα b.

Page 22: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 20 -

Παρακάτω παραθέτουµε ένα test bench µε το οποίο µπορούµε να ελέγξουµε τη λειτουργία του πολυπλέκτη (mux) χρησιµοποιώντας ένα εξοµοιωτή VHDL (qhsim). Test Bench for Multiplexer. ENTITY test_bench IS END ENTITY test_bench; - - - - - - - - - - - - - - - - - - - - ARCHITECTURE test_mux OF test_bench IS SIGNAL a,b,sel,z : bit; BEGIN m: ENTITY mux(behav) PORT MAP (a,b,sel,z); stimulus : PROCESS IS BEGIN a<=’0’; b<=’0’; sel<=’0’; WAIT FOR 20 ns; a<=’1’; WAIT FOR 20 ns; sel<=’1’; WAIT FOR 20 ns; b<=’1’; WAIT FOR 20 ns; a<=’0’; WAIT FOR 20 ns; WAIT; END PROCESS stimulus; END ARCHITECTURE test_mux;

Χρησιµοποιώντας την παραπάνω περιγραφή να δηµιουργηθεί ένας πολυπλέκτης τεσσάρων bit (structural model). Παρακάτω δίνεται ένα διάγραµµα της δοµής του πολυπλέκτη αυτού χρησιµοποιώντας την προηγούµενη περιγραφή 4 φορές.

Σχήµα 3.1: Πολυπλέκτης δύο εισόδων (4-bits).

Να περιγραφεί µια απλή ALU (fixed-point άθροιση και αφαίρεση µε σήµα ελέγχου), η οποία όταν η επιλογή πράξης είναι ‘0’ στην έξοδο θα εµφανίζεται το άθροισµα των εισόδων και στην αντίθετη περίπτωση η διαφορά τους.

muxabsel

z

muxabsel

z

muxabsel

z

muxabsel

z

a0b0

a1b1

a2b2

a3b3sel

z0

z1

z2

z3

mux (4-bits)

Page 23: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 21 -

Να περιγραφεί ένας αποµονωτής υψηλής εµπέδησης (tristate buffer). Χρησιµοποιήστε τον παρακάτω πίνακα αληθείας.

Πίνακας αληθείας tristate buffer Είσοδος

Enable ‘0’ ‘L’ ‘1’ ‘H’ ‘0’ ‘Ζ’ ‘Ζ’ ‘Ζ’ ‘Ζ’ ‘L’ ‘Ζ’ ‘Ζ’ ‘Ζ’ ‘Ζ’ ‘1’ ‘0’ ‘0’ ‘1’ ‘1’ ‘H’ ‘0’ ‘0’ ‘1’ ‘1’ άλλο ‘X’ ‘X’ ‘X’ ‘X’

3.2 Εργαστηριακή Άσκηση 2 (Ακολουθιακά Κυκλώµατα) Στην συγκεκριµένη εργαστηριακή άσκηση θα ασχοληθούµε µε ακολουθιακά κυκλώµατα. Το ρολόι σε όλες τις περιγραφές σε VHDL που θα αναπτυχθούν στο εργαστήριο θα πρέπει να είναι τύπου bit. Ελέγχουµε αν έχουµε ρολόι στο κύκλωµά µας µε την έκφραση IF clk=’1’ THEN … ή περιµένουµε µέχρι να έρθει ρολόι µε την έκφραση WAIT UNTIL (clk=’1’)… . Ένας άλλος τρόπος για να ενεργοποιήσουµε το ακολουθιακό κύκλωµα σε ανερχόµενη παρυφή του ρολογιού είναι η έκφραση IF (clk’EVENT AND clk=’1’ AND clk’LAST_VALUE=’0’) THEN … µε την προϋπόθεση ότι έχουµε προσθέσει στα σήµατα ενεργοποίησης του PROCESS το ρολόι. ∆εν θα πρέπει επίσης να ξεχνάµε το σήµα reset µε το οποίο επαναφέρουµε το κύκλωµα σε µια αρχική κατάσταση που έχει οριστεί.

Να αναπτυχθεί σε VHDL η περιγραφή ενός απαριθµητή (counter) ο οποίος έχει ρολόι τύπου bit και έξοδο τύπου integer. Η αρχιτεκτονική συµπεριφοράς θα πρέπει να περιέχει µια διαδικασία (process) η οποία να περιέχει µια µεταβλητή απαρίθµησης και θα είναι αρχικοποιηµένη στο µηδέν. Η διαδικασία θα πρέπει να περιµένει για ρολόι και θα αυξάνει το περιεχόµενό του ενώ θα εµφανίζεται στην έξοδο η µεταβλητή.

Να αναπτυχθεί σε VHDL ένα µοντέλο για ένα ψηφιακό ολοκληρωτή. Ο ψηφιακός ολοκληρωτής θα έχει µια είσοδο ρολογιού τύπου bit και είσοδο/έξοδο δεδοµένων τύπου real. Ο ολοκληρωτής διατηρεί το άθροισµα των διαδοχικών τιµών των δεδοµένων εισόδου. Όταν το ρολόι µεταβαίνει από ‘0’ σε ‘1’, ο ολοκληρωτής πρέπει να προσθέτει τα δεδοµένα εισόδου στο συνολικό άθροισµα και το νέο συνολικό άθροισµα να εµφανίζεται στην έξοδο. Στη συνέχεια θα αναφερθούµε στην υλοποίηση ακολουθιακών κυκλωµάτων χρησιµοποιώντας FSMs (Finite State Machines). Θα ασχοληθούµε µε δύο είδη FSMs, τα Moore και Mealy. • Moore Finite State Machine. Ως Moore machine ορίζεται ένα ακολουθιακό

δικτύωµα του οποίου η έξοδος είναι συνάρτηση της παρούσας κατάστασης µόνο. Ο γράφος κατάστασης για µια Moore machine έχει την έξοδο συσχετισµένη µε την κατάσταση.

Page 24: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 22 -

• Mealy Finite State Machine. Ως Mealy machine ορίζεται ένα ακολουθιακό δικτύωµα του οποίου η έξοδος είναι συνάρτηση της παρούσας κατάστασης και της εισόδου στο σύστηµα.

Σχήµα 3.2: Παραδείγµατα Γράφων Κατάστασης Παρακάτω αναφέρονται τα απαραίτητα «συστατικά» µιας περιγραφής, παρότι δεν υπάρχει τυπικό µέθοδος για καθορισµό FSM, προκειµένου να αναγνωρίζονται από το Autologic II οι περιγραφές FSMs και να παράγονται κυκλώµατα. Έτσι µια περιγραφή µηχανής κατάστασης περιέχει: 1. Μια µεταβλητή κατάστασης, η οποία καθορίζει την κατάσταση της µηχανής. 2. Ένα ρολόι. 3. Καθορισµός των µεταβάσεων των καταστάσεων. 4. Καθορισµός των εξόδων. 5. Μία συνθήκη reset, σύγχρονη ή ασύγχρονη.

Να αναπτυχθεί σε VHDL ένα µοντέλο συµπεριφοράς για ένα αντικλεπτικό συναγερµό σπιτιού. Ο συναγερµός έχει οκτώ αισθητήρες κανονικά ανοικτούς (‘0’). Όταν ένας κλέφτης ανιχνευτεί, ένας από τους αισθητήρες αλλάζει σε ‘1’. Υπάρχει µια επιπρόσθετη είσοδο από ένα διακόπτη και µια έξοδο σε µια σειρήνα. Όταν ο διακόπτης είναι ‘0’, είναι απενεργοποιηµένος ο συναγερµός. Όταν ο διακόπτης γίνει ‘1’ ο συναγερµός ενεργοποιείται µετά από 30 sec. Όταν είναι ενεργοποιηµένος ο συναγερµός, αν ανιχνευτεί διαρρήκτης, ενεργοποιείται η σειρήνα µετά από 30 sec. Αν στο ενδιάµεσο χρόνο ο διακόπτης µεταβεί σε ‘0’ απενεργοποιείται και ο συναγερµός.

Στο βιβλίο Ψηφιακή Λογική, Mano περιγράφεται η χρήση του κώδικα Hamming για τον έλεγχο σφάλµατος και τη διόρθωσή του (16-bit data). Να αναπτυχθούν σε VHDL ένας Hamming code generator και ένας ανιχνευτής και διορθωτής λάθους.

S0-------Z=0

S1-------Z=1

X=1

X=1

X=0 X=0

Παράδειγµα Γράφου Κατάστασης για Moore Machine

S0 S1

X=1/Z=1

X=1/Z=0

X=0/Z=0 X=0/Z=1

Παράδειγµα Γράφου Κατάστασης για Mealy Machine

Page 25: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 23 -

3.3 Εργαστηριακή Άσκηση 3 (Σύνθετα Κυκλώµατα) Χρησιµοποιώντας FSMs και συνδυαστικά κυκλώµατα να αναπτυχθούν σε VHDL:

Ένα µοντέλο ενός κυκλικού απαριθµητή µε έξοδο τύπου natural. Θα είναι αρχικοποιηµένος στο 15 και σε κάθε ρολόι θα µειώνεται κατά 1. Όταν φτάνει το ‘0’, τότε στο επόµενο ρολόι θα πρέπει να επανέλθει στην τιµή 15.

Τροποποιήστε τον παραπάνω απαριθµητή έτσι ώστε να περιλαµβάνει και µια ασύγχρονη είσοδο load, η οποία όταν πάρει τιµή ‘1’, προσδίδει στον απαριθµητή µια προκαθορισµένη τιµή. Όταν η είσοδος load αλλάξει σε ‘0’, τότε η προς τα κάτω απαρίθµηση ξεκινά από την προκαθορισµένη τιµή.

Ένα µοντέλο ενός συστήµατος που υπολογίζει το µέσο όρο 16 αριθµών τύπου real. Το σύστηµα θα έχει ρολόι, είσοδο και έξοδο. Όταν το ρολόι γίνει ‘1’, τότε το σύστηµα δέχεται τον επόµενο αριθµό. Μετά από 16 αριθµούς το σύστηµα θα εµφανίζει στην έξοδο το µέσο όρο και θα επαναλαµβάνει τη διαδικασία για τους επόµενους 16 αριθµούς κ.ο.κ.

3.4 Εργαστηριακή Άσκηση 4 ( Υποµονάδες Επεξεργαστών)

Αναπτύξτε σε VHDL ένα µοντέλο για register file το οποίο αποθηκεύει 16 λέξεις των 32 bits η κάθε µία. Το register file έχει εισόδους και εξόδους δεδοµένων, µήκους 32-bit λέξεων, θύρες read-address και write-address, οι οποίες είναι ακέραιοι από 0 εως 15, και µία θύρα write-enable, τύπου bit. Η θύρα εξόδου δεδοµένων περιέχει τα περιεχόµενα της περιοχής της οποίας η διεύθυνση δίνεται από τη θύρα read-address. Όταν το write-enable είναι ‘1’, τότε τα δεδοµένου εισόδου γράφονται στο register file στη διεύθυνση που περιέχεται στη θύρα write-address.

Αναπτύξτε σε VHDL ένα πολλαπλασιαστή κινητής υποδιαστολής δύο σταδίων pipeline. Οι είσοδοι και η έξοδος είναι single-precision. Στο πρώτο στάδιο ο πολλαπλασιαστής πολλαπλασιάζει τα mantissas, αφαιρεί τα biases από τον εκθέτη και προσθέτει τον unbiased εκθέτη. Στο δεύτερο στάδιο κανονικοποιείται το αποτέλεσµα και προστίθεται το bias στον εκθέτη που προέκυψε. Μία πολυωνυµική συνάρτηση βαθµού n γράφεται:

οπου x είναι η µεταβλητή εισόδου. Μπορεί επίσης να γραφτεί:

Μπορούµε εποµένως µε n-stage pipeline να υπολογίσουµε το πολυώνυµο. Στο πρώτο στάδιο υπολογίζουµε το an-1 + anx, στο δεύτερο στάδιο το πολλαπλασιάζουµε µε το x και προσθέτουµε το αποτέλεσµα στο an-2 κ.ο.κ.

Αναπτύξτε ένα µοντέλο συµπεριφοράς ενός συστήµατος που υπολογίζει πολυώνυµα τρίτου βαθµού. Η οντότητα είναι:

nn xaxaxaaxp ⋅++⋅+⋅+= ...)( 2

210

)...)))(...((()( 1210 xaaxaxaxaxp nn ++++= −

Page 26: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 24 -

ENTITY polynomial IS PORT (clk,mode,clr : IN bit; coeff_addr : IN bit_vector (1 DOWNTO 0); x : IN bit_vector (15 DOWNTO 0); p : IN bit_vector (15 DOWNTO 0); ovf : OUT bit); END ENTITY polynomial; Η είσοδος mode χρησιµοποιείται για να αποθηκευτούν οι συντελεστές στους εσωτερικούς καταχωρητές. Όταν το mode είναι ‘1’, τότε η τιµή της εισόδου x αποθηκεύεται στον καταχωρητή που επιλέγεται από την είσοδο coeff_addr. Όταν το mode είναι ‘0’, η είσοδος x χρησιµοποιείται σαν η επόµενη τιµή δεδοµένων για την οποία το πολυώνυµο πρόκειται να υπολογιστεί. Η είσοδος clr χρησιµοποιείται για να αρχικοποιήσει τους εσωτερικούς pipeline καταχωρητές. Η είσοδος x και η έξοδος p αναπαριστούν κωδικοποιηµένες τιµές fixed-point, µε την υποδιαστολή εφαρµοσµένη µεταξύ των bits 11 και 10. Έτσι µπορούν να αναπαρασταθούν τιµές στο πεδίο [-16.0,+16.0]. Το ίδιο πεδίο χρησιµοποιείται και για τους εσωτερικούς καταχωρητές. Αν ο υπολογισµός σε οποιοδήποτε στάδιο υπερχειλίσει, µια σηµαία υπερχείλισης µεταδίδεται στα υπόλοιπα στάδια του pipeline και αναπαρίσταται στην έξοδο ovf. ∆οκιµάστε το µοντέλο για τις παρακάτω συναρτήσεις:

6x

2xx1e

32x +++≈

2x1cosx

2−≈

Page 27: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 25 -

Α1 Παράρτηµα

Σχηµατική περιγραφή κυκλώµατος: Θα παρουσιαστεί συνοπτικά το εργαλείο Design Architect της Mentor Graphics. Χρησιµοποιώντας το εργαλείο αυτό δηµιουργούµε το σχηµατικό (schematic) του κυκλώµατος. Πρέπει να αναφερθεί ότι είτε το κύκλωµα περιγράφεται σε επίπεδο πυλών είτε σε επίπεδο διασύνδεσης υποσυστηµάτων (subsystem modules), το ίδιο πρόγραµµα θα χρησιµοποιηθεί. Συνεπώς υπεισέρχεται η έννοια των επιπέδων σχεδίασης. Στο κατώτερο επίπεδο σχεδίασης, ο χρήστης σχεδιάζει χρησιµοποιώντας πύλες κ.τ.λ ενώ όσο ανεβαίνει επίπεδο, χρησιµοποιεί ποιό “αφηρηµένα” λογικά κοµµάτια όπως πολυπλέκτες, ALU’s κ.ο.κ. Το ίδιο ισχύει, ως προς τα επίπεδα, και για οποιαδήποτε γλώσσα περιγραφής υλικού (π.χ. VHDL) χρησιµοποιηθεί. Συνεπώς θα παρουσιαστούν οι σηµαντικότερες λειτουργίες του προγράµµατος και πώς γίνεται η µετάβαση από χαµηλότερο επίπεδο σχεδίασης σε υψηλότερο. Θα γίνει αναφορά µόνο στις λειτουργίες που χρησιµοποιούνται πιο συχνά και συνιστούν ένα υποσύνολο ικανό να µας επιτρέψουν να σχεδιάσουµε ολοκληρωµένα κυκλώµατα. Α1.1 Περιβάλλον εργασίας του Design Architect: Για εκκίνηση του Design Architect, από το hpterm δίνουµε την εντολή: es2_da

Σχήµα Α1.1: Γραφικό περιβάλλον του Design Architect.

Page 28: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 26 -

Όπως είναι εµφανές από το παραπάνω σχήµα, το γραφικό περιβάλλον του Design Architect χωρίζεται σε τέσσερα µέρη. Στο µενού των λειτουργιών (που βρίσκεται ψηλά), στον κυρίως χώρο (στο κέντρο της οθόνης) και στην παλέττα των λειτουργιών (στα δεξιά). Τέλος, στο κάτω µέρος αναγράφονται τα hot-keys και οι αντιστοιχίες τους. Στη συνέχεια θα αναλυθούν ένα προς ένα τα παραπάνω. Α1.2 Μενού του Design Architect: Το µενού του Design Architect, όπως µπορούµε να δούµε από το Σχήµα Α1.1 παραπάνω, βρίσκεται στην κορυφή του παραθύρου εργασίας και έχει τη µορφή. MGC File Edit Setup Miscellaneous Libraries Check Report View Blocks Help Meta

Σχήµα Α1.2: Το µενού του Design Architect. Από τα παραπάνω, επιλέγουµε να γίνει αναφορά µόνο σε αυτά τα οποία χρησιµοποιούνται πιο συχνά και είναι ευνόητη η γνώση τους. • Με την επιλογή File > Open Sheet, ανοίγουµε ένα νέο ή παλιό αρχείο (file) που

περιέχει το σχηµατικό του κυκλώµατος. Αυτή είναι λογικά και η πρώτη επιλογή που πραγµατοποιείται. Το ίδιο, όπως θα φανεί παρακάτω, επιτυγχάνεται µε την ίδια επιλογή στην παλέττα, στα δεξιά του παραθύρου εργασίας. Μετά από αυτή την επιλογή, εµφανίζεται ένα παράθυρο από το οποίο επιλέγεται το αρχείο (file) που εµπεριέχει το σχηµατικό που θα χρησιµοποιηθεί ή µπορούµε να δώσουµε το όνοµα του νέου αρχείου.

Σχήµα Α1.3: Open Sheet επιλογή. ∆ίνοντας το όνοµα στο γραφικό περιβάλλον του Design Architect εµφανίζεται ένα παράθυρο στο οποίο απεικονίζεται το σχηµατικό που επιλέχθηκε (ή ένα κενό παράθυρο στην περίπτωση νέου sheet).

/lab0/alu1

Page 29: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 27 -

• Με την επιλογή Edit ο σχεδιαστής µπορεί να επέµβει σε οποιοδήποτε στοιχείο του σχηµατικού και να το τροποποιήσει (φυσικά περιλαµβάνονται επιλογές τύπου Delete κ.τ.λ.)

• Από την επιλογή Libraries µπορούν να επιλεχθούν οι βιβλιοθήκες που θα χρησιµοποιηθούν για τη σχεδίαση καθώς και generators (software παραµετροποιηµένες γεννήτριες λογικών στοιχείων π.χ. αθροιστές, πολυπλέκτες) προκειµένου να δηµιουργηθούν πολύπλοκης λογικής δοµικά στοιχεία (LogicLib).

• Με την επιλογή Check γίνεται ο έλεγχος του σχηµατικού (π.χ. λανθασµένη σύνδεση δύο εισόδων) καθώς και έλεγχος παραβίασης σχεδιαστικών κανόνων.

• Από την επιλογή View ρυθµίζεται το βάθος του zoom στο σχηµατικό. Α1. 3 Παλέττες του Design Architect: Οτιδήποτε και αν απαιτείται να σχεδιαστεί στο Design Architect, επιλέγεται από τις παλέτες που βρίσκονται στα δεξιά του παραθύρου εργασίας. Οι παλέτες που είναι στη διάθεση του σχεδιαστή είναι τέσσερις: Session, Draw, Add/Route και Text. Παρακάτω γίνεται αναφορά για κάθε µία ξεχωριστά, καθώς επίσης εξετάζονται και οι πιο συχνά χρηµοποιούµενες επιλογές.

Σχήµα Α1.4: Session palette. Στο σχήµα Α1.4 δίνεται η προεπιλεγµένη παλέτα του εργαλείου. Όπως έχει ήδη αναφερθεί µπορεί να δηµιουργηθεί ή να “ανοιχτεί” ένα ήδη υπάρχον σχηµατικό από εδώ µε την επιλογή Open Sheet. Επίσης από εδώ µπορεί να δηµιουργηθεί ή να

Ανοίγει νέο σχηµατικό ή ένα ήδη Ανοίγει νέο σύµβολο

ή ένα ήδη υπάρχον

Ανοίγει ένα νέο µοντέλο VHDL ή ένα

Ανοίγει το παράθυρο διαλόγου της

LogicLib, επιλέγουµε στη συνέχεια το

t

Page 30: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 28 -

“ανοιχτεί” ένα σύµβολο µε την επιλογή Open Symbol. Τα σύµβολα είναι στοιχεία που δηµιουργούνται από το σχεδιαστή προκειµένου να “ανέβει” επίπεδο σχεδιασµού. Έτσι αν έπρεπε να φτιαχτεί µία µνήµη, θα κατασκευαζόταν ένα cell µνήµης το οποίο θα µετατρεπόταν σε σύµβολο και στη συνέχεια θα συνδέονταν όλα τα σύµβολα προκειµένου να σχεδιαστεί η µνήµη (π.χ. 64*8 cells θα µας έδιναν µνήµη 64 bytes). Ένα σύµβολο µπορεί να περιέχει ένα επι µέρους κύκλωµα ή ένα µοντέλο VHDL (κώδικα περιγραφής λειτουργίας, συµπεριφοράς ή δοµής). Ένα µοντέλο που περιγράφεται µε VHDL και όχι από σχηµατικό µπορούµε να το ανοίξουµε µε την επιλογή Open VHDL. Παρακάτω βλέπουµε την Draw palette από την οποία δηµιουργούµε τα σύµβολα που θα χρησιµοποιηθούν στο σχηµατικό µας. Σε αυτά συσχετίζουµε κάποιο κύκλωµα, που λειτουργεί ως υποσύστηµα στο κύκλωµά µας, και τα χρησιµοποιούµε στη σχεδίαση του συνολικού κυκλώµατος.

Σχήµα Α1.5: Draw palette.

Ένα σύµβολο µπορεί είτε να σχεδιαστεί χρησιµοποιώντας την παλέττα Draw και στη συνέχεια να συσχετιστεί µε ένα κύκλωµα ή ένα µοντέλο VHDL ή το αντίθετο, δηλαδή να σχεδιαστεί πρώτα το κύκλωµα και στη συνέχεια να µετατραπεί σε σύµβολο (Convert to Symbol). Ένα σύµβολο µπορεί να έχει ότι γραφική µορφή του δοθεί από το σχεδιαστή, απαραιτήτως όµως πρέπει να προστεθούν οι είσοδοι και

Προσθέτει ακροδέκτες στο σύµβολο

Σχεδιάζει στο σύµβολο ένα τετράπλευρο

Σχεδιάζει στο σύµβολο συνεκτικές γραµµές

Σχεδιάζει στο σύµβολο ένα κύκλοΣχεδιάζει στο σύµβολο

ένα πολύγωνο Σχεδιάζει στο σύµβολο ένα τόξοΤροποποιεί τις

διαστάσεις του συµβόλου

Μετατρέπει το σχηµατικό σε σύµβολο

Page 31: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 29 -

έξοδοι που περιλαµβάνει το επί µέρους κύκλωµα ή το µοντέλο VHDL. Αυτές προστίθενται µε την επιλογή Add Pin, οπότε ένα παράθυρο διαλόγου εµφανίζεται όπου δίνονται τα ονόµατα των εισόδων και εξόδων και στη συνέχεια τοποθετούνται πάνω στο σύµβολο. Στην περίπτωση της αυτόµατης µετατροπής, οι είσοδοι και οι έξοδοι προστίθενται αυτόµατα.

Σχήµα Α1.7: Add/Route palette.

Επιλογή της βιβλιοθήκης που θα ∆ιασύνδεση µεταξύ κόµβων µε wire

Αυτοµατοποίηση του routing των γραµµών

Οριζόντιο καθρέπτισµα του

Στρέψη του στοιχείου µε βήµα 90 µοιρών

Επιλογή σύµβόλου από το σχεδιαστή

∆ιασύνδεση µεταξύ κόµβων µε data bus

Αυτόµατη διασύνδεση

Σχήµα Α1.6: Add Pin(s) παράθυρο διαλόγου.

Page 32: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 30 -

Με αυτή την παλέτα µπορούµε να σχεδιάσουµε πολύγωνα (Add Rectangle, Add Polygon), κύκλους (Add Circle), τόξα (Add Arc) ή γραµµές (Add Polyline) και να δώσουµε όποια µορφή θέλουµε στο σύµβολο. Η σηµαντικότερη παλέτα ίσως από όλες είναι η Add/Route. Από εδώ µπορούν να επιλεχτούν τα στοιχεία µιας βιβλιοθήκης, να τοποθετηθούν στο σχηµατικό, να διασυνδεθούν και να αυτοµατοποιηθεί η δροµολόγηση των wires και buses. Είναι φανερό ότι από αυτή την παλέτα ξεκινά η σχεδίαση του σχηµατικού, επιλέγοντας εξ αρχής τη βιβλιοθήκη, στη συνέχεια επιλέγοντας τα στοιχεία που θα χρησιµοποιηθούν τοποθετώντας τα στο κύκλωµα, συνδέοντάς τα µε γραµµές wire ή bus και τέλος κάνοντας auto-route των γραµµών. Στη συνέχεια ή αποθηκεύουµε το σχηµατικό ή το µετατρέπουµε σε σύµβολο. Η τελευταία παλέτα που θα εξεταστεί είναι η Text η οποία δεν χρησιµοποιείται παρά µόνο για την αλλαγή κάποιων Text Properties στα σύµβολα ή για να ονοµαστούν οι είσοδοι και οι έξοδοι του σχηµατικού.

Σχήµα Α1.8: Text palette. Όπως είναι φανερό αυτή η παλέτα χρησιµοποιείται συνήθως τελευταία προκειµένου να ονοµαστούν οι γραµµές ώστε να µην υπάρχουν κοινά ονόµατα που προκαλούν λάθη καθώς και για να είναι πιο εύκολη η αναγνώριση των γραµµών από το µοναδικό όνοµά τους. (Το Design Architect θα δώσει αυτόµατα µοναδικό όνοµα σε κάθε γραµµή, το οποίο όµως είναι κωδικοποιηµένο π.χ. $N24).

Αλλαγή της τιµής Text

Ονοµασία των γραµµών wire και

Αλλαγή της τιµής Text σε µία

Προσθέτει την τιµή Text σαν ιδιότητα σε Προσθέτει κείµενο

υπό µορφή σχολίου

Page 33: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 31 -

Τελειώνοντας µε την παρουσίαση των τεσσάρων παλετών, έχει αναφερθεί ένα µεγάλο ποσοστό από τις δυνατότητες του Design Architect. Έχουν αναφερθεί όλες οι λειτουργίες που είναι απαραίτητες να είναι γνωστές στο εισαγωγικό επίπεδο γνώσεων ενός σχεδιαστή, προκειµένου να ξεκινήσει να σχεδιάζει, να κατασκευάζει σύµβολα και να αποθηκεύει την εργασία του. Πρέπει να τονιστεί, αν και έχει αναφερθεί, ότι στο τέλος κάθε σχεδίασης εκτελούµε τον έλεγχο του σχηµατικού και των κανόνων σχεδίασης µε: Check>Sheet>…with Defaults. Τότε εµφανίζεται µία αναφορά που προκύπτει από τον έλεγχο και αναφέρει τα λάθη (errors) και τις προειδοποιήσεις (warnings) που βρέθηκαν. Αν στην αναφορά εµφανίζονται 0 errors και 0 warnings τότε το σχηµατικό δεν έχει κανένα πρόβληµα και είναι έτοιµο να αποθηκευτεί. Στην περίπτωση που αναφερθεί κάποιο error ή warning θα εµφανιστεί κάποιος κωδικός λάθους και σε ποιό σηµείο εµφανίζεται. Επιλέγοντάς το από την αναφορά, στο σχηµατικό επιλέγεται το σηµείο που παρουσίασε το πρόβληµα και είναι δυνατή η διόρθωσή του ή η τροποποίησή του.

Σχήµα Α1.9: Check Sheet αναφορά λαθών. Α1. 4 Hot keys: Προκειµένου να αυτοµατοποιηθούν µερικές λειτουργίες πιο γρήγορα, έχουν αντιστοιχιθεί σε κάποιο συνδυασµό πλήκτρων. Αυτά τα οποία µας ενδιαφέρουν περισσότερο είναι οι συνδυασµοί των F1-F12 πλήκτρων. Παρακάτω φαίνονται και οι αντίστοιχες λειτουργίες που εκτελούν. Αυτή η µπάρα που αναγράφει τα hot-keys βρίσκεται στο κάτω µέρος του παραθύρου εργασίας.

Σχήµα Α1.10: Hot keys του Design Architect.

Page 34: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 32 -

Παρακάτω αναφέρονται οι πιο συχνά χρησιµοποιούµενοι συνδυασµοί από τους παραπάνω. Σηµειώνεται ότι µε s- συµβολίζεται το ταυτόχρονο πάτηµα του Shift, µε c- του Control και µε a- του Alt, ενώ όπου δεν αναφέρεται κάτι από τα παραπάνω η λειτουργία εκτελείται µε το πάτηµα του F1-F12 µόνο. F1 επιλέγεται µία περιοχή και ότι στοιχεία αυτή περιέχει. F2

s c

δεν είναι επιλεγµένο τίποτα. αποεπιλέγει µία περιοχή που ήταν επιλεγµένη. µετακινεί τα επιλεγµένα στοιχεία µέσα στο σχηµατικό.

F3 s c

επιλογή για να προστεθεί wire στο σχηµατικό. επιλογή για να προστεθεί bus στο σχηµατικό. αντιγράφει στο clipboard το επιλεγµένο στοιχείο/α.

F5 s c

τοποθετεί ένα σύµβολο στο σχηµατικό. προσθέτει µία ιδιότητα σε ένα στοιχείο του σχηµατικού. εκτελεί τον έλεγχο του σχηµατικού.

F6 s

ρυθµίζει την κλίµακα ανάλυσης του σχηµατικού και την προσαρµογή σ’ αυτό.ενώνει όλους τους κόµβους που επικαλύπτονται αλλά δεν ενώνονται.

F7 s c

επιλέγεται κείµενο και µετακινείται. τροποποιεί την τιµή του επιλεγµένου text . ανεβαίνει επίπεδο σχεδίασης (ιεραρχία).

F8 s c

επιλέγεται µία περιοχή για να γίνει zoom. γίνεται zoom ώστε να φαίνεται όλο το σχηµατικό στο παράθυρο. κατεβαίνει επίπεδο σχεδίασης (ιεραρχία).

Page 35: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 33 -

Α2 Παράρτηµα

Α2.1 Το εργαλείο QuickSim II: Θα παρουσιαστεί συνοπτικά το εργαλείο QuickSim ΙΙ της Mentor Graphics. Με το QuickSim II είναι δυνατή η εξοµοίωση ενός κυκλώµατος. Το κύκλωµα αυτό µπορεί να περιγράφεται είτε σχηµατικά, είτε µε µοντέλα System-1076, είτε µε κάποια γλώσσα συµπεριφοράς µοντέλου (BLM). Η εξοµοίωση µπορεί να γίνει σε οποιοδήποτε επίπεδο σχεδίασης. Το εργαλείο αναγνωρίζει εισόδους και εξόδους, στη συνέχεια, επεµβαίνοντας σε κάποιες εισόδους δίνοντάς τους τιµές, είναι δυνατόν να παρατηρηθεί η λειτουργική συµπεριφορά του υπό εξοµοίωση κυκλώµατος. Α2.2 Περιβάλλον εργασίας του QuickSim II:

Σχήµα Α2.1: Γραφικό περιβάλλον του QuickSim II. Όπως είναι εµφανές από το παραπάνω σχήµα, το γραφικό περιβάλλον του QuickSim II αποτελείται από τρία βασικά µέρη. Το Menu Bar στο πάνω µέρος της οθόνης (που περιλαµβάνει όλες τις λειτουργίες του εργαλείου σε πτυσσόµενα µενού - pulldown menu bar), τον κυρίως χώρο εργασίας (στο κέντρο της οθόνης) και την παλέτα στα δεξιά (που περιλαµβάνει τις πιο συχνά χρησιµοποιούµενες λειτουργίες). Επίσης στο κάτω µέρος της οθόνης υπάρχει και η καταγραφή των αντιστοιχιών διαφόρων συνδυασµών πλήκτρων µε λειτουργίες του προγράµµατος.

Page 36: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 34 -

Α2.2.1 Μενού του QuickSim II: Το µενού του QuickSim II, όπως φαίνεται στο Σχήµα Α2.1, βρίσκεται στο πάνω µέρος της οθόνης και έχει την παρακάτω µορφή: MGC File Edit Add Delete Setup Run Report View Help

Σχήµα Α2.2: Το µενού του QuickSim II. Από τα παραπάνω θα αναφερθούν µόνο οι πλέον χρησιµοποιούµενες λειτουργίες. • MGC. Επιλογές για την εκτέλεση κοινών εντολών των Mentor Graphics

windows. • File. Επιλογές για άνοιγµα και αποθήκευση σχεδιαστικών πληροφοριών. • Edit. Επιλογές για επιλογή/αποεπιλογή και διαµόρφωση αντικειµένων και

ιδιοτήτων. • Add. Επιλογές για πρόσθεση παραθύρων και αντικειµένων. • Delete. Επιλογές για αφαίρεση αντικειµένων. • Setup. Επιλογές για καθορισµό των παραθύρων και του περιβάλλοντος του

QuickSim II. • Run. Επιλογές για τον έλεγχο της εξοµοίωσης. • Report. Επιλογές για αναφορά σε διάφορα σχεδιαστικά αντικείµενα. • View. Επιλογές για έλεγχο του zoom σε ένα παράθυρο. • Help. Επιλογές για την παροχή γενικών και ειδικών πληροφοριών. Από το µενού File είναι δυνατό να γίνει Open Sheet, επιλογή µε την οποία ανοίγει ένα παράθυρο που περιέχει το σχηµατικό του κυκλώµατος. Από αυτό το παράθυρο µπορούν να επιλεγούν οι είσοδοι, οι έξοδοι ή οι κόµβοι του κυκλώµατος που παρατηρούνται κατά την εξοµοίωση. ∆εν αναφέρονται άλλες επιλογές, αφού οι περισσότερες από αυτές που χρησιµοποιούνται συµπεριλαµβάνονται στις παλέτες του εργαλείου. Παρακάτω αναφέρονται οι παλέτες που µας προσφέρει το εργαλείο. Α2.2.2 Παλέτες του QuickSim II: Όλες οι επιλογές του εργαλείου QuickSim II περιλαµβάνονται στις παλέτες, οι οποίες βρίσκονται στα δεξιά της οθόνης. Από τις παλέτες είναι δυνατό να ανοιχθούν τα παράθυρα που απαιτούνται για την απεικόνιση των αποτελεσµάτων της εξοµοίωσης, να δοθούν τιµές στις εισόδους, να εκκινήσει η εξοµοίωση κ.ο.κ. Παρότι στο QuickSim II o συνολικός αριθµός των παλετών είναι µεγάλος, στο εργαστήριο θα εξεταστούν και θα χρησιµοποιηθούν µόνο δύο. Οι Setup και Stimulus. Παρακάτω παρουσιάζονται και εξετάζονται µία-µία. • Παλέτα Setup:

Η παρακάτω παλέτα χρησιµοποιείται κυρίως για Open Sheet, επιλογή η οποία, όπως έχει αναφερθεί παραπάνω, ανοίγει το σχηµατικό του κυκλώµατος. Οι επιλογές που βρίσκονται στο µέσο της παλέτας, και κάθε παλέτας στο συγκεκριµένο εργαλείο, είναι οι πλέον χρησιµοποιούµενες. Έτσι:

Page 37: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 35 -

Σχήµα Α2.3: Setup palette. • Run. Τρέχει την εξοµοίωση. ∆ίνεται σαν παράµετρος ο χρόνος εξοµοίωσης. • Trace. Ανοίγει το παράθυρο της εξοµοίωσης το οποίο περιέχει εισόδους και

εξόδους του σχηµατικού. Από το παράθυρο που περιέχει το σχηµατικό επιλέγονται οι είσοδοι και οι έξοδοι, καθώς και τα wires και buses που παρατηρούνται κατά την εξοµοίωση.

Σχήµα Α2.4: Trace παράθυρο εισόδων/εξόδων.

Παλέττες του QuickSim II

Άνοιγµα του σχηµατικού του κυκλώµατος

Εκκίνηση της εξοµοίωσης

Εισαγωγή του παραθύρου Trace

∆ιαγραφή της επιλογής

Επιστροφή στην αρχική κατάσταση

Page 38: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 36 -

• Delete. ∆ιαγράφεται η επιλογή, π.χ. µία έξοδος από τη λίστα των εισόδων/εξόδων

που βρίσκονται στο Trace παράθυρο. • Reset. Επαναφέρει την εξοµοίωση στην αρχική κατάσταση, δηλαδή στο σηµείο

t=0 και αφήνει απροσδιόριστες τις εισόδους. • Παλέτα Stimulus: Η παλέτα Stimulus είναι η πιο σηµαντική και η πιο χρησιµοποιούµενη παλέτα από όλες όσες περιλαµβάνει το QuickSim II. Σε αυτή την παλέτα είναι δυνατόν να οριστεί το ρολόι του κυκλώµατος, να οριστούν οι τιµές των εισόδων είτε µε σταθερές τιµές είτε µε παραγωγή ενός pattern σαν είσοδο, να τροποποιηθούν ή να διαγραφούν αυτές οι τιµές, να δηµιουργηθεί ένα αρχείο κυµατοµορφών που θα χρησιµοποιηθεί στην εξοµοίωση κ.ο.κ.

Σχήµα Α2.5: Stimulus palette.

Παλέττες του QuickSim II

Εξαναγκάζει την επικράτηση µίας τιµής

Εκκίνηση της εξοµοίωσης Εισαγωγή του

παραθύρου Trace

∆ιαγραφή της επιλογής

Επιστροφή στην αρχική κατάσταση

Προσθέτει το ρολόϊ του κυκλώµατος

Παράγει µία ακολουθία τιµών για την εξοµοίωση

∆ιαµόρφωση των κυµατοµορφών

Ακύρωση των εξαναγκασµένων τιµών

Αποθήκευση µιας data base κυµατοµορφών

Άνοιγµα µιας data base κυµατοµορφών

∆ηµιουργία κυµατοµορφής∆ηµιουργία µιας νέας database κυµατοµορφών

Βασική database κυµατοµορφών

Page 39: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 37 -

Επιλέγοντας από την παραπάνω παλέτα την επιλογή Trace, ανοίγει το παράθυρο της εξοµοίωσης. Σε αυτό αναγράφονται οι είσοδοι και οι έξοδοι που έχουµε επιλέξει από το παράθυρο του σχηµατικού του κυκλώµατος. Στη συνέχεια, επιλέγοντας µία είσοδο, µε το αριστερό κουµπί του mouse, είναι δυνατό είτε να εξαναγκάσουµε µία είσοδο να πάρει µία σταθερή τιµή (1-Υψηλή στάθµη, 0-Χαµηλή στάθµη, Χ-Απροσδιόριστη κατάσταση) χρησιµοποιώντας την επιλογή Force to state, είτε να πάρει τιµή από µία γεννήτρια patterns, τα οποία µπορεί να ορίσει ο χρήστης χρησιµοποιώντας την επιλογή Pattern generator. Αυτές είναι οι βασικές επιλογές για να οριστούν τα διανύσµατα που θα χρησιµοποιηθούν στην εξοµοίωση. Ποιό advanced τεχνικές χρησιµοποιούν κυµατοµορφές που ορίζονται από το χρήστη, συγκεντρώνονται προκειµένου να σχηµατίσουν µία βάση δεδοµένων και από αυτή τη βάση δεδοµένων προέρχονται τα διανύσµατα εξοµοίωσης.

Σχήµα Α2.6: Pattern Generator. Α2.2.3 Hot-keys του QuickSim II: Όπως έχει αναφερθεί, στο κάτω µέρος της οθόνης υπάρχουν οι αντιστοιχίες των συνδυασµών πλήκτρων µε τις πιο συνηθισµένες λειτουργίες. Παρακάτω παραθέτονται αυτοί οι συνδυασµοί.

Page 40: VHDL Lab Notes

Σχεδιασµός Ολοκληρωµένων Συστηµάτων µε Τεχνικές VLSI

- 38 -

Σχήµα Α2.7: Hot-keys του QuickSim II.