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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

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

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

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

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

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

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

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

ΗΥ-150. Προγραμματισμός

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

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

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

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

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

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

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

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

ΗΥ-150. Προγραμματισμός

Library, package και subprograms

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Ακολουθιακές εντολές. (Peter Ashenden, The Students Guide to VHDL)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Συναρτήσεις, Διαδικασίες και Δομές Ελέγχου Λειτουργίας Κυκλωμάτων (testbenches)

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

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

HY340, 2009 Α. Σαββίδης Slide 2 / 143. HY340, 2009 Α. Σαββίδης Slide 3 / 143. HY340, 2009 Α. Σαββίδης Slide 4 / 143

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

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

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

Εισαγωγή στον Προγραμματισμό

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

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

VHDL Introduction. Subtitle

Εισαγωγή στον Προγραμματισμό

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

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

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

Δημοκρίτειο Πανεπιστήμιο Θράκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών. Συστήματα VLSI. Πρόοδος Άνοιξη 2018

Εισαγωγή στη Matlab 2 Εισαγωγή στην Αριθμητική Ανάλυση Διδάσκων: Γεώργιος Ακρίβης Βοηθός: Δημήτριος Ζαβαντής

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

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Παράδειγμα αντιστοίχισης κυκλώματος σε FPGA

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

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

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

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

Transcript:

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Verilog: Μια πιο κοντινή ματιά Χειμερινό Εξάμηνο 2009 2010

Δομή της γλώσσας Μοιάζει αρκετά με τη C Preprocessor Keywords Τελεστές = ==,!= <, >, <=, >= &&? : & and or ~ not ^ xor `timescale 1ns / 1ns `define dh 2 (e.g q <= #`dh d) `undef dh `ifdef dh / `ifndef dh... `else... `if `include def.h Γλώσσα «event driven» University of Crete ΗΥ220 2

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 3

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

Τιμές σημάτων Four valued logic i i i l 0 ή 1 Ζ X Έξοδος τρικατάστατου οδηγητή Καλώδιο χωρίς ανάθεση Αρχική τιμή των regs Έξοδος πύλης με είσοδο/ους Ζ Ταυτόχρονη ανάθεση 0 και 1 από δύο ή περισσότερες πηγές (multi source logic) [πηγή = always block] Προσοχή στην αρχικοποίηση (regs) initial... always @(posedge clk) if (reset)... else... 0 1 X Z 0 0 0 0 0 1 0 1 X X X 0 X X X Z 0 X X X University of Crete ΗΥ220 5

Τιμές σημάτων if (a==1 bx) // report error εχει νόημα για το simulation αλλα σε πραγματικο κυκλωμα δεν έχει νόημα University of Crete ΗΥ220 6

Concatenation «Hardwired» πράξεις 3 a απαραίτητες σε μια HDL 5 b 8 c wire [2:0] a; wire [4:0] b; wire [7:0] c = {a, b}; wire [7:0] unsigned; wire [15:0] sign_ext = { (unsigned[7]? 8 hff : 8 h0), unsigned }; University of Crete ΗΥ220 7

Concatenation II wire [2:0] a; wire [4:0] b; wire [7:0] c = {a, b}; wire [11:0] d = {2{b}, b}; wire [11:0] d = {b, b, b}; wire [25:0] e = {2{3{b}}, a}; University of Crete ΗΥ220 8

if statement always@(a or b or data1 or ) if (a==0) y = data1; else begin if (b==0) y = data2; else y = data3; data1 data2 data3 b a y University of Crete ΗΥ220 9

nested if statement always@(a or b or data1 ) if (a==0) if (b==0) y = data1; else y = data2; always@(a or b or data1 ) if (a==0) begin if (b==0) y = data1; else y = data2; The else is paired with the nearest unfinished if statement University of Crete ΗΥ220 10

if statement latch always@(a or b or data1 or ) if (a==0) y1 = data1; else y2 = data2; University of Crete ΗΥ220 11

if statement mux a always@(a or b or data1 or ) y1 = 0; y2 = 0; if (a==0) y1 = data1; else y2 = data2; data1 0 0 data2 ~a y1 y2 University of Crete ΗΥ220 12

case statement 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; case University of Crete ΗΥ220 13

eg e.g. Gray code with case statement always @(a or b or c or d or sel ) begin case (sel) 2 b00: out <= 2 b00; 2 b01: out <= 2 b01; 2 b10: out <= 2 b11; 2 b11: out <= 2 b10; default: out <= 2 bx; case Binary Grey 00 => 00 01 => 01 11 => 11 10 => 10 University of Crete ΗΥ220 14

case statement latch! 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; case University of Crete ΗΥ220 15

For While τa γνωστά integer i; ; Μόνο μέσα σε blocks! Δεν υπάρχει break ουτε continue!!! Δεν υπάρχει i++, ++i κτλ! j=0; Κυρίως για j=j+1; testbenches!!! // the famous i variable :) initial begin for ( i=0; i<10; i=i+1 )beging $display ( i= %d,i); integer j; //reg [3:0] j is OK! initial begin while(j < 10)begin $display ( j= %b,j); University of Crete ΗΥ220 16

For While Synthesizable integer i; // the famous i variable :) always@(b or c) begin for ( i=1; i<5; i=i+1 i )beginb i a(i) <= b(i) & c(i); b(1) c(1) b(2) c(2) b(3) c(3) b(4) c(4) a(1) a(2) a(3) a(4) University of Crete ΗΥ220 17

For While Not Synthesizable! integer i; // the famous i variable :) always@(*) begin for ( i=1; i<5; i=i+1 i )begin a <= i; #10; a = 3 b100 University of Crete ΗΥ220 18

Παραμετρικά 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); module 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 19

