Γλώσσες Περιγραφής Υλικού
Οι γλώσσες περιγραφής υλικού είναι προσανατολισμένες στην περιγραφή της δομής του hardware και/ή της συμπεριφοράς του Χρησιμοποιούνται ευρέως από τη βιομηχανία Μπορούν να χρησιμοποιηθούν για προσομοίωση για σύνθεση Πρότυπες γλώσσες: VHDL, Verilog Γλώσσες Περιγραφής Υλικού
Συντακτικό: 100 περίπου κωδικές λέξεις (input, output, wire, and, or, not κλπ) // σχόλια Κενά διαστήματα αγνοούνται – διάκριση πεζών, κεφαλαίων Βασικό δομικό στοιχείο: υπομονάδα (module) Δηλώνεται με module.. endmodule Περιγραφή υπομονάδων
Verilog – περιγραφή δομής // Description of simple circuit module smpl_circuit(A, B, C, x, y); input A, B, C; output x, y; wire e; and g1(e, A, B); not g2(y, C); or g3(x, e, y); endmodule
Verilog – καθυστέρηση διάδοσης πυλών // Description of simple circuit module smpl_circuit(A, B, C, x, y); input A, B, C; output x, y; wire e; and #(30) g1(e, A, B); not #(10) g2(y, C); or #(20) g3(x, e, y); endmodule Μια εντολή μεταγλωττιστή timescale ‘timescale 1ns / 100ps δηλώνει ότι μονάδα μέτρησης των καθυστερήσεων είναι το 1ns και η ακρίβεια κατά την στρογγυλοποίηση είναι 0.1 ns
Verilog – stimulus // Stimulus module stimcircuit; reg A, B, C; wire x, y; smpl_circuit cwd(A,B,C,x,y); initial begin A=1’b0; B=1’b0; C=1’b0; #100 A=1’b1; B=1’b1; C=1’b1; #100 $finish; end endmodule
Verilog – εφαρμογή δοκιμαστικής εισόδου Μον.Χρόνου Είσοδος Έξοδος (ns)A B C y e x Αρχικά
Μοντελοποίηση σε επίπεδο πυλών // Gate-level description 2-4-line decoder module decoder_g1(A, B, E, D); input A, B, E; output [0:3]D; //διάνυσμα 4 bit wire Anot,Bnot,Enot; //εσωτερικοί κόμβοι not n1 (Anot, A), n2 (Bnot, B), n3 (Enot, E); nand n4 (D[0], Anot, Bnot, Enot), n5 (D[1], Anot, B, Enot), n6 (D[2], A, Bnot, Enot), n7 (D[3], A, B, Enot); endmodule
Μοντελοποίηση Ροής Δεδομένων // Dataflow description 2-4-line decoder module decoder_df(A, B, E, D); input A, B, E; output [0:3]D; //διάνυσμα 4 bit assign D[0] = ~(~A & ~B & ~E), D[1] = ~(~A & B & ~E), D[2] = ~(A & ~B & ~E), D[3] = ~(A & B & ~E), endmodule
Μοντελοποίηση Συμπεριφοράς // Dataflow description 4-1 line MUX module mux(i0, i1, i2, i3, select, y); input i0, i1, i2, i3; input [1:0] select; output y; reg y; //η έξοδος των εντολών πρέπει //να είναι τύπου reg (i0 or i1 or i2 or i3 or select) case (select) 2'b00 : y = i0; 2'b01 : y = i1; 2'b10 : y = i2; 2'b11 : y = i3; endcase endmodule -στον τύπο wire η έξοδος μιας ανάθεσης ανανεώνεται συνεχώς - στον τύπο reg η τιμή διατηρείται μέχρις ότου ανατεθεί νέα τιμή - οι διαδικασιακές εντολές εκτελούνται κάθε φορά που αλλάζει τιμή κάποια από τις μεταβλητές που αναφέρονται μετά