ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 1

Σχετικά έγγραφα
Οδηγίες εγκατάστασης και χρήσης του Quartus

Εισαγωγή στη σχεδιαστική ροή της Xilinx

Lab 2 Manual - Introduction to Xilinx

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

Εισαγωγή στη Verilog με το ISE

ΑΣΚΗΣΗ 4 η ΕΙΣΑΓΩΓΗ ΣΤΗ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ ΜΕ ΧΡΗΣΗ Η/Υ (QUARTUS II ALTERA)

ΑΣΚΗΣΗ 2η ΥΛΟΠΟΙΗΣΗ ΑΠΟΚΩΔΙΚΟΠΟΙΗΤΗ ΟΘΟΝΗΣ 7 ΤΜΗΜΑΤΩΝ

ΜΑΘΗΜΑ Άνοιγμα Της Εφαρμογής Επεξεργασίας Κειμένου. 2. Κύρια Οθόνη Της Εφαρμογής Κειμένου ΣΤΟΧΟΙ:

ΜΑΘΗΜΑ 10 Ο ΟΡΓΑΝΩΣΗ ΤΗΣ Β ΓΙΑ ΧΡΗΣΤΕΣ (NON-EXPERTS) Α. ΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ ΕΠΙΛΟΓΩΝ 1. TOOLS DATA UTILITIES SWITCHBOARD MANAGER YES

ΗΜΥ 213 Εργαστήριο Οργάνωσης Η/Υ και Μικροεπεξεργαστών Εαρινό εξάμηνο Διδάσκων: Γιώργος Ζάγγουλος

1 Περίληψη Η εργασία έγινε στα πλαίσια του μαθήματος των Ψηφιακών Ηλεκτρονικών Συστημάτων με σκοπό αρχικά την εκμάθηση της γλώσσας VHDL (Very High Spe

ΑΣΚΗΣΗ 2 η N-MOS ΚΑΙ P-MOS TRANSISTOR ΩΣ ΔΙΑΚΟΠΤΗΣ

Επιβεβαίωση ορθής λειτουργίας απλών ψηφιακών κυκλωμάτων

ΑΣΚΗΣΗ 1η ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΣΧΕΔΙΑΣΗΣ QUARTUS II ΤΗΣ ALTERA

ηµιουργία Αρχείου Πρότζεκτ (.qpf)

Κέντρο υποστήριξης HP. Εισαγωγή. Τι χρειάζεται να γνωρίζετε. Λήψη και εγκατάσταση της λύσης Vista στα Windows 8. 1 of 5 1/7/2014 2:09 μμ

Προπαρασκευαστική παρουσίαση. για το Εργαστήριο ΗΜΥ 211. και το λογισμικό Altera Quartus II

Συστήματα Μικροεπεξεργαστών

Εφαρμογές Ψηφιακών Ηλεκτρονικών

ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων

CADENCE. User Manual

Ενότητα 21 Pivot Tables

ΜΑΘΗΜΑ Άνοιγμα Της Εφαρμογής Υπολογιστικών Φύλλων. 2. Κύρια Οθόνη Της Εφαρμογής Υπολογιστικών Φύλλων ΣΤΟΧΟΙ:

ΕΡΓΑΣΤΗΡΙΟ FRONT PAGE 3

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

2.9.3 Χρήση λογισμικού παρουσιάσεων για τη δημιουργία απλών παρουσιάσεων ρουτίνας

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 1

Εισαγωγή στις πύλες NAND, NOR και XOR Σχεδιασμός Ελεγκτή Λαμπτήρων με πολλαπλούς διακόπτες και Ανιχνευτή Πρώτων Αριθμών

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Χειµερινό Εξάµηνο

BHMATA ΓΙΑ ΑΝΑΒΑΘΜΙΣΗ ΣΤΟ 3S/I.T.P.

ΑΣΚΗΣΗ 8 η -9 η ΣΧΕΔΙΑΣΗ ΑΡΙΘΜΗΤΙΚΗΣ ΛΟΓΙΚΗΣ ΜΟΝΑΔΑΣ ΤΕΣΣΑΡΩΝ ΔΥΑΔΙΚΩΝ ΨΗΦΙΩΝ

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ DVR KTEC

Διαχείριση Έργων Πληροφορικής Εργαστήριο

ΗΥ220: Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης Χειµερινό Εξάµηνο

Ενσωματωμένα Συστήματα

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

ΔΙΑΔΙΚΑΣΙA ΜΕΤΑΦΟΡΑΣ ΥΛΙΚΟΥ ΜΑΘΗΜΑΤΟΣ ΑΠΟ BLACKBOARD VISTA ΣΕ MOODLE

Προπαρασκευαστική Άσκηση. για το Εργαστήριο ΗΜΥ 211. και το λογισμικό Altera Max +Plus II

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ

Οδηγός Εγκατάστασης

IDIKA eprescription SignMed Authentication & Digital Signature Client για Windows

Συστηµάτων ΗΜΥ211. Στόχοι Εργαστηρίου. Πανεπιστήμιο Κύπρου. Πανεπιστήμιο Κύπρου. Εργαστήριο Ψηφιακών Συστηµάτων ΗΜΥ211 Χειµερινό 2013

ΗΥ220: Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης Χειµερινό Εξάµηνο

Δημιουργία μιας εφαρμογής Java με το NetBeans

TeleCost Hotel για Panasonic TDA

Αντιγραφή με χρήση της γυάλινης επιφάνειας σάρωσης

Introduction IP Cores

ΤΕΙ Πελοποννήσου Τμήμα Πληροφορικής. Οδηγίες Εγκατάστασης VPN Σύνδεσης στο ΤΕΙ Πελοποννήσου

Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες

Οδηγίες εγκατάστασης Δορυφορικής κάρτας Technisat

Εγχειρίδιο Χρήσης Ενημέρωσης Λογισμικού Bluetooth Windows 7

ΔΙΑΔΙΚΑΣΙA ΜΕΤΑΦΟΡΑΣ ΥΛΙΚΟΥ ΜΑΘΗΜΑΤΟΣ ΑΠΟ BLACKBOARD VISTA ΣΕ OPEN ECLASS

Για τους πελάτες που πραγματοποιούν συνδέσεις δικτύου σε λειτουργικό σύστημα Windows

Πανεπιστήµιο Θεσσαλίας

ΟΔΗΓΙΕΣ ΣΥΝΔΕΣΗΣ ΣΤΟ ΑΣΥΡΜΑΤΟ ΔΙΚΤΥΟ eduroam

Αυτόματος διακόπτης αλλαγής φοράς περιστροφής εναλλασσόμενου τριφασικού κινητήρα βραχυκυκλωμένου δρομέα με έλεγχο PLC

Προσομείωση ασύρματων δικτύων με τη χρήση του OPNET Modeler

ΑΝΑΠΑΡΑΓΩΓΗ ΜΑΘΗΣΙΑΚΩΝ ΑΝΤΙΚΕΙΜΕΝΩΝ ΣΤΟ ΦΩΤΟΔΕΝΤΡΟ ΜΑΘΗΣΙΑΚΑ ΑΝΤΙΚΕΙΜΕΝΑ. Οδηγίες για Java

Σχεδιασμός Πλήρους Αθροιστή/Αφαιρέτη

Εισαγωγή στο Εργαστήριο Υλικού

Περιγραφή ψηφιακών συστημάτων με τη γλώσσα VHDL και ανάπτυξη σε προγραμματιζόμενες ολοκληρωμένες

Κατάσταση: Έτοιμο. Ψάχνει για σύνδεση στο internet.

Σχεδιασμός Αποκωδικοποιητή και υλοποίηση του στο Logisim και στο Quartus. Εισαγωγή στο Logisim

ΑΣΚΗΣΗ 9η-10η ΑΡΙΘΜΗΤΙΚΗ-ΛΟΓΙΚΗ ΜΟΝΑΔΑ ΕΝΟΣ ΨΗΦΙΟΥ (1-BIT ALU)

HMY 306 Εργαστήριο Σχεδίασης Ηλεκτρονικών Κυκλωμάτων ΒΟΗΘΗΤΙΚΕΣ ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ ΤΟΥ CADENCE (LAB 1-3)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Σχεδίαση Ψηφιακών Συστημάτων. Ενότητα: ΚΑΤΑΧΩΡΗΤΕΣ - ΑΠΑΡΙΘΜΗΤΕΣ

Μελέτη της απόδοσης φωτοβολταϊκού στοιχείου Πειραματική διαδικασία 1/5. Προκαταρκτικές ρυθμίσεις

Hase οδηγίες χρήσης.

Ενσωματωμένα Συστήματα

COSMOTE E220 USB Modem (3G HSDPA 3.6Mbps) Εγχειρίδιο Χρήσης

Η Εγκατάσταση της Μονάδας AVerMedia και του Δέκτη TV στο Windows Media Center

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Προετοιμασία σύνδεσης του modem. Εγκατάσταση του Modem

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Χειµερινό Εξάµηνο

Οδηγός Σύνδεσης στο Ασύρματο Δίκτυο cs-wifi του Τμήματος Πληροφορικής του Πανεπιστημίου Κύπρου για Windows 7, CentOS 6, Mac OS, IOS, και Android

Οδηγός Χρήσης για Windows

utorrent 1.6 Θα πρέπει ο φάκελος να είναι κάπως έτσι:

Για περισσότερες πληροφορίες σχετικά με τη συμβατότητα του λογισμικού με άλλα λειτουργικά συστήματα, επικοινωνήστε με το τμήμα υποστήριξης πελατών.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΥΠΗΡΕΣΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΥΠΟΔΟΜΗΣ ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΤΗΣ ΥΠΗΡΕΣΙΑΣ ΤΗΛΕΟΜΟΙΟΤΥΠΟΥ (FAX) ΜΕΣΩ ΤΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ WEBUTIL

Οδηγός Σύνδεσης στο Ασύρματο Δίκτυο cs-wifi του Τμήματος Πληροφορικής του Πανεπιστημίου Κύπρου για Windows 7

ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017)

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