Τρικατάστατοι οδηγητές Εκμετάλλευση της κατάστασης Ζ Χρήση του τύπου inout module tristate(en, clk, data); input en, clk; inout [7:0] data; wire [7:0] data = (en)? data_out : 8 bz; always @(posedge clk) begin if (!en) case (data)... module wire [7:0] bus; tristate tr0(en0, clk, bus); tristate tr1(en1, clk, bus); tristate tr2(en2, clk, bus); University of Crete ΗΥ220 20

Μνήμες Αναδρομικά: array of array Συνήθως non synthesizable Ειδική αρχικοποίηση $readmemh $readmemb wire [15:0] word_in; wire [15:0] word_out; wire [ 9:0] addr; reg [15:0] memory [1023:0]; always @(posedge clk) begin if (we) memory[addr] = word_in; else word_out = memory[addr]; always @(negedge rst_n) $readmemh( memory.dat, memory); memory.dat: 0F00 00F1 0F02 University of Crete ΗΥ220 21

Συναρτήσεις Functions (1/3) Δήλωση (declaration): function [ range_or_type ] fname; input _ declarations statements function Επιστρεφόμενη τιμή (return value): Ανάθεση στο σώμα του function fname = expression; Κλήση (function call): fname ( expression, ) University of Crete ΗΥ220 22

Συναρτήσεις Functions (2/3) Χαρακτηριστικά συναρτήσεων: Επιστρέφει 1 τιμή (default: 1 bit) Μπορεί να έχει πολλαπλά ορίσματα εισόδου (πρέπει να έχει τουλάχιστον ένα) Μπορούν να καλούν άλλες functions αλλά όχι tasks. Δεν υποστηρίζουν αναδρομή (non recursive) Εκτελούνται σε μηδέν χρόνο προσομοίωσης Δεν επιτρέπονται χρονικές λειτουργίες (π.χ. dl delays, events) Χρησιμοποιούνται για συνδυαστική λογική και συνθέτονται συνήθως ετσι. προσοχή στον κώδικα για να γίνει σωστά σύνθεση University of Crete ΗΥ220 23

Συναρτήσεις Functions (3/3) Function examples: function calc_parity; input [31:0] val; begin calc_parity = ^val; function function [15:0] average; input [15:0] a, b, c, d; begin average = (a + b + c + d) >> 2; function; University of Crete ΗΥ220 24

Verilog Tasks (1/2) Τυπικές procedures Πολλαπλά ορίσματα input, output και inout Δεν υπάρχει συγκεκριμένη τιμή επιστροφής (χρησιμοποιεί μ τα όρισματα output) ) Δεν υποστηρίζουν αναδρομή (non recursive) Μπορούν να καλούν άλλες tasks και functions Μπορούν να περιέχουν delays, events και χρονικές λειτουργίες Προσοχή στη σύνθεση University of Crete ΗΥ220 25

Verilog Tasks (2/2) Task example: task ReverseByte; input [7:0] a; output [7:0] ra; integer j; begin for (j = 7; j >=0; j=j-1) j begin ra[j] = a[7-j]; task University of Crete ΗΥ220 26

