Τμήμα Μησανικών Πληποφοπικήρ, Τ.Ε.Ι. Ηπείπος Ακαδημαϊκό Έτορ 2016-2017, 6 ο Εξάμηνο Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Διάλεξθ 2 Διδάςκων Τςιακμάκθσ Κυριάκοσ, Phd MSc in Electronic Physics (Radioelectrology) Computer and Electronic Circuits Technology MSc in Science - Agricultural Engineering
Δομικά ςτοιχεία ςτθ VHDL Οντότθτεσ Αρχιτεκτονικζσ Πακζτα και βιβλιοκικεσ Τφποι δεδομζνων Λζξεισ κλειδιά Τελεςτζσ Αναγνωριςτικά Αντικείμενα Διεργαςίεσ *Διαδικαςίεσ και ςυναρτιςεισ+
Οντότθτα και Αρχιτεκτονικι Ζνα απλό παράδειγμα H αρχιτεκτονική rtl τθσ οντότθτασ enaonoma υλοποιεί μια πύλθ AND --ΟΝΤΟΤΗΤΑ entity enaonoma is port ( in1 : in BIT; in2 : in BIT; out1: out BIT ); end andgate; --ΑΡΧΙΤΕΚΤΟΝΙΚΗ architecture rtl of enaonoma is out1 <= in1 and in2; end rtl; Η γραμμή ςχολίου δθλώνεται με δύο διαδοχικέσ παύλεσ: -- Δεν υφίςταται ευαιςκθςία πεηών-κεφαλαίων (case insensitivity)
Οντότθτα Περιγραφι του τρόπου διαςύνδεςθσ του κυκλώματοσ. Δήλωςθ των ϑυρών ειςόδου/εξόδου προσ και από το κύκλωμα. Δήλωςθ γενικών σταθερών με εμβέλεια τθν οντότθτα και τισ αρχιτεκτονικέσ που ανικουν ςε αυτή. Τύποι ϑυρών IN, OUT, INOUT, BUFFER IN: Είςοδοσ OUT: Εξοδοσ INOUT: Είςοδοσ και έξοδοσ BUFFER: Εξοδοσ με δυνατότθτα εςωτερικήσ ανάγνωςθσ (αποφυγι λόγω αναγκαιότθτασ φπαρξθσ ςε ςυνδεδεμζνεσ μονάδεσ)
Αρχιτεκτονικι Οι βαςικέσ δομέσ τθσ VHDL είναι θ ΟΝΤΟΤΗΤΑ (ENTITY) και θ ΑΡΧΙΤΕΚΤΟΝΙΚΗ (ARCHITECTURE) τθσ περιγραφήσ ενόσ κυκλώματοσ ENTITY: Η διεπαφή του κυκλώματοσ (ϑύρεσ ειςόδου και εξόδου) με το περιβάλλον ARCHITECTURE: Καταγράφει τουσ απαιτούμενουσ μηχανιςμούσ λειτουργίασ για την υλοποίηςη του κυκλώματοσ Η λειτουργικότθτα (εςωτερικοί μθχανιςμοί) του ςχεδιαηόμενου κυκλώματοσ. Στο ςώμα τθσ αρχιτεκτονικήσ (architecture body) δίνεται ο τρόποσ λειτουργίασ του κυκλώματοσ Κάκε κύκλωμα περιγράφεται από μία μόνο οντότθτα, αλλά επιτρέπονται περιςςότερεσ τθσ μιασ αρχιτεκτονικέσ υλοποιήςεισ.
-------------------------------------- ΤΜΗΜΑ 1 library ieee; use ieee.std_logic_1164.all; -------------------------------------- ΤΜΗΜΑ 2 entity OR_ent is port( x: in std_logic; y: in std_logic; F: out std_logic ); end OR_ent; --------------------------------------- ΤΜΗΜΑ 3 architecture OR_arch of OR_ent is process(x, y) -- compare to truth table if ((x='0') and (y='0')) then F <= '0'; else F <= '1'; end if; end process; end OR_arch; --------------------------------------- ΤΜΗΜΑ 4 architecture OR_beh of OR_ent is Υλοποίθςθ κυκλϊματοσ OR Θα περιγράψουμε ςτοιχεία αυτοφ του απλοφ κϊδικα βιμα-βιμα. ΤΜΗΜΑ 1 ΒΙΒΛΙΟΘΗΚΗ (LIBRARY) library ieee; use ieee.std_logic_1164.all; F <= x or y; end OR_beh; ---------------------------------------
-------------------------------------- ΤΜΗΜΑ 1 library ieee; use ieee.std_logic_1164.all; -------------------------------------- ΤΜΗΜΑ 2 entity OR_ent is port( x: in std_logic; y: in std_logic; F: out std_logic ); end OR_ent; --------------------------------------- ΤΜΗΜΑ 3 architecture OR_arch of OR_ent is process(x, y) -- compare to truth table if ((x='0') and (y='0')) then F <= '0'; else F <= '1'; end if; end process; end OR_arch; --------------------------------------- ΤΜΗΜΑ 4 architecture OR_beh of OR_ent is F <= x or y; end OR_beh; --------------------------------------- ΒΙΒΛΙΟΘΗΚΗ (LIBRARY) Μια LIBRARY αποτελεί ςυλλογή από κοινώσ χρθςιμοποιούμενα τμήματα κώδικα. Αποτελείται από ΠΑΚΕΤΑ (PACKAGES) τα οποία περιλαμβάνουν δθλώςεισ COMPONENTS και δθλώςεισ/υλοποιήςεισ FUNCTIONS και PROCEDURES LIBRARY library_name; USE library_name.package_name.package_parts; LIBRARY IEEE; USE IEEE.std_logic_1164.all; USE IEEE.numeric_std.all; USE STD.standard.all; USE work.all;
-------------------------------------- ΤΜΗΜΑ 1 library ieee; use ieee.std_logic_1164.all; -------------------------------------- ΤΜΗΜΑ 2 entity OR_ent is port( x: in std_logic; y: in std_logic; F: out std_logic ); end OR_ent; --------------------------------------- ΤΜΗΜΑ 3 architecture OR_arch of OR_ent is process(x, y) -- compare to truth table if ((x='0') and (y='0')) then F <= '0'; else F <= '1'; end if; end process; end OR_arch; --------------------------------------- ΤΜΗΜΑ 4 architecture OR_beh of OR_ent is F <= x or y; Υλοποίθςθ κυκλϊματοσ OR ΤΜΗΜΑ 2 entity OR_ent is port( ); end OR_ent; Οντότητα OR_ent x: in std_logic; y: in std_logic; F: out std_logic Ενϊ ζχει περιγραφεί θ ςφνταξθ και λειτουργία τθσ οντότθτασ, όπωσ και οι τφποι Θυρϊν in, out δεν αναλφκθκαν οι τφποι δεδομζνων, όπωσ το std_logic. end OR_beh; ---------------------------------------
Τφποι Δεδομζνων - Σιματα Τα ςήματα αντιςτοιχούν ςε φυςικό επίπεδο με καλώδια (wires) τα οποία διαςυνδέουν τισ διάφορεσ υπομονάδεσ Προκακοριςμένοι τύποι ςτθν VHDL BIT: 0, 1 Διάνυςμα (μονοδιάςτατοσ πίνακασ) από BIT (BIT_VECTOR): -> ςτο todianysmamou(0 to 3) ανακέτουμε τθν τιμή 0011. Οι εκφράςεισ <LSB> to <MSB> και <MSB> downto <LSB> δθλώνουν περιοχή τιμών ή διευκύνςεων Το πρότυπο IEEE 1164-1993 κακορίηει τουσ εξήσ τύπουσ ςθμάτων: std_ulogic και std_logic και τουσ διανυςματικούσ τύπουσ std_ulogic_vector και std_logic_vector
Τφποι δεδομζνων - VHDL Στα ΠΑΚΕΤΑ (PACKAGES) των ΒΙΒΛΙΟΘΗΚΩΝ IEEE και STD είναι δθλωμζνα τύποι δεδομένων, προκακοριςμένεσ ςτακερέσ και ένα ςύνολο από βοθκθτικέσ υπορουτίνεσ (ςυναρτήςεισ, διαδικαςίεσ) standard τησ std: BIT, BOOLEAN, INTEGER, REAL std_logic_1164 τθσ IEEE: STD_ULOGIC, STD_LOGIC numeric_std τησ IEEE: SIGNED, UNSIGNED και αρικμθτικούσ, λογικούσ και τελεςτέσ ςύγκριςθσ IEEE βιβλιοθήκη : std_logic_unsigned, std_logic_signed και Αρικμθτικοί και τελεςτέσ ςύγκριςθσ για STD_LOGIC_VECTOR
Πίνακασ Σφνοψθσ Τφπων Δεδομζνων
Τύποι δεδομένων ςτο package STANDARD BIT: 0, 1 BIT_VECTOR: "001100", X"00FF" ςτο δεκαεξαδικό BOOLEAN: true, false CHARACTER: A, a, @, και string REAL: -1.1, +2.32, 36.3, -1.0E+32 INTEGER με εύροσ τιμών {-2,447,463,687, +2,127,583,6547}: +1, 852, -254, +12 TIME: 10 ns, 100 us, 6.3 ns
Οι τύποι SIGNED και UNSIGNED Περιοχή τιμών: unsigned: 0 to 2 N 1 signed: -2 N-1 to 2 N-1-1 Οι τύποι VECTOR signal my_unsigned : unsigned(3 downto 0); signal my_signed : signed (3 downto 0); --------------------------------------------------------------------- my_unsigned <= "1111"; -- 15 decimal my_signed <= "1111"; -- -1 decimal
-------------------------------------- ΤΜΗΜΑ 1 library ieee; use ieee.std_logic_1164.all; -------------------------------------- ΤΜΗΜΑ 2 entity OR_ent is port( x: in std_logic; y: in std_logic; F: out std_logic ); end OR_ent; --------------------------------------- ΤΜΗΜΑ 3 architecture OR_arch of OR_ent is process(x, y) -- compare to truth table if ((x='0') and (y='0')) then F <= '0'; else F <= '1'; end if; end process; end OR_arch; --------------------------------------- ΤΜΗΜΑ 4 architecture OR_beh of OR_ent is Υλοποίθςθ κυκλϊματοσ OR ΤΜΗΜΑ 3 Διεργαςία process(x, y) -- compare to truth table if ((x='0') and (y='0')) then F <= '0'; else F <= '1'; end if; end process; F <= x or y; end OR_beh; ---------------------------------------
Διεργαςίεσ (PROCESS) Οι ακολουκιακζσ (sequential) εντολζσ που εκτελοφνται ςειριακά από το μεταφραςτι είναι αυτζσ που βρίςκονται φωλιαςμζνεσ μζςα ςε μια εντολι τφπου PROCESS, θ οποία όμωσ με τθ ςειρά τθσ αποτελεί μια σύγχρονη εντολι. process(x, y) -- compare to truth table if ((x='0') and (y='0')) then F <= '0'; else F <= '1'; end if; end process; Tο τελικό τθσ αποτζλεςμα εκτελείται παράλλθλα με τισ άλλεσ ςφγχρονεσ εντολζσ από το μεταφραςτι. H χριςθ τθσ λζξθσ PROCESS επιτρζπει τθν χριςθ των εντολϊν IF και ELSE κτλ.