«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Προχωρημένα Θέματα Σχεδιασμού με VHDL

Σχετικά έγγραφα
«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Ακολουθιακός Κώδικας

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Συντρέχων Κώδικας

Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.

ΑΣΚΗΣΗ 2: Σχεδίαση και προσομοίωση κυκλωμάτων καταχωρητών και μετρητών

Κυκλωμάτων» Χειμερινό εξάμηνο

Σχεδίαση Ψηφιακών Συστημάτων

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Πακέτα και Συστατικά Στοιχεία (Υποκυκλώματα)

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Μηχανές Πεπερασμένων Καταστάσεων

Σχεδίαση Ψηφιακών Συστημάτων

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 15: Καταχωρητές (Registers)

ΛΥΣΕΙΣ 3 ης ΓΡΑΠΤΗΣ ΕΡΓΑΣΙΑΣ

26-Nov-09. ΗΜΥ 210: Λογικός Σχεδιασμός, Χειμερινό Εξάμηνο Καταχωρητές 1. Διδάσκουσα: Μαρία Κ. Μιχαήλ

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Τύποι Δεδομένων και Τελεστές

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. Καταχωρητές 1

Εισαγωγή στη γλώσσα περιγραφής υλικού VHDL. Βασικές εντολές και η περιγραφή συνδυαστικών κυκλωµάτων. Ψηφιακή Σχεδίαση µε CAD ΙΙ - ιάλεξη 2 -

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Συναρτήσεις, Διαδικασίες και Δομές Ελέγχου Λειτουργίας Κυκλωμάτων (testbenches)

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Δομική περιγραφή και περιγραφή Μηχανών Πεπερασμένων Καταστάσεων

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

Περίληψη. ΗΜΥ-210: Λογικός Σχεδιασµός Εαρινό Εξάµηνο Παράδειγµα: Καταχωρητής 2-bit. Καταχωρητής 4-bit. Μνήµη Καταχωρητών

Structural VHDL. Structural VHDL

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 Συµπληρωµατική ΔΙΑΛΕΞΗ 14: Περιγραφή Ακολουθιακών Κυκλωµάτων στη VHDL

Library, package και subprograms

VHDL. ΗΜΥ-210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο Απλό παράδειγµα: Entity. Μοντελοποίηση. Απλό παράδειγµα:αρχιτεκτονική. Στοιχεία γλώσσας VHDL

Εισαγωγή στη γλώσσα περιγραφής υλικού VHDL. Γενικά χαρακτηριστικά, σύνταξη και τύποι. Ψηφιακή Σχεδίαση µε CAD ΙΙ - ιάλεξη 1 -

VHDL για Σχεδιασµό Ακολουθιακών Κυκλωµάτων

ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων, Χειμερινό Εξάμηνο Νοε-09. Διδάσκουσα: Μαρία Κ. Μιχαήλ

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Καταχωρητές και χρονισμός με ρολόι

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων

Εργαστήριο Αρχιτεκτονικής Υπολογιστών Ι. Εισαγωγή στη VHDL

Σχεδίαση Ψηφιακών Συστημάτων

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. VHDL για Ακολουθιακά Κυκλώματα 1

VHDL για Σχεδιασµό Συνδυαστικών και Ακολουθιακών Ψηφιακών Κυκλωµάτων

Εισαγωγή στη Γλώσσα VHDL

ΕΙΣΑΓΩΓΙΚΟ ΕΓΧΕΙΡΙ ΙΟ ΓΙΑ ΣΧΕ ΙΑΣΜΟ ΜΕ ΧΡΗΣΗ ΤΗΣ ΓΛΩΣΣΑΣ VHDL

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 10: Συµπληρωµατική Διάλεξη Flip-Flops (Basics) και VHDL)

Πανεπιστήμιο Πατρών. Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών. Εργαστήριο Σχεδίασης Ολοκληρωμένων Κυκλωμάτων