Functions and Tasks Ορίζονται μέσα σε modules και είναι τοπικές Δεν μπορούν να έχουν always και initial blocks αλλά μπορούν να καλούνται μέσα από αυτά Μπορούν να έχουν ότι εκφράσεις μπαίνουν σε blocks University of Crete ΗΥ220 27

Functions Μπορούν να καλούν άλλες functions αλλά όχι tasks Εκτελούνται σε μηδενικό χρόνο προσομοίωσης Δεν μπορούν περιέχουν χρονικές λειτουργίες (delay, events κτλ) Έχουν τουλάχιστον 1 είσοδο και μπορούν να έχουν πολλές Functions vs Tasks Tasks Μπορούν να καλούν άλλες tasks και functions Μπορούν να διαρκούν μη μηδενικό χρόνο προσομοίωσης Μπορούν να περιέχουν χρονικές λειτουργίες (delay, events κτλ) Μπορούν να έχουν μηδέν ή περισσότερα ορίσματα εισόδων, εξοδων και inout Επιστρέφουν μια τιμή, δεν έχουν Δεν επιστρέφουν τιμή αλλά εξόδους βγάζουν έξοδο από τα ορίσματα εξόδου και inout University of Crete ΗΥ220 28

System Tasks and Functions Tasks and functions για έλεγχο της προσομοίωσης Ξεκινούν με "$" (e.g., $monitor) Standard της γλώσσας Παράδειγμα system task: $display $display("format-string", expr1,, exprn); format string regular ASCII mixed with formatting characters %d decimal, %b binary, %h hex, %t time, etc. other arguments: any expression, including wires and regs $display("error at time %t: value is %h, expected %h", $time, actual_value, expected_value); University of Crete ΗΥ220 29

Χρήσιμες System Tasks $time τρέχον χρόνος προσομοίωσης $monitor τυπώνει όταν αλλάζει τιμή ένα όρισμα ( 1 μόνο κάθε φορά νέες κλήσεις ακυρώνουν τις προηγούμενες ) $monitor("cs=%b, ns=%b", cs, ns) Έλεγχος προσομοίωσης $stop διακοπή simulation $finish τερματισμόςsimulation Υπάρχουν και συναρτήσεις για file I/O ( $fopen, $fclose, $fwrite etc ) University of Crete ΗΥ220 30

Events in Verilog (1/3) Δουλεύει μόνο όταν κάτι αλλάξει Όλο το simulation δουλεύει γύρω από μια ουρά από γεγονότα (event queue) Περιέχει events και ετικέτες με το χρόνο στον οποίο θα εκτελεστούν Καμιά εγγύηση για τη σειρά εκτέλεσης γεγονότων που πρέπει να γίνουν στον ίδιο χρόνο!!! always clk = #(`period p / 2) ~clk; always @(posedge clk) a = b + 1; always @(posedge clk) b = c + 1;! University of Crete ΗΥ220 31

Events in Verilog (3/3) 2 τύποι events Evaluation : υπολογίζουν τις συναρτήσεις των εισόδων της έκφρασης (RHS) Update : Αλλάζουν τις εξόδους (LHS) Λαμβάνουν υπόψιν delays nonb assignments Evaluation: διαβάζει τις τιμές b και c, υπολογίζει, αποθηκεύει εσωτερικά και προγραμματίζει Update: Γράφει το νέο a και ένα update dt event προγραμματίζει evaluation events για κώδικα που a <= b + c εξαρτάται από το α. University of Crete ΗΥ220 32

Blocking vs Non blocking assignments and Events Blocking = Evaluation/read (RHS) και assignment/write (LHS) (update event) στον ίδιο χρόνο Εκτέλεση σειριακή Non blocking boc <= Evaluation και assignment σε 2 βήματα 1. Evaluation στο δεξί μέλος (RHS) άμεσα 2. Assignment t( (update) στο αριστερό μέλος (LHS) όταν τελειώσουν όλα τα evaluations του τρέχοντος χρόνου always @(posedge clk) always @(posedge clk) a = b; always @(posedge clk) b = a; Swap? a <= b; always @(posedge clk) b <= a; University of Crete ΗΥ220 33

Οι πύλες έχουν καθυστέρηση!!! Α Β 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) University of Crete ΗΥ220 34

