V ERILOG 3. Coding styles. HY-220 - Παπαευσταθίου Γιάννης2 Τα στυλ του κώδικα Και εμάς τι μας νοιάζει; –Διαφορετικός κώδικας για διαφορετικούς σκοπούς.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
Advertisements

20 Αυγούστου 2014 ΔΙΑΦΑΝΕΙΑ 1 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓ/ΜΟΣ ΜΕ C++ ΤΜ. ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. – ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ ΔΙΑΤΑΞΗ ΚΩΔΙΚΑ ΚΑΙ ΣΤΥΛ (LAYOUT & STYLE)
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Δομές Διακλάδωσης.
Λύση: Multicycle υλοποίηση Single-cyle υλοποίηση: Διάρκεια κύκλου ίση με τη μεγαλύτερη εντολή-worst case delay (εδώ η lw) = χαμηλή.
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Παράλληλος Προγραμματισμός.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 5: Επαναληπτικές και εξωτερικές συναρτήσεις και διαδικασίες Εαρινό εξάμηνο 2009.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ
Γλώσσες Περιγραφής Υλικού. Οι γλώσσες περιγραφής υλικού είναι προσανατολισμένες στην περιγραφή της δομής του hardware και/ή της συμπεριφοράς του Χρησιμοποιούνται.
Διαφάνειες παρουσίασης #3
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
Συγχρονα Ακολουθιακα Κυκλωματα Flip-Flops Καταχωρητες
1. Τα απολύτως απαραίτητα
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΠΑΡΑΔΟΣΕΙΣ ΜΑΘΗΜΑΤΟΣ «ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ 1» ΕΣΩΤΕΡΙΚΗΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ 8085 ΟΚΤΩΒΡΙΟΣ 2005.
ΜΟΝΑΔΑ ΕΛΕΓΧΟΥ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
V ERILOG 2. Μια πιο κοντινή ματιά. ΗΥ-220 – Μαυροειδής Ιάκωβος2 Δομή της γλώσσας Μοιάζει πολύ με τη C –Preprocessor –Keywords –Τελεστές Γλώσσα «event.
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
V ERILOG 1. Τα απολύτως απαραίτητα. Verilog - Λυμπέρης Σπύρος2 Verilog - Γιατί; Σχεδίαση επικεντρωμένη στην αρχιτεκτονική Διαδικασία σύνθεσης Εύκολη συντήρηση.
Σχεδίαση hardware και προγραμματισμός βασικές (αλλά σύγχρονες) μεθοδολογίες Βασίλης Παλιουράς.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 12: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Β) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ-220 Verilog HDL. Τα βασικά.... ΗΥ-220 – Ιάκωβος Μαυροειδής2 Βασική Ροή Σχεδίασης Requirements SimulateRTL Model Gate-level Model Synthesize SimulateTest.
Η δημοφιλέστερη γλώσσα Hardware
Διαφάνειες παρουσίασης #2
ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Επιστημονικός Υπολογισμός Ι Πρώτο Εργαστήριο Εισαγωγή στο matlab 15 Οκτωβρίου 2010 Γιώργος Δρακόπουλος ΤΜΗΥΠ.
ΗΥ220 - Βασίλης Παπαευσταθίου1 ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο Verilog: Τα βασικά.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
V ERILOG 2. Μια πιο κοντινή ματιά. ΗΥ Παπαευσταθίου Γιάννης2 Δομή της γλώσσας Μοιάζει πολύ με τη C –Preprocessor –Keywords –Τελεστές Γλώσσα «event.
ΗΥ Καλοκαιρινός Γιώργος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.
6/23/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Registers.
V ERILOG Laboratories. ΗΥ-220 – Μαυροειδής Ιάκωβος2 Verilog Simulator > rlogin [garbis, kirkios, levantes, apraktias, pounentes, apiliotis] > source ~hy220/verilog/scripts/cds_ldv.sh.
7/15/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Basic Modules Buffer FIFO Decoder, Encoder, Priority Encoder CAM.
Σχεδίαση ψηφιακών συστημάτων Ενότητα 4: Finite State Machines Algorithmic State Machine (ASM) Charts, and VHDL code Ιωάννης Βογιατζής Τμήμα Μηχανικών Πληροφορικής.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
Πρωί ανοιξιάτικης μέρας σε μια συνοικία της Αθήνας …
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
Καθορίζουν το είδος των υπό δημιουργία περιπτώσεων ελέγχου.

