Γλώσσα περιγραφής υλικού VHDL. Βασική δομή VHDL κώδικα Entity Entity (Δήλωση εισόδων – εξόδων του συστήματος) Architecture Architecture structural (περιγραφή.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Threading Building Blocks. Σύνοψη  Γενικά για TBBs  Tasks  Parallel for  Εσωτερική λειτουργία βιβλιοθήκης  Task graphs.
Advertisements

VLSI Design & Testing Center - Democritus University of Thrace 1 9 o εξάμηνο Ηλεκτρονικός Κύκλος Εργαστήριο στα FPGA.
ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων
ΗΜΥ 100 Εισαγωγή στην Τεχνολογία
ΕΝΟΤΗΤΑ 10Η Η ΓΛΩΣΣΑ VHDL: ΑΚΟΛΟΥΘΙΑΚΑ ΚΥΚΛΩΜΑΤΑ
NT Greek Grammar (Macnair Ch. 1-4)
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Distributed Database Systems.
Αντικειμενοστρεφής Προγραμματισμός Κλάσεις και άλλα θέματα Απόστολος Ζάρρας * βασισμένα και σε δουλειά του.
Q - Q - q q i + -
ΕΝΟΤΗΤΑ 5Η ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ ΤΗΣ ΤΥΠΙΚΗΣ ΛΟΓΙΚΗΣ Α΄
ΠΡΟΗΓΜΕΝΑ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
Τεχνολογία TTL, Τεχνολογία CMOS Κυκλώματα της τυπικής λογικής Μνήμες
ΠΟΛΥΜΟΡΦΙΣΜΟΣ, ΠΡΟΤΥΠΑ, ΚΑΘΙΕΡΩΜΕΝΗ ΒΙΒΛΙΟΘΗΚΗ ΠΡΟΤΥΠΩΝ Polymorphism, Templates, Standard Template Library (STL)
Γλώσσες Περιγραφής Υλικού. Οι γλώσσες περιγραφής υλικού είναι προσανατολισμένες στην περιγραφή της δομής του hardware και/ή της συμπεριφοράς του Χρησιμοποιούνται.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Δείκτες και Συμβολοσειρές (Pointers.
ΕΝΟΤΗΤΑ 9Η Η ΓΛΩΣΣΑ VHDL: ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ
9o εξάμηνο Ηλεκτρονικός Κύκλος Εργαστήριο στα FPGA
ORACLE PL/SQL Εξαιρέσεις Exceptions. ΟΡΙΣΜΟΣ Μια εξαίρεση (exception) είναι ένας δείκτης που ενεργοποιείται κατά την εκτέλεση του προγράμματος.
ΗΜΥ 100: Εισαγωγή στην Τεχνολογία Διάλεξη 17 Εισαγωγή στα Ψηφιακά Συστήματα: Μέρος Γ TΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΠΟΛΥΤΕΧΝΙΚΗ.
ΗΥ-220 Verilog HDL. Τα βασικά.... ΗΥ-220 – Ιάκωβος Μαυροειδής2 Βασική Ροή Σχεδίασης Requirements SimulateRTL Model Gate-level Model Synthesize SimulateTest.
Η δημοφιλέστερη γλώσσα Hardware
Τεχνολογία ΛογισμικούSlide 1 Κλάση Μηνυμάτων Ταχυδρομείου Τεχνολογία Λογισμικού Slide 14.
ΗΥ220 - Βασίλης Παπαευσταθίου1 ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο Verilog: Τα βασικά.
ΗΜΥ 100: Εισαγωγή στην Τεχνολογία Διάλεξη 16 Εισαγωγή στα Ψηφιακά Συστήματα: Μέρος B TΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΠΟΛΥΤΕΧΝΙΚΗ.
Τεχνολογία ΛογισμικούSlide 1 Εκτέλεση σε Πραγματικό Χρόνο Τεχνολογία Λογισμικού Slide 25.
ΕΙΣΑΓΩΓΗ ΣΤΗ VHDL ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΕΡΓΑΣΤΗΡΙΑΚΩΝ ΑΣΚΗΣΕΩΝ
Σχεδίαση ψηφιακών συστημάτων Ενότητα 4: Finite State Machines Algorithmic State Machine (ASM) Charts, and VHDL code Ιωάννης Βογιατζής Τμήμα Μηχανικών Πληροφορικής.
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Κ.ΑΛΑΦΟΔΗΜΟΣ καθηγητής Δ.Παπαχρήστος μέλος ΕΔΙΠ ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΠΑΝΕΠΙΣΤΗΜΙΟ Α ΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.
Σχεδίαση ψηφιακών συστημάτων Ενότητα 1: Εισαγωγή Ιωάννης Βογιατζής Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Το περιεχόμενο.
Ψηφιακή Σχεδίαση Τ.Ε.Ι. Κρήτης Σχολή Τεχνολογικών Εφαρμογών Τμ. Μηχανικών Πληροφορικής.
1 Εισαγωγή στην επιστήμη των υπολογιστών Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ.
Η καθημερινή ζωή στο Βυζάντιο Εργασία της μαθήτριας: Τζένη Αλουσάι στο μάθημα της Ιστορίας ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΗΤΡΙΑ:κα.Τσαούση.
1 Πληροφορική Ι Ενότητα 4 : Πράξεις με bits Δρ. Γκόγκος Χρήστος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
11/14/2016Structural VHDL148 Structural VHDL Παράδειγμα Multiplexer Component Component specification Port map command Unconnected outputs Unconnected.
Chapter 16 Control Unit Implemntation. A Basic Computer Model.
Τ.Ε.Ι. Κρήτης Σχολή Τεχνολογικών Εφαρμογών Τμ. Μηχανικών Πληροφορικής
ΜΑΤΘΑΙΟΥ ΜΙΧΑΛΗΣ ΤΣΟΤΣΟΣ ΕΥΑΓΓΕΛΟΣ
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Η Γλώσσα Pascal Εντολή If
Outline Εισαγωγή Συνδυαστική λογική Ακολουθιακή λογική

Σχεδίαση συνδυαστικών κυκλωµάτων
Ενότητα 1 : Εισαγωγικά Στοιχεία της Pascal Αλέξανδρος Τζάλλας
Ποιοί είναι οι δικαστικοί σχηματισμοί του Δικαστηρίου;
Προτασιακή λογική.

Ψηφιακή Σχεδίαση Εργαστήριο Τετάρτη 14/10/2015.
Εισαγωγή στη VHDL 5/8/2018 Εισαγωγή στη VHDL.
Ψηφιακή Σχεδίαση εργαστήριο
Διπλωματική εργασία με θέμα
Επιλογή του μεγέθους των πυλών
Ανάλυση εικόνας 6-22 (Rabaey)
Διάλεξη 3: Αλγεβρα Boole - Ασκήσεις Δρ Κώστας Χαϊκάλης
Η στήριξη και η κίνηση στους ζωικούς οργανισμούς
Η Κωνσταντινα και οι αραχνεσ τησ
ΕΥΠΑΘΕΙΣ ΠΛΗΘΥΣΜΟΙ.
Εισαγωγή & Ανάλυση δεδομένων με το SPSS
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
Математичка логика Основни појмови, дефиниција исказа, основне логичке операције над исказима.
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
מכטרוניקה אלקטרוניקה ספרתית סתיו תשס"ה 2004/2005
الحث الكهرومغناطيسي مؤشرات الأداء
النسبة الذهبية العدد الإلهي
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
Εισαγωγή στον αλγεβρικό λογισμό
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
Εργαστήριο Ψηφιακών Ηλεκτρονικών
Principles of Computers 19th Lecture
Μεταγράφημα παρουσίασης:

Γλώσσα περιγραφής υλικού VHDL

Βασική δομή VHDL κώδικα Entity Entity (Δήλωση εισόδων – εξόδων του συστήματος) Architecture Architecture structural (περιγραφή δομής) rtl (περιγραφή της λειτουργίας σε επίπεδο καταχωρητή) behavioral (περιγραφή της λειτουργίας σε υψηλότερο επίπεδο)

Δήλωση Entity ENTITY entity_name IS PORT (port_name_1 : port_type_1; port_name_2: port _type_2; port_name_2: port _type_2; port_name_n: port_type_n); port_name_n: port_type_n); END entity_name; END entity_name;

Port types PORT DIRECTION PORT DIRECTION - IN -OUT-INOUT SIGNAL TYPE SIGNAL TYPE –BIT –BIT_VECTOR(WIDTH -1 DOWNTO 0) –STD_LOGIC –STD_LOGIC_VECTOR(WIDTH -1 DOWNTO 0)

Παράδειγμα δήλωσης Entity (1/2) ENTITY and_gate IS PORT (i1: IN BIT; i2: IN BIT; i2: IN BIT; O: OUT BIT); O: OUT BIT); END and_gate;