Σχεδιασμός Ψηφιακών Συστημάτων Χειμερινό Εξάμηνο VHDL (revisited)

Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων VLSI II

(Peter Ashenden, The Students Guide to VHDL)

Οι Βιβλιοθήκες IEEE και παραδείγµατα functions


ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων

Ενσωματωμένα Συστήματα

Προσοµοίωση Συστηµάτων µε VHDL. (Peter Ashenden, The Students Guide to VHDL)

Σύνθετοι τύποι και λειτουργίες. (Peter Ashenden, The Students Guide to VHDL)

Σχεδίαση κυκλωμάτων με VHDL: 1o μέρος

Μελέτη και σχεδίαση µιας υποτυπώδους κεντρικής µονάδας επεξεργασίας στα 32 µπιτ.

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Οντότητες και συντρέχουσες δηλώσεις


Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

ΣΧΕΔΙΑΣΜΟΣ ΚΥΚΛΩΜΑΤΩΝ ΠΑΡΑΜΕΤΡΙΚΗΣ ΜΕΤΑΒΟΛΗΣ ΣΥΧΝΟΤΗΤΑΣ ΚΑΙ DUTY CYCLE ΠΑΛΜΟΥ ΜΕ ΧΡΗΣΗ ΤΗΣ ΓΛΩΣΣΑΣ VHDL

Βασικές οµές Μοντελοποίησης. (Peter Ashenden, The Students Guide to VHDL)

Πρόλογος...13 I ΣΧΕ ΙΑΣΜΟΣ ΣΕ ΕΠΙΠΕ Ο ΚΥΚΛΩΜΑΤΟΣ Εισαγωγή... 19

Σχεδίαση κυκλωμάτων με VHDL: 2o μέρος

Ακολουθιακές εντολές. (Peter Ashenden, The Students Guide to VHDL)

Κεφάλαιο 5 ο Προγραμματισμός Ολοκληρωμένων Κυκλωμάτων

ΠΑΡΑΡΤΗΜΑ Β. Verification

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση. Ενότητα 13: Εισαγωγή στην VHDL

Γλώσσα Περιγραφής Υλικού VHDL Μέρος Α: Σωστή Σύνθεση

Μοντελοποίηση Επιπέδου Πύλης. (Peter Ashenden, The Students Guide to VHDL)

Κεφάλαιο 4 ο Σχεδίαση Κυκλωμάτων με χρήση της γλώσσας VHDL

inputs outputs Σχήμα 3.1: Σχηματική παράσταση της λειτουργίας του testbench

Σχεδιασμος Ολοκληρωμένων Κυκλωμάτων με Χρήση VHDL: Πρακτικά Θέματα

VHDL Introduction. Subtitle

Σχεδιασµός Συστηµάτων µε VHDL. (Peter Ashenden, The Students Guide to VHDL)

Βαζικές Δνόηηηες VHDL

VHDL Εισαγωγικές έννοιες

Πανεπιστήµιο Θεσσαλίας

Καταχωρητές και Μετρητές

ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων

Εισαγωγή στη VHDL Υλοποίηση στο Quartus

Εισαγωγή Η VHDL υποστηρίζει τους εξής τρείς βασικούς και διαφορετικούς τρόπους περιγραφής

ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ Τµήµα Ηλεκτρονικής & Μηχανικών Υπολογιστών Εργαστήριο Μικροεπεξεργαστών & Υλικού Πολυτεχνειούπολη Χανίων Τ.Κ.

Εισαγωγή στη γλώσσα VHDL

Σχεδίαση και υλοποίηση σε FPGA παράλληλης επεξεργασίας μετασχηματισμού Fourier με τεχνική in-place

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Σχεδίαση Ψηφιακών Συστημάτων. Ενότητα: ΚΑΤΑΧΩΡΗΤΕΣ - ΑΠΑΡΙΘΜΗΤΕΣ

Σχεδίαση Ψηφιακών Συστημάτων