Single-cyle υλοποίηση:
Περιεχόμενα Εισαγωγή στο Σύστημα Δυναμικής Προσομοίωσης (Simulink),

Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών
Εισαγωγή στη VHDL 5/8/2018 Εισαγωγή στη VHDL.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Δομημένος Προγραμματισμός - Κεφάλαιο 4 - Ανάπτυξη αλγορίθμων
ΑΛΚΟΟΛ ΚΑΠΝΙΣΜΑ ΝΑΡΚΩΤΙΚΑ ΤΥΧΕΡΑ ΠΑΙΧΝΙΔΙΑ ΗΛΕΚΤΡΟΝΙΚΑ ΜΕΣΑ
‘’ΚΟΛΛΗΤΟΥΜΠΙΝΑΚΙΑ’’
Single-cyle υλοποίηση:
Χειμερινό εξάμηνο 2017 Έκτη – έβδομη διάλεξη
Σχεσιακεσ βασεισ δεδομενων
Μεταγλωττιστές Μεταγλωττιστής είναι το λογισμικό το οποίο πραγματοποιεί την μετάφραση ενός προγράμματος από μία γλώσσα σε μία άλλη. Γιατί ασχολούμαστε.
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
מכטרוניקה אלקטרוניקה ספרתית סתיו תשס"ה 2004/2005
Βασικές έννοιες (Μάθημα 1) Τίτλος: Μερικές βασικές έννοιες της Πληροφορικής 22/11/2018 Ξένιος Αντωνιάδης.
Single-cyle υλοποίηση:
Σύνθεση Κυκλωμάτων με εργαλεία CAD
Single-cyle υλοποίηση:
Single-cyle υλοποίηση:
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Μεταγράφημα παρουσίασης:

V ERILOG 3. Coding styles

HY Παπαευσταθίου Γιάννης2 Τα στυλ του κώδικα Και εμάς τι μας νοιάζει; –Διαφορετικός κώδικας για διαφορετικούς σκοπούς –Synthesizable ή όχι; –Συντήρηση του κώδικα - Αναγνωσιμότητα –Κοινές συμβάσεις Τρεις βασικές κατηγορίες –Behavioral –Register Transfer Level (RTL) –Structural

HY Παπαευσταθίου Γιάννης3 Behavioral (1) … τα εύκολα! Αρχικό simulation –Επιβεβαίωση αρχιτεκτονικής Test benches –Απο απλά … –… μέχρι εκλεπτυσμένα initial begin // reset everything end clk) begin case (opcode) 8’hAB: RegFile[dst] = #2 in; 8’hEF: dst = #2 in0 + in1; 8’h02: Memory[addr] = #2 data; endcase if (branch) dst = #2 br_addr; end initial begin // reset everything end clk) begin case (opcode) 8’hAB: RegFile[dst] = #2 in; 8’hEF: dst = #2 in0 + in1; 8’h02: Memory[addr] = #2 data; endcase if (branch) dst = #2 br_addr; end

HY Παπαευσταθίου Γιάννης4 Behavioral (2) Περισσότερες εκφράσεις –for –wait –fork … join –tasks Περισσότεροι τύποι –integer –real –πίνακες integer sum, i; integer opcodes [31:0]; real average; initial for (i=0; i<32; i=i+1) opcodes[i] = 0; clk) begin sum = sum + 1; average = average + (c / sum); opcodes[d] = sum; $display(“sum: %d, avg: %f”, sum, average); end integer sum, i; integer opcodes [31:0]; real average; initial for (i=0; i<32; i=i+1) opcodes[i] = 0; clk) begin sum = sum + 1; average = average + (c / sum); opcodes[d] = sum; $display(“sum: %d, avg: %f”, sum, average); end !

HY Παπαευσταθίου Γιάννης5 Behavioral (3) reset_) begin fork a = #2 8’h44; b = #(4*`period + 2) 1’b0; c = #(16*`period + 2) 8’h44; join end reset_) begin fork a = #2 8’h44; b = #(4*`period + 2) 1’b0; c = #(16*`period + 2) 8’h44; join end task ShowValues; input [7:0] data; $display(...); $display(..., data); endtask module test;... clk) ShowValues(counter);... endmodule task ShowValues; input [7:0] data; $display(...); $display(..., data); endtask module test;... clk) ShowValues(counter);... endmodule initial begin reset_ = 1’b0; reset_ = #(2*`period + 5) 1’b1; wait (branch); reset_ = 1’b0; reset_ = #(2*`period + 5) 1’b1; end initial begin reset_ = 1’b0; reset_ = #(2*`period + 5) 1’b1; wait (branch); reset_ = 1’b0; reset_ = #(2*`period + 5) 1’b1; end

HY Παπαευσταθίου Γιάννης6 Register Transfer Level Επίπεδο κανονικού synthesizable κώδικα Κάθε block κώδικα αφορά την είσοδο λίγων καταχωρητών Εντολές: –Λιγότερες –… όχι τόσο περιοριστικές Think Hardware!

HY Παπαευσταθίου Γιάννης7 FSMs σε RTL Mealy ή Moore Οπωσδήποτε: –reset –default Μπορεί να γίνει και με 2 blocks Ονόματα αντί για νούμερα… parameter [2:0] Idle = 2’b00, Run = 2’b10, Stop = 2’b11; reg [1:0] State; clk or negedge reset_) begin if (!reset_) State = Idle; else case (State) Idle: if (a) State = #2 Run; else State = #2 Stop; Run: if (b && (~c)) State = #2 Stop; Stop: State = #2 Idle; default: State = #2 Idle; endcase end parameter [2:0] Idle = 2’b00, Run = 2’b10, Stop = 2’b11; reg [1:0] State; clk or negedge reset_) begin if (!reset_) State = Idle; else case (State) Idle: if (a) State = #2 Run; else State = #2 Stop; Run: if (b && (~c)) State = #2 Stop; Stop: State = #2 Idle; default: State = #2 Idle; endcase end

HY Παπαευσταθίου Γιάννης8 Structural Αυστηρότατο μοντέλο –Μόνο module instantiations Συνήθως για το top-level module Καλύτερη η αυστηρή χρήση του module top; wire clk, reset; wire [31:0] d_data, I_data; wire [9:0] d_adr; wire [5:0] i_adr; clock clk0(clk); processor pr0(clk, reset, d_adr, d_data, i_adr, i_data,...); memory #10 mem0(d_adr, d_data); memory #6 mem1(i_adr, i_data); tester tst0(reset,...); endmodule module top; wire clk, reset; wire [31:0] d_data, I_data; wire [9:0] d_adr; wire [5:0] i_adr; clock clk0(clk); processor pr0(clk, reset, d_adr, d_data, i_adr, i_data,...); memory #10 mem0(d_adr, d_data); memory #6 mem1(i_adr, i_data); tester tst0(reset,...); endmodule

HY Παπαευσταθίου Γιάννης9 Σχόλια Ακούγεται μονότονο, αλλά… –Κώδικας hardware πιο δύσκολος στην κατανόηση –Ακόμα και ο σχεδιαστής ξεχνάει γρήγορα –Αν δε μπουν στην αρχή, δε μπαίνουν ποτέ Σημεία κλειδιά –Σε κάθε module –Σε κάθε block /*************************** * Comments on module test: * Module test comprises of * the following components… **************************/ module test; // Line comment /*************************** * Comments on module test: * Module test comprises of * the following components… **************************/ module test; // Line comment

HY Παπαευσταθίου Γιάννης10 … και μερικές συμβουλές Ονοματολογία –Όχι πολύ μεγάλα / μικρά ονόματα –… με νόημα Συνδυαστική λογική –Όχι όλα σε μια γραμμή… –Ο compiler ξέρει καλύτερα –Αναγνωσιμότητα Δομή –Πολλές οντότητες –Ε όχι και τόσες! wire a, controller_data_now_ready; wire drc_rx_2, twra_malista; wire a, controller_data_now_ready; wire drc_rx_2, twra_malista; if (~req && ((flag & prv_ack)| ~set) && (count-2 == 0))... if (~req && ((flag & prv_ack)| ~set) && (count-2 == 0))...