Οι πύλες έχουν καθυστέρηση!!! Α Β 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; University of Crete ΗΥ220 35

Απλή Λογική με ρολόι Α Β C Z T clk = 10 ns Τ and = 2 ns, T or = 1 ns T c2q = 2 ns, T su = 1 ns, T hd = 0.5 ns Clk Q Clk Α Β C Z Q Ικανοποιούνται οι περιορισμοί Setup και Hold του Flip Flop p? 0 5 10 15 20 25 ΟΚ Παραβίαση ns Άγνωστη Τιμή University of Crete ΗΥ220 36

Delays and Events Regular / Inter Assignment delays #5 a = b + c; // a=b+c at time 5 #4 d = a; // d=a new at time 9 new Intra Assignment delays Evaluation του RHS πρίν τηνκαθυστέρηση With blocking assignments: a = #5 b + c; // a=b+c(t=0) at time 5 d = a; // d=a new at time 5 With non blocking assignments: a <= #5 b + c; // a=b+c at time 5 d <= a; // d=a old at time 0 University of Crete ΗΥ220 37

Delays and Events a = #10 ~b; = begin b_temp = ~b; #10 a = b_temp; University of Crete ΗΥ220 38

Κάθε έκφραση συνδέεται με έναν αρχικό χρόνο Initial και always: εσωτερικά σειριακά εκτός από non blocking assignments 0 10 20 30 40 50 Events Example 0 initial begin a = 0; b = 0; c = 0; clk = 0; 10, 20, 30, 40, 50 always begin clk = #10 1; clk = #10 0; wire #4 [3:0] comb = a + b; always @(posedge clk) a <= b + 1; always @(posedge clk) b <= c + 1; always @(posedge clk) c <= #5 a + 1; 4, 14, 34 10, 30 10, 30 15, 35 University of Crete ΗΥ220 39

Synthesizable Verilog Η καθυστέρηση που βάζουμε δεν είναι αυτή που θα υπάρχει στο τελικό κύκλωμα!!! Α Β C tmp Z tmp = #2 B & C; Z = #1 A tmp; Στο πραγματικό κύκλωμα η πύλη AND: 90nm (πχ. Pentium III) 2ns 65nm (πχ. Pentium 4) 0.5ns 45nm (πχ. Core Duo) 0.4ns University of Crete ΗΥ220 40

assignments and delays always@(a or b) #3 c1 = a&b; always@(a or b) c1 = #3 a&b; always@(a or b) #3 c1 <= a&b; always@(a or b) c1 <= #3 a&b; University of Crete ΗΥ220 41

assignments and delays always@(a or b) #3 c1 = a&b; always@(a or b) c2 = #3 a&b; always@(a or b) #3 c3 <= a&b; always@(a or b) c4 <= #3 a&b; University of Crete ΗΥ220 42

Delays in wires wire a,b,c; assign #2 c = a & b; University of Crete ΗΥ220 43

Delays in wires II wire a,b,d; wire #2 c; assign c = a & b; assign d = a & b; University of Crete ΗΥ220 44

Παράλληλα Blocks fork / join Επιτρέπει την παράλληλη εκτέλεση ενός σειριακού block Προσοχή στα race conditions Δεν υποστηρίζονται εύκολα στη σύνθεση Μπορούν να υπάρχουν nested td Βασική δομή fork parallel-statement1; parallel-statement2; join University of Crete ΗΥ220 45

Sequential vs Parallel Blocks reg x,y; reg [1:0] z; initial begin x = 1 b0; // time 0 #5 y = 1 b1; // time 5 #10 z = {x,y};// time 15 reg x,y; reg [1:0] z; initial begin fork x = 1 b0; // time 0 #5 y = 1 b1; // time 5 #10 z = {x,y};// time 10 join University of Crete ΗΥ220 46

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

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

Modelsim Window University of Crete ΗΥ220 49

Backup slides University of Crete ΗΥ220 50

Events in Verilog (2/3) Βασική ροή προσομοίωσης Εκτέλεση των events για τον τρέχοντα χρόνο Οι εκτέλεση events αλλάζει την κατάσταση του συστήματος και μπορεί να προκαλέσει προγραμματισμό events για το μέλλον Όταν τελειώσουν τα events του τρέχοντα χρόνου προχωράμε ρά στα αμέσως επόμενα ε χρονικά! t 0 + period t 0 University of Crete ΗΥ220 51