ΗΥ220: Εργαστήριο σχεδίασης ψηφιακών κυκλωμάτων Χριστόφορος Κάχρης

Καταχωρητές και Μετρητές

Ενσωματωμένα Συστήματα

ΨΗΦΙΑΚΗ ΣΧΔΓΙΑΣΗ (Θεωπία) Θέμαηα Δξεηάζεων

Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Διάλεξθ 4

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

HY430 Εργαστήριο Ψηφιακών Κυκλωμάτων. Πολυπλέκτες Καμπύλη Παρέτο. Κωδικοποιητές/Από-κωδικοποιητές D FF

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο Διάλεξη 8 η : Μηχανές Πεπερασμένων Κaταστάσεων σε FPGAs

Introduction to IP Cores

Βασικές Σχεδίασης Υπολογιστών Αριθμητική Μονάδα Επεξεργασίας Κεφάλαιο 10

constant number_of_bytes : integer := 4; constant number_of_bits : integer := 8 * number_of_bytes;

Σχεδίαση Ψηφιακών Συστημάτων

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΚΑΤΑΧΩΡΗΤΕΣ ΟΛΙΣΘΗΤΕΣ

H γλώσσα περιγραφής κυκλωµάτων VHDL

ΠΛΕ- 027 Μικροεπεξεργαστές 5ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση ενός κύκλου

Σχεδίαση σε VHDL και υλοποίηση σε FPGA Μονάδας Παραγωγής Μουσικού Σήματος

Σχεδίαση κυκλωμάτων επικοινωνίας με απλές οθόνες, με τη γλώσσα VHDL και υλοποίηση στις αναπτυξιακές πλακέτες LP-2900 και DE2.

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΟΙ ΚΑΤΑΧΩΡΗΤΕΣ ΚΑΙ Η ΥΛΟΠΟΙΗΣΗ ΤΟΥΣ ΜΕ FLIP-FLOP ΚΑΙ ΠΥΛΕΣ

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

Transcript:

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο 2016-2017 Προχωρημένα Θέματα Σχεδιασμού με VHDL Παρασκευάς Κίτσος http://diceslab.cied.teiwest.gr Επίκουρος Καθηγητής Tμήμα Μηχανικών Πληροφορικής ΤΕ E-mail: pkitsos@teimes.gr Αντίρριο 16/12/2016 1

ΔΟΜΗ ΠΑΡΟΥΣΙΑΣΗΣ Απαριθμητές Καταχωρητές Κύκλωμα ισοτιμίας Πολυπλέκτης πολλών εισόδων Κυκλικός ολισθητής 16 θέσεων Παράλληλος σε σειριακό δίαυλο Μνήμες ROM 2

2-BIT ΑΠΑΡΙΘΜΗΤΗΣ-ΠΑΝΩ ΜΕ ΣΥΓΧΡΟΝΟ RESET LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE ieee.std_logic_unsigned.all ; ENTITY upcount IS PORT ( reset, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(1 DOWNTO 0) ) ; END upcount ; ARCHITECTURE behavioral OF upcount IS SIGNAL Count : std_logic_vector(1 DOWNTO 0); upcount: PROCESS ( Clock ) IF rising_edge(clock) THEN IF reset = '1' THEN Count <= "00" ; ELSE Count <= Count + 1 ; END IF ; END IF; END PROCESS; Q <= Count; END behavioral; reset Q upcount Clock 2 3

4-BIT ΑΠΑΡΙΘΜΗΤΗΣ-ΠΑΝΩ ΜΕ AΣΥΓΧΡΟΝΟ RESET (1/2) LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE ieee.std_logic_unsigned.all ; ENTITY upcount_ar IS PORT ( Clock, Resetn, Enable : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0)) ; END upcount_ar ; Enable Q Clock Resetn 4 upcount 4