Παράδειγμα δήλωσης Entity (2/2) Library ieee; Use ieee.std_logic_1164.all; ENTITY adder IS PORT (i1: IN STD_LOGIC_VECTOR(3 DOWNTO 0); i2: IN STD_LOGIC_VECTOR(3 DOWNTO 0); i2: IN STD_LOGIC_VECTOR(3 DOWNTO 0); sum: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); sum: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); carry: OUT STD_LOGIC); carry: OUT STD_LOGIC); END adder;

Δήλωση Architecture ARCHITECTURE architecture_name OF entity_name IS Δήλωση components; Δήλωση components; Δήλωση σημάτων; Δήλωση σημάτων; BEGIN BEGIN Αντιστοίχιση εισόδων component Αντιστοίχιση εισόδων component ακολουθιακές εντολές (processes) ακολουθιακές εντολές (processes) σύγχρονες εντολές σύγχρονες εντολές END [architecture_name]; END [architecture_name];

Δήλωση component COMPONENT component_name PORT (port_name_1 : port_type_1; PORT (port_name_1 : port_type_1; port_name_2: port _type_2; port_name_2: port _type_2; port_name_n: port_type_n); port_name_n: port_type_n); END COMPONENT; END COMPONENT;

Παράδειγμα δήλωσης component COMPONENT and_gate PORT (i1: IN BIT; i2: IN BIT; i2: IN BIT; O: OUT BIT); O: OUT BIT); END COMPONENT;

