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

Σχετικά έγγραφα
Library, package και subprograms

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(Peter Ashenden, The Students Guide to VHDL)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Structural VHDL. Structural VHDL

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

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

VHDL Introduction. Subtitle

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

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

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

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

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

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

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

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

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

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

ΑΣΚΗΣΗ 9. Tα Flip-Flop


Ελίνα Μακρή

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

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

Introduction to IP Cores

σύνθεση και απλοποίησή τους θεωρήµατα της άλγεβρας Boole, αξιώµατα του Huntington, κλπ.

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

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

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική και Εφαρμογές»

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

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

Προπτυχιακός φοιτητής Σχολής Θετικών Επιστημών τμήματος Φυσικής ΑΠΘ

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

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

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

8.1 Θεωρητική εισαγωγή

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

7.1 Θεωρητική εισαγωγή

Ενότητα ΑΡΧΕΣ ΑΚΟΛΟΥΘΙΑΚΗΣ ΛΟΓΙΚΗΣ LATCHES & FLIP-FLOPS

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

VERILOG. Γενικά περί γλώσσας

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

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

Ακολουθιακά Κυκλώµατα. ΗΜΥ 210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο Ακολουθιακά Κυκλώµατα (συν.) Ακολουθιακή Λογική: Έννοια

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

100 ΕΡΩΤΗΣΕΙΣ ΜΕ ΤΙΣ ΑΝΤΙΣΤΟΙΧΕΣ ΑΠΑΝΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ

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

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

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

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

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

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

Τυπικζσ Γλώςςεσ Περιγραφήσ Υλικοφ Εργαςτήριο 4

Transcript:

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

Βιβλιοθήκες µε την Εντολή Library Η VHDL επιτρέπει βιβλιοθήκες που ορίζονται µε τηνεντολή: library LibraryName; Εδώ, ο µεταγλωτιστης µπορεί να βρεί διάφορα αρχεία. Συνήθως, το όνοµα LibraryName αναφέρεται απλά σε κάποιο directory, όπου αποθηκεύονται διάφορα αρχεία. Για παράδειγµα, ηεντολήlibraryieee; αναφέρεται σε όλα τα αρχεία VHDL που ορίζονται από το IEEE. Για να χρησιµοποιήσουµε συγκεκριµένους ορισµούς, θα πρέπει να γνωρίζουµε τοόνοµα του αρχείου στο οποίο ορίζεται. Αυτά τα αρχεία ονοµάζονται package files (πακέτα) στην VHDL. Σε αυτα τα αρχεία, υπάρχουν σηµαντικές επεκτάσεις της VHDL και θα πρέπει να τα χρησιµοποιούµε και να αποφεύγουµε να ξαναορίζουµε λειτουργίες που δίνονται από το IEEE!

Απλά Παραδείγµατα Αωαφέρουµε τα πιο γνωστά πακέτα από το IEEE: std_logic_1164 -- βασικοί ορισµοί std_logic_arith -- γενικές αριθµητικές λειτουργίες std_logic_signed -- προσηµασµένες λειτουργλιες std_logic_unsigned -- µηπροσηµασµένες λειτουργίες Για να χρησιµοποιήσουµε όλους τους ορισµούς σε ένα πακέτο, χρησιµοποιούµε library LibraryName; -- "directory" name use LibraryName.packageName.all; -- ορισµοί Για τους βασικούς όρους, µπορούµε ναχρησιµοποιούµε: library ieee; use ieee.std_logic_1164.all;

Λίστα Πακέτων Κάτω Από το IEEE math_complex.vhd -- δεν υπάρχει κώδικας προέλευσης math_real.vhd -- δεν υπάρχει κώδικας προέλευσης numeric_bit.vhd -- ΙΕΕΕ αρχείο για VHDL σύνθεση numeric_std.vhd -- ΙΕΕΕ αρχείο για VHDL σύνθεση std_logic_1164.vhd -- βασικό αρχείο ορισµών std_logic_arith.vhd -- µεγάλη συλλογή αριθµητικών functions std_logic_signed.vhd -- signed functions για std_logic_vector std_logic_unsigned.vhd -- unsigned functions για std_logic_vector std_logic_misc.vhd -- επιπρόσθετοι τύποι και συναρτήσεις std_logic_textio.vhd -- επεξεργασία αρχείων