Hase οδηγίες χρήσης.

Οδηγίες Εγκατάστασης της εφαρμογής Readium και Readium για μαθητές με αμβλυωπία για την ανάγνωση βιβλίων epub σε Υπολογιστή.

HMY 306 Εργαστήριο Σχεδίασης Ηλεκτρονικών Κυκλωμάτων ΒΟΗΘΗΤΙΚΕΣ ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ ΤΟΥ CADENCE (LAB 1-3)

Ο ΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ. MS SQL Server Για τις ανάγκες των εφαρµογών της

HMY 306 Εργαστήριο Σχεδίασης Ηλεκτρονικών Κυκλωμάτων ΒΟΗΘΗΤΙΚΕΣ ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ ΤΟΥ CADENCE (LAB 1-3)

Εγκατάσταση Microsoft SQL Server

SYM-O-NET ΟΔΗΓΟΣ ΧΡΗΣΗΣ

Εγκατάσταση αρχείων βιβλιοθήκης VHOPE και VHOPE

ΣΥΣΤΗΜΑΤΑ SCADA. Μέρος 5. Δικτύωση για Απομακρυσμένο Έλεγχο και Μεταφορά Δεδομένων

2. ΞΕΚΙΝΩΝΤΑΣ ΤΟ PSPICE

Εγχειρίδιο Χρήσης Ενημέρωσης Λογισμικού Bluetooth Windows 7 IVE-W530BT

Εισαγωγή στο SPSS. Για την πρώτη σας προσπάθεια να εξοικειωθείτε με το SPSS, σκεφτείτε το παρακάτω πείραμα.

ΕΓΚΑΤΑΣΤΑΣΗ ΣΥΝ ΕΣΗΣ DIAL-UP ΣΕ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ WINDOWS XP

2. Κάντε κλικ στο παράθυρο όψης Top για να το ενεργοποιήσετε, ώστε να σχεδιάσετε το πάτωµα του δωµατίου.

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση

Εγκατάσταση του εκτυπωτή από το CD λογισμικού και τεκμηρίωσης

ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΥΠΗΡΕΣΙΑ OTE TV GO ΣΕ ΥΠΟΛΟΓΙΣΤΗ (PC/LAPTOP)

Χρόνοι Μετάδοσης και Διάδοσης

Transcript:

Σε αυτή την εισαγωγική εργαστηριακή άσκηση θα δούμε αναλυτικά τη χρήση του εργαλείου Vivado IDE της Xilinx για τη δημιουργία ενός απλού κυκλώματος δυαδικού μετρητή με χρήση της VHDL και την υλοποίηση του στην αναπτυξιακή κάρτα ZedBoard. Θα δούμε αναλυτικά τα βήματα της προσομοίωσης, του ορισμού περιορισμών (constraints), της σύνθεσης και της υλοποίησης (implementation) του σχεδίου χρησιμοποιώντας τις προκαθορισμένες ρυθμίσεις και της ανάλυσης των αποτελεσμάτων σε κάθε βήμα. Τέλος, θα δούμε πως παράγεται το bitstream ώστε να μπορεί να «κατέβει» το σχέδιο στο υλικό (FPGA device) για να γίνει η επαλήθευση της λειτουργίας του. Στόχοι Με την ολοκλήρωση του εργαστηρίου θα είστε σε θέση να: Δημιουργείτε ένα project στο Vivado, να ορίζετε τα αρχεία HDL που περιγράφουν το μοντέλο του κυκλώματος και να ορίζετε ως target, το ZYNQ FPGA που φιλοξενείται στην κάρτα ZedBoard. Χρησιμοποιείτε το αρχείο Xilinx Design Constraint (XDC) για να ορίζετε τα constraints που αφορούν τις θέσεις των pin του FPGA και timing constraints Προσομοιώνετε το σχέδιο με τον simulator του Vivado Kάνετε σύνθεση (synthesis) και υλοποίηση (implementation) του σχεδίου VHDL Αναλύετε τα αποτελέσματα Παράγετε το αρχείο προγραμματισμού (bitstream) του FPGA Προγραμματίζετε το ZYNQ FPGA χρησιμοποιώντας το αρχείο bitstream

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Περιγραφή του σχεδίου Το κύκλωμα που θα αρχικά θα ξεκινήσετε είναι ένας απλός, δυαδικός μετρητός των 4-bit. Επειδή το clk του συστήματος δίδεται από τον εξωτερικό κρύσταλλο 100MHz που διαθέτει η κάρτα, για να μπορέσετε να επαληθεύσετε την ορθή λειτουργία του μετρητή οπτικά από τα διαθέσιμα LEDs μετά τον προγραμματισμό του FPGA, θα πρέπει ο μετρητής να δέχεται ένα σήμα enable με χαμηλή συχνότητα. Σε πρώτη φάση, το σήμα enable αυτό θα παράγεται εσωτερικά από το ίδιο το σύστημα από τη μονάδα Enable_gen. Η μονάδα Enable_gen είναι μια γεννήτρια παλμών (pulse generator) που δίνει 1 παλμό enable μετά από συγκεκριμένο αριθμό κύκλων (ticks). Ο αριθμός των ticks αυτός δίδεται ως VHDL generic έτσι ώστε αφενός να μπορέσετε να προσομοιώσετε την ορθή λειτουργία του συστήματος θέτοντας τον αριθμό των ticks να είναι σχετικά μικρός (πχ. 10), αφετέρου να παράγετε σήμα enable με συχνότητα περίπου 1Hz θέτοντας τον αριθμό των ticks να είναι αντίστοιχα μεγάλος (πχ. 100,000,000). Ενναλακτικά, σύστημα μπορεί να δέχεται το σήμα enable εξωτερικά από τον χρήστη με την χρήση ενός Push Button (BTNC) της κάρτας με κατάλληλα κυκλώματα αποκλειδωνισμού (debouncing) και ανίχνευσης ανερχόμενης ακμής (edge detection). Το αρχικό σύστημα παρουσιάζεται παρακάτω ενώ ο πηγαίος κώδικας βρίσκεται στο e-class. System Clk 100MHz Reset Counter enable Enable_gen q[3:0] Εικόνα 1. Περιγραφή του βασικού συστήματος που περιέχει τον δυαδικό μετρητή Η γενική ροή σχεδίασης που θα ακολουθήσετε φαίνεται στο παρακάτω σχήμα. Βήμα 1: Δημιουργία ενός Vivado Project χρησιμοποιώντας το IDE Βήμα 2: Προσομοίωση του σχεδίου με το Vivado Simulator Βήμα 3: Σύνθεση του σχεδίου Βήμα 4: Υλοποίηση του σχεδίου Βήμα 5: Χρονική Προσομοίωση (Timing Simulation) Βήμα 6: Επαλήθευση του λειτουργίας στο υλικό Εικόνα 2. Γενική ροή σχεδίασης 2