4-BIT ΑΠΑΡΙΘΜΗΤΗΣ-ΠΑΝΩ ΜΕ AΣΥΓΧΡΟΝΟ RESET (2/2) ARCHITECTURE behavioral OF upcount _ar IS SIGNAL Count : STD_LOGIC_VECTOR (3 DOWNTO 0) ; PROCESS ( Clock, Resetn ) IF Resetn = '0' THEN Count <= "0000" ; ELSIF rising_edge(clock) THEN IF Enable = '1' THEN Count <= Count + 1 ; END IF ; END IF ; END PROCESS ; Q <= Count ; END behavioral ; Enable Clock Q Resetn 4 upcount 5

ΚΑΤΑΧΩΡΗΤΕΣ ΟΛΙΣΘΗΣΗΣ Q(3) Q(2) Q(1) Q(0) Sin D Q D Q D Q D Q Clock Enable 6

ΚΑΤΑΧΩΡΗΤΕΣ ΟΛΙΣΘΗΣΗΣ ΜΕ ΠΑΡΑΛΛΗΛΗ ΦΟΡΤΩΣΗ Load D(3) Sin D(2) D(1) D(0) D Q D Q D Q D Q Clock Enable Q(3) Q(2) Q(1) Q(0) 7

4-ΒΙΤ ΚΑΤΑΧΩΡΗΤΗΣ ΟΛΙΣΘΗΣΗΣ ΜΕ ΠΑΡΑΛΛΗΛΗ ΦΟΡΤΩΣΗ (1/2) LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY shift4 IS PORT ( D : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; Enable : IN STD_LOGIC ; Load : IN STD_LOGIC ; Sin : IN STD_LOGIC ; Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END shift4 ; 4 Enable D Q Load Sin Clock 4 shift4 8

4-ΒΙΤ ΚΑΤΑΧΩΡΗΤΗΣ ΟΛΙΣΘΗΣΗΣ ΜΕ ΠΑΡΑΛΛΗΛΗ ΦΟΡΤΩΣΗ (2/2) ARCHITECTURE behavioral OF shift4 IS SIGNAL Qt : STD_LOGIC_VECTOR(3 DOWNTO 0); PROCESS (Clock) IF rising_edge(clock) THEN IF Load = '1' THEN Qt <= D ; ELSIF Enable = 1 THEN Qt(0) <= Qt(1) ; Qt(1) <= Qt(2); Qt(2) <= Qt(3) ; Qt(3) <= Sin; END IF ; END PROCESS ; Q <= Qt; END behavioral ; END IF ; 4 Enable D Q Load Sin Clock 4 shift4 9

ΚΥΚΛΩΜΑ ΙΣΟΤΙΜΙΑΣ (1/6) xor_out(1) xor_out(2) xor_out(3) xor_out(4) xor_out(5) xor_out(6) 10

ΚΥΚΛΩΜΑ ΙΣΟΤΙΜΙΑΣ (2/6) LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY parity IS PORT( parity_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); parity_out : OUT STD_LOGIC ); END parity; 11

ΚΥΚΛΩΜΑ ΙΣΟΤΙΜΙΑΣ (3/6) ARCHITECTURE parity_dataflow OF parity IS SIGNAL xor_out: std_logic_vector (6 downto 1); xor_out(1) <= parity_in(0) XOR parity_in(1); xor_out(2) <= xor_out(1) XOR parity_in(2); xor_out(3) <= xor_out(2) XOR parity_in(3); xor_out(4) <= xor_out(3) XOR parity_in(4); xor_out(5) <= xor_out(4) XOR parity_in(5); xor_out(6) <= xor_out(5) XOR parity_in(6); parity_out <= xor_out(6) XOR parity_in(7); END parity_dataflow; 12

ΚΥΚΛΩΜΑ ΙΣΟΤΙΜΙΑΣ (4/6) xor_out(0) xor_out(1) xor_out(2) xor_out(3) xor_out(4) xor_out(5) xor_out(6) xor_out(7) 13

