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

Mirror Display: 8 Βήματα
Mirror Display: 8 Βήματα

Βίντεο: Mirror Display: 8 Βήματα

Βίντεο: Mirror Display: 8 Βήματα
Βίντεο: Restore AirPlay On Macbook Menu Bar 2024, Ιούλιος
Anonim
Οθόνη καθρέφτη
Οθόνη καθρέφτη
Οθόνη καθρέφτη
Οθόνη καθρέφτη
Οθόνη καθρέφτη
Οθόνη καθρέφτη

Ο στόχος αυτού του έργου είναι να δημιουργήσει τη λειτουργία εμφάνισης εικόνας ενός Smart Mirror. Ο καθρέφτης μπορεί να εμφανίζει προβλέψεις (ηλιόλουστες, μερικώς ηλιόλουστες, νεφελώδεις, θυελλώδεις, βροχές, βροντές και χιόνι) και τιμές θερμοκρασίας από -9999 ° έως 9999 °. Οι τιμές πρόβλεψης και θερμοκρασίας είναι σκληρά κωδικοποιημένες σαν να μιμούνται αυτές που αναλύονται από ένα API καιρού.

Το έργο χρησιμοποιεί έναν πίνακα Zynq-Zybo-7000 που τρέχει το FreeRTOS και χρησιμοποιεί το Vivado 2018.2 για το σχεδιασμό και τον προγραμματισμό του υλικού.

Μέρη:

Zynq-Zybo-7000 (με FreeRTOS)

LCD 19 ιντσών (640x480)

Καλώδιο VGA

Ακρυλικός καθρέφτης 12 "x 18"

Βήμα 1: Διαμόρφωση του Vivado

Διαμόρφωση του Vivado
Διαμόρφωση του Vivado
Διαμόρφωση του Vivado
Διαμόρφωση του Vivado

Κατεβάστε το Vivado 2018.2 από το Xilinx και χρησιμοποιήστε την άδεια Webpack. Εκκινήστε το Vivado και "Δημιουργήστε νέο έργο" και δώστε του ένα όνομα. Στη συνέχεια, επιλέξτε "Έργο RTL" και επιλέξτε "Μην καθορίσετε πηγές αυτήν τη στιγμή." Όταν επιλέγετε ένα μέρος, επιλέξτε "xc7z010clg400-1" και πατήστε "Τέλος" στην επόμενη σελίδα.

Βήμα 2: Συσκευασία IP προγράμματος οδήγησης VGA

Συσκευασία IP προγράμματος οδήγησης VGA
Συσκευασία IP προγράμματος οδήγησης VGA
Συσκευασία IP προγράμματος οδήγησης VGA
Συσκευασία IP προγράμματος οδήγησης VGA

Προσθέστε το αρχείο vga_driver.sv στις Πηγές σχεδίασης. Στη συνέχεια, κάντε κλικ στην επιλογή "Εργαλεία" και επιλέξτε "Δημιουργία και συσκευασία νέας IP". Επιλέξτε "Συσκευάστε το τρέχον έργο σας". Στη συνέχεια, επιλέξτε μια τοποθεσία IP και "Συμπερίληψη αρχείων.xci". Κάντε κλικ στο "OK" στο αναδυόμενο παράθυρο και, στη συνέχεια, στο "Τέλος".

Στο "Βήματα συσκευασίας", μεταβείτε στην ενότητα "Έλεγχος και συσκευασία" και επιλέξτε "IP πακέτου".

Τώρα το vga_driver θα πρέπει να είναι διαθέσιμο ως μπλοκ IP.

Βήμα 3: Zynq IP

IP Zynq
IP Zynq
IP Zynq
IP Zynq
IP Zynq
IP Zynq
IP Zynq
IP Zynq

Στην ενότητα "IP Integrator", επιλέξτε "Δημιουργία σχεδίου μπλοκ". Προσθέστε το "Σύστημα επεξεργασίας ZYNQ7" και κάντε διπλό κλικ στο μπλοκ. Κάντε κλικ στην επιλογή "Εισαγωγή ρυθμίσεων XPS" και ανεβάστε το αρχείο ZYBO_zynq_def.xml.

Στη συνέχεια, στην ενότητα "PS-PL Configuration" ανοίξτε το αναπτυσσόμενο μενού για "AXI Non Secure Enablement" και ελέγξτε "M AXI GP0 interface."

Στη συνέχεια, στην ενότητα "Διαμόρφωση MIO" ανοίξτε το αναπτυσσόμενο μενού για "Μονάδα επεξεργαστή εφαρμογών" και επιλέξτε "Χρονόμετρο 0" και "Watchdog".

Τέλος, στην ενότητα "Διαμόρφωση ρολογιού" ανοίξτε το αναπτυσσόμενο μενού για "PL Fabric Clocks" και ελέγξτε το "FCLK_CLK0" και στα 100 MHz.

Βήμα 4: IP GPIO

GPIO IP
GPIO IP
GPIO IP
GPIO IP

Προσθέστε δύο μπλοκ GPIO στο Block Design. Τα GPIO θα χρησιμοποιηθούν για τον έλεγχο της διεύθυνσης εικονοστοιχείου και των στοιχείων RGB των εικονοστοιχείων. Διαμορφώστε τα μπλοκ όπως φαίνεται στις παραπάνω εικόνες. Μόλις προσθέσετε και διαμορφώσετε και τα δύο μπλοκ, κάντε κλικ στην επιλογή "Εκτέλεση αυτοματισμού σύνδεσης".