Δημιουργία ενός Vivado Project με το IDE Βήμα 1 1-1. Ανοίξτε το Vivado και δημιουργείστε ένα project έχοντας ως target το device XC7Z020clg484-1 και χρησιμοποιώντας την VHDL. Χρησιμοποιήστε τον πηγαίο κώδικα που σας παρέχεται και το αρχείο lab1.xdc. 1-1-1. Ανοίξτε το Vivado επιλέγοντας Start > All Programs > Xilinx Design Tools > Vivado 2016.4 > Vivado 2016.4 1-1-2. Πατήστε Create New Project για να ξεκινήσετε τον wizard. Θα δείτε ένα κουτί διαλόγου Create A New Vivado Project. Πατήστε Next. 1-1-3. Πατήστε το κουμπί Browse του πεδίου Project location της φόρμας New Project, και κάνετε browse στο φάκελο που θα τοποθετήσετε το project σας (πχ. d:\adsdlabs) και πατήστε Select. 1-1-4. Γράψτε lab1 στο πεδίο Project name. Βεβαιωθείτε ότι το κουτί Create Project Subdirectory box είναι επιλεγμένο. Πατήστε Next. Εικόνα 3. Εισαγωγή Project Name και Project Location 1-1-5. Επιλέξτε την επιλογή RTL Project στην φόρμα Project Type, και επιλέξτε Next. 1-1-6. Χρησιμοποιώντας τα κουμπιά drop-down, επιλέξτε VHDL ως Target Language και Simulator Language στην φόρμα Add Sources. 3

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Εικόνα 4. Επιλογή Target και Simulator language 1-1-7. Πατήστε το Πράσινο Κουμπί + και μετά Add Files και επιλέξτε τα αρχεία counter.vhd, enable_gen.vhd και system.vhd μετά πατήστε OK. Εάν δεν είναι ήδη επιλεγμένο, επιλέξτε Copy sources into project και μετά πατήστε Next για να πάτε στη φόρμα Add Existing IP. 1-1-8. Εφόσον δεν έχουμε να προσθέσουμε κάποιο πυρήνα IP (IP Core), επιλέξτε Next για να μεταβείτε στην φόρμα Add Constraints. 1-1-9. Πατήστε το Πράσινο Κουμπί +, και μετά Add Files πηγαίνετε στον κατάλληλο φάκελο και επιλέξτε το αρχείο lab1.xdc, και πατήστε OK (εάν είναι απαραίτητο). Εάν δεν είναι ήδη επιλεγμένο, επιλέξτε Copy constraints files into project και μετά πατήστε Next. Αυτό το αρχείο Xilinx Design Constraints file αναθέτει τα Ι/Ο Pins του FPGA στους διακόπτες και τα LEDs της αναπτυξιακής κάρτας. Αυτή την πληροφορία μπορείτε να την πάρετε είτε από το σχηματικό διάγραμμα είτε από το user guide της αναπτυξιακής κάρτας. 1-1-10. Στη φόρμα Default Part, χρησιμοποιήστε την επιλογή Parts και τα διάφορα πεδία drop-down της επιλογής Filter. Για την ZedBoard, επιλέξτε το part XC7Z020clg484-1. 4

Εικόνα 5. Επιλογή Part (FPGA device) για την αναπτυξιακή κάρτα ZedBoard Μπορείτε επίσης να επιλέξετε την επιλογή Boards, επιλέξτε em.avnet.com στο μενού του φίλτρου Vendor και επιλέξτε την κατάλληλη αναπτυξιακή κάρτα (ZedBoard). 1-1-11. Επιλέξτε Next. Figure 6. Επιλογή της αναπτυξιακής κάρτας 1-1-12. Πατήστε Finish για να δημιουργήσετε το Vivado project. Χρησιμοποιήστε το Windows Explorer και κοιτάξτε στο φάκελο που ορίσατε το project (πχ d:\adsd\lab1). Θα βρείτε ότι έχουν δημιουργηθεί οι φάκελοι lab1.cache και lab1.srcs και το αρχείο project lab1.xpr (Vivado). Ο φάκελος lab1.cache είναι το μέρος που αποθηκεύεται το Vivado program database. Δύο φάκελοι constrs_1 και sources_1, έχουν δημιουργηθεί μέσα στον φάκελο lab1.srcs. Βαθιά μέσα τους έχουν αντιγραφεί τα αρχεία πηγαίου κώδικα lab1.xdc (constraint) και τα αντίστοιχα αρχεία.vhd (sources). 5

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 1-2. Ανοίξτε τα αρχεία πηγαίου κώδικα *.vhd και μελετήστε τα περιεχόμενά τους. 1-2-1. Στο παράθυρο Sources, κάντε double-click στο αρχεία.vhd για ανοίξετε το αρχεία σε text mode. Εικόνα 7. Ανοίγοντας τον πηγαίο κώδικα VHDL 1-3. Ανοίξτε το αρχείο πηγαίου κώδικα lab1.xdc και μελετήστε το περιεχόμενό του. 1-3-1. Στο παράθυρο Sources, επεκτείνετε το φάκελο Constraints και κάντε double-click στο αρχείο lab1.xdc για να ανοίξετε το αρχείο σε text mode. Εικόνα 8. Ανοίγοντας το constraint file 6

