ΗΥ220: Εργαστήριο Ψηφιακών Κυκλωμάτων (2019)

Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης

Πρόγραμμα Διαλέξεων και Εργαστηρίων (Schedule)

Ώρες Διδασκαλίας: Δευτέρα 12.15 - 14:00 στην αίθουσα Α.125
Πέμπτη 18.15 - 20:00 στην αίθουσα Α.125
Ώρες Εργαστηρίων: Τρίτη 16:00 - 18:00 στην αίθουσα Β.110
Τετάρτη 18:00 - 20:00 στην αίθουσα Β.110
Πέμπτη 16:00 - 18:00 στην αίθουσα Β.110
Παρασκευή 12:00 - 14:00 στην αίθουσα Β.110
Ώρες Γραφείου: Πέμπτη 16:00 - 18:00 @ Κ319 (κατόπιν συνεννόησης)

Διδακτικό Προσωπικό (Course Staff)

Διδάσκοντες Βοηθοί
Δρ. Βασίλης Παπαευσταθίου Ιάσονας Μαστοράκης
Καθ. Μανόλης Κατεβαίνης Σωτήρης Τοτόμης

Πληροφορίες Μαθήματος (Course Info)

Περιοχή: Υλικό και Συστήματα Υπολογιστών (Ε4)
Περιγραφή: Γλώσσες περιγραφής και προσομοίωσης υλικού, π.χ. Verilog. Επισκόπηση της τεχνολογίας FPGA, εργαλεία αυτόματης σύνθεσης κυκλωμάτων σε FPGA. Διαγράμματα χρονισμού, τεχνικές ελάττωσης καθυστέρησης. Αρτηρίες (δίαυλοι, λεωφόροι), πρωτόκολα χειραψίας, παραδείγματα εμπορικών αρτηριών. Μνήμες, π.χ. SRAM και SDRAM. Γέννηση ρολογιού, απόκλιση ρολογιού, χρήση PLL. Μεταστάθεια, σφάλμα συγχρονισμού, συγχρονιστές, ουρές και ελαστικοί ενταμιευτές, συγχρονισμός σημάτων άδειος/γεμάτος. Εργαστήριο: Ασκήσεις υλοποίησης μικρών έως μεσαίων εργασιών σε πλακέτες με FPGA, μετά από σχεδίαση και προσομοίωση σε Verilog.
ECTS: 6
Προαπαιτούμενα: ΗΥ120 - Ψηφιακή Σχεδίαση
Βαθμολόγηση: Εργαστήρια/Ασκήσεις: 60% (βαθμός > 4.5)
Εξέταση Προόδου: 15% (υποχρεωτική)
Τελική Εξέταση: 25% (βαθμός > 4.5)
Mailing-list: hy220-list at csd dot uoc dot gr

Πρόγραμμα και Υλικό Διαλέξεων (Schedule and Lecture Notes)