ΚΥΚΛΩΜΑ ΙΣΟΤΙΜΙΑΣ (5/6) ARCHITECTURE parity_dataflow OF parity IS SIGNAL xor_out: STD_LOGIC_VECTOR (7 downto 0); xor_out(0) <= parity_in(0); xor_out(1) <= xor_out(0) XOR parity_in(1); xor_out(2) <= xor_out(1) XOR parity_in(2); xor_out(3) <= xor_out(2) XOR parity_in(3); xor_out(4) <= xor_out(3) XOR parity_in(4); xor_out(5) <= xor_out(4) XOR parity_in(5); xor_out(6) <= xor_out(5) XOR parity_in(6); xor_out(7) <= xor_out(6) XOR parity_in(7); parity_out <= xor_out(7); END parity_dataflow; 14

ΚΥΚΛΩΜΑ ΙΣΟΤΙΜΙΑΣ (6/6) ARCHITECTURE parity_dataflow OF parity IS SIGNAL xor_out: STD_LOGIC_VECTOR (7 DOWNTO 0); xor_out(0) <= parity_in(0); G2: FOR i IN 1 TO 7 GENERATE xor_out(i) <= xor_out(i-1) XOR parity_in(i); END GENERATE G2; parity_out <= xor_out(7); END parity_dataflow; label: FOR identifier IN range GENERATE {Concurrent Statements} END GENERATE; 15

ΠΟΛΥΠΛΕΚΤΗΣ 16 ΣΕ 1 s 0 s 1 w 0 w 3 w 4 s 2 s 3 w 7 f w 8 w 11 w 12 w 15 16

LIBRARY ieee ; USE ieee.std_logic_1164.all ; ΠΟΛΥΠΛΕΚΤΗΣ 4 ΣΕ 1 ENTITY mux4to1 IS PORT ( w0, w1, w2, w3 : IN STD_LOGIC ; s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ; f : OUT STD_LOGIC ) ; END mux4to1 ; ARCHITECTURE Dataflow OF mux4to1 IS WITH s SELECT f <= w0 WHEN "00", w1 WHEN "01", w2 WHEN "10", w3 WHEN OTHERS ; END Dataflow ; 17

ΑΚΡΙΒΗΣ ΚΩΔΙΚΑΣ ΠΟΛΥΠΛΕΚΤΗ 16 ΣΕ 1 LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY Example1 IS PORT ( w : IN STD_LOGIC_VECTOR(0 TO 15) ; s : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; f : OUT STD_LOGIC ) ; END Example1 ; 18

ΑΚΡΙΒΗΣ ΚΩΔΙΚΑΣ ΠΟΛΥΠΛΕΚΤΗ 16 ΣΕ 1 ARCHITECTURE Structure OF Example1 IS COMPONENT mux4to1 PORT ( w0, w1, w2, w3 : IN STD_LOGIC ; s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ; f : OUT STD_LOGIC ) ; END COMPONENT ; SIGNAL m : STD_LOGIC_VECTOR(0 TO 3) ; Mux1: mux4to1 PORT MAP ( w(0), w(1), w(2), w(3), s(1 DOWNTO 0), m(0) ) ; Mux2: mux4to1 PORT MAP ( w(4), w(5), w(6), w(7), s(1 DOWNTO 0), m(1) ) ; Mux3: mux4to1 PORT MAP ( w(8), w(9), w(10), w(11), s(1 DOWNTO 0), m(2) ) ; Mux4: mux4to1 PORT MAP ( w(12), w(13), w(14), w(15), s(1 DOWNTO 0), m(3) ) ; Mux5: mux4to1 PORT MAP ( m(0), m(1), m(2), m(3), s(3 DOWNTO 2), f ) ; END Structure ; 19