######################################################## # ZedBoard Pin Assignments ######################################################## # Clk - Zedboard 100MHz oscillator set_property -dict { PACKAGE_PIN Y9 IOSTANDARD LVCMOS33 } [get_ports {clk}] # Reset - BTNU set_property -dict { PACKAGE_PIN T18 IOSTANDARD LVCMOS33} [get_ports {rst}] # On-board led set_property -dict { PACKAGE_PIN U21 IOSTANDARD LVCMOS33} [get_ports {q[3]}] set_property -dict { PACKAGE_PIN U22 IOSTANDARD LVCMOS33} [get_ports {q[2]}] set_property -dict { PACKAGE_PIN T21 IOSTANDARD LVCMOS33} [get_ports {q[1]}] set_property -dict { PACKAGE_PIN T22 IOSTANDARD LVCMOS33} [get_ports {q[0]}] ######################################################## ##ZedBoard Timing Constraints ######################################################## # define clock and period create_clock -period 10 -name clk -waveform {0.000 5.000} [get_ports clk] # Global timing constraints set_input_delay -clock clk 0.000 [get_ports { rst }] set_input_delay -clock clk -min -0.500 [get_ports { rst }] set_output_delay -clock clk 0.000 [all_outputs] Ο κώδικας στο αρχείο lab1.xdc ορίζει τα constraints για τις θέσεις των pin για τις εισόδους και τις εξόδους, την περίοδο ρολογιού (10 ns), καθώς επίσης input και output delays. 1-4. Εκτέλεση ανάλυσης RTL στον πηγαίο κώδικα. 1-4-1. Επεκτείνετε το Open Elaborated Design του RTL Analysis task στο παράθυρο Flow Navigator και πατήστε το Schematic. Το μοντέλο του σχεδίου θα γίνει elaborate και μια παρουσίαση του σχεδίου σε επίπεδο συστήματος θα εμφανιστεί στο παράθυρο schematic. Εικόνα 9. Το σχηματικό διάγραμμα του σχεδίου (system level) 7

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Εάν πατήσετε στα (+) μπορείτε να δείτε το σχέδιο σε RTL για τον μετρητή και τον enable generator. Εικόνα 10. Το σχηματικό διάγραμμα του δυαδικού μετρητή Εικόνα 11. Το σχηματικό διάγραμμα του enable generator 8

Προσομοίωση του Σχεδίου με τον Vivado Simulator Βήμα 2 2-1. Προσθέστε το αρχείο testbench system_tb.vhd. 2-1-1. Πατήστε Add Sources στο Project Manager task του παραθύρου Flow Navigator Εικόνα 12. Προσθήκη πηγαίου κώδικα 2-1-2. Επιλέξτε την επιλογή Add or Create Simulation Sources (προσοχή!) και πατήστε Next. Εικόνα 13. Επιλογή πηγαίου κώδικα για προσομοίωση 2-1-3. Στην φόρμα Add Sources, πατήστε το Πράσινο Κουμπί +, και στη συνέχεια Add Files 2-1-4. Επιλέξτε τον κατάλληλο φάκελο όπου υπάρχει το αρχείο testbench system_tb.vhd, επιλέξτε το και πατήστε OK. Εάν δεν είναι ήδη επιλεγμένο, επιλέξτε Copy sources into project. 2-1-5. Πατήστε το Finish. 2-1-6. Επιλέξτε την καρτέλα Sources και επεκτείνετε την ομάδα Simulation Sources. Το αρχείο system_tb.vhd έχει προστεθεί στην ομάδα Simulation Sources και το αρχείο system.vhd αυτόματα τοποθετείται στην ιεραρχία ως uut (unit under test) instance. 9

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Εικόνα 14. Ιεραρχία Simulation Sources 2-1-7. Κάντε double-click στο system_tb στο παράθυρο Sources για να μελετήσετε τα περιεχόμενά του. 2-2. Προσομοίωση του σχεδίου για 1000 ns χρησιμοποιώντας το Vivado simulator. 2-2-1. Επιλέξτε το Simulation Settings από τα Project Manager tasks του παραθύρου Flow Navigator. Η φόρμα Project Settings θα εμφανιστεί δείχνοντας την φόρμα με τις παραμέτρους του Simulation. 2-2-2. Επιλέξτε την καρτέλα Simulation, θέστε το Simulation Run Time στα 1000 ns και πατήστε OK. Εικόνα 15. Ορισμός της διάρκειας της προσομοίωσης (simulation run time) 10

Πατήστε στο Run Simulation > Run Behavioral Simulation που βρίσκεται στα Project Manager tasks του παραθύρου Flow Navigator. Το testbench και τα αρχεία του πηγαίου κώδικα θα γίνουν compiled και θα τρέξει ο Vivado simulator (εφόσον βέβαια δεν υπάρχουν σφάλματα). Θα δείτε την έξοδο του simulator που είναι παρόμοια με την παρακάτω. Θα δείτε τέσσερα κύρια παράθυρα: Εικόνα 16. Έξοδος του Simulator (i) (ii) (iii) (iv) Scopes, όπου παρουσιάζεται η ιεραρχία του testbench καθώς και τα instantiations, (ii) Objects, όπου εμφανίζονται τα top-level σήματα της ιεραρχίας, (iii) το παράθυρο με τις κυματομορφές, και Console, όπου εμφανίζονται οι ενέργειες του. Παρατηρείστε ότι μέσα στον φάκελο lab1 έχει δημιουργηθεί ο φάκελος lab1.sim, μαζί με πολλούς άλλους φακέλους σε χαμηλότερο επίπεδο. Δίπλα στο παράθυρο με τις κυματομορφές, θα δείτε διάφορα κουμπιά που μπορούν να χρησιμοποιηθούν για συγκεκριμένο σκοπό όπως φαίνονται στο παρακάτω πίνακα. 11

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Waveform options Save the waveform Zoom In Zoom Out Zoom Fit Zoom to cursor Go to Time 0 Go to Last Time Previous Transition Next Transition Add Marker Previous Marker Next Marker Swap Cursors Snap to Transition Floating Ruler Πίνακας 1: Διάφορα κουμπιά διαθέσιμα για την εμφάνιση των κυματομορφών 2-2-3. Πατήστε το κουμπί Zoom Fit ( ) για να δείτε όλη την κυματομορφή. Μπορείτε επίσης να ανοίξετε τις κυματομορφές σε ένα νέο μεγάλο παράθυρο πατώντας το κουμπί Float που βρίσκεται στο πάνω δεξιά μέρος. Για να επαναφέρετε το floating παράθυρο πίσω στο GUO, απλά πατήστε στο κουμπί Dock Window. Εικόνα 17. Κουμπί Float Εικόνα 18. Κουμπί Dock Window 2-3. Αλλάξτε το format της παρουσίασης εάν το επιθυμείτε Πατώντας δεξί click στο σήμα q[3:0] που περιγράφει δίαυλο, επιλέξτε Radix, και στη συνέχεια επιλέξτε Unsigned decimal για να βλέπετε τις εισόδους στο δεκαδικό αντί του προεπιλεγμένου δεκαεξαδικού (Hexadecimal). 12

Εικόνα 19. Παράθυρο κυματομορφής 2-4. Προσθέστε περισσότερα σήματα για να παρακολουθήσετε τα σήματα χαμηλότερου επιπέδου και για να συνεχίσετε την προσομοίωση για άλλα 1000 ns. 2-4-1. Επεκτείνετε το instance system_tb, εάν είναι απαραίτητο, στο παράθυρο Scopes και επιλέξτε το instance uut instance. Το εσωτερικό σήμα του enable θα εμφανιστεί στο παράθυρο Objects. Εικόνα 20. Επιλογή σημάτων χαμηλότερου επιπέδου από το instance uut Επιλέξτε το σήμα enable και κάντε drag στο παράθυρο με τις κυματομορφές για να το παρακολουθήσετε και αυτό το σήμα επιπέδου. Παρόμοια, επιλέξτε το instance en_gen, και επιλέξτε το εσωτερικό σήμα counter για να το κάνετε drag στο παράθυρο με τις κυματομορφές. Εικόνα 21. Επιλογή σημάτων χαμηλότερου επιπέδου από το en_gen 13

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 2-4-2. Στο ribbon bar του παραθύρου με τα εργαλεία της προσομοίωσης πληκτρολογήστε 1000 στο πεδίο simulation run time, πατήστε click στο drop-down κουμπί του πεδίου με τις μονάδες και επιλέξτε ns εφόσον θέλουμε να τρέξει η προσομοίωση για 1000 ns (συνολικά 2000 ns) και πατήστε το κουμπί. Η προσομοίωση θα τρέξει για επιπλέον 1000 ns. 2-4-3. Στο ribbon bar του παραθύρου με τα εργαλεία της προσομοίωσης πατήστε το βελάκι Restart για να ξανατρέξετε την προσομοίωση με όλα τα σήματα του waveform από την αρχή. 2-4-4. Πατήστε στο κουμπί Zoom Fit ή μετακινήστε το roll bar στο κάτω μέρος της οθόνης και παρατηρείστε την έξοδο. Εικόνα 22. Εκτέλεση προσομοίωσης για επιπλέον 2000 ns Μπορείτε να παρατηρήσετε το παράθυρο Tcl Console για να δείτε την έξοδο. Επιβεβαιώστε την ορθή λειτουργία του συστήματος (enable generator και μετρητή). 2-4-5. Κλείστε τον simulator επιλέγοντας File > Close Simulation. 2-4-6. Πατήστε OK και στην συνέχεια πατήστε Discard για να κλείσει χωρίς να σώσετε την κυματομορφή. 14

Σύνθεση του Σχεδίου Βήμα 3 3-1. Κάντε σύνθεση στο σχέδιο με το εργαλείο σύνθεσης του Vivado και αναλύστε την έξοδο Project Summary 3-1-1. Πατήστε στο Run Synthesis που βρίσκεται στα Synthesis tasks του παραθύρου Flow Navigator. Η διαδικασία της σύνθεσης θα εκτελεστεί στο αρχείο system.vhd (και σε όλα τα αρχεία της ιεραρχίας εφόσον υπάρχουν). Όταν η διαδικασία ολοκληρωθεί, θα εμφανιστεί ένα κουτί διαλόγου Synthesis Completed dialog box με τρεις επιλογές. 3-1-2. Επιλέξτε την επιλογή Open Synthesized Design και πατήστε OK εφόσον επιθυμούμε να δούμε την έξοδο της σύνθεσης πριν προχωρήσουμε στο στάδιο της υλοποίησης (implementation). Πατήστε Yes για να κλείσετε το elaborated design εάν εμφανιστεί το παράθυρο διαλόγου. 3-1-3. Επιλέξτε την καρτέλα Project Summary και μελετήστε τα διάφορα παράθυρα. Εάν δεν βλέπετε την καρτέλα Project Summary τότε επιλέξτε Layout > Default Layout, ή πατήστε στο εικονίδιο Project Summary. Device, Project name, Top module name Ολοκλήρωση σύνθεσης Το implementation δεν έχει ξεκινήσει Το utilization σε γραφικά Επιλογή γραφικών ή πίνακα Εικόνα 23. Project Summary για τα αποτελέσματα της σύνθεσης Πατήστε στα διάφορα links για να δείτε τι πληροφορία παρέχουν και ποια επιτρέπουν να αλλάξετε τις ρυθμίσεις της σύνθεσης. 15

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 3-1-4. Πατήστε στην καρτέλα Table που βρίσκεται στην καρτέλα Project Summary. Παρατηρήστε ότι κατ εκτίμηση έχει χρησιμοποιηθεί 49 LUTs, 32 FFs, 6 IOs (2 είσοδοι και 4 έξοδοι) και 1 BUFG (global clock buffer primitive). Εικόνα 24. Εκτίμηση χρήσης πόρων για το FPGA του ZedBoard 3-1-5. Στο Flow Navigator, μέσα στο Synthesis (επεκτείνετε το Synthesized Design εάν είναι απαραίτητο), πατήστε το Schematic για να δείτε το synthesized design του συστήματος σε σχηματική αναπαράσταση. Εικόνα 25. Σχηματική αναπαράσταση του synthesized design (system level) Παρατηρείστε ότι έχουν αυτόματα προστεθεί IBUFs, OBUFs και BUFG primitives στο σχέδιο. 16

Πατήστε στο (+) του cntr για να δείτε το σχηματικό διάγραμμα του δυαδικού μετρητή. Οι λογικές πύλες στην έξοδο της ανάλυσης RTL έχουν γίνει mapped σε LUTs στην έξοδο της σύνθεσης. Εικόνα 26. Σχηματική αναπαράσταση του synthesized design (δυαδικός μετρητής) 17

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 3-2. Ανάλυση του Timing report 3-2-1. Πατήστε στο Report Timing Summary που βρίσκεται ανάμεσα στα Synthesized Design Tasks, του Synthesis του Flow Navigator. Στο synthesized σχέδιο, το Vivado κάνει μια εκτίμηση των net delays βάσει των συνδέσεων και του fanout. Σε ένα implemented σχέδιο, τα net delays βασίζονται στην πραγματική πληροφορία του routing. Εάν θέλετε να χρησιμοποιήσετε το Timing Summary report για timing signoff, τότε θα πρέπει να εκτελεστεί μετά το routing. Εικόνα 27. Επιλογές για το report του Timing Summary Η επιλογή Path delay type επιλέγει τον τύπο της ανάλυσης που θα τρέξει. Για τα synthesized designs το default αφορά μόνο το max delay analysis. Για τα implemented designs και το min και το max delay analysis γίνεται από default. 3-2-2. Πατήστε OK για να παραχθεί το Timing_1 report. Εικόνα 28. Timing report μετά τη Σύνθεση Παρατηρείστε ότι το Design Timing Summary έχει κόκκινες ενδείξεις που σημαίνουν timing violations. Στο δεξί παράθυρο η πληροφορία είναι ομαδοποιημένη σε στήλες Setup, Hold και Pulse Width. 18

Στη στήλη Setup παρουσιάζονται όλοι οι έλεγχοι που αφορούν το max delay analysis. To Worst Negative Slack (WNS) είναι μια τιμή (με link) που αντιστοιχεί στο χειρότερο slack από όλα τα timing paths του max delay analysis. Μπορεί να είναι θετικό η αρνητικό. Το Total Negative Slack (TNS) είναι το άθροισμα όλων των WNS violations, όταν θεωρούμε μόνο το χειρότερο violation για κάθε timing path endpoint. Η τιμή είναι 0 ns όταν όλα τα timing constraints για το max delay analysis έχουν ικανοποιηθεί και αρνητική όταν υπάρχουν κάποια violations. Το Number of Failing Endpoints αφορά τον συνολικό αριθμό των endpoints που έχουν violation (WNS<0 ns) Το Total Number of Endpoints αφορά τον συνολικό αριθμό των end points που έχουν αναλυθεί. Στη στήλη Hold παρουσιάζονται όλοι οι έλεγχοι που αφορούν το min delay analysis. To Worst Hold Slack (WHS) είναι μια τιμή (με link) που αντιστοιχεί στο χειρότερο slack από όλα τα timing paths του min delay analysis. Μπορεί να είναι θετικό η αρνητικό. Το Total Hold Slack (THS) είναι το άθροισμα όλων των WHS violations, όταν θεωρούμε μόνο το χειρότερο violation για κάθε timing path endpoint. Η τιμή είναι 0 ns όταν όλα τα timing constraints για το min delay analysis έχουν ικανοποιηθεί και αρνητική όταν υπάρχουν κάποια violations. Το Number of Failing Endpoints αφορά τον συνολικό αριθμό των endpoints που έχουν violation (WΗS<0 ns) Το Total Number of Endpoints αφορά τον συνολικό αριθμό των end points που έχουν αναλυθεί. 3-2-3. Πατήστε στο WNS link και δείτε τα 10 χειρότερα paths (δηλαδή με το μικρότερο θετικό slack αφού δεν αφορούν violations). Εικόνα 29. Τα 10 χειρότερα paths (setup) με το μικρότερο θετικό slack μετά τη σύνθεση 19

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 3-2-4. Πατήστε στο Path 1 που αφορά clock-to-out output port delay για να το δείτε αναλυτικά. Εικόνα 30. Το path με το μικρότερο θετικό slack (setup) μετά τη σύνθεση 20

