Η δημοφιλέστερη γλώσσα Hardware

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΝΟΤΗΤΑ 10Η Η ΓΛΩΣΣΑ VHDL: ΑΚΟΛΟΥΘΙΑΚΑ ΚΥΚΛΩΜΑΤΑ
Advertisements

ΕΝΟΤΗΤΑ 5Η ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ ΤΗΣ ΤΥΠΙΚΗΣ ΛΟΓΙΚΗΣ Α΄
ΠΡΟΗΓΜΕΝΑ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
Τεχνολογία TTL, Τεχνολογία CMOS Κυκλώματα της τυπικής λογικής Μνήμες
Γλώσσες Περιγραφής Υλικού. Οι γλώσσες περιγραφής υλικού είναι προσανατολισμένες στην περιγραφή της δομής του hardware και/ή της συμπεριφοράς του Χρησιμοποιούνται.
Γλώσσα περιγραφής υλικού VHDL. Βασική δομή VHDL κώδικα Entity Entity (Δήλωση εισόδων – εξόδων του συστήματος) Architecture Architecture structural (περιγραφή.
ΕΝΟΤΗΤΑ 9Η Η ΓΛΩΣΣΑ VHDL: ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ
1. Τα απολύτως απαραίτητα
9o εξάμηνο Ηλεκτρονικός Κύκλος Εργαστήριο στα FPGA
V ERILOG 1. Τα απολύτως απαραίτητα. Verilog - Λυμπέρης Σπύρος2 Verilog - Γιατί; Σχεδίαση επικεντρωμένη στην αρχιτεκτονική Διαδικασία σύνθεσης Εύκολη συντήρηση.
Σχεδίαση hardware και προγραμματισμός βασικές (αλλά σύγχρονες) μεθοδολογίες Βασίλης Παλιουράς.
ΗΥ-220 Verilog HDL. Τα βασικά.... ΗΥ-220 – Ιάκωβος Μαυροειδής2 Βασική Ροή Σχεδίασης Requirements SimulateRTL Model Gate-level Model Synthesize SimulateTest.
ΗΥ220 - Βασίλης Παπαευσταθίου1 ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο Verilog: Μια πιο κοντινή ματιά.
ΗΥ220 - Βασίλης Παπαευσταθίου1 ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο Verilog: Τα βασικά.
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.
V ERILOG 3. Coding styles. HY Παπαευσταθίου Γιάννης2 Τα στυλ του κώδικα Και εμάς τι μας νοιάζει; –Διαφορετικός κώδικας για διαφορετικούς σκοπούς.
Τεχνολογία ΛογισμικούSlide 1 Εκτέλεση σε Πραγματικό Χρόνο Τεχνολογία Λογισμικού Slide 25.
ΕΙΣΑΓΩΓΗ ΣΤΗ VHDL ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΕΡΓΑΣΤΗΡΙΑΚΩΝ ΑΣΚΗΣΕΩΝ
Σχεδίαση ψηφιακών συστημάτων Ενότητα 4: Finite State Machines Algorithmic State Machine (ASM) Charts, and VHDL code Ιωάννης Βογιατζής Τμήμα Μηχανικών Πληροφορικής.
Σχεδίαση ψηφιακών συστημάτων Ενότητα 1: Εισαγωγή Ιωάννης Βογιατζής Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Το περιεχόμενο.
Η καθημερινή ζωή στο Βυζάντιο Εργασία της μαθήτριας: Τζένη Αλουσάι στο μάθημα της Ιστορίας ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΗΤΡΙΑ:κα.Τσαούση.
Μάθημα 8 Session και Cookies. Session Το HTTP πρωτόκολλο είναι stateless. Άρα το HTTP δεν έχει μνήμη. Αυτό σημαίνει ότι εάν έχω μια μεταβλητή που την.
11/14/2016Structural VHDL148 Structural VHDL Παράδειγμα Multiplexer Component Component specification Port map command Unconnected outputs Unconnected.
Η Γλώσσα Pascal Εντολή If
Βελτιστοποίηση σε τρίλιζα Καταδίωξη/διαφυγή
Είσαι το Οικοδόμημα Του Θεού
Οικοδόμημα Είσαι το του Θεού

Σχεδίαση συνδυαστικών κυκλωµάτων
Όποιος θέλει να με ακο-λου- θήσει, ας απαρνηθεί τον εαυτό του
JSIS E 111: Elementary Modern Greek
ΕΡΓΑΣΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Ένα ζευγάρι ηλικιωμένων παίρνει διαζύγιο…..
and he will flee from you.
Ποιοί είναι οι δικαστικοί σχηματισμοί του Δικαστηρίου;
Εγώ είμαι η θύρα: όποιος περάσει θα βρει σωτηρία.

Ρωμαίους 10:17 Επομένως για να πιστέψει κανείς Χρειάζεται ν’ακούσει,
Οικοδόμημα Είσαι το του Θεού Ο Στέφανος πεθαίνει για το Χριστό
Εισαγωγή στη VHDL 5/8/2018 Εισαγωγή στη VHDL.
ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης
Πρότυπα Προγραμματισμού
Ακούστηκε από τον ουρανό
που έχουν χάσει το δρόμο τους
Ψαλμός 86:11 Το δρόμο σου Κύριε δίδαξε με θα στην αλήθεια σου και πάνω
Βήματα Πίστης Παλαιά Διαθήκη Τόμος 3
γιατί είναι Κύριος Κυρίων,
Στο βάθος της καρδιάς μου.
Είσαι το Οικοδόμημα του Θεού
Σήμερα στην πόλη του Δαβίδ κι αυτός είναι ο Χριστός ο Κύριος
Βήματα Πίστης Καινή Διαθήκη Τόμος 2
Η στήριξη και η κίνηση στους ζωικούς οργανισμούς
Ονοματεπώνυμο: Σαλβαρίδης Γεώργιος Ημερομηνία: 20/09/2017
Οικοδόμημα Είσαι το του Θεού
Η Κωνσταντινα και οι αραχνεσ τησ
ΕΥΠΑΘΕΙΣ ΠΛΗΘΥΣΜΟΙ.
Γεώργιος Βιζυηνός Γέννηση Θάνατος Υπηκοότητα Ιδιότητα
Αυτός είναι ο Αμνός του Θεού την αμαρτία που παίρνει πάνω του
Γιατί και ο Υιός του Ανθρώπου δεν ήρθε για
Ο Θεός Φροντίζει για Μας
Να τον ο ένας άλλο όπως εγώ σας Ιωάννης 15:12 αγάπησα
Ο Θεός Φροντίζει για Μας
Ο Θεός Φροντίζει για Μας
Ο Θεός Φροντίζει για Μας
Το Υλικό του Υπολογιστή
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
Εισαγωγή στον αλγεβρικό λογισμό
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
Ενότητα Γ7.4.11(Προβλήματα Δομής Διακλάδωσης )
Μεταγράφημα παρουσίασης:

Η δημοφιλέστερη γλώσσα Hardware VHDL Tutorial Η δημοφιλέστερη γλώσσα Hardware

Γιάννης Παπαευσταθίου Και γιατί όχι Verilog; VHDL μάλλον πιο δύσκολη αλλά… πιο αυστηρή πιο περιγραφική πολύ περισσότερες δυνατότητες «You will grow to like it!» Όχι για χαμηλά επίπεδα entity a is port ( x, y: in std_logic; a, c: out std_logic ); end a; architecture b of a is C: process (x, y) begin if (sel == 0) c = ~(a or b); else c = ~d; R(0) <= 1; R(1) <= 2; end end b; if (sel == 0) c = ~(a or b); else c = ~d; always @(posedge clk) begin R[1] <= #`dh 1; R[2] <= #`dh 2’b0; end Γιάννης Παπαευσταθίου

Entities και Architectures Modules: Ένα entity Τουλάχιστον ένα architecture Μπορεί και διάφορα άλλα… Εntity Το module απο έξω Αrchitectures Ο κώδικας entity adder is port (in0, in1 : in bit; sum, cout : out bit); end adder; architecture rtl of adder is begin sum <= in0 and in1; cout <= in0 xor in1; end rtl; architecture str of adder is ... end str; Γιάννης Παπαευσταθίου

Κάποιες διαφορές με τη Verilog Case insensitive Κάποιοι βάζουν τα δεσμευμένα keywords κεφαλαία Καλύτερα όλα μικρά Διαφορετικοί τελεστές Ανάθεση με <= ή := Ισότητα και ανισότητα με = και /= Concatenation με & Σχόλια με -- Δεν έχουμε το πρόβλημα με την ακμή του ρολογιού! Γιάννης Παπαευσταθίου

Περιεχόμενα ενός architecture architecture beh of adder is begin sum_proc: process (in0, in1) if (in0=’1’ and in1=’1’) then sum <= ’1’; else sum <= ’0’; end if; end process sum_proc; cout <= in0 xor in1; end beh; Processes Σειριακά statements Απλά statements Concurrent Instantiations Components (structural style) Γιάννης Παπαευσταθίου

Περιεχόμενα ενός architecture (2) entity adder is port (in0, in1 : in bit; sum, cout : out bit); end adder; architecture a ... end a; entity b ... end b; component c ... end component; d: process ... end process d; architecture str of adder is component andgate is port (a, b : in bit; c : out bit); end component; begin a0: andgate port map (a => in0, b => in1, c => sum); cout <= in0 xor in1; end str; ! Γιάννης Παπαευσταθίου

Πού πήγαν οι καταχωρητές μου; Συνδυαστικά και ακολουθιακά σή-ματα είναι ίδια Eπιλογή του compiler! Προσέχουμε τί γράφουμε… Όλα είναι signals (ή variables) architecture beh of reg_ld is signal q, d : bit; begin reg: process (clk) if (clk’event and clk = ’1’) then q <= d; end if; end process reg; end beh; Γιάννης Παπαευσταθίου

Γιάννης Παπαευσταθίου Τύποι Οι τύποι είναι πολύ μεγάλης σημασίας στη VHDL Αυστηρότατος έλεγχος Compile time Οχι αναθέσεις μεταξύ δια-φορετικών τύπων entity fulladd is port (a, b: in bit; c, d: out character); end fulladd; architecture beh of fulladd is signal e: boolean; signal f, g: integer; type fsm_type is (idle, go); signal state: fsm_type; begin ... end beh; Γιάννης Παπαευσταθίου

Γιάννης Παπαευσταθίου Packages Βασική οντότητα της γλώσσας Περιέχει δηλώσεις τύπων, συναρτήσεων, ... Δήλωση των πακέτων που χρησιμοποιούμε package standard is type boolean is (false, true); type bit is (’0’, ’1’); end standard; library IEEE; use IEEE.std_logic_1164.all; library work; use work.my_package.all; ... signal a: std_logic; signal state: my_fsm_type; Γιάννης Παπαευσταθίου

Γιάννης Παπαευσταθίου Buses signal data: bit_vector (7 downto 0); port ( address: in std_logic_vector (31 downto 0) ); Eιδικοί τύποι στη VHDL Χρήση των "to" και "downto" για εύρος Παρενθέσεις Kαλό είναι να ακολουθούνται οι συμβάσεις msb το αριστερότερο bit μεγαλύτερο το αριστερότερο bit Γιάννης Παπαευσταθίου

Τύποι για bits και buses Το “standard” πακέτο είναι ελλειπές Περιέχει ορισμούς των bit και bit_vector Για αυτά δεν ορίζει αριθμητικές πράξεις Δεν χρησιμοποιούνται απο κανέναν! Όλοι χρησιμοποιούν τους τύπους “std_logic” Πακέτο της ΙΕΕΕ library IEEE; use IEEE.std_logic_1164.all; ... signal single: std_logic; signal bus : std_logic_vector (31 downto 0); Γιάννης Παπαευσταθίου

Γιάννης Παπαευσταθίου Πράξεις Στη VHDL δεν υπάρχει τίποτα εξ’ορισμού Για τύπους std_logic υπάρχουν 3 πακέτα: std_logic_unsigned Όλα τα std_logic_vector θεωρούνται unsigned std_logic_signed Όλα τα std_logic_vector θεωρούνται signed (2’s compl.) std_logic_arith Δεν ορίζονται πράξεις για τα std_logic_vector Ορίζονται 2 καινούριοι τύποι “signed” και “unsigned” και πράξεις μεταξύ τους Γιάννης Παπαευσταθίου

Γιάννης Παπαευσταθίου std_logic Ορίζει πράξεις Ορίζει resolution functions Έχει πολλές τιμές: u : uninitialized x : strong uknown 0 : strong 0 1 : strong 1 z : high impedance w : weak uknown l : weak 0 h : weak 1 - : don’t care Γιάννης Παπαευσταθίου

Πότε τρέχει μια process; H process είναι σειριακό block Eκτελείται ξανά μόλις τελειώσει… … εκτός αν έχει sensitivity list reg: process (clk, rst) begin if (rst = ’1’) then q <= ’0’; elsif (clk’event and clk = ’1’) then q <= d; end if; end process reg; reg: process begin ... wait on clk, rst; end process reg; run_once: process begin ... wait; end process run_once; Γιάννης Παπαευσταθίου

Γιάννης Παπαευσταθίου Μετρητής 8 bits: entity library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter is port ( reset : in std_logic; clock : in std_logic; value : out std_logic_vector (7 downto 0); wrap : out std_logic ); end counter; Γιάννης Παπαευσταθίου

Μετρητής 8 bits: architecture architecture rtl of counter is signal int_value : std_logic_vector (7 downto 0); signal int_wrap : std_logic; begin cnt_proc: process (clock, reset) if (reset = '1') then int_value <= (others => '0'); elsif (clock'event and clock = '1') then if (int_wrap = '0') then int_value <= int_value + 1; else int_value <= (others => '0'); end if; end process cnt_proc; int_wrap <= '1' when (int_value = "11111111") else '0'; value <= int_value; wrap <= int_wrap; end rtl; Γιάννης Παπαευσταθίου

Μετρητής 8 bits: Test bench 1/2 library ieee; use ieee.std_logic_1164.all; entity test_counter is end test_counter; architecture beh of test_counter is component counter port ( reset : in std_logic; clock : in std_logic; value : out std_logic_vector (7 downto 0); wrap : out std_logic; ); end component; signal reset : std_logic; signal wrap : std_logic; signal clock : std_logic := ’0’; signal value : std_logic_vector (7 downto 0); begin Γιάννης Παπαευσταθίου

Μετρητής 8 bits: Test bench 2/2 counter0: counter port map ( reset => reset, clock => clock, wrap => wrap, value => value); clock <= not clock after 5 ns; test_proc: process begin reset <= ’1’; wait for 20 ns; reset <= ’0’; wait for 3 us; wait; end process test_proc; end beh; Γιάννης Παπαευσταθίου

Βοήθεια! Δεν υπάρχει VHDL-XL! Ναι, δεν υπάρχει. Leapfrog ή NCSim NCSim suite: cds.lib: “include /cadence/tools/inca/files/cds.lib” cds.lib: “define work .” hdl.var: “define work work” ncvhdl counter.vhd ncvhdl test_counter.vhd ncelab test_counter:beh ncsim -gui test_counter:beh Γιάννης Παπαευσταθίου

Γιατί δουλεύουν σωστά τα signals; signal a, b : std_logic; ... a <= ’0’; a <= ’1’; b <= a; Γιάννης Παπαευσταθίου

Γιάννης Παπαευσταθίου Delta cycles Ο χρόνος στη VHDL εσωτερικά οργανώνεται με delta cycles Όταν γίνεται αλλαγή τιμής σε signal, προ-γραμματίζεται για το επόμενο delta cycle O χρόνος προχωράει κατά ένα delta cycle όταν όλοι όσοι διαβάζουν τιμές σε αυτό το χρονικό διάστημα τελειώσουν Γιάννης Παπαευσταθίου

Γιάννης Παπαευσταθίου Variables check: process variable fault : boolean; begin fault := false; for i in 0 to 31 loop if (data(i) = ’u’) then fault := true; end if; end loop; if (fault) then ... end process check; Εσωτερικά στις processes Η τιμή ανατίθεται αμέσως! Ανάθεση με := O loop counter των for loops δεν χρειάζεται δήλωση Γιάννης Παπαευσταθίου

Γιάννης Παπαευσταθίου Case To γνωστό μας case Μόνο μέσα σε process Υποχρεωτικά default clause ή εξαντλητικό case Προσοχή! Ο τύπος std_logic δεν έχει μόνο 0 και 1... case (opcode) is when “000011” => ... when “110000” => when others => end case; Γιάννης Παπαευσταθίου

Γιάννης Παπαευσταθίου FSMs architecture rtl of fsm is type t_state is ( idle, go, stop); signal state : t_state; begin f: process (clk, reset) if (reset = ’1’) then state <= idle; elsif (clk’event and clk=’1’) then case (state) is when idle => state <= go; when go => ... when stop => ... end case; end if; end process f; end rtl; Oρίζουμε έναν καινούριο τύπο για την FSM H κωδικοποίηση των καταστάσεων γίνεται αυτόματα Γιάννης Παπαευσταθίου

Τεράστιες δυνατότητες Η VHDL κάνει σχεδόν τα πάντα! Το tutorial είναι μόνο εισαγωγικό: χειρισμός strings files, text & binary I/O generics custom types, records, arrays custom measurement units functions, procedures pointers (!) Γιάννης Παπαευσταθίου