Πίνακας περιεχομένων:

Υπολογιστής δέκα bit - VHDL: 4 βήματα
Υπολογιστής δέκα bit - VHDL: 4 βήματα

Βίντεο: Υπολογιστής δέκα bit - VHDL: 4 βήματα

Βίντεο: Υπολογιστής δέκα bit - VHDL: 4 βήματα
Βίντεο: Computer Architecture VHDL Exercises 4 2024, Ιούλιος
Anonim
Υπολογιστής δέκα bit - VHDL
Υπολογιστής δέκα bit - VHDL

Κατασκευαστής: Tyler Starr και Ezzeedden Gazali

Εισαγωγή

Αυτό το έργο ολοκληρώθηκε ως μέρος του τελικού έργου για το CPE 133 στο Cal Poly SLO. Είναι ένα εξαιρετικό έργο για κάποιον που θέλει να καταλάβει πώς λειτουργούν οι υπολογιστές στο χαμηλότερο επίπεδο και πώς επιτυγχάνουν τα καθήκοντά τους. Το έργο διαμορφώνεται σύμφωνα με τον υπολογιστή SAP 8 bit που περιγράφεται στο βιβλίο του Albert Malvino Digital Computer Electronics. Ωστόσο, αυξήσαμε τον υπολογιστή σε 10-bit για να επιτρέψουμε την εφαρμογή περισσότερων op κωδικών (κωδικοί λειτουργίας). Ο χρήστης μπορεί να προγραμματίσει τον υπολογιστή για να εκτελέσει ένα σύνολο λειτουργιών εισάγοντας συγκεκριμένες οδηγίες.

Αρχιτεκτονική συστήματος και κυκλώματος:

Ο υπολογιστής είναι γραμμένος σε VHDL και θα περιέχεται στον πίνακα Basys 3 από το Digilent. Οι είσοδοι θα χαρτογραφηθούν στους διακόπτες στο κάτω μέρος του πίνακα. Δύο απτικοί διακόπτες θα χρησιμοποιηθούν για τις λειτουργίες Reset και Write. Η έξοδος θα εμφανιστεί στην οθόνη 7 τμημάτων του πίνακα.

Ο υπολογιστής θα χωριστεί σε μικρότερα κυκλώματα (μονάδες) που χειρίζονται διαφορετικές λειτουργίες. Κάθε ενότητα θα εξηγηθεί λεπτομερώς στα ακόλουθα βήματα.

Βήμα 1: Υλικά

Υλικά
Υλικά

Το μόνο που χρειάζεται για αυτό το έργο είναι ο πίνακας Basys3 FPGA από το Digilent και ένα καλώδιο micro USB για να συνδέσετε την πλακέτα στον υπολογιστή σας.

Βήμα 2: Αποκλεισμός διαγράμματος ενοτήτων κυκλωμάτων

Αποκλεισμός διαγράμματος ενοτήτων κυκλωμάτων
Αποκλεισμός διαγράμματος ενοτήτων κυκλωμάτων
Αποκλεισμός διαγράμματος ενοτήτων κυκλωμάτων
Αποκλεισμός διαγράμματος ενοτήτων κυκλωμάτων
Αποκλεισμός διαγράμματος ενοτήτων κυκλωμάτων
Αποκλεισμός διαγράμματος ενοτήτων κυκλωμάτων

Τα παραπάνω διαγράμματα παρουσιάζουν τις διαφορετικές ενότητες κυκλωμάτων που αποτελούν τον υπολογιστή 10-bit. Παρακάτω υπάρχουν περιγραφές για καθένα από τα μεμονωμένα μέρη/ενότητες που εμφανίζονται στα παραπάνω διαγράμματα.

Μετρητής προγράμματος

Περιγραφή των εισόδων: η είσοδος είναι μια είσοδος 5 bit για τη φόρτωση ενός αριθμού στον μετρητή προγράμματος. Cp όταν ψηλά ο μετρητής βασίζεται στην πτώση των άκρων του ρολογιού. Το Clr επαναφέρει τον μετρητή στο 0. Ep όταν ο μετρητής είναι υψηλός από την τρέχουσα μέτρηση. Sp όταν είναι ψηλά ο μετρητής ορίζει τον αριθμό στον αριθμό στην είσοδο

  • Περιγραφή των εξόδων:

    η έξοδος είναι ένα αντίγραφο μέτρησης για χρήση σε LEDS 0-15. Καταμέτρηση εξάγει την τρέχουσα καταμέτρηση.

  • Συνολική θέση στο σύστημα: Αυτός ο μετρητής παρακολουθεί τη θέση μνήμης στην οποία βρίσκεται το πρόγραμμα. Όλα τα προγράμματα ξεκινούν από τη διεύθυνση μνήμης 00000 (0) και ανεβαίνουν έως το 11111 (31), εκτός εάν χρησιμοποιείται διακοπή. Στις δηλώσεις άλματος, ο μετρητής προγράμματος συνεχίζει να μετρά από τη διεύθυνση στην οποία πηδά το πρόγραμμα.

Εισαγωγή MUX

  • Περιγραφή των εισόδων: Η διεύθυνση λαμβάνει την είσοδο από τους διακόπτες 11 έως 15. Η MAR λαμβάνει την είσοδο από τον καταχωρητή 10 bit που χρησιμοποιείται ως MAR. Το πρόγραμμα ελέγχει ποια είσοδο στη διαδρομή προς την έξοδο.
  • Περιγραφή των εξόδων: η έξοδος κατευθύνει την επιλεγμένη είσοδο στη μνήμη RAM.
  • Συνολική θέση στο σύστημα: Αυτό το MUX καθορίζει εάν θα δρομολογηθεί η διεύθυνση από τους διακόπτες ή το δίαυλο στη μνήμη RAM. Στη λειτουργία προγράμματος η διεύθυνση από τους διακόπτες δρομολογείται και στην κατάσταση εκτέλεσης η διεύθυνση από το δίαυλο δρομολογείται.

ramMUX

  • Περιγραφή των εισόδων: userInput είναι η είσοδος που εισάγει ο χρήστης κατά τη λειτουργία προγράμματος. aRegInput είναι τα δεδομένα που περιέχονται στον καταχωρητή Α, τα οποία χρησιμοποιούνται κατά τη διάρκεια μιας λειτουργίας μετακίνησης. το στοιχείο ελέγχου είναι το επιλεγμένο για αυτό το MUX.
  • Περιγραφή των εξόδων: η έξοδος είναι η είσοδος δεδομένων 10-bit στη μνήμη RAM.
  • Συνολική θέση στο σύστημα: Αυτό το MUX εξάγει τα δεδομένα εισόδου 10-bit που χρησιμοποιούνται στη μονάδα RAM. Όταν το bit ελέγχου είναι υψηλό, το MUX εξάγει τα δεδομένα που εισήγαγε ο χρήστης σε λειτουργία προγράμματος. Όταν το bit ελέγχου είναι χαμηλό, το MUX εξάγει τα δεδομένα στο δίαυλο ελέγχου.

ramModule

  • Περιγραφή των εισόδων: inputData είναι τα δεδομένα που αποθηκεύονται στη μνήμη RAM. inputAddress είναι η τοποθεσία όπου αποθηκεύονται τα δεδομένα. Το πρόγραμμα υποδεικνύει εάν ο υπολογιστής βρίσκεται σε λειτουργία προγράμματος ή λειτουργίας. Το readWrite υποδεικνύει εάν συμβαίνει λειτουργία ανάγνωσης ή εγγραφής. Το notCE είναι το bit ελέγχου για τη μονάδα RAM. μετακίνηση υποδεικνύει ότι εκτελείται μια κίνηση μετακίνησης.
  • Περιγραφή των εξόδων: outputDataToBus είναι τα δεδομένα που πηγαίνουν από τη μνήμη RAM στο δίαυλο. dataData και έξοδος διεύθυνσης είναι τα δεδομένα και η διεύθυνση που πηγαίνουν στον καταχωρητή εντολών.
  • Συνολική θέση στο σύστημα: Η μνήμη RAM επιτρέπει την αποθήκευση προγράμματος και δεδομένων στη μνήμη πριν από την εκτέλεση του προγράμματος. Μόλις τρέξει το πρόγραμμα, η RAM λαμβάνει μια διεύθυνση από το MAR και εξάγει τα δεδομένα σε αυτήν τη διεύθυνση στο δίαυλο.