Δήλωση σήματος SIGNAL signal_name : signal_type; Παραδείγματα SIGNAL data_bus: std_logic_vector(7 downto 0); SIGNAL clock: std_logic; SIGNAL count : bit_vector(5 downto 0);

Αντιστοίχιση εισόδων component (ονομαστική) Label: component_name PORT MAP( port_name1 => signal_name1, PORT MAP( port_name1 => signal_name1, port_name2 => signal_name2, port_name2 => signal_name2, … port_nameN => signal_nameN); port_nameN => signal_nameN);

Παράδειγμα U_adder: adder PORT MAP(i1 => add1, i2 => add2, i2 => add2, sum => s, sum => s, carry => c); carry => c);

Αντιστοίχιση εισόδων component (με βάση τη θέση) Label: component_name PORT MAP( signal_name1, PORT MAP( signal_name1, signal_name2, signal_name2, … signal_nameN); signal_nameN);

Παράδειγμα U_adder: adder PORT MAP(add1, add2, add2, s, s, c); c);

Παράδειγμα δομικής περιγραφής

Τελεστές της VHDL Αριθμητικοί Αριθμητικοί +, -, *, Συνθέσιμοι /, abs, rem, mod, **Μη συνθέσιμοι Λογικοί Λογικοί AND, OR, NOT, NAND, NOR, XOR, XNOR Σχέσεων Σχέσεων =, /=,, =

Απόδοση τιμής σε signal signal_name <= signal_value; Παραδείγματα signal a: std_logic; signal b: std_logic_vector(6 downto 0); signal c: std_logic_vector(3 downto 0); signal d: std_logic_vector(2 downto 0); ΣωστάΛάθος a <= ‘1’;a <= “01”; b <= “ ”;b <= ‘0’; b(1) <= ‘0’; c ‘0’);c ‘0’);c <= ‘0000’; d ‘0’, others => ‘1’);d ‘0’, others => ‘1’);d <= b & c; b <= c & d;b(3 downto 1) <= d(1 downto 0); b(5 downto 3) <= d;

ΠΕΡΙΓΡΑΦΗ ΣΥΝΔΥΑΣΤΙΚΗΣ ΛΟΓΙΚΗΣ ENTITY gates is port (a: in bit; port (a: in bit; c: out bit); c: out bit); end gates; Architecture rtl of gates is signal b: bit; begin b <= not a; b <= not a; c <= a xor b; --c<=a xor (not a); c <= a xor b; --c<=a xor (not a); end rtl;

