ΗΥ225 Οργάνωση Υπολογιστών. Εισαγωγή στη Verilog

Σχετικά έγγραφα
ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων

ΗΥ-225. Verilog HDL. Τα βασικά...

Εργαστήριο Ψηφιακών Κυκλωμάτων

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

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

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων

Εργαστήριο Ψηφιακών Κυκλωμάτων. Χειμερινό Εξάμηνο

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Γλώσσα περιγραφής υλικού: Verilog

ΗΥ220: Εργαστήριο σχεδίασης ψηφιακών κυκλωμάτων Χριστόφορος Κάχρης

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

VERILOG. Γενικά περί γλώσσας

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

HY430 Εργαστήριο Ψηφιακών Κυκλωμάτων. Πολυπλέκτες Καμπύλη Παρέτο. Κωδικοποιητές/Από-κωδικοποιητές D FF

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

ΠΛΕ- 027 Μικροεπεξεργαστές 4ο μάθημα: γλώσσα περιγραφής υλικού Verilog

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων

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

Αρχιτεκτονική Υπολογιστών

8 η Θεµατική Ενότητα : Εισαγωγή στις Γλώσσες Περιγραφής Υλικού: Μοντέλα Συνδυαστικών Κυκλωµάτων

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

HY130 Ψηφιακή Σχεδίαση

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Ακολουθιακός Κώδικας

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

Εργαστήριο Αρχιτεκτονικής Υπολογιστών Ι. Εισαγωγή στη VHDL

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Μηχανές Πεπερασμένων Καταστάσεων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων

HY220 Pipelines and FSMs Χειμεριν Χειμερι ό Εξ άμη Εξ ν άμη ο

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

7 η Θεµατική Ενότητα : Εισαγωγή στις Γλώσσες Περιγραφής Υλικού

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

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 15: Καταχωρητές (Registers)

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. Καταχωρητές 1

VHDL Introduction. Subtitle

Εργαστήριο Ψηφιακών Κυκλωμάτων

Περίληψη. ΗΜΥ-210: Λογικός Σχεδιασµός Εαρινό Εξάµηνο Παράδειγµα: Καταχωρητής 2-bit. Καταχωρητής 4-bit. Μνήµη Καταχωρητών

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Δομική περιγραφή και περιγραφή Μηχανών Πεπερασμένων Καταστάσεων

ΕΙΣΑΓΩΓΙΚΟ ΕΓΧΕΙΡΙ ΙΟ ΓΙΑ ΣΧΕ ΙΑΣΜΟ ΜΕ ΧΡΗΣΗ ΤΗΣ ΓΛΩΣΣΑΣ VHDL

Εισαγωγή στη γλώσσα περιγραφής υλικού VHDL. Γενικά χαρακτηριστικά, σύνταξη και τύποι. Ψηφιακή Σχεδίαση µε CAD ΙΙ - ιάλεξη 1 -

26-Nov-09. ΗΜΥ 210: Λογικός Σχεδιασμός, Χειμερινό Εξάμηνο Καταχωρητές 1. Διδάσκουσα: Μαρία Κ. Μιχαήλ

Σχεδίαση Ψηφιακών Συστημάτων

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Συντρέχων Κώδικας

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

Κυκλωμάτων» Χειμερινό εξάμηνο

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

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

ΑΣΚΗΣΗ 2: Σχεδίαση και προσομοίωση κυκλωμάτων καταχωρητών και μετρητών

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

H γλώσσα περιγραφής κυκλωµάτων VHDL

Σχεδίαση Ψηφιακών Συστημάτων

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

Χρονισμός και Απόδοση Υπολογιστικών Συστημάτων

VHDL Εισαγωγικές έννοιες

Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 18: Διαδικασία Σχεδίασης Ψηφιακών Συστηµάτων - Επανάληψη

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

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

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 Συµπληρωµατική ΔΙΑΛΕΞΗ 14: Περιγραφή Ακολουθιακών Κυκλωµάτων στη VHDL

HY430 Εργαςτήριο Ψηφιακών Κυκλωμάτων.

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Εισαγωγικές έννοιες για σχεδιασμό με τη VHDL

ΗΥ 232 Οργάνωση και στον Σχεδίαση Η/Y. Διάλεξη 8. Concepts of Digital Design Introduction to Verilog

ΗΜΥ 210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο Ένα συνδυαστικό κύκλωµα µπορεί να περιγραφεί από: Φεβ-05. n-είσοδοι

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

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

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

VHDL για Σχεδιασµό Ακολουθιακών Κυκλωµάτων

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο Διάλεξη 8 η : Μηχανές Πεπερασμένων Κaταστάσεων σε FPGAs

Μετρητής Ριπής ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ. Αναφορά 9 ης. εργαστηριακής άσκησης: ΑΦΡΟΔΙΤΗ ΤΟΥΦΑ Α.Μ.:

Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική και Εφαρμογές»

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. VHDL για Ακολουθιακά Κυκλώματα 1

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

Λογική Σχεδίαση Ι - Εξεταστική Φεβρουαρίου 2013 Διάρκεια εξέτασης : 160 Ονοματεπώνυμο : Α. Μ. Έτος σπουδών:

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

Ψηφιακή Σχεδίαση Ενότητα 10:

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

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

Σχεδίαση Ψηφιακών Συστημάτων

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

Σχεδίαση Ψηφιακών Συστημάτων

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Ακολουθιακή Λογική. Επιμέλεια Διαφανειών: Δ.

ΠΑΡΑΡΤΗΜΑ Β. Verification

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

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

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

ΗΥ 232 Οργάνωση και στον Σχεδίαση Η/Y. Διάλεξη 8. Concepts of Digital Design Introduction to Verilog

Κυκλωμάτων» Χειμερινό εξάμηνο

Εισαγωγή στη VHDL Υλοποίηση στο Quartus

UNIVERSITY OF CALIFORNIA. EECS 150 Fall ) You are implementing an 4:1 Multiplexer that has the following specifications:

Σχεδίαση Υπολογιστικών

100 ΕΡΩΤΗΣΕΙΣ ΜΕ ΤΙΣ ΑΝΤΙΣΤΟΙΧΕΣ ΑΠΑΝΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 13: Διαδικασία Σχεδιασµού Ακολουθιακών Κυκλωµάτων (Κεφάλαιο 6.

Ελίνα Μακρή

Ψηφιακή Λογική Σχεδίαση

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

σφαλμάτων Δημήτρης Νικολός, Τμήμα Μηχ. Ηλεκτρονικών Υπολογιστών και Πληροφορικής, Παν. Πατρών

Εισαγωγή στη Γλώσσα VHDL

Transcript:

ΗΥ225 Οργάνωση Υπολογιστών Εισαγωγή στη Verilog

Processors are everywhere ARM based products CS225: How to build your own processor University of Crete ΗΥ225 2

Intel 8086 Processor 1978 29.000 transistors 5 MHz operation 3 University of Crete ΗΥ225

Cell Processor, PS3 2008 9 Processors 234M transistors (~10.000 000 i8086) Clock speed: 4GHz 230 GFlops 4 University of Crete ΗΥ225

Transistor Counts 1,000,000 K 1 BillionTransistors 100,000 Pentium III 10,000 Pentium II Pentium Pro 1,000 i486 Pentium 100 i386 80286 10 8086 Source: Intel 1 1975 1980 1985 1990 1995 2000 2005 2010 Projected University of Crete ΗΥ225 5

Requirements Τυπική Ροή Σχεδίασης (Design Flow) Verilog, VHDL Simulate Synthesis Gate level Model Simulate Test Bench ASIC or FPGA Place & Route Timing Model Simulate University of Crete ΗΥ225 6

Ιεραρχικές Μεθοδολογίες Σχεδίασης Top Down o ή Bottom Up Συνήθως μια μίξη Τελικό σύστημα αποτελείται από τα Leaf blocks που τρέχουν όλα παράλληλα. University of Crete ΗΥ225 7

Τι είναι η Verilog; Verilog Hardware Description Language (HDL) Μία υψηλού επιπέδου γλώσσα που μπορεί να αναπαριστά και να προσομοιώνει ψηφιακά κυκλώματα. Hardware concurrency Parallel Activity Flow Semantics for Signal Value and Time Παραδείγματα σχεδίασης με Verilog HDL Intel lpentium, AMD K5, K6, Athlon, ARM7, etc Thousands of ASIC designs using Verilog HDL Oh Other HDL : VHDL, SystemC, SystemVerilog University of Crete ΗΥ225 8

Design Abstraction Levels SYSTEM Matlab, SystemC, SystemVerilog + MODULE GATE Verilog, VHDL CIRCUIT S n+ G DEVICE D n+ VLSI University of Crete ΗΥ225 9

Αναπαράσταση Ψηφιακών Συστημάτων H Verilog HDL χρησιμοποιείται για να φτιάξουμε το μοντέλο ενός συστήματος. Λόγοι: Ορισμός Απαιτήσεων (requirements specification) Documentation Έλεγχος μέσω προσομoίωσης (simulation) Λειτουργική Επαλήθευση (formal verification)! Μπορούμε να το συνθέσουμε! Στόχος Αξιόπιστη διεργασία σχεδίασης με χαμηλές απαιτήσεις κόστους και χρόνου Αποφυγή και πρόληψη λαθών σχεδίασης University of Crete ΗΥ225 10

Βασικό Block: Module module and_ff(a, b, q, clk); a b clk g1 D SET g2 CLR Q Q q input a, b; output q; endmodule University of Crete ΗΥ225 11

Βασικό Block: Module module and_ff(a, b, q, clk); a b clk g1 t D SET g2 CLR Q Q q input a, b, clk; output q; endmodule University of Crete ΗΥ225 12

Βασικό Block: Module module and_ff(a, b, q, clk); a b clk g1 t D SET g2 CLR Q Q q input a, b, clk; output q; wire t; and g1(a, b, t), d_ff g2(t, clk, q); endmodule University of Crete ΗΥ225 13

Πόρτες ενός Module in1 in2 in3 arith1 bi_ out out module arith1 (bi_out, out, in1, in2, in3); inout bi_out; output out; input in1, in2; input in3; endmodule University of Crete ΗΥ225 14

Modules vs Instances Instantiation είναι η διαδικασία δημιουργίας αντικειμένου από το module. module nand(out, a, b,); input a, b; output out; wire out = ~ (a & b); endmodule University of Crete ΗΥ225 15

Primitives Επίπεδο Πυλών and, nand, or, nor, xor, xnor, not, buf Παράδειγμα: and N25 (out, A, B) // instance name and #10 (out, A, B) // delay or #15 N33(out, A, B) // name + delay University of Crete ΗΥ225 16

Verilog Modeling Structural Για να συνδέουμε τα modules e.g. counter counter_1( clk, enable, count_out); Dataflow όταν χρησιμοποιούμε βασικές πύλες e.g. wire = (a & b) (c & d); Behavioral or Procedural procedural calls e.g. always @(posedge clk) begin end University of Crete ΗΥ225 17

Verilog Modeling Synthesizable vs Not Synthesizable e.g. a <= #10 b + 1; RTL (Register Transfer Level) όταν η σχεδίαση γίνεται σε επίπεδο registers University of Crete ΗΥ225 18

Συμβάσεις στην γλώσσα Verilog Η Verilog είναι case sensitive. Λέξεις κλειδιά είναι σε μικρά. Σχόλια Για μία γραμμή είναι // Για πολλές /* */ Βασικές τιμές 1 bit σημάτων 0: λογική τιμή 0. 1: λογική τιμή 1 x: άγνωστη τιμή z: ασύνδετο σήμα,high impedance University of Crete ΗΥ225 19

Αριθμοί Αναπαράσταση αριθμών <size> <base_format> <number> <size> δείχνει τον αριθμό απο bits <base_format> μπορεί να είναι : d, h, b, o (default: d) Όταν το <size> λείπει το μέγεθος καθορίζεται από τον compiler Όταν το <number> έχει πολλα ψηφία μπορούμε να το χωρίζουμε με _ (underscore) όπου θέλουμε 100 // 100 4 b1111 // 15, 4 bits 6 h3a // 58, 6 bits 6 b111010 // 58, 6 bits 12 h13x // 304+x, 12 bits 8 b10_ 10_ 1110 // 174, 8 bits University of Crete ΗΥ225 20

Τελεστές (Operators) Arithmetic + * / % Logical! && Relational < > <= >= Equality ==!= Bit wise ~ & ^ ^~ (ή ~^) Reduction & ~& ~ ^ ^~(ή ~^) Shift << >> Concatenation/Replication {A,B, } {4{A}} (πολλούς τελεστέους) Conditional x?y:z (3 τελεστέους) * Εφαρμόζεται μόνο σε έναν τελεστέο University of Crete ΗΥ225 21

Τελεστές (Operators) Arithmetic + * / % Logical! && Relational < > <= >= Equality ==!= Bit wise ~ & ^ ^~ (ή ~^) ΠΡΟΣΟΧΗ στην υλοποίηση Reduction & ~& ~ ^ ^~(ή ~^) Shift << >> Concatenation/Replication {A,B, } {4{A}} (πολλούς τελεστέους) Conditional x?y:z (3 τελεστέους) * Εφαρμόζεται μόνο σε έναν τελεστέο University of Crete ΗΥ225 22

Χρόνος Προσομοίωσης `timescale escae<time e_unit>/<time t e_precision> ecso time_unit: μονάδα μέτρησης χρόνου time_precision: ελάχιστο χρόνο βήματα κατά την προσομοίωση. Μονάδες χρόνου : s, ms, us, ns, ps, fs #<time> : αναμονή για χρόνο <time> #5 a=8 h1a @ ( <σήμα> ): αναμονή μέχρι το σήμα να αλλάξει τιμή (event) @ (posedge clk)// θετική ακμή @ (negedge clk)// αρνητική ακμή @ () (a) @ (a or b or c) University of Crete ΗΥ225 23

Module Body declarations always blocks: Μπορεί να περιέχει πάνω από ένα initial block: Μπορεί να περιέχει ένα ή κανένα. modules/primitives instantiations module test(a, b,); input a;output b; reg b; wire c; always @(posedge a)begin b = #2 a; end always @(negedge a) begin b = #2 ~c; end not N1 (c, a) initial begin b = 0; end endmodule University of Crete ΗΥ225 24

Τύποι μεταβλητών στην Verilog integer // αριθμός wire // καλώδιο σύρμα reg // register tri // tristate University of Crete ΗΥ225 25

Wires Συνδυαστική λογική (δεν έχει μνήμη) Γράφος εξαρτήσεων Μπορεί να περιγράψει και ιδιαίτερα πολύπλοκη λογική wire sum = a ^ b; wire c = sum b; wire a = ~d; wire sum;... assign sum = a ^ b; wire muxout = (sel == 1)? a : b; wire op = ~(a & ((b)? ~c : d) ^ (~e)); University of Crete ΗΥ225 26

Σύρματα και συνδυαστική λογική module endmodule Δήλωση εισόδων εξόδων Concurrent statements module adder(a, b, sum, cout); input a, b; output sum, cout; wire sum = a ^ b; wire cout = a & b; endmodule University of Crete ΗΥ225 27

Regs και ακολουθιακή λογική Στοιχεία μνήμης reg a; κάτι ανάλογο με μεταβλητές στη C Μόνο regs (οχι wires) παίρνουν τιμή σε initial και always blocks. Χρήση των begin και end για grouping πολλών προτάσεων reg q; Όπου χρησιμοποιούμε reg δεν σημαίνει οτι θα begin συμπεριφέρεται σαν καταχωρητής!!! initial begin a = 0; #5; a = 1; end always @(posedge clk) q = #2 (load)? d : q; end University of Crete ΗΥ225 28

Regs και συνδυαστική λογική Αν η συνάρτηση F() είναι πολύπλοκη τότε in1 in2 in3 Συνδιαστική Λογική F() out reg out; always @(in1 or in2 or in3) out = f(in1,in2,in3); reg out; Ισοδύναμα always @(in1 or in2 or in3) out = in1 (in2 & in3); wire out = in1 (in2 & in3); University of Crete ΗΥ225 29

Κανόνες Πορτών Module Τα input και inout έχουν τύπο wire μέσα στο module Ta outputs μπορεί να έχουν τύπο wire ή reg University of Crete ΗΥ225 30

Συνδέσεις μεταξύ Instances Με βάση την θέση module adder(sum, In1, In2) adder add1(a, B, C) // Sum = A, In1 = B, In2 = C Συσχετίζοντας ονόματα (το καλύτερο) module adder(sum, In1, In2) adder add1(.in2(b),.in1(a),.sum(c)) // Sum = C, In1 = A, In2 = B University of Crete ΗΥ225 31

Buses (1/2) in1[1:0] in1[1] in1[0] in2[1:0] in2[1] in2[0] arith2 out[0] out[1:0] out[1] module arith2 (out, in1, in2); output [1:0] out; input [1:0] in1, in2; endmodule University of Crete ΗΥ225 32

Καμία διαφορά στη συμπεριφορά Συμβάσεις: [high : low] [msb : lsb] Προσοχή στις αναθέσεις (μήκη) και τις συνδέσεις εκτός του module Buses (2/2) module adder(a, b, sum, cout); input [7:0] a, b; output [7:0] sum; output cout; wire [8:0] tmp = a + b; wire [7:0] sum = tmp[7:0]; wire cout = tmp[8]; endmodule University of Crete ΗΥ225 33

Συνθέσιμος Κώδικας Ο Synthesizable κώδικας μπορεί να γίνει synthesize και να πάρουμε gate level μοντέλο για ASIC/FPGA. π.χ. wire [7:0] sum = tmp[7:0] & {8{a}}; wire cout = tmp[8]; Non synthesizable κώδικας χρησιμοποιείται μόνο για προσομοίωση και αφαιρείται κατά την διαδικασία της σύνθεσης (logic synthesis). π.χ. initial begin a = 0; b = 0; #5 a = 1; b = 1; end University of Crete ΗΥ225 34

Χρήση Καθυστέρησης ης στην Verilog Λειτουργική Επαλήθευση Functional Verification (RTL Model) Η καθυστέρηση είναι προσεγγιστική. Π.χ. always @(posedge clk) q <= #2 d; // FF με 2 μονάδες καθυστέρηση Συνήθως θεωρούμε ότι η συνδυαστική λογική δεν έχει καθυστέρηση. π.χ. wire a = (b & c) d; // μόνο την λειτουργία όχι καθυστέρηση πυλών Η καθυστέρηση χρησιμοποιείται κυρίως στο testbench κώδικα για να φτιάξουμε τα inputs. Χρονική ήεπαλήθευση Timing i Verification Αναλυτικά κάθε πύλη έχει καθυστέρηση. Συνήθως κάνουμε timing verification σε gate level model το οποίο φτιάχνεται από ένα synthesis tool. University of Crete ΗΥ225 35

Οι πύλες έχουν καθυστέρηση!!! Α Β C tmp Z Α Β C tmp Z 0 5 10 15 20 25 ns Έστω καθυστερήσεις:t and =2nsκαι T or = 1ns Έστω ότι τα καλώδια δεν έχουν καθυστέρηση 3 Μονοπάτια (paths) προς την έξοδο: A Z, ( 1ns ) B tmp Z ( 3 ns ) C tmp Z( 3 ns ) Η συμπεριφορά του κυκλώματος φαίνεται στις κυματομορφές (waveforms) always@(a or b or c) begin tmp = #2 B & C; Z = #1 A tmp; end University of Crete ΗΥ225 36

Ιεραρχικός Έλεγχος Κάθε module ξεχωριστά Block level simulation Testing Έλεγχος των προδιαγραφών, της λειτουργίας και των χρονισμών των σημάτων Όλο το design μαζί System level simulation Έλεγχος της συνολικής λειτουργίας και των διεπαφών University of Crete ΗΥ225 37

Έλεγχος σωστής λειτουργίας Testbench : top module που κάνει instantiate το module που τεστάρουμε, δημιουργεί τις τιμές των εισόδων του (stimulus) και ελέγχει ότι οι έξοδοί του παίρνουν σωστές τιμές. 2 προσεγγίσεις : Έλεγχος εξόδων και χρονισμού με το μάτι Έλεγχος εξόδων και χρονισμού μέσω κώδικα δλδ. αυτόματη σύγκριση των αναμενόμενων εξόδων. University of Crete ΗΥ225 38

Ένα απλό «test bench» module tb_half_add; reg a, b; wire s, c; module half_add(a, add(a b, sum, cout); input a, b; output sum, cout; wire sum = a ^ b; half_add add0(a, b, s, c); wire cout = a & b; endmodule initial begin monitor("a: %x, b: %x, s: %x, c: %x", a, b, s, c); a = 0; b = 0; #5 a = 1; #5 b = 1; #5 a = 0; end endmodule University of Crete ΗΥ225 39

Modelsim Χρησιμοποιείται για την προσομοίωση κυκλωμάτων σε Verilog, VHDL Ουσιαστικά είναι ένας debugger για HDLs University of Crete ΗΥ225 40

Modelsim Introduction 1. Δημιουργία βιβλιοθήκης ββ 2. Compile του κώδικα 3. Εκτέλεση και προσομοίωση University of Crete ΗΥ225 41

Simulator University of Crete ΗΥ225 42

Modelsim Window University of Crete ΗΥ225 43

DFF: Behavioral Module module dff(d, clk, q); input d, clk; output q; reg q; D CLK Q 0 0 1 1 always @(posedge clk) begin q <= d; end endmodule Univeristy of Crete ΗΥ220 44

Sensitivity lists Λογικές εκφράσεις με or posedge και negedge Ρολόγια, reset... always @(posedge clk or negedge rst_)... always @(opcode or b or c) if (opcode == 32 h52a0234e) a = b ^ (~c); always @(posedge a or posedge b) always @(posedge a, posedge b) always #5 clk=~clk Παράλειψη παραγόντων RHS και αυτών που γίνονται read δίνουν λάθη στην προσομοίωση Προσοχή στο hardware που θέλουμε να περιγράψουμε ργρ University of Crete ΗΥ220 45

Conditional Statements If Else Το γνωστό module mux(a, b, sel, if else Μόνο μεσα σε blocks! Επιτρέπονται πολλαπλά και nested ifs Πολλά Else if... Αν υπάρχει μόνο 1 πρόταση δεν χρειάζεται begin end out ); input [4:0] a, b; input sel; output [4:0] out; reg [4:0] out; always @(a or b or sel) begin if ( sel == 0 ) begin out <= a; end else out <= b; end endmodule Univeristy of Crete ΗΥ220 46

Case Statement Το γνωστό case Μόνο μεσα σε blocks! Μόνο σταθερές εκφράσεις Δεν υπάρχει break! Υπάρχει default! module mux (a, b, c, d, sel, out ); input [4:0] a, b, c,d; input [1:0] sel; output t [4:0] out; reg [4:0] out; always @(a or b or c or d or sel ) begin case (sel) 2 b00: out <= a; 2 b01: out <= b; 2 b10: out <= c; 2 b11: out <= d; default: out <= 5 bx; endcase end endmodule Univeristy of Crete ΗΥ220 47

Mux: Behavioral Module module sel(a, b, sel, f); a f b sel a b sel f x y 0 x x y 1 y input a, b, sel; output f; reg f; always @(sel or a or b) begin if (sel==0) f <= a; else f <= b; end endmodule Univeristy of Crete ΗΥ220 48

Initial and always block initial begin // run once a=0; b=0; #5; a=1; b=1; end Runs when simulation starts Terminates when control reaches the end Good for providing stimulus not synthesizable always@(...) begin // run always a <= b & c; end Runs when simulation starts Restart twhen control reaches the end Good for modeling hardware maybe synthesizable University of Crete ΗΥ220 49

Παραμετρικά modules module RegLd( D, Q, load, clk); parameter N = 8; parameter dh = 2; input [N-1:0] D; output [N-1:0] Q; input load, clk; reg [N-1:0] Q; Μπορούμε να έχουμε παραμέτρους σε ένα module Default μέγεθος πολύ βολικό! always @(posedge clk) if (load) Q = #dh D; RegLd reg0(d0, q0, ld, clk); endmodule RegLd #(16,2) reg1(d1, q1, ld, clk); RegLd reg2(d2, q2, ld, clk); defparam reg2.n = 4; defparam reg2.dh = 4; University of Crete ΗΥ220 50

FSMs Οι μηχανές πεπερασμένων καταστάσεων Finite State Machines (FSMs) πιο αφηρημένος τρόπος να εξετάζουμε ακολουθιακά κυκλώματα Είσοδοι, έξοδοι, τρέχουσα κατάσταση, επόμενη κατάσταση Σε κάθε ακμή του ρολογιού συνδυαστική λογική παράγει τις εξόδους και την επόμενη κατάσταση σαν συνάρτησεις των εισόδων και της τρέχουσας κατάστασης. University of Crete ΗΥ225 51

Moore Mealy Dataflow CLK INPUTS Next Statet Present state tt (FFs) Outputs Οι έξοδοι είναι συνάρτηση της κατάστασης CLK INPUTS Next State Present state (FFs) Outputs Οι έξοδοι είναι συνάρτηση της κατάστασης και των εισόδων University of Crete ΗΥ225 52

Βήματα Σχεδίασης 1. Περιγραφή φήλειτουργία του κυκλώματος (functional specification) 2. Διάγραμμα μετάβασης καταστάσεων (state transition diagram) 3. Πίνακας καταστάσεων και μεταβάσεων με συβολικά ονόματα (symbolic state transition table) 4. Κωδικοποίηση η καταστάσεων (state encoding) 5. Εξαγωγή λογικών συναρτήσεων 6. Διάγραμμα κυκλώματος FFs για την κατάσταση ΣΛ για την επόμενη κατάσταση και τις εξόδους ΗΥ220 University of Crete 53

Παράδειγμα FSM Count couples Η έξοδος γίνεται 1 για κάθε ζευγάρι από 1 Moore FSM zero [0] 1 0 0 one1 [0] 0 1 1 two1s [1] ΗΥ220 University of Crete 54

Moore FSM: general & state module moore(out, Clock, Reset, In); output Out; input Clock, Reset, In; zero [0] reg Out; 1 0 reg [1:0] CurrentState; // state reg 0 reg [1:0] NextState; // State assignment parameter STATE_Zero = 2 h0, STATE_One1 = 2 h1 h1, STATE_Two1s = 2 h2, STATE_X = 2 hx; // Implement the state register always @( posedge Clock) begin if (Reset) CurrentState <= STATE_Zero; else CurrentState <= NextState; end one1 [0] 0 1 1 two1s [1] University of Crete ΗΥ225 55

Moore FSM : combinatorial always @(In or CurrentState) begin NextState = CurrentState; Out = 1 b0; case (CurrentState) zero [0] STATE_Zero: begin // last input was a zero 1 0 if (In) NextState = STATE_One1; 0 end one1 STATE_One1: begin // we've seen one 1 [0] if (In) NextState = STATE_ Two1s; 0 else NextState = STATE_Zero; 1 1 end STATE_Two1s: begin // we've seen at 2 ones two1s [1] Out = 1; if (In) NextState = STATE_One1; else NextState = STATE_Zero end default: begin // in case we reach a bad state Out = 1 bx; NextState = STATE_Zero; end endcase end University of Crete ΗΥ225 56

Παράδειγμα FSM Count couples Η έξοδος γίνεται 1 για κάθε ζευγάρι από 1 Mealy FSM Είσοδος 0/0 Έξοδος zero 0/0 1/0 1/1 one1 ΗΥ220 University of Crete 57

Mealy FSM module mealy(clock, Reset, In, Out); input Clock, Reset, In; output Out; reg Out; reg CurrentState;// state register reg NextState; parameter STATE_Zero = STATE_One1 = 1 b0, 1 b1; always @(posedge Clock) begin if (Reset) CurrentState <= STATE_Zero; else CurrentState <= NextState; end 0/0 zero one1 1/0 0/0 1/1 always @ (In or CurrentState) begin NextState = CurrentState; Out = 1 b0; case (CurrentState) STATE_Zero: if (In) NextState = STATE_One1; STATE_One1: begin // we've seen one 1 NextState = STATE_Zero; if (In) Out = 1; end end endmodule endcase ΗΥ220 University of Crete 58

Moore vs Mealy CLK Input 0 0 1 1 0 0 0 Moore Out 0 0 0 1 0 0 0 State Zero Zero One 1 Two 1s 0 0 0 Mealy Out 0 0 0 1 0 0 0 State Zero Zero One 1 Zero 0 0 0 ΗΥ220 University of Crete 59

Αναθέσεις (Assignments) blocking = always @(posedge clk) begin a = b; c = a; // c παίρνει τιμή του b end non blocking <= always @(posedge clk) begin a <= b; c <= a; // c παίρνει παλιά τιμή του a end b b a a c c University of Crete ΗΥ225 60

Αναθέσεις (Assignments) blocking = (η σειρα εχει σημασια!) always @( posedge clk) begin Z=Y; Y=X; y=x; z=y; non blocking <= η σειραδεν εχει σημασια always @(posedge clk) begin a <= b; c <= a; // c παίρνει παλιά τιμή του a end b a c University of Crete ΗΥ225 61

Αναθέσεις (Assignments) blocking = η σειρα εχει σημασια! always @( posedge clk) begin Z=Y; Y=X; // shift register y=x; z=y; //parallel ff. non blocking <= η σειραδεν εχει σημασια! always @(posedge clk) begin a <= b; c <= a; // c παίρνει παλιά τιμή του a end b a c University of Crete ΗΥ225 62

Assignments: Example time 0 : a = #10 b time 10 : c = a a(t=10) = b(t=0) c(t=10) = a(t=10) = b(t=0) time 0 : #10 time 10 : a = b time 10 : c = a a(t=10) = b(t=10) c(t=10) = a(t=10) = b(t=10) time 0 : a <= #10 b time 0 : c <= a a(t=10) = b(t=0) c(t=0) = a(t=0) University of Crete ΗΥ225 63