διεύθυνση ROM

  • Περιγραφή των εισόδων: Το opCode είναι η είσοδος που περιέχει τη διεύθυνση του opcode που εκτελείται από τον υπολογιστή
  • Περιγραφή των εξόδων: Το opCodeStart είναι η διεύθυνση μνήμης που υποδεικνύει την πρώτη θέση μικρο-εντολών του αντίστοιχου opCode.
  • Συνολική θέση στο σύστημα: Αυτή η ενότητα λαμβάνει την κλειδωμένη μικρο-εντολή και εξάγει τη θέση μνήμης που αντιστοιχεί στην έναρξη αυτής της ακολουθίας μικρο-εντολών.

ringCounter

  • Περιγραφή των εισόδων: η επαναφορά επαναφέρει τον μετρητή σε 100000 (η πρώτη "κατάσταση Τ"). Το Clk αυξάνει τον μετρητή κατά ένα σε μια άκρη ρολογιού που πέφτει. Το NOP υποδεικνύει ότι η τρέχουσα κατάσταση/κύκλος είναι κύκλος "χωρίς λειτουργία".
  • Περιγραφή των εξόδων: ο αριθμός είναι η έξοδος του μετρητή.
  • Συνολική θέση στο σύστημα: Ο μετρητής δακτυλίου ελέγχει τον προκαθορισμένο μετρητή και οριοθετεί τα έξι μικρο-βήματα σε κάθε κύκλο οδηγιών (Τ1-Τ6).

preCounter

  • Περιγραφή των εισόδων: Το opCodeStart είναι η θέση μνήμης των μικρο-οδηγιών για το opCode που εκτελείται. Το T1 επαναφέρει τον μετρητή στο 0 όταν είναι υψηλό. Όταν το T3 είναι υψηλό, το opCodeStart φορτώνεται και η καταμέτρηση συνεχίζεται από αυτήν τη θέση για τους υπόλοιπους 3 κύκλους (T4-T6). Το Clr ρυθμίζει τον μετρητή 0. Το Clk αυξάνει τον αντίθετο έναν προς ένα που πέφτει.
  • Περιγραφή των εξόδων: controlWordLocation εξάγει τη θέση μνήμης της λέξης ελέγχου που πρέπει να εκτελεστεί.
  • Συνολική θέση στο σύστημα: Κάθε op-code έχει 3 μικρο-οδηγίες. Ο μετρητής αυξάνεται κατά 1 ξεκινώντας από το 0 για τους πρώτους 3 κύκλους (κύκλος ανάκτησης). Στη συνέχεια, ο μετρητής ενεργοποιείται από τον μετρητή δακτυλίου για να φορτώσει τη διεύθυνση στο opCodeStart και αυξάνεται κατά 1 για τους υπόλοιπους 3 κύκλους. Με αυτόν τον τρόπο το preCounter ελέγχει την ακολουθία των μικρο-οδηγιών που πρέπει να εκτελεστούν.

controlROM

  • Περιγραφή των εισόδων: controlWordLocation είναι η διεύθυνση του controlWord που θα βγάλει το controlROM. Το NOP υποδεικνύει ότι η τοποθεσία είναι μια θέση "χωρίς λειτουργία".
  • Περιγραφή των εξόδων: controlWord είναι η λέξη ελέγχου που επιτρέπει/απενεργοποιεί τις διαφορετικές μονάδες υπολογιστή για να πραγματοποιήσουν την επιθυμητή λειτουργία.
  • Συνολική θέση στο σύστημα: Αυτή η ενότητα αποκωδικοποιεί τη θέση μνήμης από τον προμετρητή και εξάγει τη λέξη ελέγχου για την επιθυμητή λειτουργία.