ΠΕΡΙΓΡΑΦΗ ΑΡΙΘΜΗΤΙΚΩΝ ΜΟΝΑΔΩΝ Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; ENTITY add1 is port (a, b: in std_logic; port (a, b: in std_logic; cin: in std_logic; cin: in std_logic; sum: out std_logic; sum: out std_logic; cout: out std_logic); cout: out std_logic); end add1; end add1;

Εντολή when Περιγραφή πολυπλέκτη Port/signal <= value1 WHEN condition1 [ELSE value2 when condition2 [ELSE value2 when condition2 …] …] ELSE valueN; ELSE valueN; ENTITY mux IS PORT (a: in std_logic; PORT (a: in std_logic; b: in std_logic; b: in std_logic; c: in std_logic; c: in std_logic; q: out std_logic); q: out std_logic); END mux; ARCHITECTURE rtl OF mux IS BEGIN q <= a when c = ‘0’ else b; q <= a when c = ‘0’ else b; END RTL;

Εντολή with Περιγραφή πολυπλέκτη WITH signal SELECT port/signal <= expression1 WHEN value1, port/signal <= expression1 WHEN value1, expression2 WHEN value2, expression2 WHEN value2, … expressionN WHEN OTHERS; expressionN WHEN OTHERS; ENTITY mux IS PORT (a: in std_logic; PORT (a: in std_logic; b: in std_logic; b: in std_logic; c: in std_logic; c: in std_logic; q: out std_logic); q: out std_logic); END mux; ARCHITECTURE rtl OF mux IS BEGIN WITH c SELECT q <= a WHEN ‘0’, q <= a WHEN ‘0’, b WHEN OTHERS; b WHEN OTHERS; END rtl;

Ακολουθιακές εντολές (1) process [process_name:] PROCESS (sensitivity list) BEGIN BEGIN Ακολουθιακές εντολές Ακολουθιακές εντολές END PROCESS [process_name];

COMBINATIONAL PROCESS ΠΕΡΙΓΡΑΦΗ ΣΥΝΔΥΑΣΤΙΚΗΣ ΛΟΓΙΚΗΣ PROCESS(a, b, c) BEGIN d <= (a AND b) OR c; d <= (a AND b) OR c; END PROCESS;

Εντολή if Περιγραφή πολυπλέκτη If condition1 then signal1 <= value1; signal1 <= value1; signal2 <= value2; signal2 <= value2; elsif condition2 then signal1 <= value3; signal1 <= value3; signal2 <= value4; signal2 <= value4; … [ELSE [ELSE signal1 <= valuen-1; signal1 <= valuen-1; signal2 <= valuen;] signal2 <= valuen;] end if; ENTITY mux IS PORT (a: in std_logic; PORT (a: in std_logic; b: in std_logic; b: in std_logic; c: in std_logic; c: in std_logic; q: out std_logic); q: out std_logic); END mux; ARCHITECTURE rtl OF mux IS BEGIN process(a, b, c) BEGIN If c = ‘0’ then q <= a; q <= a;else q <= b; q <= b; end if; end process; END rtl;

Εντολή CASE Περιγραφή πολυπλέκτη CASE expression IS when value1 => when value1 => signal1 <= value2; signal1 <= value2; signal2 <= value3; signal2 <= value3; when value4 => when value4 => signal1 <= value4; signal1 <= value4; signal2 <= value5; signal2 <= value5; [when others => [when others => signal1 <= valuen-1; signal1 <= valuen-1; signal2 <= valuen;] signal2 <= valuen;] end CASE; ENTITY mux IS PORT (a: in std_logic; PORT (a: in std_logic; b: in std_logic; b: in std_logic; c: in std_logic; c: in std_logic; q: out std_logic); q: out std_logic); END mux; ARCHITECTURE rtl OF mux IS BEGIN process(a, b, c) BEGIN CASE c IS WHEN ‘0’ => q <= a; q <= a; WHEN OTHERS => q <= b; q <= b; end CASE; end process; END rtl;