Ορισµός του std_ulogic TYPE std_ulogic IS ( 'U', -- Uninitialized 'X', -- Forcing Unknown '0', -- Forcing 0 '1', -- Forcing 1 'Z', -- High Impedance 'W', -- Weak Unknown 'L', -- Weak 0 'H', -- Weak 1 '-' -- Don't care );

Βασικοί Τύποι εδοµένων (Ι/ΙΙ) -- unconstrained array of std_ulogic for use with the resolution function TYPE std_ulogic_vector IS ARRAY ( NATURAL RANGE <> ) OF std_ulogic; -- resolution function FUNCTION resolved ( s : std_ulogic_vector ) RETURN std_ulogic; -- *** industry standard logic type *** SUBTYPE std_logic IS resolved std_ulogic; -- unconstrained array of std_logic for use in declaring signal arrays TYPE std_logic_vector IS ARRAY ( NATURAL RANGE <>) OF std_logic;

Βασικοί Τύποι εδοµένων (ΙΙ/ΙΙ) -- common subtypes SUBTYPE X01 IS resolved std_ulogic RANGE 'X' TO '1'; -- ('X','0','1') SUBTYPE X01Z IS resolved std_ulogic RANGE 'X' TO 'Z'; -- ('X','0','1','Z') SUBTYPE UX01 IS resolved std_ulogic RANGE 'U' TO '1'; -- ('U','X','0','1') SUBTYPE UX01Z IS resolved std_ulogic RANGE 'U' TO 'Z'; -- ('U','X','0','1','Z')

Απλές Συναρτήσεις για Εισόδους std_ulogic FUNCTION "and" ( l : std_ulogic; r : std_ulogic ) RETURN UX01; FUNCTION "nand" ( l : std_ulogic; r : std_ulogic ) RETURN UX01; FUNCTION "or" ( l : std_ulogic; r : std_ulogic ) RETURN UX01; FUNCTION "nor" ( l : std_ulogic; r : std_ulogic ) RETURN UX01; FUNCTION "xor" ( l : std_ulogic; r : std_ulogic ) RETURN UX01; function "xnor" ( l : std_ulogic; r : std_ulogic ) return ux01; FUNCTION "not" ( l : std_ulogic ) RETURN UX01;

Βασικές Συναρτήσεις για ιανύσµατα -- vectorized overloaded logical operators FUNCTION "and" ( l, r : std_logic_vector ) RETURN std_logic_vector; FUNCTION "and" ( l, r : std_ulogic_vector ) RETURN std_ulogic_vector; FUNCTION "nand" ( l, r : std_logic_vector ) RETURN std_logic_vector; FUNCTION "nand" ( l, r : std_ulogic_vector ) RETURN std_ulogic_vector; FUNCTION "or" ( l, r : std_logic_vector ) RETURN std_logic_vector; FUNCTION "or" ( l, r : std_ulogic_vector ) RETURN std_ulogic_vector; FUNCTION "nor" ( l, r : std_logic_vector ) RETURN std_logic_vector; FUNCTION "nor" ( l, r : std_ulogic_vector ) RETURN std_ulogic_vector; FUNCTION "xor" ( l, r : std_logic_vector ) RETURN std_logic_vector; FUNCTION "xor" ( l, r : std_ulogic_vector ) RETURN std_ulogic_vector; function "xnor" ( l, r : std_logic_vector ) return std_logic_vector; function "xnor" ( l, r : std_ulogic_vector ) return std_ulogic_vector; FUNCTION "not" ( l : std_logic_vector ) RETURN std_logic_vector; FUNCTION "not" ( l : std_ulogic_vector ) RETURN std_ulogic_vector;

Άνοδος και Κάθοδος στο Ρολόι -- edge detection FUNCTION rising_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN; FUNCTION falling_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN;

Απλό Παράδειγµα Function: "and" TYPE stdlogic_table IS ARRAY(std_ulogic, std_ulogic) OF std_ulogic; -- truth table for "and" function CONSTANT and_table : stdlogic_table := ( -- ---------------------------------------------------- -- U X 0 1 Z W L H - -- ---------------------------------------------------- ( 'U', 'U', '0', 'U', 'U', 'U', '0', 'U', 'U' ), -- U ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ), -- X ( '0', '0', '0', '0', '0', '0', '0', '0', '0' ), -- 0 ( 'U', 'X', '0', '1', 'X', 'X', '0', '1', 'X' ), -- 1 ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ), -- Z ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ), -- W ( '0', '0', '0', '0', '0', '0', '0', '0', '0' ), -- L ( 'U', 'X', '0', '1', 'X', 'X', '0', '1', 'X' ), -- H ( 'U', 'X', '0', 'X', 'X', 'X', '0', 'X', 'X' ) -- - ); FUNCTION "and" ( l : std_ulogic; r : std_ulogic ) RETURN UX01 IS BEGIN RETURN (and_table(l, r)); -- υλοποίηση χρησιµοποιώντας πίνακα. END "and";