ALU

  • Περιγραφή των εισόδων: Τα Α και Β είναι οι είσοδοι από τον Μητρώο Α και τον Καταχωρητή Β στον οποίο η ALU εκτελεί τις αριθμητικές και λογικές πράξεις. Όταν η αφαίρεση είναι ενεργή, υποδηλώνει ότι αφαιρείται το Β από το Α.
  • Περιγραφή των εξόδων: το αποτέλεσμα είναι το αποτέλεσμα της προσθήκης Α και Β, ή αφαίρεσης του Β από το Α. Οι έξοδοι μεγαλύτερες, λιγότερες από και ίσες Για να υποδείξουν εάν (ΑΒ, ή Α = Β) και χρησιμοποιούνται στη μονάδα άλματος υπό όρους. Το σφάλμα υποδεικνύει υπερχείλιση ή υπερχείλιση όταν είναι ενεργό.
  • Συνολική θέση στο σύστημα: Το ALU περιέχει τη λογική για τις αριθμητικές και λογικές πράξεις που εκτελούνται από τον υπολογιστή. Αυτή η ενότητα μπορεί να προσθέσει και να αφαιρέσει δύο δυαδικούς αριθμούς 10-bit. Το ALU μπορεί επίσης να καθορίσει εάν A> B, A

conditionalJmp

  • Descriptoin των εισόδων: inputCount χρησιμοποιείται για να κλειδώσει την τρέχουσα καταμέτρηση. inputAddress χρησιμοποιείται για να κλειδώσει τη διεύθυνση στην οποία θα μεταβείτε. loadFromRegister όταν εισάγονται χαμηλές ασφάλειες Διεύθυνση. loadCount όταν η είσοδος είναι χαμηλή. όταν το outputEnable είναι χαμηλό, η έξοδος ορίζεται στη διεύθυνση για μετάβαση σε.gT, iT και eQ που καθορίζει ποια κατάσταση ελέγχεται. GreatThan, lessThan, και ίσοTo είναι οι είσοδοι από το ALU που υποδεικνύουν το αποτέλεσμα της σύγκρισης μεταξύ A και B. Στην άνοδο του ρολογιού Clk, το inputCount και το inputAddress διαβάζονται σε καταχωρητές.
  • Περιγραφή των εξόδων: outputJmp είναι η διεύθυνση στην οποία θα διαβάσει ο μετρητής προγράμματος.
  • Συνολική θέση στο σύστημα: αυτή η ενότητα χειρίζεται άλματα υπό όρους και μη υπό όρους για τον υπολογιστή. Με βάση τις εισόδους gT, iT και eQ, η μονάδα καθορίζει ποια κατάσταση πρέπει να ελέγχεται και αν αυτή η συνθήκη είναι αληθής ή ψευδής. Εάν η συνθήκη είναι αληθής, θα εξάγει τη διεύθυνση της εντολής για μετάβαση, διαφορετικά, εξάγει τον αριθμό της επόμενης εντολής.

binToBCD

  • Περιγραφή των εισόδων: αριθμήστε τον αριθμό των 10 bit για μετατροπή σε δυαδικό κωδικό δεκαδικού.
  • Περιγραφή των εξόδων: εκατοντάδες το ψηφίο στη θέση εκατοντάδων του δυαδικού αριθμού. δέκα το ψηφίο στη θέση των δεκάδων του δυαδικού αριθμού. ένα το ψηφίο στη θέση μονάδες του δυαδικού αριθμού.
  • Συνολική θέση στο σύστημα: Αυτή η ενότητα μετατρέπει τον αριθμό 10 bit από τον καταχωρητή εξόδου σε BCD προκειμένου το τετραψήφιο πρόγραμμα οδήγησης οθόνης να εμφανίσει τον αριθμό σε δεκαδικό αριθμό στην οθόνη των 7 τμημάτων.