`
Ημερομηνία Περιγραφή Σημειώσεις/Παρουσιάσεις Επιπλέον Υλικό
23 Σεπ. Εισαγωγή Slides
26 Σεπ. Λογικές Πύλες, Στοιχεία Μνήμης, Συνδυαστική Λογική και Κυματομορφές Slides
30 Σεπ. Verilog: Τα βασικά Slides
3 Οκτ. Verilog: Τα βασικά (συνέχεια...) Slides από 30 Σεπ.
7 Οκτ. Verilog: Τα βασικά (συνέχεια...) Slides από 30 Σεπ.
10 Οκτ. Verilog: Μια πιο κοντινή ματιά Slides
14 Οκτ. Xilinx Vivado και Προσομοίωση (Ι.Μαστοράκης & Σ.Τοτόμης) Slides
21 Οκτ. Verilog: Μια πιο κοντινή ματιά (συνέχεια...) Slides από 10 Οκτ.
24 Οκτ. Verilog: Στύλ Κώδικα και Synthesizable Verilog Slides
31 Οκτ. Verilog: Στύλ Κώδικα και Synthesizable Verilog (συνέχεια...) Slides από 24 Οκτ.
04 Νοε. Verilog: Στύλ Κώδικα και Synthesizable Verilog (συνέχεια...) Slides από 24 Οκτ.
07 Νοε. Χρονισμός Σύγχρονων Κυκλωμάτων, Καταχωρητές και Μανταλωτές Slides
14 Νοε. Χρονισμός Σύγχρονων Κυκλωμάτων, Καταχωρητές και Μανταλωτές (συνέχεια...) Slides από 11 Νοε.
18 Νοε. Εξέταση Προόδου (15%) - Διαλέξεις μέχρι και "Χρονισμός Σύγχρονων Κυκλωμάτων"
21 Νοε. Μηχανές Πεπερασμένων Καταστάσεων - FSM Slides
25 Νοε. Μηχανές Πεπερασμένων Καταστάσεων - FSM (συνέχεια...) Slides από 21 Νοε.
28 Νοε. Στατικές Μνήμες: SRAM Slides
02 Δεκ. Στατικές Μνήμες: SRAM (συνέχεια...) Slides απο 28 Νοε.
09 Δεκ. Δυναμικές Μνήμες: DRAM Slides
12 Δεκ. Ροή Σχεδίασης και Εργαλεία CAD Slides
16 Δεκ. Ρολόγια και Χρονισμός Slides
19 Δεκ. Δίαυλοι: Πρωτόκολλο AXI Slides
13 Ιαν. 2020 Τελική Εξέταση (25%) - Δευτέρα 13 Ιανουαρίου 2020: 17.00 - 20.00 στις αίθουσες Αμφ.Α, Α.113, Α.121, Α.125

Σημειώσεις, Εγχειρίδια και Σύνδεσμοι (Notes, Manuals and Links)

  • Web-based Verilog Simulation Tools (for small experiments):
    EDA Playground  [also Waves (beta) with EPWave]
    TutorialPoints Verilog
  • Open-Source Simulator: Icarus Verilog (iverilog) (Linux, MacOS)
    Σε πολλές διανομές Linux (π.χ. Ubuntu, Debian, κτλ) το Icarus Verilog υπάρχει στα έτοιμα πακέτα που μπορούν να εγκατασταθούν:
    sudo apt-get install verilog
    Σε MacOS μπορείτε να το εγκαταστήσετε χειροκίνητα ή με package managers όπως το Homebrew:
    brew install icarus-verilog

  • Open VCD Waveform Viewers: GTKWave (Linux, MacOS, Win) ή Scansion (MacOS)
    Σε πολλές διανομές Linux (π.χ. Ubuntu, Debian, κτλ) το GTKwave υπάρχει στα έτοιμα πακέτα που μπορούν να εγκατασταθούν:
    sudo apt-get install gtkwave
    Για να δείτε κυματομορφές από προσομοιώσεις με iverilog θα πρέπει να γεννήσει η προσομοίωση αρχεία τύπου VCD (Value Change Dump). Για να γεννηθούν VCD αρχεία θα πρέπει απλά να προσθέσετε στο testbench σας τις παρακάτω γραμμές στην αρχή του initial block:
    initial begin
      $dumpfile("tb_waves.vcd");
      $dumpvars;
      
      // your other code below
      
      ...
      
    end

Εργαστηριακές Ασκήσεις (Laboratory Exercises)

Ημερομηνία Περιγραφή Εκφώνηση/Υλικό Ημερομηνίες Εργαστηρίων
27 Οκτ. Εργαστηριo 0: Εξοικείωση με προσομοίωση, εργαλεία προγραμματισμού FPGA και την πλακέτα Εκφώνηση
Κώδικας
Εβδομάδα 29/10 έως 01/11
27 Οκτ. Εργαστηριo 1: Χρονισμός VGA Εκφώνηση
Κώδικας
Εβδομάδα 04/11 έως 08/11 και
Εβδομάδα 11/11 έως 15/11
14 Νοε. Εργαστηριo 2: Λαβύρινθος στη VGA Εκφώνηση
Κώδικας
Εβδομάδα 18/11 έως 22/11 και
Εβδομάδα 25/11 έως 29/11
06 Δεκ. Εργαστηριo 3: Μηχανή Ελέγχου για τον Λαβύρινθο Εκφώνηση
Κώδικας
Εβδομάδα 09/12 έως 13/12 και
Εβδομάδα 16/12 έως 20/12

Εργαστηριακά Τμήματα και Ώρες (Lab Sessions)

TBA

Σελίδες Παλαιοτέρων Ετών (Websites from Previous Years)

Last update: 20 Dec. 2019 - by V. Papaefstathiou