3-2-5. Πατήστε στο Path 5 (που αφορά την περίοδο ρολογιού) για να το δείτε αναλυτικά. Εικόνα 31. Το Path 5 (critical path) (setup) μετά τη σύνθεση 21

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Σημειώστε ότι οι παραπάνω καθυστερήσεις αποτελούν εκτίμηση αφού αφορούν το synthesized design. Τα nets φαίνονται ότι είναι unplaced. Στο header μεταξύ άλλων υπάρχει η εξής πληροφορία: Slack: Ένα θετικό slack δείχνει ότι το path πληροί τα constraints. Η εξίσωση του slack εξαρτάται από το είδος της ανάλυσης που εκτελείται. Max delay analysis (setup/recovery): slack = data required time data arrival time Min delay analysis (hold/removal): slack = data arrival time data required time Οι χρόνοι data required και data arrival υπολογίζονται και παρουσιάζονται σε άλλα τμήματα του timing path report. Data path Delay: Το άθροισμα μέσα από τους πόρους λογικής (logic) του path. Logic Levels: Ο αριθμός από κάθε τύπο primitive που βρίσκονται στο data section του path, χωρίς να υπολογίζονται τα startpoint και endpoint cells. Clock Path Skew: Η καθυστέρηση μεταξύ της ακμής του source clock και του destination clock Μετά το header, το timing path report παρέχει περισσότερες πληροφορίες για τα cells, τα pins, τα ports και τα nets που διασχίζει το path. Χωρίζεται σε 3 μέρη: Source Clock Path: Το κύκλωμα που διασχίζει το source clock από την πηγή του μέχρι το clock pin στο σημείο εκκίνησης στο datapath. Data Path: Το κύκλωμα που διασχίζουν τα δεδομένα από το σημείο εκκίνησης μέχρι το σημείο προορισμού. Destination Clock Path: Το κύκλωμα που διασχίζει το destination clock από σημείο εκκίνησης του μέχρι το clock pin στο σημείο προορισμού στο datapath. 3-2-6. Πατήστε δεξί click στο Path 5 και επιλέξτε Schematic για να το δείτε στο σχηματικό διάγραμμα. Εικόνα 32. Το Path 5 (critical path) μετά τη σύνθεση στο σχηματικό διάγραμμα Χρησιμοποιώντας τον Windows Explorer, επαληθεύστε ότι έχει δημιουργηθεί ο φάκελος lab1.runs μέσα στον φάκελο lab1. Μέσα στον φάκελο runs, έχει δημιουργηθεί ο φάκελος synth_1 που περιέχει διάφορα αρχεία σχετικά με την σύνθεση. 22

Implementation του Σχεδίου Βήμα 4 4-1. Προχωρήστε στο implementation του σχεδίου με τις προκαθορισμένες ρυθμίσεις του Vivado Implementation και αναλύστε την έξοδο Project Summary. 4-1-1. Πατήστε Run Implementation που βρίσκεται στα Implementation tasks του παραθύρου Flow Navigator. Η διαδικασία του implementation θα εκτελεστεί στο synthesized design. Όταν η διαδικασία ολοκληρωθεί, θα εμφανιστεί ένα κουτί διαλόγου Implementation Completed με τρεις επιλογές. 4-1-2. Επιλέξτε το Open implemented design και πατήστε OK αφού θέλουμε να δούμε το implemented design στην καρτέλα Device view. 4-1-3. Εάν το implementation αποτύχει να ικανοποιήσει τα timing constraints θα βγάλει ένα μήνυμα όπως το αυτό στην εικόνα που ακολουθεί. Πατήστε OK για να συνεχίσετε. Εικόνα 33. Μήνυμα αποτυχίας στα timing requirements 4-1-4. Πατήστε Yes, εφόσον σας ζητηθεί, για να κλείσετε το synthesized design. Το implemented design θα ανοίξει. Χρησιμοποιώντας τον Windows Explorer, επαληθεύστε ότι ο φάκελος impl_1 έχει δημιουργηθεί στο ίδιο επίπεδο με το synth_1 μέσα στο φάκελο lab1.runs. Ο φάκελος impl_1 περιέχει αρκετά αρχεία συμπεριλαμβανομένων και των αρχείων report του implementation. 4-1-5. Στο παράθυρο Netlist, επιλέξτε ένα από τα nets (π.χ. q_οbuf[0]) και παρατηρείστε ότι το net εμφανίζεται στο X1Y0 clock region στην καρτέλα Device view (μπορεί να χρειαστεί να κάνετε zoom). 4-1-6. Εάν δεν είναι επιλεγμένο, πατήστε στο εικονίδιο Routing Resources για να δείτε τα routing resources. 23

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Εικόνα 34. Επιλογή ενός net Εικόνα 35. Βλέποντας το implemented design 4-1-7. Εάν επιθυμείτε μπορείτε να μεγεθύνετε όσο επιθυμείτε τον όψη του implemented design για να δείτε λεπτομέρειες (Slices LUTs κλπ.) Εικόνα 36. Βλέποντας τμήμα του implemented design (SLICE_X113Y46) σε μεγέθυνση 24

4-1-8. Κλείστε το implemented design επιλέγοντας File > Close Implemented Design, και επιλέξτε την καρτέλα Project Summary (μπορεί να χρειαστεί να αλλάξετε στην όψη Default Layout) και παρατηρείστε τα αποτελέσματα. Επιλέξτε την καρτέλα Post-Implementation. Παρατηρείστε ότι το πραγματικό resource utilization είναι 23 LUTs (παρατηρείστε ότι είναι λιγότερα από αυτά της σύνθεσης), 32 FFs, 6 IOs και 1 BUFG. Επίσης παρατηρήστε ότι δεν ικανοποιείται το timing constraint (WNS, TNS αρνητικά και κόκκινα). Εικόνα 37. Project Summary για τα αποτελέσματα του implementation 25

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 4-2. Ανάλυση του Timing report 4-2-1. Πατήστε στο Report Timing Summary που βρίσκεται ανάμεσα στα Implemented Design Tasks, του Implementation του Flow Navigator. Εικόνα 38. Επιλογές για το report του Timing Summary Ενεργοποιείστε την επιλογή «Report Datasheet. 4-2-2. Πατήστε OK για να παραχθεί το Timing_1 report. Εικόνα 39. Timing report μετά το Implementation Παρατηρείστε ότι μετά το implementation, το Design Timing Summary έχει και πάλι timing violations άλλα διαφορετικά από αυτά της σύνθεσης. Πλέον, το Worst Negative Slack (WNS) έγινε αρνητικό ενώ το Worst Hold Slack (WHS) έγινε θετικό. 4-2-3. Πατήστε στο WNS link και δείτε και πάλι τα χειρότερα 10 paths. Σημειώστε ότι αυτά είναι πλέον τα πραγματικά αφού είναι μετά το routing. Τα 4 πρώτα που έχουν αρνητικό slack (είναι violations) αφορούν καθυστερήσεις clock-to-out. Εικόνα 40. Τα 10 χειρότερα paths μετά το Implementation 26