CLOCKED PROCESS (Latch με ασύγχρονο reset) PROCESS(clk, rst_n) BEGIN IF rst_n = ‘0’ THEN IF rst_n = ‘0’ THEN b ‘0’); b ‘0’); ELSIF clk= ‘1’ THEN ELSIF clk= ‘1’ THEN b <= a; b <= a; END IF; END IF; END PROCESS;

CLOCKED PROCESS (Latch με σύγχρονο reset) PROCESS(clk, rst_n) BEGIN IF clk = ‘1’ THEN IF clk = ‘1’ THEN if rst_n = ‘0’ then if rst_n = ‘0’ then b ‘0’); b ‘0’); else b <= a; else b <= a; end if; end if; END IF; END IF; END PROCESS;

CLOCKED PROCESS (Flip-flop με ασύγχρονο reset) PROCESS(clk, rst_n) BEGIN IF rst_n = ‘0’ THEN IF rst_n = ‘0’ THEN b ‘0’); b ‘0’); ELSIF clk’event and clk= ‘1’ THEN ELSIF clk’event and clk= ‘1’ THEN b <= a; b <= a; END IF; END IF; END PROCESS;

CLOCKED PROCESS (Flip-flop με σύγχρονο reset) PROCESS(clk, rst_n) BEGIN IF clk’event and clk= ‘1’ THEN IF clk’event and clk= ‘1’ THEN IF rst_n = ‘0’ THEN IF rst_n = ‘0’ THEN b ‘0’); b ‘0’); else b <= a; else b <= a; end if; end if; END IF; END IF; END PROCESS;

Εντολή for loop περιγραφή καταχωρητή ολίσθησης [label]: for identifier in range loop statements statements end loop; ENTITY shift_reg is port(clk, rst_n: in std_logic; input: in std_logic; output: out std_logic); end shift_reg; Architecture rtl of shift_reg is signal d: std_logic_vector(3 downto 0); begin process(clk, rst_n) begin if rst_n = ‘0’ then d ‘0’); elsif rising_edge(clk) then d(0) <= input; for i in 0 to 3 loop d(i+1) <= d(i); end loop; end if; end process; output <= d(3); end;

TESTBENCH Entity testbench_name is end testbench_name; ARCHITECTURE architecture_name of testbench_name IS Δήλωση COMPONENT Δήλωση σημάτων --signal clk: std_logic:=‘0’; BEGIN Αντιστοίχιση εισόδων/εξόδων component Ανάθεση τιμών στις εισόδους του component { clk <= not clk after 40 ns; --80 ns clock period a <= ‘1’, a <= ‘1’, ‘0’ after 50 ns, ‘0’ after 50 ns, ‘1’ after 100 ns; } ‘1’ after 100 ns; }end;

ΠΑΡΑΔΕΙΓΜΑ TESTBENCH Entity testbench is Entity testbench is end testbench; end testbench; Architecture test of testbench is Architecture test of testbench is component mux component mux PORT (a: in std_logic; PORT (a: in std_logic; b: in std_logic; b: in std_logic; c: in std_logic; c: in std_logic; q: out std_logic); q: out std_logic); END component; END component; signal a, b, c, q: std_logic; signal a, b, c, q: std_logic; begin U_mux: mux port map ( a =>a, b=>b, c=>c, q=> q); a <= ‘0’, a <= ‘0’, ‘1’ after 50 ns, ‘1’ after 50 ns, ‘0’ after 100 ns, ‘0’ after 100 ns, ‘1’ after 150 ns, ‘1’ after 150 ns, ‘0’ after 200 ns, ‘0’ after 200 ns, ‘1’ after 250 ns, ‘1’ after 250 ns, ‘0’ after 300 ns, ‘0’ after 300 ns, ‘1’ after 350 ns; ‘1’ after 350 ns; b <= ‘0’, b <= ‘0’, ‘1’ after 100 ns, ‘1’ after 100 ns, ‘0’ after 200 ns, ‘0’ after 200 ns, ‘1’ after 300 ns; ‘1’ after 300 ns; c <= ‘0’, c <= ‘0’, ‘1’ after 200 ns; ‘1’ after 200 ns; end test;

ΑΣΚΗΣΗ 1η

ModelSim Start -> Programs -> ModelSim Start -> Programs -> ModelSim File -> New -> Project File -> New -> Project Add Files to Project Add Files to Project Download VHDL files from Download VHDL files from directory VLSI_II_2006\ASKISI_1\