FourDigitDriver

  • Περιγραφή των εισόδων: αριθμός είναι η δυαδική είσοδος 16 bit που οδηγείται στον αποκωδικοποιητή. Το inClk είναι το εσωτερικό ρολόι της πλακέτας Basys και χρησιμοποιείται για διαχωριστικό ρολογιού. Το RST επαναφέρει το ρολόι που χρησιμοποιείται για την οδήγηση των ψηφίων.
  • Περιγραφή των εξόδων: η άνοδος καθορίζει ποια ψηφιακή θέση θα φωτιστεί. ψηφίο είναι ο αριθμός εισόδου στον αποκωδικοποιητή.
  • Συνολική θέση στο σύστημα: Αυτή η μονάδα οδηγεί τον αποκωδικοποιητή στην έξοδο του αριθμού BCD στην οθόνη.

αποκρυπτογράφος

  • Περιγραφή των εισόδων: inputNumber είναι το ψηφίο που προέρχεται από το πρόγραμμα οδήγησης και το οποίο θα αποκωδικοποιηθεί.
  • Περιγραφή των εξόδων: οι κάθοδοι καθορίζουν ποιες καθόδους θα ενεργοποιηθούν για να εμφανιστεί το επιθυμητό ψηφίο.
  • Συνολική θέση στο σύστημα: Αυτή η ενότητα αποκωδικοποιεί το ψηφίο που πρόκειται να εμφανιστεί στην οθόνη των 7 τμημάτων.

FourDigitDisplay

  • Περιγραφή των εισόδων: αριθμός είναι ο αριθμός που θα εμφανιστεί στην οθόνη των 7 τμημάτων. Το σφάλμα υποδεικνύει πότε η οθόνη πρέπει να διαβάζει "Err". Clk είναι το σήμα του ρολογιού στο οποίο λειτουργεί η οθόνη. Αυτό το σήμα πρέπει να είναι περίπου 60 Hz, έτσι ώστε η οθόνη να μπορεί να εμφανίζει και τα 4 ψηφία ταυτόχρονα.
  • Περιγραφή των εξόδων: η άνοδος καθορίζει ποια ψηφιακή θέση είναι ενεργοποιημένη. καθορίζει ποιες καθόδους είναι ενεργοποιημένες για να εμφανιστεί το επιθυμητό ψηφίο.
  • Συνολική θέση στο σύστημα: Αυτή η ενότητα εμφανίζει έναν αριθμό στην οθόνη των 7 τμημάτων. Ανατρέξτε στο εγχειρίδιο οδηγιών της πλακέτας Basys 3 για πληροφορίες σχετικά με τις κάθοδοι και τις ανόδους που ενεργοποιούνται για τη χρήση της οθόνης. Όταν το bit σφάλματος είναι υψηλό, στην οθόνη εμφανίζεται η ένδειξη "Err".

έξοδοMUX

  • Περιγραφή των εισόδων: Το progModeInput καθορίζει ποια led είναι ενεργοποιημένα κατά τη λειτουργία προγραμματισμού. Το runModeInput καθορίζει ποια led είναι ενεργοποιημένα κατά τη λειτουργία εκτέλεσης. modeSelect είναι το bit επιλογής ή ελέγχου για το MUX.
  • Περιγραφή των εξόδων: Το ledOutput υποδεικνύει ποια led θα ενεργοποιηθούν.
  • Συνολική θέση στο σύστημα: Ανάλογα με τη λειτουργία στην οποία βρίσκεται ο υπολογιστής (πρόγραμμα ή ρούμι), το MUX θα ενεργοποιήσει διαφορετικά led. Στη λειτουργία προγράμματος (modeSelect είναι '0'), το MUX ενεργοποιεί τα led για να μοιάζει με τη θέση μνήμης στην οποία βρίσκεται ο υπολογιστής και με αυτό που περιέχει. Σε λειτουργία εκτέλεσης (modeSelect είναι "1"), το MUX χρησιμοποιείται για εντοπισμό σφαλμάτων, αλλά μπορεί να ρυθμιστεί ώστε να εμφανίζει οτιδήποτε άλλο.