4-2-4. Πατήστε στο Path 1 για να το δείτε αναλυτικά. Εικόνα 41. Το χειρότερο setup path (violation) μετά το implementation Παρατηρήστε ότι το clock χρειάζεται 5.641 ns (clock path skew) για να φθάσει από τον ακροδέκτη εισόδου στο FF ενώ τα δεδομένα χρειάζονται 5.803 ns (data path delay) για φθάνουν στον ακροδέκτη εξόδου μέσω του OBUF. Συνολικά, χρειάζονται 11.444 ns ενώ το constraint ήταν 9.965 ns (10.000-0.035 clock uncertainty). Άρα το slack είναι 9.965 ns -11.444 ns = - 1.480 ns (αρνητικό). Από τα 5.803 ns του data path delay, το 70.8% αφορά το logic (1 levels για τον OBUF) και το 29.2% το routing. 4-2-5. Πατήστε δεξί click στο χειρότερο Path 1 και επιλέξτε Schematic για να το δείτε στο σχηματικό διάγραμμα. Εικόνα 42. Το χειρότερο path (Path 1) μετά το implementation στο σχηματικό διάγραμμα 27

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 4-3. Βελτίωση του timing με προσθήκη επιπλέον constraint 4-3-1. Προσθέστε το παρακάτω constraint ώστε να τοποθετηθούν στα FF της εξόδου (που στο παράδειγμα είναι οι μοναδικές έξοδοι) στα IOBs με στόχο την μείωση του αντίστοιχου routing delay και συνεπώς την ικανοποίηση των constraints του clock-to-out για τα output ports. set_property IOB TRUE [all_outputs] Σε περίπτωση που δεν θέλετε όλες οι έξοδοι να μπουν σε IOBs τότε πρέπει να τις προσδιορίσετε. Πατήστε Run Implementation που βρίσκεται στα Implementation tasks του παραθύρου Flow Navigator ώστε να εκτελεστεί και πάλι όλο το flow (σύνθεση, implementation). 4-3-2. Παρατήστε ότι πλέον ικανοποιούνται τα timing constraints (θετικό WNS). Επίσης παρατηρείστε ότι τo resource utilization παραμένει αμετάβλητο σε σχέση με το προηγούμενο implementation: 23 LUTs, 32 FFs, 6 IOs και 1 BUFG. Εικόνα 43. Project Summary για τα αποτελέσματα του ΝΕΟΥ implementation 28

4-4. Ανάλυση του Timing report για το ΝΕΟ implementation 4-4-1. Πατήστε στο Report Timing Summary που βρίσκεται ανάμεσα στα Implemented Design Tasks, του Implementation του Flow Navigator. Ενεργοποιείστε την επιλογή «Report Datasheet. 4-4-2. Πατήστε OK για να παραχθεί το Timing_1 report. Εικόνα 44. Timing report μετά το NEO Implementation Παρατηρείστε ότι μετά την προσθήκη του νέου constraint, το Design Timing Summary δεν έχει timing violations. Πλέον, όλα τα slacks είναι θετικά. 4-4-3. Πατήστε στο WNS link και δείτε και πάλι τα χειρότερα 10 paths (χωρίς violations πια). Εικόνα 45. Τα 10 με το μικρότερο θετικό slack μετά το NEO Implementation 4-4-4. Πατήστε στο Path 1 για να το δείτε αναλυτικά. 29

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Εικόνα 46. Το χειρότερο setup path (violation) μετά το implementation Παρατηρήστε ότι το clock χρειάζεται περίπου τον ίδιο χρόνο 5.664 ns (clock path skew) για να φθάσει από τον ακροδέκτη εισόδου στο FF αλλά τα δεδομένα χρειάζονται πλέον 4.004 ns (data path delay) για φθάνουν στον ακροδέκτη εξόδου μέσω του OBUF. Συνολικά, χρειάζονται 9,668 ns οπότε ικανοποιείται το constraint του 9.965 ns (10.000-0.035 clock uncertainty). Άρα το slack πλέον είναι θετικό 9.965 ns - 9.668 ns = 0.297 ns (θετικό). Από τα 4.004 ns του data path delay, το 99,9% αφορά το logic (1 levels για τον OBUF) ενώ το routing μετά την τοποθέτηση του FF στο IOB έχει γίνει αμελητέο. 4-4-5. Πατήστε στο Path 6 (critical path) για να το δείτε αναλυτικά και επιλέξτε Schematic για να δείτε το σχηματικό διάγραμμα. 30

Εικόνα 47. Το critical path (Path 6) μετά το NEO implementation Παρατηρήστε στο παραπάνω report ότι το critical path είναι 4.330 ns (datapath delay) και περιλαμβάνει 3 logic levels (2 LUT4 και 1 LUT5). Το clock χρειάζεται 5.641 ns για να φθάσει από το pin στο source FF και μετά τα δεδομένα χρειάζονται άλλα 4.330 ns να φθάσουν στο destination FF, δηλαδή σύνολο 9,971 ns (arrival time). Από την άλλη, το clk χρειάζεται 5.582 ns για να φθάσει από το pin στο destination FF (με setup time 0,031 ns). Άρα τα δεδομένα πρέπει να έχουν φθάσει στο capture clock (1 περίοδο αργότερα) στα 10+ 5.582-0,031 = 15.613 ns (required time). Συνεπώς, το slack είναι θετικό 15.613 ns - 9,971 ns = 5,642 ns. Το critical path φαίνεται στην παρακάτω εικόνα. Εικόνα 48. Το critical path (Path 6) μετά το NEO implementation στο σχηματικό διάγραμμα 31

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 4-4-6. Πατήστε στο datasheet στο αριστερό μέρος του Timing summary report για να δείτε αναλυτικά τα Input Ports Setup/hold, Output Ports Setup/hold, Max/Min Delays for Output Busses κλπ. Στην παρακάτω εικόνα φαίνονται τα clock-to-out delays για τα output ports από το datasheet. Εικόνα 49.Clock-to-out output port delays από το datasheet 4-4-7. Στο Vivado, επιλέξτε την καρτέλα Reports που βρίσκεται χαμηλά στο panel (εάν δεν είναι ορατή, κάντε click στο Window στην μπάρα του menu και επιλέξτε Reports), και κάντε double-click στο Utilization Report μέσα στο τμήμα Place Design. Το report θα εμφανιστεί στο σχετικό παράθυρο παρουσιάζοντας το resource utilization. Εικόνα 50. Διαθέσιμα reports 32

Εικόνα 51. Utilization report 4-5. Δείτε τα FPGA resources του design με το Report Utilization. 4-5-1. Στο Flow Navigator, επιλέξτε Open Implemented Design > Report Utilization. Το παράθυρο διαλόγου Report Utilization ανοίγει. 4-5-2. Πατήστε OK. Το utilization report εμφανίζεται στο κάτω μέρος του Vivado. Μπορείτε να επιλέξετε όποια από τα resources επιθυμείτε στο αριστερό μέρος για να δείτε το αντίστοιχο utilization. Εικόνα 52. Report Utilization από το Flow Navigator 33

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 4-5-3. Επιλέξτε πχ. τα slice LUTs για αν δείτε πόσο πολύ και ποιες μονάδες καταναλώνουν τα resources. 4-5-4. Εάν επιθυμείτε μπορείτε να μεγεθύνετε όσο επιθυμείτε τον όψη του νέου implemented design για να δείτε λεπτομέρειες και να επαληθεύσετε την χρήση των καταχωρητών στα IOBs. Εικόνα 53. Βλέποντας τμήμα του ΝΕΟΥ implemented design (IOBs) σε μεγέθυνση 34

Εκτέλεση Χρονικής Προσομοίωσης (Timing Simulation) Βήμα 5 5-1. Εκτελέστε ένα timing simulation. 5-1-1. Επιλέξτε Run Simulation > Run Post-Implementation Timing Simulation που βρίσκεται στα tasks του Simulation του παραθύρου Flow Navigator. Ο Vivado simulator θα ξεκινήσει χρησιμοποιώντας το implemented design και το system_tb ως toplevel module. Χρησιμοποιώντας τον Windows Explorer, επαληθεύστε ότι ο φάκελος timing έχει δημιουργηθεί μέσα στο φάκελο lab1.sim > sim_1 > impl. Ο φάκελος timing περιέχει τα αρχεία που παρήχθησαν για να εκτελεστεί το timing simulation. 5-1-2. Συνεχίστε την προσομοίωση για επιπλέον 1000 ns, επιλέξτε για την έξοδο q[3:0] radix unsigned decimal και πατήστε στο κουμπί Zoom Fit για να δείτε το παράθυρο με τις κυματομορφές από 0 έως τα 2000 ns. 5-1-3. Επιβεβαιώστε την ορθή λειτουργία. 5-1-4. Μπορείτε να προσθέσετε markers είτε με click στο κουμπί Add Marker ( ) είτε επιλέγοντας με τον time cursor την χρονική στιγμή που επιθυμείτε και κάνοντας δεξί click στο Markers->Add Marker. Εικόνα 54. Οι κυματομορφές του timing simulation Παρατηρήστε τις πραγματικές καθυστερήσεις και επιβεβαιώστε τα αποτελέσματα του timing report (clock skew, clock-to-out, κλπ.) 5-1-5. Κλείστε τον simulator επιλέγοντας File > Close Simulation χωρίς να σώσετε κάποιες αλλαγές. 35

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Παραγωγή του Bitstream και Επαλήθευση Λειτουργίας Βήμα 6 6-1. Συνδέστε την αναπτυξιακή κάρτα ZedBoard και τροφοδοτήστε την. Παράγετε το bitstream, ξεκινήστε ένα hardware session, και προγραμματίστε το FPGA. 6-1-1. Σιγουρευτείτε ότι το καλώδιο Micro-USB cable είναι συνδεδεμένο στο βύσμα JTAG PROG δίπλα στο βύσμα της τροφοδοσίας (power supply). 6-1-2. Η αναπτυξιακή κάρτα Zedboard χρειάζεται μια ξεχωριστή πηγή τροφοδοσίας, που συνδέεται μέσω το J20, που βρίσκεται δίπλα στο διακόπτη POWER. 6-1-3. Τροφοδοτήστε την κάρτα (Power ON). Εικόνα 55. Σύνδεση αναπτυξιακής κάρτας ZedBoard 6-1-4. Πατήστε στο Generate Bitstream που βρίσκεται στα tasks Program and Debug του παραθύρου Flow Navigator. Η διαδικασία της παραγωγής του bitstream θα εκτελεστεί στο implemented design. Όταν η διαδικασία ολοκληρωθεί, θα εμφανιστεί ένα παράθυρο διαλόγου Bitstream Generation Completed dialog box με τέσσερις επιλογές. Εικόνα 56. Παραγωγή bitstream Αυτή η διαδικασία θα παράγει ένα αρχείο system.bit μέσα στο φάκελο impl_1 στο φάκελο lab1.runs. 6-1-5. Επιλέξτε την επιλογή Open Hardware Manager και πατήστε OK. Το παράθυρο Hardware Manager θα ανοίξει δείχνοντας ότι βρίσκεται σε κατάσταση unconnected. 36

6-1-6. Πατήστε στο link Open target. Εικόνα 57. Άνοιγμα νέου hardware target 6-1-7. Από το dropdown menu του link Open target, πατήστε Auto Connect. Η κατάσταση του Hardware Session αλλάζει από Unconnected στο όνομα του server και το FPGA device γίνεται highlighted. Επίσης παρατηρείστε ότι το Status δείχνει ότι δεν έχει προγραμματιστεί. Εικόνα 58. Hardware session για την αναπτυξιακή κάρτα ZedBoard Επιλέξτε το FPGA device και επαληθεύστε ότι το αρχείο system.bit έχει επιλεχθεί ως το αρχείο προγραμματισμού στην καρτέλα General. Εικόνα 59. Ιδιότητες του FPGA device της αναπτυξιακής κάρτας ZedBoard 6-1-8. Πατήστε στο Program device > XC7Z020_1 ή στο σύνδεσμο XC7Z010_1 στην πράσινη μπάρα πληροφοριών για να προγραμματίσετε το target FPGA device. Ένας άλλος τρόπος είναι να κάνετε δεξί click στο device και να επιλέξετε Program Device Εικόνα 60. Επιλογή προγραμματισμού του FPGA 37

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Εικόνα 61. Επιλογή αρχείου προγραμματισμού του FPGA 6-1-9. Πατήστε Program για να προγραμματίσετε το FPGA (θα ανάψει το μπλε DONE led). 6-1-10. Επαληθεύστε την λειτουργία του σχεδίου παρατηρώντας την έξοδο στα LEDs και χρησιμοποιώντας το επάνω push-button για το Reset. Τι παρατηρείτε? 6-1-11. Εάν το σχέδιό σας δεν συμπεριφέρεται όπως αναμένεται ζητήστε τη βοήθεια του εκπαιδευτή. Εάν λειτουργεί ορθά, έχετε ολοκληρώσει με επιτυχία την άσκηση. Όταν ολοκληρώσετε την επαλήθευση, κλείστε την κάρτα (power OFF). 6-1-12. Μεταβάλλετε το generic ticks στο system.vhd (θα περάσει και στον enable generator) έτσι ώστε τα σήματα enable να παράγονται τόσο αργά ώστε οι αλλαγές στις εξόδους του δυαδικού μετρητή στα LEDs να είναι ορατές με το μάτι. Επαναλάβετε την διαδικασία παραγωγής του bitstream (η προσομοίωση δεν είναι δυνατή σε αυτή τη χρονική κλίμακα). Θα εκτελεστούν όλα τα βήματα από την αρχή (σύνθεση, implementation, generate bitstream). Εξετάστε προσεκτικά τα resource utilization και timing reports μετά το implementation. Σημειώστε τα παρακάτω: Slices: Slice LUTs: FF: I/O: Clock Period (ns): WNS (ns): TNS (ns): WHS (ns): THS (ns): Max Delay Path: Slack : Source: Destination: Data Path Delay: Logic Levels: Min Delay Path: Clock Path Skew: Slack : Source: Destination: Data Path Delay: Logic Levels: Clock Path Skew: Input Port Setup to Clk (Max) (ns): Output Port Clock-to-out (Max) (ns): Output Port Clock-to-out (Min) (ns): 6-1-13. Κλείστε το hardware session επιλέγοντας File > Close Hardware Manager. 6-1-14. Πατήστε OK για να κλείσετε το session. 6-1-15. Κλείστε το πρόγραμμα Vivado επιλέγοντας File > Exit και πατήστε OK. 38

ΕΡΓΑΣΙΑ 1 η : Υλοποίηση up/down δυαδικού μετρητή Να τροποποιήσετε το κύκλωμα του δυαδικού μετρητή της εργαστηριακής άσκησης 1 και των constraints ώστε: να μετρά προς τα πάνω ή προς τα κάτω με επιλογή από μια νέα είσοδο up (SW6) (θα μετρά προς τα επάνω για up = 1, ή προς τα κάτω για up = 0). να υποστηρίζει παράλληλη φόρτωση δεδομένων με είσοδο load (SW7) και δεδομένα load_data [3:0] -> [SW3, SW2, SW1, SW0]. Για τα pin constraints συμβουλευτείτε το manual της κάρτας. Ελέγξτε τη λειτουργία του κυκλώματος τόσο με προσομοίωση όσο και στο υλικό προγραμματίζοντας το FPGA. Να επιδείξετε την ορθή λειτουργία στον εκπαιδευτή. Εξετάστε προσεκτικά τα resource utilization και timing reports μετά το implementation. Σημειώστε τα παρακάτω: Slices: Slice LUTs: FF: I/O: Clock Period (ns): WNS (ns): TNS (ns): WHS (ns): THS (ns): Max Delay Path: Slack : Source: Destination: Data Path Delay: Logic Levels: Clock Path Skew: Min Delay Path: Slack : Source: Destination: Data Path Delay: Logic Levels: Clock Path Skew: Input Port Setup to Clk (Max) (ns): Output Port Clock-to-out (Max) (ns): Output Port Clock-to-out (Min) (ns): 39