ΔΙΑΦΟΡΟΠΟΙΗΜΕΝΟΣ ΚΩΔΙΚΑΣ ΠΟΛΥΠΛΕΚΤΗ 16 ΣΕ 1 ARCHITECTURE Structure OF Example1 IS COMPONENT mux4to1 PORT ( w0, w1, w2, w3 : IN STD_LOGIC ; s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ; f : OUT STD_LOGIC ) ; END COMPONENT ; SIGNAL m : STD_LOGIC_VECTOR(0 TO 3) ; G1: FOR i IN 0 TO 3 GENERATE Muxes: mux4to1 PORT MAP ( w(4*i), w(4*i+1), w(4*i+2), w(4*i+3), s(1 DOWNTO 0), m(i) ) ; END GENERATE ; Mux5: mux4to1 PORT MAP ( m(0), m(1), m(2), m(3), s(3 DOWNTO 2), f ) ; END Structure ; 20

ΚΥΚΛΙΚΟΣ ΟΛΙΣΘΗΤΗΣ A 16 B 4 A <<< B 16 C 21

ΚΥΚΛΙΚΟΣ ΟΛΙΣΘΗΤΗΣ 22

LIBRARY ieee ; USE ieee.std_logic_1164.all ; ΚΩΔΙΚΑΣ ΠΟΛΥΠΛΕΚΤΗ 2 ΣΕ 1 ΤΩΝ 16-BIT ENTITY mux2to1_16 IS PORT ( w0 : IN STD_LOGIC_VECTOR(15 DOWNTO 0); w1 : IN STD_LOGIC_VECTOR(15 DOWNTO 0); s : IN STD_LOGIC ; f : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ) ; END mux2to1_16 ; ARCHITECTURE dataflow OF mux2to1_16 IS f <= w0 WHEN s = '0' ELSE w1 ; END dataflow ; 23

ΣΤΑΘΕΡΟ ΒΗΜΑ ΟΛΙΣΘΗΣΗΣ a(15) a(14) a(13) a(12) a(11) a(10) a(9) a(8) a(7) a(6) a(5) a(4) a(3) a(2) a(1) a(0) <<< 3 a(12) a(11) a(10) a(9) a(8) a(7) a(6) a(5) a(4) a(3) a(2) a(1) a(0) a(15) a(14) a(13) y <= a(12 downto 0) & a(15 downto 13); a(15) a(14) a(13) a(12) a(11) a(10) a(9) a(8) a(7) a(6) a(5) a(4) a(3) a(2) a(1) a(0) <<< 5 a(10) a(9) a(8) a(7) a(6) a(5) a(4) a(3) a(2) a(1) a(0) a(15) a(14) a(13) a(12) a(11) y <= a(10 downto 0) & a(15 downto 11); a(15) a(14) a(13) a(12) a(11) a(10) a(9) a(8) a(7) a(6) a(5) a(4) a(3) a(2) a(1) a(0) a(15-l) a(15-l-1).......a(1) a(0) a(15) a(14)...... a(15-l+2) a(15-l+1) y <= a(15-l downto 0) & a(15 downto 15-L+1); 24

ΚΩΔΙΚΑΣ ΟΛΙΣΘΗΤΗ ΜΕ ΣΤΑΘΕΡΟ LIBRARY ieee ; USE ieee.std_logic_1164.all ; ΒΗΜΑ ΟΛΙΣΘΗΣΗΣ ENTITY fixed_rotator_left_16 IS GENERIC ( L : INTEGER := 1); PORT (a : IN STD_LOGIC_VECTOR(15 DOWNTO 0); y : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ) ; END fixed_rotator_left_16 ; ARCHITECTURE dataflow OF fixed_rotator_left_16 IS y <= a(15-l downto 0) & a(15 downto 15-L+1); END dataflow ; 25

ΚΩΔΙΚΑΣ ΟΛΙΣΘΗΤΗ ΜΕ ΧΡΗΣΗ ΥΠΟΚΥΚΛΩΜΑΤΩΝ ΤΟΥ ΟΛΙΣΘΗΤΗ 16-ΒΙΤ.. LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY variable_rotator_16 is PORT( A : IN STD_LOGIC_VECTOR(15 downto 0); B : IN STD_LOGIC_VECTOR(3 downto 0); C : OUT STD_LOGIC_VECTOR(15 downto 0) ); END variable_rotator_16; 26

ΚΩΔΙΚΑΣ ΟΛΙΣΘΗΤΗ ΜΕ ΧΡΗΣΗ ΥΠΟΚΥΚΛΩΜΑΤΩΝ ΤΟΥ ΟΛΙΣΘΗΤΗ 16-ΒΙΤ ARCHITECTURE structural OF variable_rotator_16 IS COMPONENT mux2to1_16 PORT ( w0 : IN STD_LOGIC_VECTOR(15 DOWNTO 0); w1 : IN STD_LOGIC_VECTOR(15 DOWNTO 0); s : IN STD_LOGIC ; f : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ) ; END COMPONENT ; COMPONENT fixed_rotator_left_16 GENERIC ( L : INTEGER := 1); PORT ( a : IN STD_LOGIC_VECTOR(15 DOWNTO 0); y : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ) ; END COMPONENT ; 27

ΚΩΔΙΚΑΣ ΟΛΙΣΘΗΤΗ ΜΕ ΧΡΗΣΗ ΥΠΟΚΥΚΛΩΜΑΤΩΝ ΤΟΥ ΟΛΙΣΘΗΤΗ 16-ΒΙΤ TYPE array1 IS ARRAY (0 to 4) OF STD_LOGIC_VECTOR(15 DOWNTO 0); TYPE array2 IS ARRAY (0 to 3) OF STD_LOGIC_VECTORS(15 DOWNTO 0); SIGNAL AI : array1; SIGNAL Ar : array2; AI(0) <= A; G: FOR i IN 0 TO 3 GENERATE ROT_I: fixed_rotator_left_16 GENERIC MAP (L => 2** i) PORT MAP ( a => AI(i), y => Ar(i)); MUX_I: mux2to1_16 PORT MAP (w0 => AI(i), w1 => Ar(i), s => B(i), f => AI(i+1)); END GENERATE; C <= AI(4); END variable_rotator_16; 28

ΠΑΡΑΛΛΗΛΟΣ ΣΕ ΣΕΙΡΙΑΚΟ ΔΙΑΥΛΟ 29

ΠΑΡΑΛΛΗΛΟΣ ΣΕ ΣΕΙΡΙΑΚΟ ΔΙΑΥΛΟ LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY serial_converter IS PORT ( d: IN STD_LOGIC_VECTOR (7 DOWNTO 0); clk, load: IN STD_LOGIC; dout: OUT STD_LOGIC); END serial_converter; ARCHITECTURE serial_converter OF serial_converter IS SIGNAL reg: STD_LOGIC_VECTOR (7 DOWNTO 0); PROCESS (clk) IF (clk'event AND clk='1') THEN IF (load='1') THEN reg <= d; ELSE reg <= reg(6 DOWNTO 0) & '0'; END IF; END IF; END PROCESS; dout <= reg(7); END serial_converter; 30

MNHMH ROM (ΜΟΝΟ ΑΝΑΓΝΩΣΗΣ) 31

MNHMH ROM (ΜΟΝΟ ΑΝΑΓΝΩΣΗΣ) LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY rom IS GENERIC ( bits: INTEGER := 8; -- # of bits per word words: INTEGER := 8); -- # of words in the memory PORT ( addr: IN INTEGER RANGE 0 TO words-1; data: OUT STD_LOGIC_VECTOR (bits-1 DOWNTO 0)); END rom; ARCHITECTURE rom_mem OF rom IS TYPE vector_array IS ARRAY (0 TO words-1) OF STD_LOGIC_VECTOR (bits-1 DOWNTO 0); CONSTANT memory: vector_array := ( "00000000", data <= memory(addr); END rom_mem; "00000010", "00000100", "00001000", "00010000", "00100000", "01000000", "10000000"); 32

Απορίες???? 33