Το πακέτο STD_LOGIC_ARITH -- Copyright (c) 1990,1991,1992 by Synopsys, Inc. All rights reserved. -- Package name: STD_LOGIC_ARITH Purpose: A set of arithemtic, conversion, and comparison functions for SIGNED, UNSIGNED, SMALL_INT, INTEGER, STD_ULOGIC, STD_LOGIC, and STD_LOGIC_VECTOR. package std_logic_arith is type UNSIGNED is array (NATURAL range <>) of STD_LOGIC; type SIGNED is array (NATURAL range <>) of STD_LOGIC; subtype SMALL_INT is INTEGER range 0 to 1; function "+"(L: UNSIGNED; R: UNSIGNED) return UNSIGNED; function "+"(L: SIGNED; R: SIGNED) return SIGNED;

Παραδείγµατα Απλών Συναρτήσεων για UNSIGNED function "-"(L: UNSIGNED; R: UNSIGNED) return UNSIGNED; function "+"(L: UNSIGNED) return UNSIGNED; function "ABS"(L: SIGNED) return SIGNED; function "*"(L: UNSIGNED; R: SIGNED) return SIGNED; function "<"(L: UNSIGNED; R: UNSIGNED) return BOOLEAN; function "<="(L: UNSIGNED; R: UNSIGNED) return BOOLEAN; function ">"(L: UNSIGNED; R: UNSIGNED) return BOOLEAN; function ">="(L: UNSIGNED; R: UNSIGNED) return BOOLEAN; function "="(L: UNSIGNED; R: UNSIGNED) return BOOLEAN; function "/="(L: UNSIGNED; R: UNSIGNED) return BOOLEAN;

Συναρτήσεις Μετατροπών και Shifts function SHL(ARG: UNSIGNED; COUNT: UNSIGNED) return UNSIGNED; function SHL(ARG: SIGNED; COUNT: UNSIGNED) return SIGNED; function SHR(ARG: UNSIGNED; COUNT: UNSIGNED) return UNSIGNED; function SHR(ARG: SIGNED; COUNT: UNSIGNED) return SIGNED; function CONV_STD_LOGIC_VECTOR(ARG: INTEGER; SIZE: INTEGER) return STD_LOGIC_VECTOR; function CONV_STD_LOGIC_VECTOR(ARG: UNSIGNED; SIZE: INTEGER) return STD_LOGIC_VECTOR; function CONV_STD_LOGIC_VECTOR(ARG: SIGNED; SIZE: INTEGER) return STD_LOGIC_VECTOR; function CONV_STD_LOGIC_VECTOR(ARG: STD_ULOGIC; SIZE: INTEGER) return STD_LOGIC_VECTOR;

Αριθµητικές Συναρτήσεις function mult(a,b: SIGNED) return SIGNED; function mult(a,b: UNSIGNED) return UNSIGNED; function plus(a, B: SIGNED) return SIGNED; function unsigned_plus(a, B: UNSIGNED) return UNSIGNED; function minus(a, B: SIGNED) return SIGNED; function unsigned_minus(a, B: UNSIGNED) return UNSIGNED; function is_less(a, B: SIGNED) return BOOLEAN; function is_less_or_equal(a, B: SIGNED) return BOOLEAN; function unsigned_is_less(a, B: UNSIGNED) return BOOLEAN; function unsigned_is_less_or_equal(a, B: UNSIGNED) return BOOLEAN;

Το Πακέτο STD_LOGIC_SIGNED -- Copyright (c) 1990, 1991, 1992 by Synopsys, Inc. -- -- All rights reserved. -- -- Package name: STD_LOGIC_SIGNED -- function "+"(L: STD_LOGIC; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR; function "ABS"(L: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR; function "*"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR; function "<"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN; function "<="(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN; function ">"(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN; function ">="(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN; function "="(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN; function "/="(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN; function SHL(ARG:STD_LOGIC_VECTOR;COUNT: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR; function SHR(ARG:STD_LOGIC_VECTOR;COUNT: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR; function CONV_INTEGER(ARG: STD_LOGIC_VECTOR) return INTEGER;

Το Πακέτο STD_LOGIC_UNSIGNED -- Copyright (c) 1990, 1991, 1992 by Synopsys, Inc. -- Package name: STD_LOGIC_UNSIGNED package STD_LOGIC_UNSIGNED is function "-"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR; function "+"(L: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR; function "*"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR; function "<"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN; function "<="(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN; function ">"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN; function ">="(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN; function "="(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN; function "/="(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN; function SHL(ARG:STD_LOGIC_VECTOR;COUNT: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR; function SHR(ARG:STD_LOGIC_VECTOR;COUNT: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR; function CONV_INTEGER(ARG: STD_LOGIC_VECTOR) return INTEGER;

Απλά Ακολουθιακά Κυκλώµατα Χρησιµοποιώντας VHDL

Περιεχόµενα Ακολουθιακά κυκλώµατα -SR latchσε στυλ ροής δεδοµένων - D flip-flop σε στυλ συµπεριφοράς. - καταχωρητής shift register (8-bit) µε στυλσυµπεριφοράς

Ορισµός SR latch Χρησιµοποιώντας Στυλ Ροής εδοµένων (dataflow) library IEEE; use IEEE. std_logic_1164.all; entity SRlatch is port (S,R: in std_logic; -- έλεγχος του SR latch. Q, QN: out std_logic); -- εξόδοι. end SRlatch; -- Στυλ ροής δεδοµένων. εν χρησιµοποιούµε processes. -- nor για ροή δεδοµένων (όχι component που είναι για δοµικό στυλ). architecture SRlatch_arch1 of SRlatch is -- εσωτερικά, οι εντολές στο architecture εκτελούντε παράλληλα. begin QN <= S nor Q; -- αλλαγή στο S ήστοqεκτελά την εντολή. Q <= R nor QN; -- αλλαγή στο R ήστοqn εκτελά την εντολή. end SRlatch_arch1; -- τερµατίζεται η εκτέλεση αν δεν υπάρχουν αλλαγές.

Ορισµός D flip-flop σε Στυλ Συµπεριφοράς (I/II) library IEEE; use IEEE.std_logic_1164.all; entity VposD is port (CLK, CLR, D: in std_logic; -- εισόδοι, D δίνειτοτιπρέπεινααποθηκευτεί. Q, QN: out std_logic); -- περιεχόµενα του flip-flop end VposDff; -- για στυλ συµπεριφοράς, χρησιµοποία process. architecture VposDff_arch of VposDff is begin process (CLK, CLR) begin -- εκτέλεση αν υπάρχει αλλαγή στο CLK ή CLR if CLR='1' then Q<='0'; QN<='1' -- ασύχρονο CLR. elsif CLK' event and CLK='1' then Q<=D; QN<=not D; --αλλαγή στην άνοδο. end if; end process; end VposDff_arch;

Ορισµός D flip-flop σε Στυλ Συµπεριφοράς (II/II) Μια ποιο απλή υλοποίηση: process -- χωρίς λίστα ευαισθησίας, εκτελείτε πάντα. -- Εσωτερικά, έχουµε σειριακή εκτέλεση όπως την "C". wait until CLK'='1'; Q<= D; end process ή µια απλή γραµµή σεκάποιοarchitecture που να εκτελείτε έτσι παράλληλα: Q<= D when CLK' event and CLK='1' else Q; όπου όλες οι µεταβλητές έχουν οριστεί σαν std_logic.

Ορισµός Καταχωρητή Shift-register µε ΣτυλΣυµπεριφοράς library IEEE; use IEEE.std_logic_1164.all; (Wakerly, p. 742) -- Υλοποίηση σε στυλ συµπεριφοράς χρησιµοποιά processes. -- CLK αναφέρεται στο ρολόι. Οι αλλαγές γίνοντε στην άνοδο. -- S ελέγχει (select) την συνάρτηση που θα εκτελεστεί. -- D περιέχει τες πληροφορίες που θέλουµε ναφορτοσουµε. -- Q περιλαµβάνει τα περιεχόµενα του register. entity Vshftreg is -- εισόδοι και εξόδοι που φαίνοντε... port (CLK, CLR, RIN, LIN: in STD_LOGIC; - Clock, clear, shift bits in/out S: in STD_LOGIC_VECTOR (2 downto 0); - select function D: in STD_LOGIC_VECTOR (7 downto 0); - load data Q: out STD_LOGIC_VECTOR (7 downto 0)); - register contents end Vshftreg;

Αrchitecture Vshftreg_arch of Vshftreg is signal IQ : STD_LOGIC_VECTOR (7 downto 0) -- signal για τοπική µεταβλητή begin process (CLK, CLR, IQ) -- εκτελείτε αν έχουµε αλλαγή στα CLK, CLR, IQ begin -- εσωτερικά όλα εκτελούντε σειριακά (όπως την "C"). if (CLR='1') then IQ <= (others=>'0'); -- Asynchronous clear elsif (CLK => 'event and CLK='1') then - load στην άνοδο case CONV_INTEGER(S) is when 0 => null; --Hold when 1 => IQ <= D; --Load when 2 => IQ <= RIN & IQ (7 downto 1) --Shift right when 3 => IQ <= IQ(6 downto 0) & LIN; --Shift left when 4 => IQ <= IQ(0) & IQ(7 downto 1);--Shift circular right when 5 => IQ <= IQ(6 downto 0) & IQ(7);--Shift circular left when 6 => IQ <= IQ(7) & IQ(7 downto 1);--Shift circular right when 7 => IQ <= IQ(6 downto 0) & '0'; --Shift circular left when others => null; end case; end if; Q <= IQ; -- διάβασε τι έχει αποθηκευτεί. end process; end Vshftreg_arch;

Αντιπροσώπευση Ακµών Χρησιµοποιώντας Attributes στην VHDL

Ορισµοί των Attributes

Attributes (I/II) (σελ. 75-76, Yalamanchili, "VHDL Starter's Guide") signal_name'event Επιστρέφει true αν υπάρχει αλλαγή στην τιµήτουσήµατος. signal_name'active Επιστρέφει true αν υπήρχε µια τιµή που ανατέθηκε στο σήµα. Αυτή ητιµή µπορεί να είναι και η ίδια. signal_name'last_event Επιστρέφει το χρόνο που έχει διανυθεί από τo προήγουµενo επεισόδιο (event) στο σήµα. signal_name'last_active Επιστρέφει το χρόνο που έχει διανυθεί από τον χρόνο από την τελευταία φορά που ενεργοποιήθηκε το σήµα. signal_name'last_value Επιστρέφει την τελευταία τιµή που ανατέθηκε στο σήµα.

Attributes (II/II) scalar_name'left επιστρέφει την πιο αριστερή δυνατή τιµή στον ορισµό του scalar_name. scalar_name'right επιστρέφει την πιο δεξιά δυνατή τιµή στονορισµό τουscalar_name. scalar_name'high επιστρέφει την πιο ψηλή δυνατή τιµή στον ορισµό τουscalar_name. scalar_name'low επιστρέφει την πιο χαµηλή δυνατή τιµή στονορισµό του scalar_name. scalar_name'ascending επιστρέφει true αν οι τιµές στοv ορισµό τουscalar είναι σε άυξουσα σειρά. array_name'length επιστρέφει των αριθµών των στοιχείων στο διάνυσµα.

Παραδείγµατα Σε Ανίχνευση Ακµών

Αντιπροσώπευση Ακµών Χρησιµοποιώντας VHDL Μια αλλαγή στο ρολόι, αντιπροσωπέυεται µε: CLK' event που επιστρέφει 'true' µετά από αλλαγή στο ρολόι (event). Για θετική ακµή (positive edge): CLK' event and CLK='1' που επιστρέφει 'true' µετά από αλλαγή που οδηγεί το ρολόι στην τιµή 1 (από τιµή '0'). Για αρνητική ακµή (negative edge): CLK' event and CLK='0'

Ορισµοί Ακµών Στο Πακέτο std_logic_1164 -- edge detection FUNCTION rising_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN IS BEGIN RETURN (s'event AND (To_X01(s) = '1') AND (To_X01(s'LAST_VALUE) = '0')); END; FUNCTION falling_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN IS BEGIN RETURN (s'event AND (To_X01(s) = '0') AND (To_X01(s'LAST_VALUE) = '1')); END; ΗσυνάρτησηTO_XO1(.) µετατρέπει την τιµή εισόδου σε 'Χ', '0', ή '1'. Για ανίχνευση ακµών στο ρολόι, θα πρέπει να χρησιµοποιούµε τες συναρτήσεις που δίνοντε πιο πάνω, χρησιµοποιώντας το πακέτο std_logic_1164.