clockDivider

  • Περιγραφή των εισόδων: η στάση διαβάζει τα πέντε bits MSB από το δίαυλο για να εντοπίσει μια εντολή διακοπής ('11111') και σταματά το ρολόι. Το inputClk είναι το εσωτερικό σήμα ρολογιού της πλακέτας Basys 3.
  • Περιγραφή των εξόδων: Το ouputClk είναι το νέο ρολόι που έχει επιβραδυνθεί.
  • Συνολική θέση στο σύστημα: Αυτό το ρολόι χρησιμοποιείται για να επιβραδύνει τον υπολογιστή για να καταστήσει δυνατό στον χρήστη να καθορίσει τι συμβαίνει. Το ρολόι μπορεί να λειτουργεί πολύ πιο γρήγορα, ωστόσο, αυτή τη στιγμή έχει ρυθμιστεί στα 2 Hz.

triStateBuffer

  • Περιγραφή των εισόδων: Din είναι η είσοδος 5 bit που μπαίνει στο buffer. Το Ep είναι το bit ελέγχου.
  • Περιγραφή εξόδων: Το Dout είναι η έξοδος 5 bit του buffer
  • Συνολική θέση στο σύστημα: Όταν το bit ελέγχου Ep είναι ενεργό, το buffer εξάγει την είσοδο. Όταν το bit ελέγχου δεν είναι ενεργό, το buffer δεν βγάζει τίποτα.

tenBitDRegister

  • Περιγραφή εισόδων: Το Dbus είναι η είσοδος στην οποία είναι ο καταχωρητής. Το Clk επιτρέπει στον καταχωρητή να διαβάζει δεδομένα σε ανερχόμενη άκρη ρολογιού. Το ARST ορίζει τον μητρώο σε 0 ασύγχρονα. Όταν το outputEnable είναι χαμηλό, τα περιεχόμενα του καταχωρητή είναι η έξοδος. Όταν το readIn είναι χαμηλό, ο καταχωρητής κλειδώνει το Dbus στην άνοδο του ρολογιού.
  • Περιγραφή των εξόδων: Το Qbus είναι η έξοδος του καταχωρητή
  • Συνολική θέση στο σύστημα: Ο καταχωρητής χρησιμοποιείται πολλές φορές σε όλο τον υπολογιστή και χρησιμοποιείται για την αποθήκευση πληροφοριών κατά την εκτέλεση λειτουργιών.

FiveBitDRegister

  • Περιγραφή εισόδων: Το Dbus είναι η είσοδος στην οποία είναι ο καταχωρητής. Το Clk επιτρέπει στον καταχωρητή να διαβάζει δεδομένα σε ανερχόμενη άκρη ρολογιού. Το ARST ορίζει τον μητρώο σε 0 ασύγχρονα. Όταν το outputEnable είναι χαμηλό, το περιεχόμενο του καταχωρητή είναι η έξοδος. Όταν το readIn είναι χαμηλό, ο καταχωρητής κλειδώνει το Dbus στην άνοδο του ρολογιού.
  • Περιγραφή των εξόδων: Το Qbus είναι η έξοδος του καταχωρητή.
  • Συνολική θέση στο σύστημα: Ο καταχωρητής χρησιμοποιείται πολλές φορές σε όλο τον υπολογιστή και χρησιμοποιείται για την αποθήκευση πληροφοριών κατά την εκτέλεση λειτουργιών.

Βήμα 3: Κωδικός

Παρακάτω είναι ένας φάκελος που περιέχει τους περιορισμούς και τα αρχεία προέλευσης για τον υπολογιστή 10-bit.

Βήμα 4: Επίδειξη και δείγμα κώδικα

Το παραπάνω βίντεο δείχνει πώς να προγραμματίσετε τον υπολογιστή 10-bit στον πίνακα Basys 3 FPGA. Ένα pdf που περιέχει τους κωδικούς op και ένα δείγμα προγράμματος επισυνάπτεται επίσης παρακάτω.

Συνιστάται: