jimakos21 Posted March 13, 2010 #1 Share Posted March 13, 2010 Γειά σας παίδες.. Εν όψη μια εργασία που ετοιμάζω πάνω στην σχεδίαση ψηφιακών συστημάτων (αρχικά σε low level) αντιμετωπίζω πρόβλημα πάνω σε μία άσκηση... η εκφώνηση της άσκησης είναι αυτή: Η παρακάτω Εικόνα 1 (a) παρουσιάζει ένα κύκλωμα αθροίσματος γινομένων που υλοποιεί έναν πολυπλέκτη 2-σε-1 με μια γραμμή επιλογής s. Εάν s=0 η έξοδος του πολυπλέκτη m είναι ίση με την είσοδο x, και εάν s=1 η έξοδος είναι ίση με y. Το μέρος (β) της Εικόνας 1 δίνει έναν πίνακα αληθείας για αυτόν τον πολυπλέκτη και το μέρος © δείχνει το σύμβολο του κυκλώματος. Ο πολυπλέκτης μπορεί να περιγραφεί από την ακόλουθη εντολή VHDL: m <= (NOT (s) AND x) OR (s AND y); Ζητείται να γράψετε μία οντότητα VHDL που να περιλαμβάνει οκτώ εντολές αντιστοίχησης όπως η παραπάνω για να περιγράψει το κύκλωμα που παρουσιάζεται στην επόμενη Εικόνα 2. Εικόνα 2: Ένας πολυπλέκτης 2 σε 1 που πολυπλέκει δύο 8 bit ποσότητες Αυτό το κύκλωμα έχει δύο εισόδους 8-bit, X και Υ, και παράγει μία έξοδο 8-bit M. Εάν s=0 τότε Μ=Χ ενώ εάν s=1 τότε Μ=Υ. Ονομάζουμε αυτό το κύκλωμα ως ένα πολυπλέκτη 2 σε 1 που πολυπλέκει δύο 8 bit ποσότητες. Παρίσταται με το σύμβολο κυκλώματος της εικόνας 2b στην οποία τα Χ, Υ και Μ αναπαρίστανται ως καλώδια 8-bit. Πραγματοποιείστε τα παρακάτω βήματα: 1. ∆ημιουργείστε ένα Quartus II project για το κύκλωμα σας 2. Να γράψετε κώδικα VHDL για έναν πολυπλέκτη 2 σε 1 που πολυπλέκει δύο 8 bit ποσότητες 3. Να μεταγλωττίσετε το project 4. Να ελέγξετε την ορθότητα της υλοποίησης σας μέσω προσομοίωσης του κυκλώματος. Απάντηση μου: Αρχικά προσπάθησα να κατασευάσω τον πολυπλέκτη 2-1 σε ένα project και όταν χρειαστεί (σαν σκεπτικό) να τον καλέσω 8φορές ! Φτιάχνω λοιπόν τον πολυπλέκτη με ονομασία POL1 library IEEE;use IEEE.STD_LOGIC_1164.all; entity POL1 is port(s,x,y:in STD_LOGIC; m:out STD_LOGIC); end POL1; architecture V1 of POL1 is begin m<=(NOT (s) AND x) OR (s AND y); end V1; --end of vhdl code. Mετά συνεχίζω απτόητος να φτιάξω ένα δεύτερο project με ονομασία POL8BIT όπου θα καλέσω 8φορές τον πάνω πολυπλέκτη . library IEEE;use IEEE.STD_LOGIC_1164.all; entity POL8BIT is port(SEL,x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8:in STD_LOGIC; m:out STD_LOGIC); end; architecture STRUCT of POL8BIT is component POL1 port(s,x,y:in STD_LOGIC; m:out STD_LOGIC); end component; signal SELB:STD_LOGIC; begin G1:POL1 port map(SEL,x1,y1); G2:POL1 port map(SEL,x2,y2); G3:POL1 port map(SEL,x3,y3); G4:POL1 port map(SEL,x4,y4); G5:POL1 port map(SEL,x5,y5); G6:POL1 port map(SEL,x6,y6); G7:POL1 port map(SEL,x7,y7); G8:POL1 port map(SEL,x8,y8); end; Eκτός του ότι δεν ξέρω αν μέχρι εκεί είμαι σωστός, δεν μπορώ για κανένα λόγο να ενώσω τα τσιπάκια με την έξοδο!!(8bit) δεν μπορώ... Προσπάθησα με: singal SELB:STD_LOGIC; αλλά τίποτα.. Προσπάθησα να το κάνω με new project αλλα πάλι τίποτα..... Παίδες είμαι καινούργιος στον τομέα απο vhdl ξέρω ελάχιστες εντολές και γενικά είμαι πολύ πρωτάρης.. Αλλά έχω πεισμώση θέλω να στείλω την εργασία άψογη!!! Όποιος γνωρίζει το αντικείμενο παρακαλώ να βοηθήσει Link to comment Share on other sites More sharing options...
jimakos21 Posted March 14, 2010 Author #2 Share Posted March 14, 2010 Κανείς ρε παιδιά??? Link to comment Share on other sites More sharing options...
backgman Posted March 14, 2010 #3 Share Posted March 14, 2010 Ζητείται να γράψετε μία οντότητα VHDL που να περιλαμβάνει οκτώ εντολές αντιστοίχησης όπως η παραπάνω για να περιγράψει το κύκλωμα που παρουσιάζεται στην επόμενη Εικόνα 2.Απ'οτι καταλαβαίνω αυτό που ζητάει η άσκηση είναι να γράψεις 8 εντολές VHDL όπως αυτή που σου δίνειγια τον mux 2σε1 1bit. Άρα για τα 2 8bit σήματα που σου έρχονται θα γράψεις μια εντολή για κάθε bit απο τις2 εισόδους. Το αποτέλεσμα της κάθε εντολής που θα γράψεις θα είναι 1 απο τα 8 bit του αποτελέσματος.Αν έχεις ένα signal A : std_logic_vector(1 downto 0), τότε για να πάρεις το πρώτο bit (MSB) γράφεις Α(1)και για να πάρεις το 2ο bit (LSB) γράφεις Α(0).Αν συνδιάσεις αυτά με την εντολή που σου δίνει είναι εύκολο να γράψεις αυτό που ζητά.Το σκεπτικό σου είναι σωστό αλλα δε σου ζητάει να φτιάξεις component τον mux2σε1 1bit και μετά να πάρεις8 τετοια components (να κάνεις 8 port maps) για να φτιάξεις ενα mux2σε1 8bit. 1 Link to comment Share on other sites More sharing options...
jimakos21 Posted March 14, 2010 Author #4 Share Posted March 14, 2010 Δηλαδή η λογική με την οποία ξεκίνησα τα project είναι λάθος....? Ναί θέλει να το κάνουμε όπως το mux 2σε 1 όπως εκεί δεν είναι 8bit! Δεν καταλαβαίνω ακριβώς τι μου λέω να κάνω.. Link to comment Share on other sites More sharing options...
backgman Posted March 15, 2010 #5 Share Posted March 15, 2010 Έχεις μία εντολή για σήματα 1bit. Πρέπει να γράψεις 8 παρόμοιες εντολές 1 για κάθε bit απο τα 8 που θα έχεις για κάθεσήμα εισόδου. Άρα για το LSB του σήματος εξόδου θα έχεις την εντολή m(0)<=(NOT (s) AND x(0)) OR (s AND y(0))όπου τα x,y,m είναι 8bit σήματα. 1 Link to comment Share on other sites More sharing options...
jimakos21 Posted March 15, 2010 Author #6 Share Posted March 15, 2010 και τα ορίζω κάπως ότι τα σήματα είναι 8bit? με κάποια εντολή?? Link to comment Share on other sites More sharing options...
backgman Posted March 16, 2010 #7 Share Posted March 16, 2010 και τα ορίζω κάπως ότι τα σήματα είναι 8bit? με κάποια εντολή??Στη δήλωση των σημάτων βάζεις πχ signal A : std_logic_vector(7 downto 0); για σήματα 8bit 1 Link to comment Share on other sites More sharing options...
jimakos21 Posted March 16, 2010 Author #8 Share Posted March 16, 2010 Σε ευχαριστώ νομίζω την έλυσα με το STD_LOGIC_VECTOR(...) σ ευχαριστώ πάρα πολύ φίλος... Μην το κλείσετε το θέμα θα εμφανιστούν και άλλες απορίες μου (ταλαίπωρα members) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now