Καθυστέρηση πριν από την ανάθεση.

M

munchies

Guest
Είμαι με τη χρήση VHDL και θέλω να εισαγάγει μια καθυστέρηση πριν από την ανάθεση δύο σήματα να είναι ίσοι. Η σκέψη μου είναι ενός διακόπτη, που κινείται από όλα τα μηδενικά ή μηδενική για το σύρμα που θέλω να λάβει το σήμα από το ποσό Χ μετά από clk_cycles. Είναι αυτό δυνατό; Το θέμα μου είναι ότι ο σχεδιασμός μου είναι outputting δεδομένα σκουπίδια πριν από όλα του τα σωστά δεδομένα διαδίδεται μέσω πλήρως, θέλω να αναθέσετε την έξοδο στο μηδέν ή μηδενική έως ότου η καθυστέρηση διάδοσης είναι πλήρης. Είναι αυτό δυνατό; Σας ευχαριστώ για οποιαδήποτε βοήθεια ή συζήτηση.
 
κύκλωμα δεν σας έχουν μία αλληλουχία μέρος; γιατί δεν μπορείτε να το χρησιμοποιήσετε για να καθορίσει πότε για να εκχωρήσετε στην έξοδο. αυτό που λέτε δεν είναι χρήσιμο, στο βαθμό που έχω καταλάβει. λέτε για παράδειγμα έχετε ένα σύρμα και θέλετε να έχουν καμία αξία για έναν χρόνο (null), και από ό, τι μπορείτε να εκχωρήσετε μια τιμή σε αυτό όταν θέλετε. μηδενική αξία δεν είναι δυνατόν σε HDL. γιατί κάθε σύρμα και εγγραφείτε έχουν μια τυχαία τιμή στην επαναφορά, δεδομένου ότι είναι πραγματικά δισταθής στερεάς κατάστασης συσκευές. τι μπορείτε να κάνετε είναι ότι, για παράδειγμα, έχουν ένα μετρητή κύκλων. και να πω κύκλωμα σας έχει ολοκληρώσει τους υπολογισμούς της, μετά από 150 κύκλους ρολογιού. και μπορείτε να έχετε μια εγγραφή εξόδου που είναι όλα τα μηδενικά μέχρι 150 μετράει κύκλο. και μπορείτε να ορίσετε ότι η παραγωγή μετά το 150. κύκλο. και μπορείτε να έχετε επιπλέον να έχει ένα σήμα λίγο, πείτε "κάνει". και να ορίσετε αυτό το κάνει σήμα olnly μετά την ανάθεση στο μητρώο αποτέλεσμα έχει τελειώσει. αυτόν τον τρόπο μπορείτε να πείτε την επόμενη ενότητα που αυτό το μέρος του σύστημα έχει υπολογιστεί αξία της παραγωγής της, και η τιμή είναι έτοιμη να λαμβάνεται από την έξοδο του μητρώου. Αυτός είναι ο κοινός τρόπος να κάνει αυτό που ζητάς. ελπίδα αυτό βοηθά.
 
Στο προσομοίωσης , μπορείτε να καθυστερήσετε την εργασία για το σήμα με τη χρήση [FONT = Courier New] μετά [/font], αλλά αυτό δεν είναι πιθανώς ό, τι θέλετε: [url = http://www.gmvhdl.com / delay.htm] Tutorial VHDL - Το μοντέλο Καθυστέρηση [/url], τότε μάλλον πρέπει να δημιουργήσει ένα σήμα που ξέρει πότε το junk έχει ξεπλυθεί μέσω της μονάδας σας, και να τις χρησιμοποιούν για να αλλάξετε την έξοδο ή να απενεργοποιήσετε. Προτείνω να προσθέσετε κάτι σαν αυτό στο τέλος της ενότητας σας:
Code:
 finalOutput '0 CODE');[/]
 
Εντάξει, σας ευχαριστώ για αυτό. Ξέρω τι θέλω να στηριχθεί αυτό, έτσι θέλω να χρησιμοποιήσω κάτι σαν
Code:
 IF (Fire'event ΚΑΙ Fire = '1 ') ΤΟΤΕ ...... ComputationReady = '1 '?
Πώς μπορώ να κάνω στη συνέχεια, ορίστε την καθυστέρηση που θέλω; Σε αυτή την περίπτωση είναι 4 κύκλους. Υποθέτω χρησιμοποιώντας οποιαδήποτε χρονική στιγμή είναι άχρηστο εκτός της προσομοίωσης. Γι 'αυτό χρειάζεται κάτι σαν:
Code:
 περιμένετε 8 * clk'event
ή κάτι τέτοιο;
 
dont χρησιμοποιήσετε την πρώτη ιδέα - που δημιουργείτε ένα ρολόι που θα σας προκαλέσει όλα τα είδη των προβλημάτων χρονοδιάγραμμα. Best απλά για να δημιουργήσει ένα μετρητή και περιμένετε μέχρι να φτάσει μια συγκεκριμένη τιμή.
 
Μην έναυσμα για μια θετική ακμή της "φωτιάς", με αυτόν τον τρόπο, μπορείτε να χρησιμοποιήσετε το "φωτιά" ως ένα νέο ρολόι, αντί για ένα σήμα ελέγχου. Αντ 'αυτού, ελέγξτε για την παλιά τιμή και συγκρίνει με την νέα τιμή. Τότε αρχίζουν να μετρούν από 4 κύκλους ρολογιού. Μετρώντας 4 κύκλους ρολογιού μπορεί να γίνει με τη μετατόπιση των τιμών σε ένα μητρώο βάρδιες, ή με τη δημιουργία μιας κρατικής μηχανής με έναν μετρητή. Ας κάνουμε την αλλαγή εγγραφείτε εδώ: Υποθέτοντας ότι δηλώσεις όπως αυτές:
Code:
 φωτιά σήμα, φωτιά, ενεργή: std_logic? Καταμέτρηση σήματος: std_logic_vector (4 downto 0)?
σας κάτι παρόμοιο με αυτό στη σύγχρονη διαδικασία σας: ΚΩΔΙΚΑΣ [ ] αν rising_edge (CLK), στη συνέχεια, εάν τροφοδοτούνται = '0 'και φωτιά = '1' τότε - αρχίζουν να μετρούν ενεργό
 
Σε μια συνεχή διοχέτευση σχεδιασμό, συχνά θα θέλετε να έχετε μια DAV (διαθέσιμα στοιχεία) αγωγό, ότι οι καθυστερήσεις ένα σήμα χειραψία μαζί με τα δεδομένα. Δεν καθυστερήσεις μόνο δεδομένα ένδειξη ετοιμότητας, αλλά επιτρέπει πολλαπλές νέες τιμές να ταξιδέψει το μονοπάτι των δεδομένων την ίδια στιγμή. Εάν ο νεροχύτης στοιχείων καταγράφει τα δεδομένα ανάλογα με το σήμα DAV, δεν χρειάζεται να μάσκα μη έγκυρα δεδομένα εξόδου. Εάν η διαδρομή των δεδομένων που λειτουργούν διαδοχικά και όχι συνεχούς διοχέτευσης, για παράδειγμα ένα σειριακό μονάδα διαχωριστικό, ένας απλός μετρητής DAV θα ήταν αρκετή.
 

Welcome to EDABoard.com

Sponsor

Back
Top