ΗΥ-220 Verilog HDL. Τα βασικά.... ΗΥ-220 – Ιάκωβος Μαυροειδής2 Βασική Ροή Σχεδίασης Requirements SimulateRTL Model Gate-level Model Synthesize SimulateTest.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Συνδυαστικά Κυκλώματα
Advertisements

Εισαγωγή στις Τεχνολογίες της Πληροφορικής και των Επικοινωνιών
ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων
ΗΜΥ 100 Εισαγωγή στην Τεχνολογία
ΕΝΟΤΗΤΑ 10Η Η ΓΛΩΣΣΑ VHDL: ΑΚΟΛΟΥΘΙΑΚΑ ΚΥΚΛΩΜΑΤΑ
Kαταχωρητες και Μετρητες (Registers και Counters)
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
ΕΝΟΤΗΤΑ 7Η ΑΚΟΛΟΥΘΙΑΚΑ ΚΥΚΛΩΜΑΤΑ ΤΗΣ ΤΥΠΙΚΗΣ ΛΟΓΙΚΗΣ
Μνημη τυχαιας προσπελασης (Random Access Memory - RAM)
Γλώσσες Περιγραφής Υλικού. Οι γλώσσες περιγραφής υλικού είναι προσανατολισμένες στην περιγραφή της δομής του hardware και/ή της συμπεριφοράς του Χρησιμοποιούνται.
ΑΡΧΙΤΕΚΤΟΝΙΚΗ & ΟΡΓΑΝΩΣΗ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 1 Εισαγωγή
Γλώσσα περιγραφής υλικού VHDL. Βασική δομή VHDL κώδικα Entity Entity (Δήλωση εισόδων – εξόδων του συστήματος) Architecture Architecture structural (περιγραφή.
Συνδυαστικά Κυκλώματα
1. Τα απολύτως απαραίτητα
9o εξάμηνο Ηλεκτρονικός Κύκλος Εργαστήριο στα FPGA
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
ΗΥ220 - Βασίλης Παπαευσταθίου1 ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο Χρονισμός Σύγχρονων Κυκλώματων, Καταχωρητές και Μανταλωτές.
V ERILOG 2. Μια πιο κοντινή ματιά. ΗΥ-220 – Μαυροειδής Ιάκωβος2 Δομή της γλώσσας Μοιάζει πολύ με τη C –Preprocessor –Keywords –Τελεστές Γλώσσα «event.
V ERILOG 1. Τα απολύτως απαραίτητα. Verilog - Λυμπέρης Σπύρος2 Verilog - Γιατί; Σχεδίαση επικεντρωμένη στην αρχιτεκτονική Διαδικασία σύνθεσης Εύκολη συντήρηση.
ΗΜΥ 100: Εισαγωγή στην Τεχνολογία Διάλεξη 17 Εισαγωγή στα Ψηφιακά Συστήματα: Μέρος Γ TΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΠΟΛΥΤΕΧΝΙΚΗ.
Σχεδίαση hardware και προγραμματισμός βασικές (αλλά σύγχρονες) μεθοδολογίες Βασίλης Παλιουράς.
ΗΥ220 - Βασίλης Παπαευσταθίου1 ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο Verilog: Μια πιο κοντινή ματιά.
Η δημοφιλέστερη γλώσσα Hardware
ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων
Kαταχωρητές και Μετρητές (Registers και Counters)
ΗΥ220 - Βασίλης Παπαευσταθίου1 ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο Verilog: Τα βασικά.
ΗΜΥ 100: Εισαγωγή στην Τεχνολογία Διάλεξη 16 Εισαγωγή στα Ψηφιακά Συστήματα: Μέρος B TΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΠΟΛΥΤΕΧΝΙΚΗ.
V ERILOG 2. Μια πιο κοντινή ματιά. ΗΥ Παπαευσταθίου Γιάννης2 Δομή της γλώσσας Μοιάζει πολύ με τη C –Preprocessor –Keywords –Τελεστές Γλώσσα «event.
ΗΥ220 - Βασίλης Παπαευσταθίου1 ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο Ροή Σχεδίασης Κυκλωμάτων και Εργαλεία CAD.
ΗΥ Καλοκαιρινός Γιώργος1 Register module Reg(Q, D, Clk); // parameter N = 16; input Clk; input [N-1:0] D; output [N-1:0] Q; reg [N-1:0] Q; // always.
V ERILOG 3. Coding styles. HY Παπαευσταθίου Γιάννης2 Τα στυλ του κώδικα Και εμάς τι μας νοιάζει; –Διαφορετικός κώδικας για διαφορετικούς σκοπούς.
6/23/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Registers.
6/25/2015HY220: Ιάκωβος Μαυροειδής1 Computer Aided Design CAD tools Functional DesignSpecificationsLogic DesignCircuit DesignPhysical DesignFabrication.
V ERILOG Laboratories. ΗΥ-220 – Μαυροειδής Ιάκωβος2 Verilog Simulator > rlogin [garbis, kirkios, levantes, apraktias, pounentes, apiliotis] > source ~hy220/verilog/scripts/cds_ldv.sh.
Translation Lookaside Buffers Φροντιστήριο του μαθήματος “Προηγμένοι Μικροεπεξεργαστές”
HY220: Ιάκωβος Μαυροειδής
7/15/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Basic Modules Buffer FIFO Decoder, Encoder, Priority Encoder CAM.
ΕΙΣΑΓΩΓΗ ΣΤΗ VHDL ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΕΡΓΑΣΤΗΡΙΑΚΩΝ ΑΣΚΗΣΕΩΝ
{ Ψηφιακή Σχεδίαση εργαστήριο Γιάννης Νικολουδάκης.
Σχεδίαση ψηφιακών συστημάτων Ενότητα 1: Εισαγωγή Ιωάννης Βογιατζής Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Το περιεχόμενο.
ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ 1 Διάλεξη 12: Διάλεξη 12: Καταχωρητές - Μετρητές Δρ Κώστας Χαϊκάλης.
ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Διάλεξη 8: Ολοκληρωμένα κυκλώματα – Συνδυαστική λογική – Πολυπλέκτες – Κωδικοποιητές - Αποκωδικοποιητές Δρ Κώστας Χαϊκάλης ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ.
11/14/2016Structural VHDL148 Structural VHDL Παράδειγμα Multiplexer Component Component specification Port map command Unconnected outputs Unconnected.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Η Γλώσσα Pascal Εντολή If
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Συστήματα CAD Πανεπιστήμιο Θεσσαλίας Σχολή Θετικών Επιστημών
Αρχές Πληροφορικής Ενότητα # 4: Δομή ενός υπολογιστικού συστήματος
Outline Εισαγωγή Συνδυαστική λογική Ακολουθιακή λογική
Συστήματα CAD Πανεπιστήμιο Θεσσαλίας Σχολή Θετικών Επιστημών

Single-cyle υλοποίηση:
Άσκηση 4-8B Γεώργιος Μυλωνάς 6328.
αναγκαίο κακό ή δώρο εξ’ ουρανού;

Ψηφιακή Σχεδίαση Εργαστήριο Τετάρτη 14/10/2015.
Εισαγωγή στη VHDL 5/8/2018 Εισαγωγή στη VHDL.
Ψηφιακή Σχεδίαση εργαστήριο
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Single-cyle υλοποίηση:
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
מכטרוניקה אלקטרוניקה ספרתית סתיו תשס"ה 2004/2005
Σύνθεση Κυκλωμάτων με εργαλεία CAD
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
Εργαστήριο Ψηφιακών Ηλεκτρονικών
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Μέρος Β – Μονάδες Επεξεργαστή
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Μεταγράφημα παρουσίασης:

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

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

ΗΥ-220 – Ιάκωβος Μαυροειδής3 Τι είναι η 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 : SystemC, VHDL

ΗΥ-220 – Ιάκωβος Μαυροειδής4 Αναπαράσταση Ψηφιακών Συστημάτων Verilog HDL χρησιμοποιείται για να φτιάξεις το μοντέλο ενός συστήματος. Λόγοι: –requirements specification –documentation –testing using simulation –formal verification –synthesis Στόχος –most reliable design process, with minimum cost and time –avoid design errors!

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

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

ΗΥ-220 – Ιάκωβος Μαυροειδής7 Operators Arithmetic + - / % Relational = Equality == != Logical ! && || Bit-wise ~ & | ^ ^~ Shift > Conditional x? y:z Concatenation/Replication {A,B} {4{A}}

ΗΥ-220 – Ιάκωβος Μαυροειδής8 Μεθοδολογία Σχεδίασης Τελικό σύστημα αποτελείται από τα Leaf blocks που τρέχουν όλα παράλληλα. Δεν υπάρχει program counter στην Verilog.

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

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

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

ΗΥ-220 – Ιάκωβος Μαυροειδής12 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

ΗΥ-220 – Ιάκωβος Μαυροειδής13 Χρόνος Προσομοίωσης `timescale / –time_unit: μονάδα μέτρησης χρόνου –time_precision: ελάχιστο χρόνο βήματα κατά την προσομοίωση. Μονάδες χρόνου : s, ms, us, ns, ps # : αναμονή για χρόνο –#5 : αναμονή μέχρι το σήμα να αλλάξει τιμή (posedge clk) (negedge clk) (a)

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

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

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

ΗΥ-220 – Ιάκωβος Μαυροειδής17 Σύρματα και συνδυαστική λογική module adder(a, b, sum, cout); input a, b; output sum, cout; wire sum = a ^ b; wire cout = a & b; endmodule module adder(a, b, sum, cout); input a, b; output sum, cout; wire sum = a ^ b; wire cout = a & b; endmodule module … endmodule Δήλωση εισόδων - εξόδων Concurrent statements

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

ΗΥ-220 – Ιάκωβος Μαυροειδής19 Registers και συνδυαστική λογική reg out; or in2 or in3) out <= in1 | (in2 & in3); reg out; or in2 or in3) out <= in1 | (in2 & in3); reg out; or in2 or in3) out <= f(in1,in2,in3); reg out; or in2 or in3) out <= f(in1,in2,in3); wire out = in1 | (in2 & in3); Αν η συνάρτηση F() είναι πολύπλοκη τότε Ισοδύναμα Συνδιαστική Λογική F() in1 out

ΗΥ-220 – Ιάκωβος Μαυροειδής20 Assignment blocking = clk) begin a = b; c = a; // c παίρνει τιμή του b end non blocking <= clk) begin a <= b; c <= a; // c παίρνει παλιά τιμή του a end ba c b a c

ΗΥ-220 – Ιάκωβος Μαυροειδής21 Assignment: 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 : a = #10 b time 10 : c = a a(t=10) = b(t=0) c(t=10) = a(t=10) = b(t=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) #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) time 0 : a <= #10 b time 0 : c <= a a(t=10) = b(t=0) c(t=0) = a(t=0)

ΗΥ-220 – Ιάκωβος Μαυροειδής22 Χρήση Καθυστέρησης στην Verilog Functional Verification (RTL Model) –Η καθυστέρηση είναι προσεγγιστική. Π.χ. clk) d <= #10 q; // FF με 10 μονάδες καθυστέρηση –Συνήθως θεωρούμε ότι η συνδιαστική λογική δεν έχει καθυστέρηση.π.χ. wire a = (b & c) | d; // μόνο την λειτουργία όχι καθυστέρηση πυλών –Η καθυστέρηση χρησιμοποιείται κυρίως στο testbench κώδικα για να φτιάξουμε τα inputs. Timing Verification –Αναλυτικά κάθε πύλη έχει καθυστέρηση. –Συνήθως έχουμε timing verification σε gate-level model το οποίο φτιάχνεται από ένα synthesis ή PnR tool.

ΗΥ-220 – Ιάκωβος Μαυροειδής23 Κανόνες Πορτών Module Τα input και inout έχουν τύπο wire μέσα στο module Ta outputs μπορεί να έχουν τύπο wire ή reg

ΗΥ-220 – Ιάκωβος Μαυροειδής24 Συνδέσεις μεταξύ 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

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

ΗΥ-220 – Ιάκωβος Μαυροειδής26 Buses (cont) Καμία διαφορά στη συμπεριφορά Συμβάσεις: –[high : low] –[msb : lsb] Προσοχή στις συνδέσεις εκτός του module… 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 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

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

ΗΥ-220 – Ιάκωβος Μαυροειδής28 Synthesizable Code Ο Synthesizable κώδικας μπορεί να γίνει synthesize και να πάρουμε gate-level μοντέλο για ASIC/FPGA. π.χ. wire [7:0] sum = tmp[7:0] & {8{a}}; wire cout = tmp[8]; Non-synthesizable κώδικας χρησιμοποιείται μόνο για προσομοίωση και πετιέται κατά την διαδικασία της synthesys. π.χ. initial begin a = 0; b = 0; #5 a = 1; b = 1; end

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

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

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

ΗΥ-220 – Ιάκωβος Μαυροειδής32 module counter(clk, reset, out); input clk, reset; output [7:0] out; wire [7:0] next_value = out + 1; reg [7:0] out; clk) begin if (reset) out = #2 8’b0; else out = #2 next_value; end endmodule module counter(clk, reset, out); input clk, reset; output [7:0] out; wire [7:0] next_value = out + 1; reg [7:0] out; clk) begin if (reset) out = #2 8’b0; else out = #2 next_value; end endmodule Μετρητής 8 bits module clk(out); output out; reg out; initial out = 1’b0; always out = #25 ~out; endmodule module clk(out); output out; reg out; initial out = 1’b0; always out = #25 ~out; endmodule !

ΗΥ-220 – Ιάκωβος Μαυροειδής33 Μετρητής 8 bits (2) module test; wire clk; reg reset; wire [7:0] count; clock clk0(clk); counter cnt0(clk, reset, count); module test; wire clk; reg reset; wire [7:0] count; clock clk0(clk); counter cnt0(clk, reset, count); initial begin reset = clk); reset = #2 clk); #300; end endmodule initial begin reset = clk); reset = #2 clk); #300; end endmodule !

ΗΥ-220 – Ιάκωβος Μαυροειδής34 Μετρητής 8 bits (3) clk reset count counter.v clock.v test.v

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