GPIO 0 - Το κανάλι 1 ελέγχει τη διεύθυνση pixel και το κανάλι 2 ελέγχει το κόκκινο χρώμα.

GPIO 1 - Το κανάλι 1 ελέγχει το πράσινο χρώμα και το κανάλι 2 ελέγχει το μπλε χρώμα.

Βήμα 5: Αποκλεισμός μνήμης

Αποκλεισμός μνήμης
Αποκλεισμός μνήμης
Αποκλεισμός μνήμης
Αποκλεισμός μνήμης
Αποκλεισμός μνήμης
Αποκλεισμός μνήμης

Προσθέστε μια IP Block Memory Generator στο Block Design και ρυθμίστε τις παραμέτρους όπως φαίνεται παραπάνω. Τα χρώματα των εικονοστοιχείων γράφονται σε διευθύνσεις μνήμης οι οποίες στη συνέχεια διαβάζονται από το πρόγραμμα οδήγησης VGA. Η γραμμή διευθύνσεων πρέπει να αντιστοιχεί στον αριθμό των εικονοστοιχείων που χρησιμοποιούνται, οπότε πρέπει να είναι 16 bit. Τα δεδομένα είναι επίσης 16 bit αφού υπάρχουν 16 bit χρώματος. Δεν μας ενδιαφέρει να διαβάσουμε τυχόν κομμάτια αναγνώρισης.

Βήμα 6: Άλλη IP

Το συνημμένο pdf δείχνει τον ολοκληρωμένο σχεδιασμό Block. Προσθέστε την IP που λείπει και ολοκληρώστε τις συνδέσεις. Επίσης, "Make Externals" για τις εξόδους χρώματος VGA και τις κατακόρυφες και οριζόντιες εξόδους συγχρονισμού.

xlconcat_0 - Συνδυάζει τα μεμονωμένα χρώματα για να σχηματίσει ένα σήμα RGB 16 bit που τροφοδοτείται στη μνήμη RAM Block.

xlconcat_1 - Συνενώνει τα σήματα της στήλης και της σειράς από το πρόγραμμα οδήγησης VGA και τροφοδοτείται στη θύρα Β της μνήμης RAM. Αυτό επιτρέπει στο πρόγραμμα οδήγησης VGA να διαβάζει τιμές χρωμάτων pixel.

VDD - Constant HIGH συνδεδεμένο με τη δυνατότητα εγγραφής της μνήμης RAM Block, έτσι ώστε να μπορούμε πάντα να την επιλέγουμε.

xlslice_0, 1, 2 - Οι φέτες χρησιμοποιούνται για να σπάσουν το σήμα RGB σε μεμονωμένα σήματα R, G και B που μπορούν να τροφοδοτηθούν στο πρόγραμμα οδήγησης VGA.

Μόλις ολοκληρωθεί το Block Design, δημιουργήστε ένα περιτύλιγμα HDL και προσθέστε το αρχείο περιορισμών.

*Το Block Design βασίζεται στο σεμινάριο που γράφτηκε από το benlin1994*

Βήμα 7: SDK

Ο κώδικας που εκτελεί αυτό το Block Design περιλαμβάνεται παρακάτω. Το Init.c περιέχει τις συναρτήσεις που χειρίζονται το σχέδιο (προβλέψεις, αριθμοί, σύμβολο βαθμού κ.λπ.). Ο κύριος βρόχος στο main.c είναι αυτό που τρέχει όταν προγραμματιστεί ο πίνακας. Αυτός ο βρόχος ορίζει τις τιμές πρόβλεψης και θερμοκρασίας και, στη συνέχεια, καλεί τις συναρτήσεις σχεδίασης στο init.c. Αυτή τη στιγμή περνάει και στις επτά προβλέψεις και εμφανίζεται η μία μετά την άλλη. Συνιστάται να προσθέσετε ένα σημείο διακοπής στη γραμμή 239, ώστε να μπορείτε να δείτε κάθε εικόνα. Ο κωδικός σχολιάζεται και θα σας δώσει περισσότερες πληροφορίες.

Βήμα 8: Συμπέρασμα

Για τη βελτίωση του τρέχοντος έργου, θα μπορούσαμε να ανεβάσουμε εικόνες πρόβλεψης προφόρτωσης με τη μορφή αρχείων COE στο Block Memory Generators. Έτσι, αντί να σχεδιάζουμε τις προβλέψεις χειροκίνητα όπως κάναμε στον κωδικό C, θα μπορούσαμε να διαβάσουμε τις εικόνες. Προσπαθήσαμε να το κάνουμε αυτό, αλλά δεν καταφέραμε να λειτουργήσει. Μασταν σε θέση να διαβάσουμε τιμές pixel και να τις βγάλουμε, αλλά δημιούργησε ακατάστατες εικόνες που δεν έμοιαζαν με αυτές που ανεβάσαμε στη μνήμη RAM. Το φύλλο δεδομένων Block Memory Generator είναι χρήσιμο για ανάγνωση.

Το έργο είναι ουσιαστικά το ήμισυ ενός Smart Mirror αφού του λείπει η πτυχή της συνδεσιμότητας στο Διαδίκτυο. Η προσθήκη αυτού θα δώσει έναν πλήρη Smart Mirror.

Συνιστάται: