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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Απόδειξη Ισοδυναμίας Συναρτήσεων

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΣΧΟΛΗ ΟΙΚΟΝΟΜΙΑΣ, ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ

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

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

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

ΚΑΣΣΙΑΝΟΣ ΜΕΛΑΝΙΤΗΣ. Αποκωδικοποιητής ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ. Αναφορά 8 ης εργαστηριακής άσκησης: Α.Μ.:

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

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

VHDL Introduction. Subtitle

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

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

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

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

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

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

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

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΣΧΟΛΗ ΟΙΚΟΝΟΜΙΑΣ, ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ

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

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

Μοντελοποίηση Επιπέδου Πύλης. (Peter Ashenden, The Students Guide to VHDL)

ΚΕΦΑΛΑΙΟ Συνδυαστικά Κυκλώµατα. 3.2 Σχεδιασµός Συνδυαστικής Λογικής 3.3 ιαδικασία Ανάλυσης 3.4 ιαδικασία Σχεδιασµού.

Lab 2 Manual - Introduction to Xilinx

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

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

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

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

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

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

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

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

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

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

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

Σχεδίαση κυκλωμάτων σε SystemVerilog: 1o μέρος

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

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

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

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα

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

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

Introduction to IP Cores

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

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

Structural VHDL. Structural VHDL

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

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

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

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

Χ. Σωτηρίου. Σχήμα 1: Προτεινόμενο Πρόγραμμα Επαλήθευσης του ολοκληρωμένου Επεξεργαστή

Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.

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

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

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

Εισαγωγή στην πληροφορική -4

Εισαγωγή στα κυκλώµατα CMOS 2

Transcript:

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

Βασική Ροή Σχεδίασης Requirements RTL Model Simulate Synthesize Gate-level Model Simulate Test Bench ASIC or FPGA Place & Route Timing Model Simulate ΗΥ-225 Ιάκωβος Μαυροειδής 2

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

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

Αριθµοί Αναπαράσταση αριθµών Όταν το <size> λείπει το µέγεθος καθορίζεται από τον compiler. <size> <base_format><number> <size> δείχνει τον αριθµό αποbits <base_format> µπορεί να είναι : d, h, b, o 100 // 100 4 b1111 // 15, 4 bits 6 h3a // 58, 6 bits 6 b111010 // 58, 6 bits 12 h13x // 304+x, 12 bits ΗΥ-225 Ιάκωβος Μαυροειδής 5

Μεθοδολογία Σχεδίασης Τελικό σύστηµα αποτελείταιαπόταleaf blocks που τρέχουν όλα παράλληλα. εν υπάρχει program counter στην Verilog. ΗΥ-225 Ιάκωβος Μαυροειδής 6

Βασικό Block: Module Name: arith module arith (out1, out2, in1, in2); output out1, out2; input in1, in2; endmodule ΗΥ-225 Ιάκωβος Μαυροειδής 7

Πόρτες ενός Module Name: arith1 in1 in2 in3 bi_out out module arith1 (bi_out, out, in1, in2, in3); inout bi_out; output out; input in1, in2; input in3; endmodule ΗΥ-225 Ιάκωβος Μαυροειδής 8

Modules vs Instances Instantiation είναι η διαδικασία δηµιουργίας αντικειµένου από το module. module module nand(out, nand(out, a, a, b,); b,); input input a, a, b; b; Output Output out; out; wire wire out; out; out out = = ~ ~ (a (a & & b); b); endmodule endmodule ΗΥ-225 Ιάκωβος Μαυροειδής 9

Χρόνος Προσοµοίωσης `timescale <time_unit>/<time_precision> time_unit: µονάδα µέτρησης χρόνου time_precision: ελάχιστο χρόνο βήµατα κατά την προσοµοίωση. Μονάδες χρόνου : s, ms, us, ns, ps #<time> : αναµονή για χρόνο <time> #5 a=8 h1a @<σήµα> : αναµονή µέχρι το σήµα νααλλάξειτιµή @ (posedge clk) @ (negedge clk) @ (a) ΗΥ-225 Ιάκωβος Μαυροειδής 10

Module Body Declarations always blocks. Μπορεί να περιέχει πάνω από ένα initial. Μπορεί να περιέχει ένα ή κανένα. primitives Instantiations module module test(a, test(a, b,); b,); input input a;output a;output b; b; reg reg b; b; wire wire c; c; always always @(posedge a)begin a)begin b = #2 #2 a; a; end end always always @(negedge a) a) begin begin b = #2 #2 ~c; ~c; end end not not N1 N1 (c, (c, a) a) initial initial begin begin b = 0; 0; end end endmodule ΗΥ-225 Ιάκωβος Μαυροειδής 11

Τύποι µεταβλητών στην Verilog integer wire reg tri // αριθµός // καλώδιο σύρµα // register // tristate ΗΥ-225 Ιάκωβος Μαυροειδής 12

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

Registers (ακολουθιακή λογική) Στοιχεία µνήµης κάτι ανάλογο µε µεταβλητές στη C Μόνο registers (οχι wires) παίρνουν τιµή σε initial και always blocks. Synthesizable code: Αναθέσεις «κοντά» Εξαίρεση: test bench Hold time reg reg a; a; initial begin begin a = 0; 0; #5; #5; a = 1; 1; end end reg reg q; q; always @(posedge clk) clk) begin begin if if (load) q = #2 #2 d; d; end end ΗΥ-225 Ιάκωβος Μαυροειδής 14

Συνδέσεις µεταξύ Instances Με βάση την θέση module adder(sum, In1, In2) adder (A, B, C) // Sum = A, In1 = B, In2 = C Συσχετίζοντας ονόµατα module adder(sum, In1, In2) adder (.In2(B),.In1(A),.Sum(C)) // Sum = C, In1 = A, In2 = B ΗΥ-225 Ιάκωβος Μαυροειδής 15

Buses Name: arith2 in1[1:0] in2[1:0] in1[1] in1[0] in2[1] in2[0] out[0] out[1] out[1:0] module arith2 (out, in1, in2); output [1:0] out; input [1:0] in1, in2; endmodule ΗΥ-225 Ιάκωβος Μαυροειδής 16

Buses (cont) module adder(a, b, b, sum, sum, cout); input input [7:0] [7:0] a, a, b; b; output [7:0] [7:0] sum; sum; output cout; cout; wire wire [8:0] [8:0] tmp tmp = a + b; b; wire wire [7:0] [7:0] sum sum = tmp[7:0]; wire wire cout cout = tmp[8]; endmodule Καµία διαφορά στη συµπεριφορά Συµβάσεις: [high : low] [msb : lsb] Προσοχή στις συνδέσεις εκτός του module ΗΥ-225 Ιάκωβος Μαυροειδής 17

Γράψιµο Κώδικα Ηλειτουργίαένοςmodule µπορεί να οριστεί µε διάφορους τρόπους: Behavioral (επίπεδο πιο κοντά στην λογική) Παρόµοια µετηνc οκώδικαςδενέχειάµεση σχέση µε το hardware. π.χ. wire a = b + c Gate level/structural (επίπεδο κοντά στο hardware) Ο κώδικας δείχνει πως πραγµατικά υλοποιειται σε πύλες ηλογική. π.χ. wire sum = a ^ b; wire cout = a & b; ΗΥ-225 Ιάκωβος Μαυροειδής 18

Testing Hierarchical Testing - Block-level simulation / System-level ΗΥ-225 Ιάκωβος Μαυροειδής 19

Προσεγγίσεις για έλεγχο σωστής λειτουργίας Προσέγγιση 1 Testbench : top module που κάνει instantiate το module που τεστάρουµε, δηµιουργεί τις τιµές των εισόδων του και ελέγχει ότι οι έξοδοί του παίρνουν σωστές τιµές. Προσέγγιση 2 ΗΥ-225 Ιάκωβος Μαυροειδής 20

Ένα απλό «test bench» module module adder(a, adder(a, b, b, sum, sum, cout); cout); module test; test; input input a, a, b; b; reg reg a, a, b; b; output output sum, sum, cout; cout; wire wire s, s, c; c; wire wire sum sum = a ^ b; b; adder adder add0(a, b, b, s, s, c); wire c); wire cout cout = a & b; b; endmodule initial begin endmodule begin a = 0; 0; b = 0; 0; #5 #5 $display("a: %x, %x, b: b: %x, %x, s: s: %x, %x, c: c: %x", %x", a, a, b, b, s, s, c); c); a = 1; 1; #5 #5 $display("a: %x, %x, b: b: %x, %x, s: s: %x, %x, c: c: %x", %x", a, a, b, b, s, s, c); c); b = 1; 1; #5 #5 $display("a: %x, %x, b: b: %x, %x, s: s: %x, %x, c: c: %x", %x", a, a, b, b, s, s, c); c); a = 0; 0; #5 #5 $display("a: %x, %x, b: b: %x, %x, s: s: %x, %x, c: c: %x", %x", a, a, b, b, s, s, c); c); end end endmodule ΗΥ-225 Ιάκωβος Μαυροειδής 21

Verilog Simulator > rlogin [garbis, kirkios, levantes, apraktias, pounentes, apiliotis] > source ~hy225/verilog/scripts/cds_ldv.sh > mkdir test; cd test > cp ~hy225/verilog/examples/test.v > verilog test.v > signalscan signalscan File > Open Simulation File ( ιαλέξτε το test.shm/test.trn) Πατείστε το DesBrows Επιλέξτε το «test» στο Instances in Current Context Πατείστε 2 φορές στο «clk» Πατείστε το AddToWave ΗΥ-225 Ιάκωβος Μαυροειδής 22

test.v initial begin // Start Tracing (signalscan) $shm_open("test.shm"); $shm_probe(test, "AS"); // print values of clk at stdout each time // it changes $monitor ($time, ":clk=%b", clk); #200 // Stop Tracing $shm_close(); // Stop Simulation $finish; end ΗΥ-225 Ιάκωβος Μαυροειδής 23

Ανακεφαλαίωση! Συνδυαστική λογική: wire Ακολουθιακή λογική: reg Buses: [high:low] Καθυστερήσεις: #t @(posedge ) ύο τύποι statements: initial always Είσοδος - έξοδος: input, output Αποτελέσµατα: $display Cadence waves ΗΥ-225 Ιάκωβος Μαυροειδής 24