View
7
Download
0
Category
Preview:
Citation preview
ΤΕΙ ΚΑΒΑΛΑΣ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ
Nios II Processor Implementation in Cyclone II FPGAs
Υλοποίηση Ελεγκτών PID με
τον Επεξεργαστή Nios II σε
FPGA
ΝΙΚΟΛΑΟΥ ΠΑΝΑΓΙΩΤΗΣ
ΕΠΙΒΛΕΠΩΝ:
ΔΡ. ΤΣΑΧΟΥΡΙΔΗΣ ΒΑΣΙΛΕΙΟΣ, Α.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
2 | Σ ε λ ί δ α
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
3 | Σ ε λ ί δ α
‘Όλα τα σήματα και πνευματικά δικαιώματα που χρησιμοποιούνται στο παρόν έγγραφο
είναι ιδιοκτησία του αντίστοιχου ιδιοκτήτη τους.
Οι πληροφορίες από άλλες πηγές αναφέρονται αντίστοιχα.
Διαφορετικά οι πληροφορίες που παρουσιάζονται στην παρούσα έκθεση είναι
αποκλειστικά δουλειά του συγγραφέα.
να ευχαριστήσω:
Την οικογένεια μου για την εμπιστοσύνη και συμπαράσταση τους
Τον Δρ. Τσαχουρίδη Βασίλειο Α. για την υποστήριξη και καθοδήγηση.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
4 | Σ ε λ ί δ α
Περίληψη
Ο σκοπός αυτής της Πτυχιακής Εργασίας είναι να παρουσιάσει την
υλοποίηση του ενσωματωμένου μικροεπεξεργαστή NIOS II για το FPGA
Altera Cyclone II και τις εφαρμογές αυτού του συστήματος: α) στον
αυτόματο έλεγχο κινητήρων συνεχούς ρεύματος με ελεγκτές PID και β)
στην υλοποίηση χαμηλοπερατών (Low-Pass) φίλτρων.
Γραφικές παραστάσεις των πραγματικών αποκρίσεων των συστημάτων
θα παράγονται ώστε να αναλύεται η απόκριση του κάθε συστήματος σε
διακυμάνσεις των τιμών των παραμέτρων του.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
5 | Σ ε λ ί δ α
Περιεχόμενα
Κεφάλαιο 1: Εισαγωγή στις πεδιακά προγραμματιζόμενες
συστοιχίες πυλών (FPGA)
Θεμελιώδη στοιχεία των FPGA Σελίδα 9
Ορισμός των τμημάτων ενός FPGA Σελίδα 10
Altera DE1 Development and Education Board Σελίδα 11
Υλοποίηση επεξεργαστή Nios II σε Cyclone II Σελίδα 12
Οικογένεια επεξεργαστών Nios II Σελίδα 13
SOPC Builder Σελίδα 14
Σχετικά με τον Nios II Σελίδα 15
Κεφάλαιο 2: Υλοποίηση ελεγκτή PID για έλεγχο θέσης DC
κινητήρα σε FPGA Cyclone II με Nios II & διασύνδεση με Matlab
Έναρξη λογισμικού Altera Quartus v12.0_178sp2 Σελίδα 17
Δημιουργία νέου project( New Project Wizard ) Σελίδα 14
Έναρξη εφαρμογής SOPC Builder Σελίδα 21
Δημιουργία νέου συστήματος NIOS II(SOPC Builder) Σελίδα 21
Δημιουργία στοιχείου περιγραφής οντότητας top-level board design file στο Quartus II(BDF)
Σελίδα 40
NIOS II Pin Assignment (Pin Planner, Quartus II) Σελίδα 43
Project Compilation-Report (Quartus II) Σελίδα 47
Προγραμματισμός FPGA Cyclone II EP2C2484C7n / DE1 Σελίδα 48
Έναρξη εφαρμογής NIOS II Software Build Tools for eclipse Σελίδα 49
Ρυθμίσεις του Board Support Package και της εφαρμογής Σελίδα 52
Προγραμματισμός συστήματος και διασύνδεση με Matlab Σελίδα 53
Γραφήματα προσομοίωσης συστήματος Σελίδα 57
Ανάλυση λειτουργίας του ελεγκτή PID Σελίδα 58
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
6 | Σ ε λ ί δ α
Κεφάλαιο 3: Μελέτη και κατασκευή οδηγού για έλεγχο ταχύτητας
DC κινητήρα με ελεγκτή PID σε FPGA Cyclone II και απεικόνιση σε
οθόνη VGA
Μοντέλο κινητήρα και τεχνικές προδιαγραφές Σελίδα 66
Τρόπος λειτουργίας και χαρακτηριστικά του encoder US E4P Σελίδα 68
Quadruple Half-H Drivers Σελίδα 69
Altera Avalon PIO Core Σελίδα 70
Διαμόρφωση πλάτους παλμών (Pulse Width Modulation - PWM) Σελίδα 73
Altera Avalon PWM Core Σελίδα 76
Παραμετροποίηση συστήματος NIOS II (SOPC Builder) Σελίδα 79
Αναθεώρηση του στοιχείου top-level design στο Quartus II(BDF) Σελίδα 81
NIOS II Pin Assignment (Pin Planner, Quartus II) Σελίδα 82
Project Compilation-Report (Quartus II) Σελίδα 83
Έναρξη εφαρμογής NIOS II Software Build Tools for eclipse Σελίδα 84
Ρυθμίσεις του Board Support Package και της εφαρμογής Σελίδα 85
Τεχνικές μετρήσεων RPM Σελίδα 86
Προγραμματισμός συστήματος και επεξήγηση λειτουργίας Σελίδα 87
Altera Avalon VGA Core Σελίδα 88
Σχεδίαση καμπύλης ροπής κινητήρα σε οθόνη VGA και έλεγχος Σελίδα 90
Πλακέτα τυπωμένου κυκλώματος (Printed Circuit Board PCB )
Σελίδα 91
Κεφάλαιο 4: Υλοποίηση ψηφιακού φίλτρου διακριτού χρόνου για
απομόνωση λευκού θορύβου σε FPGA Cyclone II
Προγραμματισμός FPGA Cyclone II EP2C2484C7n / DE1 Σελίδα 101
Έναρξη εφαρμογής NIOS II Software Build Tools for eclipse Σελίδα 102
Ρυθμίσεις του Board Support Package και της εφαρμογής Σελίδα 103
Δημιουργία σήματος με θόρυβο σε Matlab Σελίδα 105
Προγραμματισμός συστήματος NIOS Σελίδα 106
Γραφήματα προσομοίωσης συστήματος Σελίδα 108
Ανάλυση λειτουργίας του ψηφιακού φίλτρου Σελίδα 109
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
7 | Σ ε λ ί δ α
Παράρτημα Α’ (κώδικας 2ου κεφαλαίου)
Κώδικας σε C – υλοποίηση PID για τον NIOS II Σελίδα 42
Κώδικας συστήματος προσομοίωσης σε Matlab Σελίδα 43
Παράρτημα Β’ (κώδικας 3ου κεφαλαίου)
Κώδικας σε C – υλοποίηση PID για τον NIOS II Σελίδα 92
Παράρτημα Γ’ (κώδικας 4ου κεφαλαίου)
Nios II - Κώδικας σε C – Υλοποίηση PID για έλεγχο στροφών βηματικού κινητήρα και σχεδίαση σε οθόνη VGA
Σελίδα 110
Κώδικας συστήματος προσομοίωσης σε Matlab Σελίδα 111
Κοστολόγιο Σελίδα 113
Προοπτικές ανάπτυξης Σελίδα 114
Βιβλιογραφία
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
8 | Σ ε λ ί δ α
Ο ακόλουθος πίνακας υποδεικνύει τις τυπογραφικές συμβάσεις που χρησιμοποιούνται σε
αυτό το έγγραφο.
Πίνακας 1 - Τυπογραφικές συμβάσεις
Οπτική ένδειξη Έννοια
Α,Β,Γ…. Όλες οι επικεφαλίδες στο έγγραφο παρουσιάζονται με αρχικό κεφαλαίο γράμμα και την μορφοποίηση που
εμφανίζετε στην αριστερή στήλη.
1,2,3… Οι επιγραμματικοί τίτλοι στο έγγραφο παρουσιάζονται με
αρχικό κεφαλαίο γράμμα και την μορφοποίηση που εμφανίζετε στην αριστερή στήλη.
Το εικονίδιο ‘σφαίρα’ χρησιμοποιείται για να υποδείξει
προτάσεις οι οποίες περιγράφουν λειτουργικά σημεία της μεθοδολογίας.
Το εικονίδιο ‘προσοχή’ χρησιμοποιείται για να υποδείξει
προτάσεις στις οποίες πρέπει να δοθεί προσοχή.
Το εικονίδιο ‘επιτυχία’ χρησιμοποιείται για να υποδείξει προτάσεις οι οποίες πιστοποιούν την ολοκλήρωση του
επιτεύξιμου σκοπού.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
9 | Σ ε λ ί δ α
Κεφάλαιο 1
Εισαγωγή στις πεδιακά προγραμματιζόμενες συστοιχίες πυλών (FPGA)
Θεμελιώδη στοιχεία των FPGA
Οι πεδιακά προγραμματιζόμενες συστοιχίες πυλών (FPGA) είναι επαναπρογραμματιζόμενα
chip πυριτίου. Ο συνιδρυτής της εταιρίας Xilinx, Ross Freeman εφηύρε το πρώτο FPGA το
1985. Η υιοθέτηση των FPGA chip σε όλες τις βιομηχανίες οδηγήθηκε από το γεγονός ότι τα
FPGA συνδυάζουν τα καλύτερα τμήματα εφαρμογής συγκεκριμένων ολοκληρωμένων
κυκλωμάτων (ASIC) και συστήματα που βασίζονται σε επεξεργαστή. Τα FPGA παρέχουν
υλικό χρονικής σήμανσης ταχύτητας και αξιοπιστίας, αλλά δεν απαιτούν υψηλούς όγκους
για να δικαιολογήσουν το μεγάλο έξοδο του σχεδίου από προσαρμοσμένα σχέδια εκ των
προτέρων σε συσκευές ASIC.
Τα επαναπρογραμματιζόμενα τσιπ πυριτίου έχουν επίσης την ίδια ευελιξία του λογισμικού
που εκτελείται σε ένα επεξεργαστή-με βάση το σύστημα, αλλά δεν περιορίζεται από τον
αριθμό των διαθέσιμων πυρήνων επεξεργασίας. Σε αντίθεση με τους επεξεργαστές, τα
FPGA είναι πραγματικά παράλληλα από την φύση τους , διαφορετικές λειτουργίες
επεξεργασίας δεν πρέπει να ανταγωνίζονται για τους ίδιους πόρους. Κάθε ανεξάρτητη
διεργασία επεξεργασίας ανατίθεται σε ειδικό τμήμα του τσιπ, και μπορεί να λειτουργήσει
αυτόνομα χωρίς καμία επιρροή από άλλα block λογικής. Ως αποτέλεσμα, η απόδοση ενός
τμήματος της εφαρμογής δεν επηρεάζεται όταν προστίθεται περισσότερη επεξεργασία.
Ένα από τα οφέλη των FPGA σε σχέση με συστήματα βασισμένα σε επεξεργαστή είναι ότι η
λογική της εφαρμογής υλοποιείται σε κυκλώματα υλικού αντί να εκτελέσει πάνω σε ένα
λειτουργικό σύστημα με οδηγούς και στο λογισμικό εφαρμογής.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
10 | Σ ε λ ί δ α
Ορισμός των τμημάτων ενός FPGA
Κάθε FPGA chip αποτελείται από έναν πεπερασμένο αριθμό προκαθορισμένων πόρων με
προγραμματιζόμενες διασυνδέσεις που υλοποιούν αναδιαρθρώσιμα ψηφιακά κυκλώματα
και I/O blocks ώστε να επιτρέπουν στο κύκλωμα να έχει πρόσβαση στον εξωτερικό κόσμο.
Οι προδιαγραφές των πόρων των FPGA συχνά περιλαμβάνουν τον αριθμό των block λογικής, ο αριθμός των σταθερών τμημάτων λογικής λειτουργίας, όπως οι πολλαπλασιαστές και το μέγεθος των πόρων μνήμης όπως τα ενσωματωμένα block μνήμης RAM. Από τα πολλά τμήματα των FPGA, αυτό είναι συνήθως το πιο σημαντικό κατά την επιλογή και τη σύγκριση μεταξύ των FPGA για μία συγκεκριμένη εφαρμογή.
Τα διαμορφώσιμα μπλοκ λογικής (CLB) είναι η βασική λογική μονάδα του FPGA. Μερικές φορές αναφέρεται ως τμήματα ή κύτταρα λογικής, τα CLBs αποτελούνται από δύο βασικά μέρη: flip-flop και πίνακες αναζήτησης (LUT). Διάφορες οικογένειες FPGA διαφέρουν ως προς τον τρόπο με τον οποίο τα flip-flop και τα LUT συσκευάζονται μαζί, γι 'αυτό είναι σημαντικό να κατανοήσουμε τα flip-flops και τα LUT.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
11 | Σ ε λ ί δ α
Altera DE1 Development and Education Board
Πληροφορίες για την αναπτυξιακή πλακέτα DE1
Cyclone II EP2C20F484C7 με EPCS4 4-Mbit σειριακή συσκευή διαμόρφωσης
Διασυνδέσεις Εισόδου/Εξόδου
Ενσωματωμένο USB-Blaster για διαμόρφωση του FPGA Γραμμή Εισόδου/Εξόδου, Μικροφώνου (24-bit Audio CODEC) Video (VGA 4-bit DAC) Σειριακή θύρα (RS232) Θύρα PS/2 για mouse ή πληκτρολόγιο Θύρες επέκτασης (δύο 40-pin κεφαλές)
Μνήμες
8 MB SDRAM, 512 KB SRAM, 4 MB Flash Θύρα SD memory card
Συσκευές απεικόνισης
Τέσσερις 7-απεικονίσεις επτά τμημάτων
Διακόπτες και LED’s
10 διακόπτες εναλλαγής 10 κόκκινα LED’s 8 πράσινα LED’s 4 διακόπτες τύπου pushbutton
Χρονιστές
50 MHz χρονιστή 27 MHz χρονιστή Εξωτερική είσοδο χρονιστή SMA
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
12 | Σ ε λ ί δ α
Υλοποίηση επεξεργαστή Nios II σε Cyclone II
Η οικογένεια ενσωματωμένων επεξεργαστών Νιος ΙΙ όταν υλοποιείται σε Cyclone II FPGA παρέχει μία οικονομική λύση επεξεργαστή για εφαρμογές με υπολογιστικές απαιτήσεις. Ένας υπολογιστικός πυρήνας που υλοποιείται σε μία συσκευή Cyclone II μπορεί να επιτεύξει απόδοση περισσότερη από 100 DMIPs. Με περισσότερες από 68,416 LEs στην μεγαλύτερη συσκευή Cyclone II, πολλαπλά στιγμιότυπα του πυρήνα Nios II μπορούν να χρησιμοποιηθούν σε μία συσκευή ώστε να υλοποιήσουν εφαρμογές όπως:
Λειτουργικό σύστημα Να παρέχουν αυτόματες ενημερώσεις και ρυθμίσεις στο FPGA μέσω σύνδεσης
Ethernet Διαχείριση δεδομένων και Ι/Ο λειτουργίες.
Βασισμένος στην επιτυχία της πρώτης γενιάς επεξεργαστών Nios, o επεξεργαστής Nios II υλοποιημένος σε Cyclone II FPGA προσφέρει τον μέγιστό τρόπο υλοποίησης οικονομικών εφαρμογών. Εταιρίες επικοινωνιών, η βιομηχανία, η αυτοβιομηχανία και εταιρίες ασύρματων συσκευών μπορούν να επωφεληθούν με την υλοποίηση ενσωματωμένου επεξεργαστή σε χαμηλού κόστους FPGA.
Η εικόνα 1 παρουσιάζει τον τρόπο με τον οποίο περισσότεροι του ενός Nios II
ενσωματωμένων επεξεργαστών μπορούν να ενσωματωθούν σε μία συσκευή Cyclone II. Σε
ένα τέτοιο σύστημα θα ήταν συνηθισμένο να υπάρχει ένας επεξεργαστής που κινεί τα
δεδομένα μεταξύ των εξωτερικών διεπαφών( PCI και Ethernet), την εκτός chip SDRAM και
κάθε . Ένας επεξεργαστικός πυρήνας επίσης θα χρησιμοποιούταν για να διαχειρίζεται την
διεπαφή ανθρώπου/μηχανής ( Keypad, LCD Display) και να διεκπεραιώνει αυτές τις
διεργασίες χαμηλής ταχύτητας από διεργασίες υψηλότερης ταχύτητας.
Εικόνα 1. Σύστημα υλοποιημένο σε Cyclone II FPGA
Σημειώσεις:
1. Επεξεργαστής για είσοδο/έξοδο 2. Επεξεργαστής για διεπαφή ανθρώπου/μηχανής
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
13 | Σ ε λ ί δ α
Οικογένεια επεξεργαστών Nios II
Η οικογένεια επεξεργαστών Nios II αποτελείται από τρείς υπολογιστικούς πυρήνες: Τον Nios II/f (fast), έναν πυρήνα για υψηλές αποδόσεις, τον Nios II/s (standard), έναν πυρήνα που συνδυάζει απόδοση και κόστος και τον Nios II/e (economy), έναν πυρήνα χαμηλού κόστους. Και οι τρείς εκδόσεις του Nios II μοιράζονται ένα κοινό σετ εντολών 32-bit αρχιτεκτονικής (ISA) και είναι 100% συμβατές με δυαδικό κώδικα. Η εικόνα 2 παρουσιάζει τον τρόπο με τον οποίο συσχετίζετε το μέγεθος με την απόδοση.
Εικόνα 2. Nios vs. Nios II Family Χρήση λογικών μονάδων και απόδοση
Οι επεξεργαστές Nios II μπορούν να υλοποιήσουν 256 εντολές που επιτρέπουν σε κρίσιμα τμήματα υπορουτίνων να υλοποιηθούν σε υλικό υπό την διαχείριση του επεξεργαστή Nios II. Μπορούν να χρησιμοποιηθούν προσαρμοσμένες εντολές για την υλοποίηση συναρτήσεων που θα χρειάζονταν πολλούς ωρολογιακούς κύκλους σε λογισμικό αλλά σε υλικό για να ολοκληρωθεί χρειάζεται μόλις ένας κύκλος, βελτιώνοντας έτσι την απόδοση του συστήματος.
Ο επεξεργαστής Nios II περιέχει βιβλιοθήκη με περιφερειακά που επιτρέπει στον σχεδιαστή να μετατρέψει μία σκέψη σε ένα λειτουργικό έργο ιδιαίτερα γρήγορα. Τα περιφερειακά αυτά περιλαμβάνουν:
Σειριακές διεπαφές (UART, SPI, JTAG UART) On-chip RAM και ROM, και διεπαφές για off-chip SRAM, flash, SSRAM, και SDRAM
μνήμες Γενικού σκοπού παράλληλές I/O (GPIO) Μνήμη άμεσης πρόσβασης Διεπαφή τύπου Joint Test Action Group (JTAG) debug
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
14 | Σ ε λ ί δ α
SOPC Builder
Η εφαρμογή ανάπτυξης συστημάτων της Altera SOPC Builder παρέχει μία πλατφόρμα για σύνθεση συστημάτων σε προγραμματιζόμενο chip (Systems On Programmable Chip - SOPC) εκτός των συνηθισμένων τεχνικών και ο χρήστης μπορεί να δημιουργήσει IP functions, που υποστηρίζει περισσότερα από 60 περιφερειακά της Altera και συνεργάτες AMPPSM. Με την εφαρμογή SOPC Builder, ένας χρήστης του Cyclone II μπορεί εύκολα να ενσωματώσει συνιστώσες και να δημιουργήσει ένα πλήρες σύστημα που περιλαμβάνει επεξεργαστές, περιφερειακά,on-chip μνήμες,off-chip διεπαφές για μνήμες και συνιστώσες με λογική καθοριζόμενη από τον χρήστη. Το SOPC Builder παράγει το Avalon switch fabric σε HDL για να συνδέσει το σύστημα, περιλαμβάνοντας πολυδιαχείριση διαδρόμου και λογική ελέγχου διακοπών. Το SOPC Builder επίσης δημιουργεί ένα περιβάλλον προσομοίωσης aμε δοκιμές για το hardware που δημιουργείται όπως επίσης και περιβάλλον ανάπτυξης λογισμικού με βιβλιοθήκες της C και ρουτίνες assembly για πρόσβαση και έλεγχο στα περιφερειακά του συστήματος.
Το SOPC Builder μπορεί αυτόματα να συνδέσει κάθε υψηλής απόδοσης διαχειριστή διαδρόμου ή εξαρτημένο περιφερειακό ή κάθε συνιστώσα με λογική χρήστη μέσω της διεπαφής διαδρόμου Avalon ( Avalon bus interface )
Επεξεργαστής Nios II : Ο πιο εύστροφος ενσωματωμένος
επεξεργαστής του κόσμου.
Σχετικά με τον Nios II
Ο επεξεργαστής της Altera Nios II, είναι σύμφωνα με έρευνα της Gartner ο πιο εύστροφος επεξεργαστής σχετικά με τους πιο διαδεδομένους επεξεργαστές που χρησιμοποιούνται στην βιομηχανία των FPGA. Ο επεξεργαστής αυτός παρέχει πρωτοφανές εύκαμπτη συμπεριφορά σε εφαρμογές πραγματικού χρόνου, κρίσιμες για ασφάλεια (DO-254), ASIC-βελτιστοποιημένες και με υπολογιστικές απαιτήσεις. Ο επεξεργαστής Nios II υποστηρίζει όλα τις συσκευές FPGA της Altera και τις συσκευές Hardcopy ASIC και είναι επίσης διαθέσιμος για όλες τις κάρτες standard-cell ASIC μέσω της Synopsys.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
15 | Σ ε λ ί δ α
Εφαρμογές
Nios II
Processor
Core Εταιρία Περιγραφή
Συνδυασμός επεξεργαστικής ισχύς και κόστους
Nios II
economy
core
Altera Με λιγότερα από 600 λογικά στοιχεία (logic elements -
LE), ο επεξεργαστής Nios II/e είναι ιδανικός για
εφαρμογές μικροελεγκτή. Ο οικονομικός πυρήνας Nios
II,τα εργαλεία λογισμικού και οι οδηγοί των συσκευών
προσφέρονται χωρίς χρέωση.
Πραγματικού χρόνου (Real time)
Nios II
standard and
fast core
Altera Με μοναδικά χαρακτηριστικά υλικού σε εφαρμογές
πραγματικού χρόνου όπως προσαρμοσμένες εντολές
(δυνατότητα να χρησιμοποιηθεί το υλικό του FPGA για
να επιταχύνει μία συνάρτηση), ανυσματικές διακοπές
επεξεργαστή, μνήμες tightly coupled όπως και
υποστήριξη για λειτουργικά συστήματα πραγματικού
χρόνου (real-time operating systems), ο πυρήνας του
επεξεργαστής Nios II standard και fast είναι ιδιαίτερα
ικανός σε σκληρές και σε επιεικείς απαιτήσει
πραγματικού χρόνου.
Υπολογιστική ισχύς σε εφαρμογές
Nios II fast
core
Altera Με απλές ρυθμίσεις στην σύνθεση τμημάτων ο
πυρήνας του επεξεργαστή Nios II fast μπορεί να
χρησιμοποιήσει μονάδες διαχείρισης μνήμης (MMU)
για να τρέξει ενσωματωμένα Linux.
Οικογένεια 3 32-bit προσαρμοσμένων ενσωματωμένων επεξεργαστών για FPGA της Altera και HardCopy ASIC
o Fast (/f core): βελτιστοποιημένος για υψηλές αποδόσεις, προαιρετική MMU, ή μονάδα προστασίας μνήμης (MPU)
o Economy (/e core): βελτιστοποιημένος για μικρό μέγεθος o Standard (/s core): συνδυασμός μεγέθους και απόδοσης
Όλοι υποστηρίζουν o Περισσότερες από 256 προσαρμοσμένες εντολές o Περισσότερες από 4 tightly coupled memories (TCM) o Ρυθμίσιμο debug core o C-to-Hardware (C2H) Acceleration Compiler για την μετατροπή αλγόριθμων
από ANSI C σε hardware accelerators Πλούσιο portfolio από ενσωματωμένους πυρήνες (timer, UART, direct memory
access (DMA), Ethernet, etc.) Nios II Embedded Design Suite (EDS): Πλήρης σουίτα ανάπτυξης ενσωματωμένων
(compiler, debugger, Nios II.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
16 | Σ ε λ ί δ α
Κεφάλαιο 2
Υλοποίηση ελεγκτή PID για έλεγχο θέσης
DC κινητήρα σε FPGA Cyclone II με Nios II/s
& διασύνδεση με Matlab
Λογισμικό :
Altera Quartus II v12.0_178sp2 ,
SOPC Builder ,
Nios II v12.0_178sp2 Software Build Tools for Eclipse ,
Matlab 2012a
Υλικό :
Altera DE1 Board, PC
Διασυνδέσεις :
RS232
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
17 | Σ ε λ ί δ α
Έναρξη λογισμικού Altera Quartus v12.02
Ξεκινήστε το Altera Quartus II όπου είναι η κεντρική εφαρμογή για ανάπτυξη εφαρμογών για το FPGA.
Το εικονίδιο της εφαρμογής είναι το εικονιζόμενο εικονίδιο που παρουσιάζεται παρακάτω.
Εμφανίζετε η σελίδα έναρξης της εφαρμογής
Στο μενού επιλογής , επιλέγουμε την επιλογή File, στο αναδιπλούμενο μενού που
εμφανίζεται επιλέγουμε την επιλογή New Project Wizard για την δημιουργία νέου
project.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
18 | Σ ε λ ί δ α
Η σελίδα που εμφανίζεται κάνει μία εισαγωγή στον οδηγό δημιουργίας project
Στην σελίδα αυτή, καθορίστε την διαδρομή αποθήκευσης και το όνομα του project,
αυτόματα δίνεται το όνομα της οντότητας ανωτέρου επιπέδου το οποίο είναι ίδιο με το όνομα που καθορίσατε για το project.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
19 | Σ ε λ ί δ α
Στην σελίδα αυτή μπορούμε να προσθέσουμε components σε HDL
επιλέξτε το
Family & Device Settings Στην σελίδα αυτή καθορίσουμε την οικογένεια της συσκευής (FPGA)
Family : CycloneII και τον ακριβές τύπο της συσκευής
Name EP2C20F484C7 (αναγράφεται στο FPGA)
Κατόπιν της επιλογής των προαναφερθέντων επιλογών όπως αυτές παρουσιάζονται,
επιλέξτε το
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
20 | Σ ε λ ί δ α
EDA ( Electronic Design Automation ) Tools settings
επιλέξτε το
Summary
Η τελική σελίδα μας ενημερώνει για τις προηγούμενες επιλογές μας,
κατόπιν ελέγχου επιλέξτε το
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
21 | Σ ε λ ί δ α
Κεντρική σελίδα εφαρμογής Quartus II version 12.0
Έναρξη εφαρμογής SOPC Builder
Στο μενού επιλογής , επιλέγουμε την επιλογή Tools, στο αναδιπλούμενο μενού
που εμφανίζεται επιλέγουμε την επιλογή SOPC Builder
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
22 | Σ ε λ ί δ α
Με την εκκίνηση του SOPC Builder εμφανίζεται η φόρμα εισαγωγής ονομασίας του
συστήματος που θα δημιουργήσετε και η επιλογή της γλώσσας περιγραφής υλικού που
αυτό θα μεταφραστεί.
Εισάγετε :
System Name: system_0
Target HDL: Verilog
Το όνομα του συστήματος θα πρέπει να διαφέρει από το όνομα της οντότητας
ανώτερου επιπέδου που καθορίσατε στον οδηγό δημιουργίας project
κατόπιν εισαγωγής ονόματος συστήματος και επιλογής HDL επιλέξτε το
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
23 | Σ ε λ ί δ α
Καρτέλα System Contents
Με το κλείσιμο της αρχικής φόρμας μεταφερόμαστε στην κεντρική φόρμα δημιουργίας του
συστήματος.
Εισαγωγή συνιστώσας On-Chip Memory ( RAM or ROM )
Από το μενού Library επιλέγουμε για εσωτερική μνήμη του NIOS τη συνιστώσα On-
Chip Memory ( RAM or ROM )
Στο πλαίσιο εισαγωγής Total Memory size εισάγετε 16384 ή 16 K, έτσι ώστε να υλοποιηθεί
εσωτερική μνήμη για τον επεξεργαστή μεγέθους 16KB και επιλέξτε το πλήκτρο Enter.
επιλέξτε το
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
24 | Σ ε λ ί δ α
Εισαγωγή συνιστώσας Nios II Processor
Από το μενού Library επιλέγουμε την κατηγορία Processors
Nios II Processor
Η ενέργεια αυτή εμφανίζει το πλαίσιο δημιουργίας του NIOS II/core
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
25 | Σ ε λ ί δ α
Στην καρτέλα Core Nios II
Επιλέξτε τον Nios II/s (standard)
Hardware Multiply : Embedded Multipliers
Επιλέξτε την επιλογή Hardware Divide
Επιλέξτε στο Reset Vector και στο Except Vector την On-Chip Memory που δημιουργήσατε
στο προηγούμενο βήμα.
Μεταβείτε στην καρτέλα Custom Instructions, επιλέξτε την συνιστώσα Floating Point
Hardware
επιλέξτε το
Μετά την ολοκλήρωση του οδηγού μετονομάστε σε cpu
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
26 | Σ ε λ ί δ α
Εισαγωγή συνιστώσας SDRAM Controller
Από το μενού Library επεκτείνετε την κατηγορία Memories and Memory Controllers,
επεκτείνετε την υποκατηγορία External Memory Interfaces , προσθέστε την συνιστώσα
SDRAM Controller από την υποκατηγορία SDRAM Interfaces
Σο Preset επιλέξτε την επιλογή Custom και στο πλαίσιο Data width επιλέξτε Bits : 16
επιλέξτε το
Μετά την ολοκλήρωση του οδηγού μετονομάστε σε sdram
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
27 | Σ ε λ ί δ α
Εισαγωγή συνιστώσας Interval Timer
επιλέξτε το
Μετά την ολοκλήρωση του οδηγού μετονομάστε σε systimer
Επαναλάβετε την ίδια διαδικασία για την δημιουργία ενός ακόμα Interval Timer
αλλάζοντας την επιλογή Units: από ms σε us όπως παρουσιάζεται στην επόμενη εικόνα
Μετά την ολοκλήρωση του οδηγού μετονομάστε σε stamptimer
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
28 | Σ ε λ ί δ α
Δημιουργία συνιστώσας JTAG UART
Αποδεχτείτε τις αρχικές ρυθμίσεις εφόσον συμφωνούν με την ανωτέρω εικόνα
επιλέξτε το
Μετά την ολοκλήρωση του οδηγού μετονομάστε σε jtag_uart
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
29 | Σ ε λ ί δ α
Δημιουργία συνιστώσας UART(RS-232 Serial Port)
Αποδεχτείτε τις αρχικές ρυθμίσεις εφόσον συμφωνούν με την ανωτέρω εικόνα
επιλέξτε το
Μετά την ολοκλήρωση του οδηγού μετονομάστε σε uart
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
30 | Σ ε λ ί δ α
Δημιουργία συνιστώσας System ID Peripheral
Μετά την ολοκλήρωση του οδηγού μετονομάστε σε sysid
Εάν δεν μετονομαστεί σε sysid δεν μπορεί να αναγνωριστεί η συνιστώσα και κατά
συνέπεια να δοθεί αναγνωριστικό στο σύστημα.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
31 | Σ ε λ ί δ α
Δημιουργία συνιστώσας Avalon ALTPLL
ΣΗΜΕΙΩΣΗ :Το PLL (Phase Locked Loop) το χρησιμοποιούμε διότι η SDRAM λειτουργεί στο
αρνητικό μέτωπο του παλμού χρονισμού και με το PLL δημιουργούμε δύο χρονιστές , έναν
για το σύστημα του επεξεργαστή και έναν για την εξωτερική SDRAM.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
32 | Σ ε λ ί δ α
Επιλέξτε στο αναπτυσσόμενο μενού which device grade will be using ? τον τύπο 7
Εισάγετε την συχνότητα του εισερχόμενου χρονιστή (χρονιστής συστήματος) : 50MHz
επιλέξτε το
Αποεπιλέξτε τις επιλογές
Create an ‘areset’ input to asynchronously reset the PLL Create ‘locked’ output
επιλέξτε το
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
33 | Σ ε λ ί δ α
επιλέξτε το
Στην καρτέλα αυτή εισάγετε την συχνότητα του c0 (clock 0 )
Enter output clock frequency : 50.0MHz
επιλέξτε το
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
34 | Σ ε λ ί δ α
Η συχνότητα του c1 που θα δημιουργήσει το PLL θα τροφοδοτήσει τον χρονιστή της
SDRAM, εισάγετε στο Clock Phase Shift : -3 ns
μετά την εισαγωγή επιλέξτε το
επιλέξτε το
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
35 | Σ ε λ ί δ α
επιλέξτε το για έξοδο από τον οδηγό.
Μετά την ολοκλήρωση του οδηγού μετονομάστε σε pll_nios
ΣΗΜΕΙΩΣΗ: Tο pll δεν μπορεί να έχει ως όνομα altpll γιατί το φορτώνει από την βιβλιοθήκη
Altera ALTPLL σε αυτή την περίπτωση και όχι από την βιβλιοθήκη Megacore IP Library.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
36 | Σ ε λ ί δ α
Μετονομάστε τους τρεις χρονιστές στο πλαίσιο Clock Settings σε
clk50M
clksys
clksdram
Ρυθμίστε το Clock σε όλες τις συνιστώσες πλην του pll_nios να είναι το clksys
Το σύστημα σε αυτό το στάδιο πρέπει να είναι πανομοιότυπο με την εικόνα που ακολουθεί.
Οι τελικές ρυθμίσεις είναι να αναθέσετε την κάθε συνιστώσα στην αρχική της περιοχή
μνήμης και να αναθέσετε αριθμούς προτεραιότητας στις διακοπές.
Οι ενέργειες αυτές επιτυγχάνονται με τις επιλογές από το μενού
System Assign Base Addresses
System Assign Interrupt Numbers
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
37 | Σ ε λ ί δ α
Καρτέλα System Generation
Αποθηκεύστε το σύστημα και επιλέξτε
Το μήνυμα SUCCESS SYSTEM GENERATION COMPLETED επιβεβαιώνει την επιτυχή δημιουργία του συστήματος.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
38 | Σ ε λ ί δ α
Επιστρέψτε στο λογισμικό Quartus II και στην καρτέλα Files επιλέξτε τον φάκελο
Files δεξί κλικ Add/Remove Files in Project
επιλέξτε το
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
39 | Σ ε λ ί δ α
Επιλέξτε το αρχείο system_0_inst.v και επιλέξτε το
Στο κεντρικό μενού επιλογής File New
Design Files Block Diagram/Schematic File
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
40 | Σ ε λ ί δ α
Στο κενό διάγραμμα που ανοίγει , Δεξί κλικ Insert Symbol
Στο αναπτυσσόμενο μενού, κάτω από τον φάκελο Project υπάρχει το σύστημα που
δημιουργήσατε στο SOPC Builder, επιλέξτε το και
επιλέξτε το
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
41 | Σ ε λ ί δ α
Από το κεντρικό μενού επιλογής πατήστε FileSave ( το όνομα του αρχείου αυτόματα θα
πρέπει να είναι ίδιο με το όνομα που είχατε θέσει στον αρχικό οδηγό δημιουργίας project )
Δεξί κλικ επάνω στο σύστημα Generate Pins for Symbol Ports
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
42 | Σ ε λ ί δ α
Από το κεντρικό μενού Processing Start Start Analysis & Elaboration
Την ενέργεια αυτή την κάνετε για να βρει το Quartus σε ποιές συνιστώσες του
συστήματος έχουν ανατεθεί οδηγοί ώστε να αναθέστε τις πραγματικές ακίδες του
FPGA στο επόμενό βήμα
Με την ολοκλήρωση της διαδικασίας της ανάλυσης δεν θα πρέπει να υπάρχουν
λάθη.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
43 | Σ ε λ ί δ α
Από το κεντρικό μενού επιλέξτε Assignments Pin Planner
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
44 | Σ ε λ ί δ α
Η διαδικασία ανάθεσης pins είναι μία διαδικασία που απαιτεί ιδιαίτερη προσοχή.
Παρακάτω παρουσιάζονται οι ακριβείς αναθέσεις των pins που θα πρέπει να εισάγεται.
Το ολοκληρωμένο αρχείο για τις αναθέσεις των ακίδων( pins assignment) που
παρέχει η εταιρία βρίσκεται στον ακόλουθο σύνδεσμο για το DE1.
ftp://ftp.altera.com/up/pub/Altera_Material/9.1/Boards/DE1/DE1.qsf
Μετά την ανάθεση των pins το ολοκληρωμένο σχέδιο στο pin planner θα πρέπει να
παρουσιάζεται παρόμοιο με την επόμενη εικόνα.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
45 | Σ ε λ ί δ α
Μετά την επιτυχή ανάθεση των ακίδων του συστήματος επιλέγουμε από το μενού
Assignments Device
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
46 | Σ ε λ ί δ α
επιλέξτε το
Επιλέξτε στο Reserve all unused pins : As input tri-state with weak pull-up
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
47 | Σ ε λ ί δ α
Το τελικό βήμα είναι να μεταφραστεί το ολοκληρωμένο σχέδιο, από το κεντρικό μενού
επιλέξτε Processing Start Compilation ή επιλέξτε το
Με την επιτυχή σύνθεση του σχεδίου ενημερώνεστε για την εξέλιξη της σύνθεσης
και στο Flow Summary μπορείτε να ενημερωθείτε για τις ακριβείς λεπτομέρειες
του σχεδίου που δημιουργήσατε.
Ο προγραμματισμός τις συσκευής απαιτεί την έναρξη του programmer και ο διακόπτης SW12 στο DE1 να βρίσκεται στην θέση RUN.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
48 | Σ ε λ ί δ α
Στο κεντρικό μενού εργαλείων Tools Programmer για την εκκίνηση του
Programmer
Επιλέγετε το αρχείο που δημιουργήθηκε με κατάληξη (nios_sys.sof) και πατώντας
το Start το φορτώνετε στην συσκευή.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
49 | Σ ε λ ί δ α
Από την μπάρα φόρτωσης μπορείτε να ενημερωθείτε για την επιτυχή φόρτωση του
αρχείου στην συσκευή
Πλέον βρίσκεστε σε θέση να προγραμματίσετε την συσκευή με C++,C ή Assembly, μέσω του περιβάλλοντος Nios II Software Build Tools For Eclipse.
Στο κεντρικό μενού εργαλείων Tools Nios II Software Build Tools For Eclipse για
να εκκινήσετε την εφαρμογή Nios II Software Build Tools For Eclipse
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
50 | Σ ε λ ί δ α
Αρχικά επιλέξτε ως τρέχων workspace την διαδρομή του έργου όπου είχατε
καθορίσει
και επιλέξτε το
Στον χώρο του Project Explorer Δεξί κλικ Nios II Application and BSP from
Template
Το Board Support Package είναι βιβλιοθήκη συστήματος που περιέχει όλους του οδηγούς για τα περιφερειακά σε μία αναπτυξιακή πλακέτα(π.χ. DE1,DE2) που υποστηρίζονται από τον επιλεγμένο επεξεργαστή Nios II.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
51 | Σ ε λ ί δ α
Στο πλαίσιο Target Hardware Information επιλέξτε το και επιλέξτε ως SOPC
Information File το αρχείο system_0.sopcinfo
Στο πλαίσιο Application Project εισάγετε ως όνομα εφαρμογής : DCMOTOR
Στο πλαίσιο Project template επιλέξτε ως template το Hello World
Επιλέξτε το για αποθήκευση και έξοδο
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
52 | Σ ε λ ί δ α
Για να ανοίξετε τον BSP Editor και να διαχειριστείτε τις ρυθμίσεις για τις διεπαφές
που θα χρησιμοποιήσετε και ρυθμίσεις σχετικά με τον επεξεργαστή Nios II που
δημιουργήσατε, στο αρχείο DCMOTOR_bsp που εκτελέστε Δεξί κλικ NIOS II
BSP Editor
Η ενέργεια αυτή εμφανίζει την φόρμα του BSP Editor, επιλέξτε ως stdin και stdout την
διεπαφή UART αντί της αρχικής JTAG_UART.
Στην επιλογή Settings αποεπιλέξτε την επιλογή enable_c_plus_plus για να μειωθεί το
μέγεθος του κώδικα που θα ‘κατέβει’ στην συσκευή και εφόσον δεν θα χρησιμοποιήσετε
C++ αλλά C.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
53 | Σ ε λ ί δ α
για να εκτελεστούν οι τροποποιήσεις επιλέξτε το
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
54 | Σ ε λ ί δ α
Στο κεντρικό μενού επιλογών της εφαρμογής για να μεταγλωττιστούν οι κώδικες και
από τα δύο αρχεία επιλέξετε Project Build All
Για μεγαλύτερη κατανόηση μετονομάστε το αρχείο hello_world.c σε dcmotor.c
Αντιγράψτε τον κώδικα που παρέχετε στο ‘Παράρτημα Α’ για το dc motor control στο
αρχείο dcmotor.c
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
55 | Σ ε λ ί δ α
Στον φάκελο της εφαρμογής εκτελέστε Δεξί κλικ Run As Nios II Hardware
Στην επόμενη εικόνα παρουσιάζεται η επιτυχής λειτουργία του PID με συγκεκριμένες
τιμές για τους όρους kp,ki,kd.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
56 | Σ ε λ ί δ α
Πλέον η βαθμονόμηση του ελεγκτή έγκειται στην κατανόηση και μεταφορά της
κλασσικής θεωρίας ελέγχου σε κώδικα C προσδιορίζοντας τις ακριβείς τιμές για την
επιθυμητή βαθμονόμηση του ελεγκτή.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
57 | Σ ε λ ί δ α
Γραφήματα προσομοίωσης συστήματος
Κατά το γράφημα προσομοίωσης παρατηρούμε την κόκκινη γραμμή όπου
υποδεικνύει την επιθυμητή θέση του κινητήρα και την μπλε γραμμή όπου
παρουσιάζει την απόκριση του συστήματος ελέγχου καθοδηγούμενο από τον
ψηφιακό ελεγκτή PID, την πραγματική θέση του κινητήρα. Η βαθμονόμηση του
ελεγκτή εξαρτάται από τις παραμέτρους(κέρδη) kp, ki, kd του ελεγκτή στο
πρόγραμμα.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
58 | Σ ε λ ί δ α
Ανάλυση λειτουργίας του ελεγκτή PID
Ένας αναλογικός-ολοκληρωτικός-παραγωγικός ελεγκτής (ελεγκτής PID) είναι ένας
γενικός μηχανισμός με ανατροφοδότηση βρόχων ελέγχου που χρησιμοποιείται
ευρέως στα βιομηχανικά συστήματα ελέγχου. Ένας ελεγκτής PID προσπαθεί να
διορθώσει το λάθος μεταξύ μιας μετρημένης μεταβλητής-διαδικασίας
(ProcessValue) και ενός επιθυμητού σημείου λειτουργίας (setpoint) με τον
υπολογισμό και έπειτα την έξοδο μιας διορθωτικής δράσης που μπορεί να ρυθμίσει
τη διαδικασία αναλόγως.
Ο υπολογισμός της εξόδου του ελεγκτή PID (αλγόριθμος) περιλαμβάνει τρεις
ξεχωριστούς όρους. Τον αναλογικό, ολοκληρωτικό και παραγωγικό ορό. Το
αναλογικό κέρδος καθορίζει την αντίδραση στο τρέχον λάθος, το ολοκλήρωμα
καθορίζει την αντίδραση βασισμένη στο άθροισμα των λαθών και η παράγωγος
καθορίζει την αντίδραση βάση του ποσοστού στο οποίο το λάθος έχει αλλάξει. Το
σταθμισμένο ποσό αυτών των τριών ενεργειών χρησιμοποιείται για να ρυθμίσει τη
διαδικασία μέσω ενός στοιχείου ελέγχου όπως η θέση μιας βαλβίδας ελέγχου ή η
παροχή ηλεκτρικού ρεύματος ενός στοιχείου θέρμανσης, κινητήρα κτλ.
Με "το συντονισμό" των τριών σταθερών στον αλγόριθμο ελεγκτών PID, ο PID
μπορεί να παρέχει τη δράση ελέγχου που χρειάζεται για τις συγκεκριμένες
απαιτήσεις της διαδικασίας. Η έξοδος του ελεγκτή μπορεί να περιγράφει από τον
τρόπο της απόκρισης του ελεγκτή σε ένα λάθος, ο βαθμός στον οποίο ο ελεγκτής
κάνει υπερύψωση από το setpoint και το βαθμό των ταλαντώσεων του συστήματος.
Σημειώστε ότι η χρήση του αλγορίθμου PID για τον έλεγχο δεν εγγυάται τον βέλτιστο
έλεγχο του συστήματος.
Μερικές εφαρμογές μπορούν να απαιτήσουν μόνο έναν ή δύο όρους για να
παρέχουν τον κατάλληλο έλεγχο συστημάτων. Αυτό επιτυγχάνεται με τον καθορισμό
του κέρδους των ανεπιθύμητων όρων ελέγχου σε μηδέν. Ένας ελεγκτής PID θα
λέγεται ελεγκτής pi, pd, p ή i ανάλογα με την έλλειψη των αντίστοιχων όρων
ελέγχου. Οι ελεγκτές pi είναι ιδιαίτερα κοινοί, δεδομένου ότι η δράση του
παραγωγικού όρου είναι πολύ ευαίσθητη στο θόρυβο μέτρησης.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
59 | Σ ε λ ί δ α
Αναλογικός - Ολοκληρωτικός - Διαφορικός Ελεγκτής ή Ελεγκτής PID
Όπως προαναφέρθηκε πρόκειται για μια βαθμίδα ελεγκτή αποτελούμενη από 3
όρους, η έξοδος της οποίας είναι το άθροισμα ενός αναλογικού, ενός
ολοκληρωτικού και ενός διαφορικού όρου, με ρυθμιζόμενο κέρδος για κάθε έναν
όρο.
Όπου e = SP – PV (SP=SetPoint , PV=Process Value)
Ψηφιοποιώντας την παραπάνω σχέση με περίοδο δειγματοληψίας Τs λαμβάνουμε
την παρακάτω σχέση την οποία μπορούμε να εφαρμόσουμε πλέον σε Η/Υ εφόσον
πρόκειται για ψηφιακό έλεγχο.
Όπου:
Ts: Περίοδος δειγματοληψίας (sec)
Κατά την εφαρμογή του παραπάνω τύπου, είναι σημαντικό να περιορίζουμε την
έξοδο του ελεγκτή στα μέγιστα και στα ελάχιστο όρια (wind up).
Πχ αν U[n]>U[n]max τότε U[n]=U[n]max και αν U[n]<U[n]min τότε U[n]=U[n]min
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
60 | Σ ε λ ί δ α
Τα χαρακτηριστικά των ελεγκτών P, I και D
Η χρησιμοποίηση ενός αναλογικού ελεγκτή (Kp), θα έχει ως αποτέλεσμα την ελάττωση του χρόνου ανύψωσης και την μείωση, αλλά ποτέ την εξάλειψη, του μόνιμου σφάλματος. Ο ολοκληρωτικός έλεγχος (Ki) θα εξαλείψει το μόνιμο σφάλμα, αλλά θα χειροτερέψει την μεταβατική Απόκριση (αριθμός των ταλαντώσεων μέχρι την τελική ισορροπία του συστήματος). Ο διαφορικός έλεγχος (Κd) θα έχει ως αποτέλεσμα την αύξηση της σταθερότητας του συστήματος, μειώνοντας την υπερύψωση και βελτιώνοντας την μεταβατική Απόκριση. Tα αποτελέσματα της επίδρασης καθενός από τους ελεγκτές Κp, Kd και Κi σε ένα σύστημα κλειστού βρόγχου, συνοψίζονται στο παρακάτω πίνακα.
Αντίδραση Ελεγκτή
Χρόνος ανύψωσης
Υπερύψωση Χρόνος αποκατάστασης
Μόνιμο σφάλμα
Kp Μείωση Αύξηση Μικρή Αλλαγή Μείωση
Ki Μείωση Αύξηση Αύξηση Εξάλειψη
Kd Μικρή Αλλαγή Μείωση Μείωση Μικρή Αλλαγή
Ας σημειωθεί ότι αυτοί οι συσχετισμοί μπορεί να μην είναι πολύ ακριβείς, επειδή οι ελεγκτές Κp, Kd και Κi αλληλοεξαρτώνται. Στην πραγματικότητα, η αλλαγή μίας από αυτές τις μεταβλητές, μπορεί να αλλάξει την επίδραση και των άλλων δύο μεταβλητών. Για τον λόγο αυτό, ο παραπάνω πίνακας θα πρέπει να χρησιμοποιείται μόνον ως σημείο αναφοράς όταν προσδιορίζουμε τις τιμές για τους
ελεγκτές Κp, Kd, και Κi.
ΣΥΝΑΡΤΗΣΗ ΜΕΤΑΦΟΡΑΣ ΤΟΥ ΚΙΝΗΤΗΡΑ:
Ο κινητήρας έχει γενική συνάρτηση μεταφοράς
, δηλαδή πρόκειται για ένα
σύστημα πρώτης παραγώγου με χρόνο καθυστέρησης (First Order Plus Dead Time -
FOPDT).
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
61 | Σ ε λ ί δ α
Παράρτημα Α’ 2ου Κεφαλαίου
Κώδικας σε C – υλοποίηση PID για τον NIOS II
DC motor control- Matlab integration
#include <stdio.h>
#include <unistd.h>
#pragma no_custom_fadds /* floating-point add */
#pragma no_custom_fsubs /* floating-point subtract */
#pragma no_custom_fmuls /* floating-point multiply */
#pragma no_custom_fdivs /* floating-point divide */
typedef float real;
int main ( void )
{
char *buffer;
real v=0,vi=0,vp=0,vd=0;
real y=0,yset=0;
real kp=20,ki=0.5,kd=10,ts=0.001;
real error_old=0;
real error;
while(1){
scanf("%s",buffer);
yset = atof(buffer);
scanf("%s",buffer);
y = atof(buffer);
error = (yset-y);
vp = kp*error;
vi = vi+ts*ki*error;
vd = (kd/ts)*(error-error_old);
v = vp + vi + vd;
error_old = error;
sprintf(buffer,"%f",v);
printf("%s\r\n",buffer);
}
return 0;
}
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
62 | Σ ε λ ί δ α
Κώδικας συστήματος σε Matlab
function dcmotor clear all; ser = serial('COM1'); set(ser, 'Terminator','CR/LF'); set(ser, 'BaudRate', 115200); set(ser, 'DataBits', 8); set(ser, 'Parity', 'none'); set(ser, 'Timeout', 10); set(ser, 'StopBits', 1); fopen(ser); % open the serial port connection ser.ReadAsyncMode = 'continuous'; readasync(ser); fprintf('DC motor FPGA controller is on-line.\n'); x1=0;x2=0;x3=0;d=0; v=0;vi=0; final=5000; xset=[(pi/3)*ones(1,final) -(pi/3)*ones(1,final)]; k=1:100:final; j=0; x3plot=zeros(1,final); xsetplot=zeros(1,final); for i=1:length(xset) j=j+1; x1=0.9668*x1-0.0131*x2+0.0098*v-d; x2=0.0010*x1+x2; x3=0.0010*x2+x3; x3plot(i)=x3; xsetplot(i)=xset(i); fprintf(ser,num2str(xset(i))); fprintf(ser,num2str(x3)); v=str2double(fscanf(ser,'%s')); end figure(1);plot(1:i,xsetplot,'r',1:i,x3plot,'b'); fclose(ser); clear ser;
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
63 | Σ ε λ ί δ α
Παράρτημα Β’ 2ου Κεφαλαίου
CPU Benchmarks με διαφορετικές υλοποιήσεις Nios II
Σύστημα : zNUC II
Ρυθμίσεις BSP : UART
Επεξεργαστής : NIOS II/S Core 50Mhz
Χρονική απόδοση κώδικα: 6.1milliseconds
Υπολογισμός PID : 0.19 milliseconds
Σύστημα : CHIMERA III
Ρυθμίσεις BSP : UART
Hardware multipliers
Hardware Dividers
Επεξεργαστής : NIOS II/F Core 50Mhz
Χρονική απόδοση κώδικα: 4.2 milliseconds Υπολογισμός PID : 0.02 milliseconds
Παρατηρούμε την διαφορά στην χρονική απόδοση κώδικα και τον
υπολογισμό του ελεγκτή PID με διαφορετικές υλοποιήσεις του ενσωματωμένου
μικροεπεξεργαστή NIOS II και τις διαφορετικές ρυθμίσεις στο BSP του
συστήματος.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
64 | Σ ε λ ί δ α
Κεφάλαιο 3
Μελέτη και κατασκευή οδηγού για έλεγχο
ταχύτητας DC κινητήρα με ελεγκτή PID σε
Cyclone II και απεικόνιση σε οθόνη VGA
Λογισμικό :
Altera Quartus II v12.0_178sp2
SOPC Builder
Nios II v12.0_178sp2 Software Build Tools for Eclipse
IP Cores :
Altera Up Avalon PWM Core
Altera Up Avalon PIO Core
Altera Up Avalon VGA Core
Υλικό :
Altera DE1 Board
12V/1.5Kg-cm/365RPM 10:1 DC Gear Motor w
US E4P Encoder
H-BRIDGE L293NE
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
65 | Σ ε λ ί δ α
Διάγραμμα ελέγχου κινητήρα
Διάγραμμα ελέγχου συστήματος PID
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
66 | Σ ε λ ί δ α
12V/1.5Kg-cm/365RPM 10:1 DC Gear Motor w/ Encoder
Προδιαγραφές προϊόντος
Προδιαγραφές κινητήρα σε μέγιστη απόδοση
Ονομαστικό ρεύμα 2A
Ροπή εξόδου 1.53 Kg/cm
Ισχύς 7W
Ονομαστική Ταχύτητα 365RPM
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
67 | Σ ε λ ί δ α
Προδιαγραφές encoder
Σύνδεση τύπου E4P
Μετρήσεις ανά περιστροφή(CPR)
360
Διάμετρος οπής 3.175
Ονομαστική τάση 12VDC
Ρεύμα ακινησίας 5A
Ροπή που παράγεται σε ακινησία
14.1 Kg-cm
Φυσικές ιδιότητες
Μήκος κινητήρα (συμπεριλαμβανομένου του κιβωτίου και του κωδικοποιητή)
79.1mm
Διάμετρος άξονα 6mm
Βάρος 273g
Προδιαγραφές του Gearbox
Τύπος μετάδοσης Spur
Αναγωγή μετάδοσης 10:1
Αριθμός τροχών 2
Μέγιστη δύναμη κιβωτίου 3 Kg-cm
Μέγιστο φορτίο εγκάρσιου άξονα 35N
Μέγιστο φορτίο άξονα ώθησης 25N
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
68 | Σ ε λ ί δ α
US E4P οπτικός κωδικοποιητής
Ο κωδικοποιητής E4P έχει σχεδιαστεί να παρέχει ψηφιακή ανάδραση τετραγωνικών παλμών(quadrature feedback) για εφαρμογές υψηλής έντασης με περιορισμένη σταθερά χώρου. Η έκδοση E4P χρησιμοποιεί μία καινοτόμα μέθοδο, κατοχυρωμένη με δίπλωμα ευρεσιτεχνίας για codewheel η οποία δέχεται διαμέτρους άξονα 1,5 mm έως 0.250.
Ο κωδικοποιητής E4P είναι ο ηγέτης για εφαρμογές OEM υψηλών ποσοτήτων, αλλά το Ε4 είναι η ιδανική επιλογή όταν ένα set-screw codewheel κωδικοποιητής απαιτείται.
Ο κωδικοποιητής E4P παρέχει οπές τοποθέτησης για δύο #3-48, μήκους 1/4" ή δύο M2.5x.45mm, μήκους 6mm βίδες σε έναν .586" κοχλία κύκλου. Όταν οι οπές τοποθέτησης δεν είναι διαθέσιμες, μια προσαρμοσμένη κόλλα μεταφοράς (με αφαιρούμενη υποστήριξη) είναι διαθέσιμη για "stick-on" τοποθέτηση. Το κάλυμμα του κωδικοποιητή κουμπώνει εύκολα πάνω στη βάση και είναι χαραγμένα με το συνδετήρα ακροδεκτών εξόδου.
Ο κωδικοποιητής σειρά E4P μπορεί να συνδεθεί με τη χρήση (υψηλής διατήρησης 4-αγωγών συμπληρωματικής πόλωσης 1,25 χιλιοστών βήματος) σύνδεσης.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
69 | Σ ε λ ί δ α
L293, L293D QUADRUPLE HALF-H DRIVERS
Περιγραφή Τα ολοκληρωμένα L293 και L239D είναι τετραπλοί half-Η υψηλής τάσης οδηγοί. Το L293 έχει σχεδιαστεί να παρέχει αμφίδρομη οδήγηση εντάσεως περισσότερο από 1A και τάσεις από 4.5V μέχρι 36V. Το 293D έχει σχεδιαστεί να παρέχει αμφίδρομη οδήγηση εντάσεως από 600mA και τάσεων 4.5V μέχρι 36V. Και τα δύο ολοκληρωμένα έχουν σχεδιαστεί για οδήγηση φορτίων με χωρητικότητες όπως ρελέ, ηλεκτρομαγνητικές βαλβίδες, dc και bipolar βηματικούς κινητήρες, όπως επίσης και άλλα φορτία υψηλών εντάσεων σε εφαρμογές με θετική παροχή τροφοδοσίας.
Όλες οι είσοδοι είναι TTL συμβατές. Κάθε έξοδος είναι ένα ολοκληρωμένο κύκλωμα οδήγησης με διατάξεις αντιστάσεων σε συνδεσμολογία γέφυρας Darlington. Οι οδηγοί ενεργοποιούνται ανά ζεύγη με του ς οδηγούς 1 και 2 να ενεργοποιούνται από τις εισόδους 1,2ΕΝ και τους οδηγούς 3 και 4 να ενεργοποιούνται από τις εισόδους 3,4ΕΝ. Όταν οι είσοδοι ενεργοποίησης είναι σε χαμηλή κατάσταση, οι οδηγοί απενεργοποιούνται και οι έξοδοι απενεργοποιούνται επίσης και παραμένουν σε κατάσταση υψηλής αντίστασης. Με τα κατάλληλα δεδομένα εισόδων, κάθε ζεύγος σχηματίζει έναν πλήρως-Η( ή γέφυρα) αναστρέψιμο οδηγό κατάλληλο για εφαρμογές οδήγησης κινητήρων ή ηλεκτρομαγνητικών
βαλβίδων.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
70 | Σ ε λ ί δ α
Χρησιμοποιώντας την θύρα επέκτασης
Η αναπτυξιακή πλακέτα DE1 παρέχει δύο θύρες επέκτασης 40 ακίδων. Η κάθε θύρα επέκτασης συνδέεται απευθείας σε 36 ακίδες στο Cyclone II FPGA, και επίσης παρέχει τροφοδοσία DC +5V (VCC5), DC +3.3V (VCC33), και δύο ακίδες γείωσης (GND). Το επόμενο σχήμα παρουσιάζει την σχετική αναπαράσταση της θύρας. Κάθε ακίδα της θύρας είναι συνδεδεμένο σε μία αντίσταση που παρέχει προστασία από τις υψηλές και χαμηλές τάσεις. Στην εικόνα παρουσιάζεται το κύκλωμα προστασίας για τέσσερεις μόνο ακίδες της θύρας αλλά αυτό το κύκλωμα υπάρχει και στις 72 ακίδες.
PIO Core Επισκόπηση του πυρήνα (Core) Οι βασικές λειτουργίες εισόδου/εξόδου μέσω του πυρήνα (PIO) με την διεπαφή Avalon παρέχουν μία διεπαφή χαρτογραφημένη στην μνήμη μεταξύ μίας θύρας Avalon® Memory-Mapped (Avalon-MM) Slave και μίας θύρας εισόδους/εξόδου (I/O) γενικού σκοπού . Οι θύρες εισόδου/εξόδου συνδέονται είτε σε on-chip λογική χρήστη, είτε σε ακίδες εισόδου/εξόδου που συνδέονται με εξωτερικές συσκευές. Ο πυρήνας PIO παρέχει εύκολη πρόσβαση εισόδου/εξόδου σε λογική καθοριζόμενη από τον χρήστη ή εξωτερικές συσκευές σε περιπτώσεις όπου ψηφιακές θύρες καλύπτουν το εύρος της εφαρμογής. Μερικά παραδείγματα είναι : ■ Διαχείριση LEDs ■ Απόκτηση δεδομένων από διακόπτες ■ Έλεγχος συσκευών απεικόνισης ■ Διαμόρφωση και επικοινωνία με off-chip συσκευές, όπως η εφαρμογή ειδικών τυποποιημένων προϊόντων (ASSP)
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
71 | Σ ε λ ί δ α
Ο πυρήνας PIO με αίτηση διακοπής (IRQ) εξόδου μπορεί να διεκδικήσει μια διακοπή με βάση το σήμα εισόδου. Ο πυρήνας PIO είναι SOPC Builder ready και ενσωματώνεται εύκολα σε οποιοδήποτε SOPC Builder σύστημα. Λειτουργική Περιγραφή Κάθε πυρήνας PIO μπορεί να παρέχει μέχρι και 32 θύρες I/O. Ένας ευφυής host, όπως ένας μικροεπεξεργαστής ελέγχει τις πόρτες με την ανάγνωση και τη γραφή του χαρτογραφημένου καταχωρητή μνήμης Avalon-MM. Υπό τον έλεγχο του host, ο πυρήνας PIO δέχεται τα στοιχεία από τις εισόδους για τις και οδηγεί τα δεδομένα στις εξόδους του. Όταν οι θύρες PIO συνδέονται άμεσα με ακίδες I/O, ο host μπορεί να θέσει στις ακίδες έλεγχο τριών καταστάσεων γράφοντας στους καταχωρητές ελέγχου στον πυρήνα του PIO. Η εικόνα δείχνει ένα παράδειγμα από ένα σύστημα βασισμένο σε επεξεργαστή που χρησιμοποιεί πολλαπλούς πυρήνες PIO να οδηγεί LED, συλλαμβάνει τις ακμές από τις on-chip λογικής ελέγχου και ελέγχει μία εξωτερική συσκευή οθόνης LCD.
Όταν ενσωματώνεται σε ένα σύστημα SOPC, ο πυρήνας PIO έχει δύο ορατές λειτουργίες: ■ Έναν χαρτογραφημένο χώρο μνήμης καταχωρητών με τέσσερις καταχωρητές: δεδομένων, κατεύθυνσης, μάσκας διακοπής και σύλληψη αιχμής ■ 1 με 32 I/O θύρες Οι θύρες Ι/Ο μπορούν να συνδεθούν με λογική σχεδίαση εσωτερικά στο FPGA ή σε ακίδες συσκευής που συνδέονται σε εξωτερική συσκευή. Οι καταχωρητές παρέχουν μία διεπαφή στις θύρες Ι/Ο διαμέσου της διεπαφής Avalon-MM. Καταχωρητής εισόδων και εξόδων δεδομένων Οι θύρες Ι/Ο το PIO core μπορούν να συνδεθούν σε λογική κυκλώματος εντός ή εκτός της συσκευής. Ο πυρήνας μπορεί να ρυθμιστεί για εισόδους μόνο, εξόδους μόνο ή και τα δύο. Εάν ο πυρήνας χρησιμοποιείται για να ελέγξει αμφίδρομες ακίδες Ι/Ο, ο πυρήνας παρέχει αμφίδρομο έλεγχο με λογική τριών καταστάσεων. Η λογική υλικού είναι ξεχωριστή για ανάγνωση και εγγραφή των καταχωρητών δεδομένων. Η ανάγνωση των καταχωρητών δεδομένων επιστρέφουν την παρούσα τιμή των θυρών εισόδου. Η εγγραφή δεδομένων επηρεάζει την τιμή που οδηγείται στις θύρες εξόδου. Αυτές οι θύρες είναι ανεξάρτητες κατά την ανάγνωση και δεν επιστρέφουν προηγούμενα εγγεγραμμένα δεδομένα
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
72 | Σ ε λ ί δ α
Καταχωρητής ανίχνευσης αιχμών Ο πυρήνας PIO μπορεί να ρυθμιστεί να ανιχνεύει αιχμές στις θύρες εισόδου του. Μπορεί να εντοπίσει μετάβαση από χαμηλό σε υψηλό, μετάβαση από υψηλό σε χαμηλό ή και τα δύο. Κάθε φορά που η είσοδος ανιχνεύει αιχμή, η κατάσταση αναγράφεται στον καταχωρητή ανίχνευσης αιχμών. Ο τύπος της αιχμής όπου ανιχνεύτηκε καθορίζεται κατά τον χρόνο εκτέλεσης του συστήματος και δεν μπορεί να τροποποιηθεί δια μέσου των καταχωρητών. Καταχωρητής παραγωγής διακοπών IRQ Ο πυρήνας PIO μπορεί να ρυθμιστεί να παράγει διακοπές υπό ορισμένες συνθήκες. Οι συνθήκες αυτές μπορεί να είναι : ■ Level-sensitive (επιπέδου) - Ο πυρήνας PIO υλικού μπορεί να ανιχνεύσει ένα υψηλό επίπεδο. Μία πύλη NOT μπορεί να συνδεθεί εξωτερικά στον πυρήνα για να παρέχει αρνητική ευαισθησία στα επίπεδα. ■ Edge-sensitive (τύπου αιχμής) – Η ρύθμιση της ανίχνευσης αιχμών του πυρήνα μπορεί να καθορίσει τι τύπος αιχμής θα παράγει μία διακοπή. Οι διακοπές είναι ανεξάρτητες με μάσκα για κάθε είσοδο. Η μάσκα διακοπής μπορεί να καθορίσει ποια είσοδος μπορεί να προκαλέσει διακοπές.
Λογισμικό μοντέλου προγράμματος
Ο πυρήνας PIO συνοδεύεται από ένα αρχείο λογισμικού, το altera_avalon_pio_regs.h. Στο αρχείο αυτό καθορίζονται οι χαρτογραφήσεις των καταχωρητών του πυρήνα, παρέχοντας συμβολικές σταθερές για πρόσβαση σε υλικό χαμηλού επιπέδου.
Ο πυρήνας PIO με θύρες εισόδου & εξόδου & με υποστήριξη διακοπών
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
73 | Σ ε λ ί δ α
Εισαγωγή στην Διαμόρφωση εύρους παλμού (Pulse Width
Modulation - PWM)
Η διαμόρφωση εύρους παλμού (PWM) είναι μια ισχυρή τεχνική για τον έλεγχο αναλογικών
κυκλωμάτων με τις ψηφιακές εξόδους του επεξεργαστή. Η τεχνική PWM χρησιμοποιείται σε
μια ευρεία ποικιλία εφαρμογών, που κυμαίνονται από τη μέτρηση και την επικοινωνία με
τον έλεγχο της ισχύς και της μετατροπής.
Αναλογικά ηλεκτρονικά
Ένα αναλογικό σήμα έχει μια συνεχώς μεταβαλλόμενη τιμή, με άπειρη ανάλυση τόσο σε
χρόνο όσο και το μέγεθος. Μία εννέα (9) Volt μπαταρία είναι ένα παράδειγμα μίας
αναλογικής συσκευής, όμως η τάση εξόδου της δεν είναι ακριβώς 9V, και με την πάροδο
του χρόνου μπορεί να λάβει οποιαδήποτε πραγματική αρίθμηση τιμή. Παρομοίως, η
ποσότητα του ρεύματος που λαμβάνεται από μια μπαταρία δεν περιορίζεται σε ένα
πεπερασμένο σύνολο δυνατών τιμών. Τα αναλογικά σήματα είναι πιο ευδιάκριτα από τα
ψηφιακά σήματα, επειδή το ψηφιακά λαμβάνουν πάντα τιμές μόνον από ένα
πεπερασμένο σύνολο προκαθορισμένων τιμών, όπως το σύνολο {0V, 5V}.
Οι αναλογικές τάσεις και τα ρεύματα μπορούν να χρησιμοποιηθούν για να ελέγχουν τα
πράγματα άμεσα, όπως την ένταση ενός ραδιοφώνου αυτοκινήτου. Σε ένα απλό αναλογικό
ραδιόφωνο, ένα κόμβιο συνδέεται με μία μεταβλητή αντίσταση. Καθώς γυρίζετε το κόμβιο,
η τιμή της αντίστασης ανεβαίνει και κατεβαίνει. Καθώς αυτό συμβαίνει, το ρεύμα που ρέει
διαμέσου των αντιστάσεων αυξάνεται ή μειώνεται. Αυτό αλλάζει την ποσότητα του
ρεύματος οδήγησης των ηχείων, έτσι αυξάνοντας ή μειώνοντας την ένταση του ήχου. Ένα
αναλογικό κύκλωμα είναι ένα, όπως το ραδιόφωνο, του οποίου η έξοδος είναι γραμμικά
ανάλογη με την είσοδο της.
Όσο διαισθητικός και απλός μπορεί να φαίνεται ο αναλογικός έλεγχος, δεν είναι πάντα
ελκυστικός από οικονομικής άποψης ή πρακτικός. Για έναν λόγο τα αναλογικά κυκλώματα
τείνουν να αποσυρθούν με την πάροδο του χρόνου και μπορεί, ως εκ τούτου, να είναι πολύ
δύσκολο να συντονιστεί. Τα αναλογικά κυκλώματα ακρίβειας, τα οποία μπορούν να λύσουν
αυτό το πρόβλημα, μπορεί να είναι πολύ μεγάλα και βαριά (απλά σκεφτείτε τους
παλαιότερους εξοπλισμούς στερεοφωνικών) και ακριβά. Τα αναλογικά κυκλώματα
μπορούν επίσης να θερμανθούν πολύ, η διαχεόμενη ενέργεια που είναι ανάλογη προς την
τάση στα άκρα των ενεργών στοιχείων πολλαπλασιάζεται με το ρεύμα μέσω αυτών. Τα
αναλογικό κυκλώματα μπορούν επίσης να είναι ευαίσθητα στο θόρυβο. Λόγω της άπειρης
ανάλυσης τους, η κάθε διατάραξη ή ο θόρυβος για ένα αναλογικό σήμα αλλάζει
αναγκαστικά την τρέχουσα τιμή.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
74 | Σ ε λ ί δ α
Ψηφιακός έλεγχος
Με τον έλεγχο αναλογικών κυκλωμάτων ψηφιακά, το κόστος των συστημάτων και η
κατανάλωση ενέργειας μπορούν να μειωθούν δραστικά. Επιπλέον, πολλοί μικροελεγκτές
και DSPs περιλαμβάνουν ήδη on-chip ελεγκτές PWM, καθιστώντας την εφαρμογή ιδιαίτερα
εύκολη.
Με λίγα λόγια, η μέθοδος PWM είναι ένας τρόπος για την ψηφιακή κωδικοποίηση
αναλογικού σήματος σε επίπεδα. Μέσω της χρήσης υψηλής ανάλυσης μετρητών, ο κύκλος
λειτουργίας ενός τετραγωνικού κύματος είναι διαμορφωμένοw για να κωδικοποιήσει μία
συγκεκριμένη αναλογική στάθμη σήματος. Το σήμα PWM είναι ακόμα ψηφιακό διότι, σε
κάθε δεδομένη χρονική στιγμή, η πλήρης παροχή συνεχούς ρεύματος είναι είτε πλήρως
ενεργοποιημένη ή πλήρως απενεργοποιημένη. Η τάση ή το ρεύμα πηγής παρέχεται στο
αναλογικό φορτίο μέσω μιας επαναλαμβανόμενης σειράς από παλμούς. Ο χρόνος
ενεργοποίησης κατά τον οποίο η παροχή συνεχούς τάσεως εφαρμόζεται στο φορτίο, και ο
χρόνος απενεργοποίησης είναι η περίοδος κατά την οποία η τροφοδοσία είναι κλειστή.
Λαμβάνοντας υπόψη ένα επαρκές εύρος ζώνης, κάθε αναλογική τιμή μπορεί να
κωδικοποιείται με PWM.
Το Σχήμα 1 δείχνει τρία διαφορετικά σήματα PWM. Το σχήμα 1α δείχνει ένα PWM εξόδου
σε ένα κύκλο λειτουργίας 10%. Δηλαδή, το σήμα είναι για 10% της περιόδου και
απενεργοποιεί τα άλλα 90%. Σχήματα 1β και 1γ δείχνουν εξόδους PWM στο 50% και 90%
κύκλους λειτουργίας, αντίστοιχα. Αυτές οι τρεις έξοδοι PWM κωδικοποιούν τρεις
διαφορετικές αναλογικές τιμές σήματος, σε 10%, 50%, και 90% της πλήρους ισχύος. Εάν, για
παράδειγμα, η παροχή είναι 9V και ο κύκλος λειτουργίας είναι 10%, ένα αναλογικό 0.9V
αποτελέσματα σήματος.
Σχήμα 1. PWM σήματα διαφόρων κύκλων
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
75 | Σ ε λ ί δ α
Το Σχήμα 2 δείχνει ένα απλό κύκλωμα που θα μπορούσε να οδηγηθεί με την μέθοδο PWM.
Στο σχήμα, μια μπαταρία 9 V παρέχει ηλεκτρισμό σε μια λάμπα πυρακτώσεως. Αν κλείσει ο
διακόπτης που συνδέει την μπαταρία και λάμπα για 50 ms, η λάμπα θα λάβει 9 V κατά τη
διάρκεια αυτού του διαστήματος. Αν ανοίξει στη συνέχεια ο διακόπτης για τα επόμενα 50
ms, η λάμπα θα λάβει 0 V. Αν πραγματοποιηθεί αυτός ο κύκλος 10 φορές το δευτερόλεπτο,
η λάμπα θα ανάβει σαν να ήταν συνδεδεμένη με μια μπαταρία 4,5 V (50% των 9 V ). Σε
αυτή την περίπτωση λέμε ότι ο κύκλος λειτουργίας ανέρχεται στο 50% και η διαμόρφωση
συχνότητας είναι 10 Hz.
Σχήμα 2. Ένα απλό κύκλωμα PWM
Τα περισσότερα επαγωγικά και χωρητικά φορτία απαιτούν ωστόσο μια πολύ υψηλότερη
συχνότητα διαμόρφωσης από 10 Hz. Κοινή ρύθμιση συχνοτήτων κυμαίνεται από 1 kHz έως
200 kHz.
PWM ελεγκτές
Πολλοί μικροελεγκτές περιλαμβάνουν on-chip ελεγκτές PWM. Για παράδειγμα, ο PIC16C67
Microchip περιλαμβάνει δύο ελεγκτές PWM, καθένας από τους οποίους μπορεί να
ρυθμιστεί σε χρόνο και περίοδο. Ο κύκλος λειτουργίας είναι ο λόγος του ενεργού χρόνου
προς την περίοδο. Η συχνότητα διαμόρφωσης είναι το αντίστροφο της περιόδου.
Επικοινωνία και έλεγχος
Ένα από τα πλεονεκτήματα της μεθόδου PWM είναι ότι το σήμα παραμένει ψηφιακό σε
όλη τη διαδρομή από τον επεξεργαστή μέχρι το ελεγχόμενο σύστημα. Η ψηφιακό-προς-
αναλογική μετατροπή δεν είναι απαραίτητη. Με τη διατήρηση του σήματος σε ψηφιακό,
ελαχιστοποιούνται οι επιδράσεις του θορύβου. Ο θόρυβος μπορεί να επηρεάσει μόνο ένα
ψηφιακό σήμα, εάν είναι αρκετά ισχυρός για να αλλάξει μια λογική κατάσταση 1 σε μία
λογική κατάσταση 0 ή το αντίστροφο.
Η αυξημένη αντοχή στον θόρυβο είναι ένα ακόμη όφελος της επιλογής PWM από τον
αναλογικό έλεγχο, και είναι ο κύριος λόγος όπου η μέθοδος PWM μερικές φορές
χρησιμοποιείται για την επικοινωνία. Η εναλλαγή από ένα αναλογικό σήμα προς PWM
μπορεί να αυξήσει το μήκος ενός καναλιού επικοινωνίας δραματικά. Στο άκρο λήψης, μία
κατάλληλη RC (αντίσταση-πυκνωτήή) ή LC (επαγωγέα-πυκνωτή) δικτύου μπορεί να
αφαιρέσει τη διαμόρφωση υψηλής συχνότητας τετραγωνικού κύματος και να επιστρέψει
το σήμα σε αναλογική μορφή. Η μέθοδος PWM βρίσκει εφαρμογή σε μία ποικιλία
συστημάτων.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
76 | Σ ε λ ί δ α
Altera Avalon PWM IP Core
PWM Design Files
Λειτουργικές προδιαγραφές Μία συνιστώσα PWM παράγει ένα τετραγωνικό σήμα με διαμορφωμένο κύκλο λειτουργίας. Μία βασική κυματομορφή φαίνεται στην εικόνα.
Μία συνιστώσα PWM καθορίζεται και δημιουργείται ακολούθως: ■ Η λογική διεργασία λειτουργεί σύγχρονα με ένα χρονιστή. ■ Η λογική διεργασία χρησιμοποιεί μετρητές 32-bit για να παρέχει ένα κατάλληλο εύρος περιόδων PWM και κύκλων λειτουργίας ■ Ο επεξεργαστής είναι υπεύθυνος για την ρύθμιση της τιμής της περιόδου της PWM και την τιμή του κύκλου λειτουργίας. Η απαίτηση αυτή απαιτεί την ανάγκη μίας διεπαφής για εγγραφή/ανάγνωση για τον λογικό έλεγχο. ■ Τα στοιχεία καταχωρητών έχουν καθοριστεί για να συγκρατούν την περίοδο της PWM και την τιμή του ενεργού κύκλου λειτουργίας. ■ TΟ επεξεργαστής μπορεί να σταματήσει την έξοδο PWM χρησιμοποιώντας τον έλεγχο ενεργοποίησης.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
77 | Σ ε λ ί δ α
Λογική διεργασίας PWM Η λογική της διεργασίας PWM έχει τα εξής χαρακτηριστικά: ■ Η λογική της διεργασίας PWM αποτελείται από έναν εισερχόμενο χρονιστή(clk),ένα σήμα εξόδου (pwm_out), ένα bit ενεργοποίησης, έναν 32-bit modulo-n μετρητή και ένα 32-bit κύκλωμα σύγκρισης. ■ Το clk οδηγεί τον 32-bit modulo-n μετρητή ώστε να καθορίσει την περίοδο του σήματος pwm_out. ■ Ο συγκριτής συγκρίνει την τρέχουσα τιμή του μετρητή modulo-n με την τιμή του κύκλου ενεργής λειτουργίας και καθορίζει την τιμή της εξόδου pwm_out. ■ Όταν η τιμή της τρέχουσας μέτρησης είναι μικρότερη ή ίση με την τιμή του ενεργού κύκλου λειτουργίας, η έξοδος pwm_out οδηγείται σε λογικό 0, διαφορετικά οδηγείται σε λογική τιμή 1.
Αρχείο καταχωρητή Το αρχείο καταχωρητή παρέχει πρόσβαση στο bit ενεργοποίησης, στην τιμή του μετρητή modulo-n και στην τιμή του ενεργού κύκλου λειτουργίας. Το σχέδιο χαρτογραφεί κάθε καταχωρητή σε μία μοναδικά αντισταθμισμένη θέση μνήμης στην θύρα Avalon slave.Κάθε καταχωρητής έχει πρόσβαση ανάγνωσης και εγγραφής, που σημαίνει ότι το λογισμικό μπορεί να διαβάσει τις προηγούμενες εγγεγραμμένες τιμές των καταχωρητών.
Αυτή είναι μια αυθαίρετη επιλογή σχεδιασμού που παρέχει πρακτικότητα του λογισμικού σε βάρος των πόρων του υλικού. Θα μπορούσαν να σχεδιαστούν εξίσου οι καταχωρητές ώστε να είναι προσβάσιμοι μόνο για εγγραφή, σχεδίαση η οποία θα διατηρούσε την χρήση πόρων σε χαμηλά επίπεδα, αλλά καθιστεί αδύνατο για το λογισμικό για να διαβάσει τις προηγούμενες τιμές του καταχωρητή.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
78 | Σ ε λ ί δ α
Διεπαφή Avalon
Η διεπαφή Avalon για την συνιστώσα PWM απαιτεί μία θύρα slave χρησιμοποιώντας ένα μικρό σύνολο σημάτων Avalon για τον χειρισμό απλές μεταφορές εγγραφής και ανάγνωσης στους καταχωρητές. Η συνιστώσα της θύρας Avalon slave έχει τα εξής χαρακτηριστικά: ■ Είναι σύγχρονη στον χρονιστή θύρας Avalon slave. ■ Είναι αναγνώσιμη και εγγράψιμη. ■ Έχει καταστάσεις μηδενικής αναμονής για εγγραφή και ανάγνωση επειδή οι καταχωρητές είναι ικανοί να ανταποκριθούν σε μεταφορές σε ένα ωρολογιακό κύκλο. ■ Δεν έχει ρύθμιση ή περιορισμούς αναμονής για την ανάγνωση και τη εγγραφή. ■ Η καθυστέρηση ανάγνωσης δεν είναι απαραίτητη, διότι όλες οι μεταφορές μπορούν να ολοκληρωθούν σε έναν κύκλο ρολογιού. Η καθυστέρηση ανάγνωσης δεν βελτιώνει την απόδοση. ■ Χρησιμοποιεί εγγενή ευθυγράμμιση των διευθύνσεων, επειδή η θύρα slave συνδέεται με καταχωρητές και όχι σε συσκευή μνήμης.
API Λογισμικού
Το παράδειγμα σχεδίου παρέχει ένα αρχείο επικεφαλίδων που ορίζει την χαρτογράφηση των καταχωρητών και τους οδηγούς λογισμικού για τον επεξεργαστή Nios II.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
79 | Σ ε λ ί δ α
Παραμετροποίηση συστήματος NIOS II (SOPC Builder)
Το σύστημα όπου δημιουργήθηκε στο προηγούμενο κεφάλαιο παραμετροποιείται όπως
παρουσιάζεται στην εικόνα. Παρατηρείτε ότι έχουν προστεθεί τα αντίστοιχα pin
εισόδου/εξόδου για την επιτυχή σύνδεση με την γέφυρα L293NE και τον encoder U.S. E4P.
Επίσης προστέθηκαν οι οδηγοί για υποστήριξη οθόνης γραφικών με τις κατάλληλες
ρυθμίσεις.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
80 | Σ ε λ ί δ α
Αναθεώρηση στοιχείου top-level design file στο Quartus II(BDF)
Δεξί κλικ στο σχέδιο του επεξεργαστή > Update Symbol or Block…
Μετά την επιτυχή αναθεώρηση του σχεδίου του επεξεργαστή πρέπει να αναθέσουμε
νέους οδηγούς-ακίδες για την επικοινωνία του σχεδίου με την συσκευή.
Δεξί κλικ στο σχέδιο του επεξεργαστή > Generate Pins for Symbol Ports…
Για την αποκωδικοποίηση των σημάτων που προέρχονται από τον encoder θα
χρησιμοποιηθεί ένας αποκωδικοποιητής/μετρητής ανάλυσης X4 όπου θα καταμετρά τις
θετικές και αρνητικές ακμές των κυματομορφών που προέρχονται από τον US E4P
encoder.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
81 | Σ ε λ ί δ α
Στην εικόνα παρουσιάζεται το σχέδιο του αποκωδικοποιητή/μετρητή και η
σύνδεση με τον επεξεργαστή NIOS II.
NIOS II Pin Assignment (Pin Planner, Quartus II)
Μετά από την δημιουργία των οδηγών του συστήματος θα πρέπει να ανατεθούν σε
πραγματικές ακίδες του FPGA.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
82 | Σ ε λ ί δ α
Project Compilation-Report (Quartus II)
Με την ολοκλήρωση των αναθέσεων είμαστε σε θέση να μεταφράσουμε το σχέδιο.
Στην επόμενη εικόνα παρουσιάζεται η επιτυχής μεταγλώττιση του σχεδίου.
Ο προγραμματισμός της συσκευής πραγματοποιείται μέσω της εφαρμογής programmer
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
83 | Σ ε λ ί δ α
Έναρξη εφαρμογής NIOS II Software Build Tools for eclipse
Για τον προγραμματισμό του επεξεργαστή πραγματοποιείται η εκκίνηση του περιβάλλοντος NIOS II Software Build Tools for eclipse και η δημιουργία νέου αρχείου NIOS II Application και BSP from template.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
84 | Σ ε λ ί δ α
Ρυθμίσεις του Board Support Package και της εφαρμογής
Στην σελίδα του BSP Editor πραγματοποιούνται οι κατάλληλες ρυθμίσεις και
έλεγχοι για πιθανές αστοχίες αναγνώρισης υλικού.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
85 | Σ ε λ ί δ α
Τεχνικές μετρήσεων RPM
Στην ενότητα αυτή περιγράφονται οι μέθοδοι για την μέτρηση της ταχύτητας περιστροφής ενός άξονα σε περιστροφές ανά λεπτό (RPM). Οι μετρήσεις των RPM είναι σημαντικές όταν ελέγχεται ή παρακολουθείται η ταχύτητα κινητήρων, τουρμπίνων κλπ. Αισθητήρες για μέτρηση των RPM Ένας αισθητήρας είναι απαραίτητος για την μέτρηση της ταχύτητας του άξονα. Τυπικές συσκευές που χρησιμοποιούνται για αυτόν τον σκοπό είναι οι αποκωδικοποιητές άξονα ( γεννήτριες παλμών περιστροφής),αισθητήρες απόστασης και φωτοηλεκτρικοί αισθητήρες. Κάθε συσκευή από αυτές στέλνει τα δεδομένα ταχύτητας στην μορφή παλμών. Δύο παράγοντες επηρεάζουν την ποιότητα των δεδομένων αυτών: • Ο αριθμός των παλμών κάθε περιστροφής του άξονα (Pulses Per Revolution-PPR) Υψηλότερες τιμές PPR αποδίδουν καλύτερη ανάλυση. • Συμμετρία των παλμών. Η συμμετρία ενός παλμού με τον επόμενο μπορούν να παίξουν σημαντικό ρόλο στην συνέπεια αναγνωσιμότητας των RPM. Οι συμμετρικοί παλμοί μπορούν να παρέχουν πιο ακριβείς δεδομένα. Κωδικοποιητές (Encoders) Οι κωδικοποιητές αιχμής είναι η καλύτερη λύση για τις συσκευές μετρήσεων. Προσφέρουν υψηλή ανάλυση ( συνήθως 1 με 5000 PPR) και παρέχουν συμμετρικούς παλμούς. Ωστόσο μερικές φορές δεν είναι εφικτό να τεθεί υπό παρακολούθηση ένας κωδικοποιητής σε έναν άξονα. Αισθητήρες απόστασης Οι αισθητήρες απόστασης παρέχουν μεσαία ή χαμηλή ανάλυση που εξαρτάται από τον αριθμό των παλμών που μετράται σε κάθε περιστροφή. Οι καλύτερες μέθοδοι για την χρήση αισθητήρων απόστασης είναι να αντιλαμβάνονται τη οδοντωτή πλευρά ενός γραναζιού. Αυτός ο τύπος του αισθητήρα έχει συνήθως την επιλογή για 60,120 ή 240 PPR και οι παλμοί είναι σχετικά καθαροί και συμμετρικοί. Φωτοηλεκτρικοί αισθητήρες Οι φωτοηλεκτρικοί αισθητήρες συνήθως παρέχουν χαμηλή ανάλυση, λόγο του μετρήσιμου αριθμού παλμών ανά περιστροφή. Ένας φωτοηλεκτρικός αισθητήρας αντιλαμβάνεται έναν αντανακλώμενο στόχο στον άξονα. Εάν περισσότερος από ένας στόχος χρησιμοποιείται για να αυξήσει την μέτρηση των PPR,τότε η συμμετρία από τον έναν παλμό στον άλλο είναι χαμηλής ποιότητας. Αντιστοίχιση ανάλυση αισθητήρα ταχύτητας σε άξονα Κατά την επιλογή των αισθητήρων, βεβαιωθείτε ότι η ανάλυση του αισθητήρα είναι κατάλληλη για την ταχύτητα του άξονα. Για παράδειγμα, εάν χρησιμοποιείτε ένα 5000-PPR κωδικοποιητή σε ένα ταχέως κινούμενο άξονα, οι παλμοί που προκύπτουν μπορεί να υπερβαίνουν τη μέγιστη συχνότητα εισόδου του συστήματος, προκαλώντας ανακριβείς αναγνώσεις.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
86 | Σ ε λ ί δ α
Μέθοδοι για τον προσδιορισμό των RPM
Θα παρουσιαστούν δύο μέθοδοι για τον καθορισμό των RPM: Η μέθοδος μέτρησης Συχνότητας και η μέθοδος μέτρησης Περιόδου. Η μέτρηση Συχνότητας είναι καλύτερη για γρήγορες συσκευές όπως κινητήρες και τουρμπίνες που τυπικά περιστρέφονται με χιλιάδες περιστροφές ανά λεπτό. Η μέτρηση Περιόδου είναι καλύτερη για συσκευές που κινούνται βραδύτερα όπως άξονες που περιστρέφονται λιγότερο από 10 RPM. Λύσεις μετρήσεων υψηλών PPR χρησιμοποιώντας την μέθοδο μέτρησης συχνότητας Υψηλές μετρήσεις PPR θεωρούνται τουλάχιστον τα 60 PPR.
Όταν χρησιμοποιούνται αισθητήρες υψηλών μετρήσεων PPR, όπως κωδικοποιητές άξονα ή αισθητήρες απόστασης που αντιλαμβάνονται το οδοντωτό μέρος του γραναζιού, ο ευκολότερος τρόπος για τον καθορισμό των RPM είναι η παρακολούθηση της συχνότητας των παλμών, ο ευκολότερος τρόπος για τον καθορισμό των RPM είναι η παρακολούθηση της συχνότητας των παλμών στον αισθητήρα χρησιμοποιώντας μια ψηφιακή είσοδο. Για τον υπολογισμό των RPM χρησιμοποιείται η εξίσωση:
Κατανοώντας την μέθοδο μέτρησης συχνότητας Όταν χρησιμοποιείται η μέθοδος μέτρησης συχνότητας για την παρακολούθηση των RPM , ο παράγοντας κλειδί είναι ο αριθμός των παλμών που ανιχνεύονται ανά περιστροφή. Η μέθοδος αυτή λειτουργεί πολύ καλά για αισθητήρες PPR υψηλών μετρήσεων και λειτουργεί φτωχά για αισθητήρες χαμηλών PPR μετρήσεων.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
87 | Σ ε λ ί δ α
Προγραμματισμός συστήματος και επεξήγηση λειτουργίας
Στην εικόνα παρατηρούμε την συνάρτηση για τον υπολογισμό των RPM και στην
συνέχεια τον υπολογισμό του PID διακριτού χρόνου με έξοδο τροποποιημένη σε
PWM.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
88 | Σ ε λ ί δ α
VGA Core
Επισκόπηση του πυρήνα Ο πυρήνας VGA οδηγεί τα σήματα που χρειάζονται από τον VGA ψηφιακό σε αναλογικό
μετατροπέα (DAC), ο οποίος μετατρέπει τα σήματα εξόδου σε σήματα συμβατά με οθόνη
VGA. Ο πυρήνας VGA υποστηρίζει είσοδο pixel και χαρακτήρων. Απλοποιεί σε μεγάλο
βαθμό την επικοινωνία με τον VGA DAC. Οι χρήστες μπορούν εύκολα να ενσωματώσουν την
συνιστώσα VGA σε ένα σχέδιο SOPCδιαμέσου της εφαρμογής SOPC Builder
Περιγραφή λειτουργίας Ο πυρήνας VGA παράγει τα σήματα χρονισμού που χρειάζεται η VGA οθόνη,
περιλαμβάνοντας οριζόντια και κάθετα σήματα συγχρονισμού. Οι πληροφορίες χρονισμού
που παράγονται από τον πυρήνα VGA παράγουν ανάλυση οθόνης 640×480 εικονοστοιχείων
σε ρυθμό ανανέωσης 60 frames per second. Για να παραχθούν οι πληροφορίες χρονισμού
σωστά ένας χρονιστής 25 MHz χρειάζεται να παρέχετε στον πυρήνα VGA. Ο χρονιστής
αυτός αναφέρεται ως εσωτερικός χρονιστής του VGA. Επιπροσθέτως ένας ακόμα χρονιστής
σήματος 25MHz, με διαφορά φάσης 180 συνδέεται στον εσωτερικό χρονιστή του VGA.
Χρειάζεται να συνδεθεί στον μετατροπέα VGA DAC της πλακέτας DE2/DE1 Boards διαμέσου
της ακίδας VGA_CLK. Ο πυρήνας VGA λειτουργεί στην ταχύτητα 25 MHz, οι θύρες slave του
πυρήνα VGA λειτουργούν στην ταχύτητα 50MHz.
Διαμέσου του πυρήνα VGA παράγονται εικόνες με ανάλυση μόνο 640×480 εικονοστοιχείων,
μικρότερες εικόνες υποστηρίζονται. Για να επιτευχθούν μικρότερες αναλύσεις ο πυρήνας
VGA αναπαράγει τις πληροφορίες εικονοστοιχείων στα γειτονικά εικονοστοιχεία για να
επιτύχει την πραγματική ανάλυση 640×480. Ο πυρήνας VGA υποστηρίζει μία λειτουργία
χαρακτήρων επιπροσθέτως της λειτουργίας εικονοστοιχείων.
Ο πυρήνας VGA χρησιμοποιεί το SRAM chip στο DE2/DE1 ως πλαίσιο εικονοστοιχείων και
χρησιμοποιεί on-chip μνήμη ως πλαίσιο χαρακτήρων.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
89 | Σ ε λ ί δ α
Καταστάσεις απεικόνισης VGA Ο πυρήνας VGA μπορεί να υποστηρίξει τρείς λειτουργίες καταστάσεων απεικόνισης:
κατάσταση εικονοστοιχείων, κατάσταση χαρακτήρων και κατάσταση επικάλυψης
χαρακτήρων. Οι καταστάσεις εικονοστοιχείων και χαρακτήρων έχουν τις δικές του διεπαφές
Avalon slave, avalon_pixel_slave και avalon_character_slave, αντίστοιχα. Αυτές οι διεπαφές
παρουσιάζουν δύο επίπεδες, συνεχούς μνήμης χώρους όσης χωρητικότητας χρειάζεται για
να συγκρατήσει την επιλεγμένη ανάλυση. Έτσι οι διεπαφές Avalon συμπεριφέρονται ως
απλές διεπαφές μνήμης, εκτός σε περίπτωση όπου η λειτουργία back buffering είναι
ενεργοποιημένη. Δεν υπάρχουν καταχωρητές ελέγχου χαρτογραφημένης μνήμης σε καμία
από τις δύο διεπαφές Avalon. Στην κατάσταση επικάλυψης χαρακτήρων και οι δύο
καταστάσεις (εικονοστοιχείων και χαρακτήρων) είναι ενεργοποιημένες έτσι ώστε οι
χαρακτήρες να τυπώνονται επάνω στην εικόνα των εικονοστοιχείων.
Προγραμματίζοντας τον πυρήνα VGA
Ο πυρήνας VGA περιέχει συναρτήσεις γλώσσας προγραμματισμού-C υποστηρίξιμες μέσω
τις παραγόμενες βιβλιοθήκες από το SOPC Builder software development kit (SDK).
Οι συναρτήσεις αυτές υλοποιούν βασικές λειτουργίες όπου ο χρήστης χρειάζεται να
εκτελέσει σε σχέση με τον πυρήνα VGA. Όταν χρησιμοποιείται η εφαρμογή Altera Debug
Client, οι συναρτήσεις αυτές παρέχονται αυτόματα για χρήση σε εφαρμογές με C.
Για την χρήση των συναρτήσεων αυτών ο κώδικας C πρέπει να περιέχει την εξής δήλωση:
#include "alt_up_vga.h"
Πίνακας Χρωμάτων RGB Color Ο ακόλουθος πίνακας παρουσιάζει την χρωματική σύνθεση RGB που χρησιμοποιείται
ευρέως. Σημειώστε ότι οι τιμές των χρωμάτων σε RGB έχουν εύρος από 0 έως 255.
Ωστόσο χρησιμοποιώντας τον πυρήνα VGA, οι χρήστες μπορεί να χρειαστεί να καθορίσουν
το εύρος τιμών σε σχέση με διαφορετικό χρωματικό μοντέλο.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
90 | Σ ε λ ί δ α
Σχεδίαση καμπύλης ροπής κινητήρα σε οθόνη VGA και έλεγχος
Συνάρτηση plot_RPM για σχεδίαση της τρέχουσας τιμής RPM στην οθόνη VGA.
Στην εικόνα παρουσιάζεται η σχεδίαση καμπύλης ροπής του κινητήρα από το
DE1/Cyclone II με τρεις αλλαγές ανά 20’’ και ρύθμιση από τον ελεγκτή PID
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
91 | Σ ε λ ί δ α
Πλακέτα τυπωμένου κυκλώματος (Printed Circuit Board PCB )
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
92 | Σ ε λ ί δ α
Παράρτημα Α’ 3ου Κεφαλαίου
Nios II - Κώδικας σε C – Υλοποίηση PID για έλεγχο στροφών
βηματικού κινητήρα και σχεδίαση σε οθόνη VGA
dc motor control
/*******************************************************************/
/* Copyright © 2013 Nikolaou Panayiotis, DC Motor Control
*/
/*******************************************************************/
//Includes
#include "altera_avalon_timer_regs.h"
#include "altera_avalon_pio_regs.h"
#include <io.h>
#include "altera_avalon_pwm_regs.h"
#include "altera_avalon_pwm_routines.h"
#include "system.h"
#include <stdio.h>
#include "sys/alt_alarm.h"
#include "sys/alt_timestamp.h"
#include "alt_types.h"
#include <unistd.h>
#include <math.h>
#include "sys/alt_irq.h"
#include "chu_avalon_gpio.h"
#include "chu_avalon_vga.h"
#include <stdlib.h>
//Function Protypes
void print_error(unsigned int address, int return_code);
void check_return_code(unsigned int address, int return_code);
int initRPM=0;
char IRPM[4],SRPM[4];
int set_rpm=3100; // MAX 3350
int srpm;
int i=100;
float xpl =40.0;
float ypl, step;
int prx=0,pry=300;
void plot_RPM(alt_u32 vga_base,int rpm,int duty){
const float XMAX=5.0; // max range of x-axis
const float YMAX=5.0; // max range of y-axis
int j;
step = XMAX / (float)(DISP_GRF_X_MAX);
xpl = xpl + step;
ypl = 0.001 * rpm;
if(xpl>600){
int x=40,y=80;
vga_clr_screen(VRAM_BASE,0xff);
for(x=0; x<40; x++)
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
93 | Σ ε λ ί δ α
for(y=0; y<480; y++)
vga_wr_pix(VRAM_BASE, x, y, 0x3B);
for(x=600; x<640; x++)
for(y=0; y<480; y++)
vga_wr_pix(VRAM_BASE, x, y, 0x3B);
for(x=0; x<640; x++)
for(y=0; y<80; y++)
vga_wr_pix(VRAM_BASE, x, y, 0x3B);
for(x=0; x<640; x++)
for(y=400; y<480; y++)
vga_wr_pix(VRAM_BASE, x, y, 0x3B);
x=40,y=80;
while(y<=400){
vga_plot_line(VRAM_BASE,x,y,DISP_GRF_X_MAX-40,y,0x1c);
y+=10;
}
x=40,y=80;
while(x<=600){
vga_plot_line(VRAM_BASE,x,y,x,DISP_GRF_Y_MAX-80,0x1c);
x+=10;
}
x=40,y=45;
vga_plot_line(VRAM_BASE,x,y,DISP_GRF_X_MAX-40,y,0x44);
vga_plot_line(VRAM_BASE,x,45,x,DISP_GRF_Y_MAX-40,0x44);
vga_plot_line(VRAM_BASE,DISP_GRF_X_MAX-40,45,DISP_GRF_X_MAX-
40,DISP_GRF_Y_MAX-40,0x44);
vga_plot_line(VRAM_BASE,x,DISP_GRF_Y_MAX-40,DISP_GRF_X_MAX-
40,DISP_GRF_Y_MAX-40,0x44);
sprintf(SRPM,"%i",set_rpm);
vga_wr_bit_str(VRAM_BASE,280,55,"SET RPM:",0x44,1);
vga_wr_bit_str(VRAM_BASE,345,55,SRPM,0x03,1);
vga_wr_bit_str(VRAM_BASE,140,410,"Time elapsed:",0x44,1);
vga_wr_bit_str(VRAM_BASE,360,410,"Duty Cycle :",0x44,1);
vga_wr_bit_str(VRAM_BASE,45,410,"Status:",0x22,1);
vga_wr_bit_str(VRAM_BASE,100,55,"Initial RPM:",0x44,1);
sprintf(IRPM,"%i",initRPM);
vga_wr_bit_str(VRAM_BASE,200,55,IRPM,0x03,1);
vga_wr_bit_str(VRAM_BASE,20,20,"FPGA Controls Systems",0x00,1);
vga_wr_bit_str(VRAM_BASE,400,55,"RPM:",0x44,1);
xpl=40.0;
}
if (ypl < YMAX){ // plot if only y is in range
j = DISP_GRF_Y_MAX-(ypl/YMAX)*DISP_GRF_Y_MAX;
vga_wr_pix(vga_base, xpl++, j, 0x00);
}
}
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
94 | Σ ε λ ί δ α
int numRevsMotor=0;
volatile int edge_capture;
void write_pixel(int x, int y, short colour) {
volatile short *vga_addr=(volatile short*)(0x08000000 + (y<<10) +
(x<<1));
*vga_addr=colour;
}
alt_u8 sseg_32conv_hex(int hex)
{
/* active-low hex digit 7-seg patterns (0-9,a-f); MSB ignored */
static const alt_u8 SSEG_HEX_TABLE[16] = {
0x40, 0x79, 0x24, 0x30, 0x19, 0x92, 0x02, 0x78, 0x00, 0x10, //0-9
0x88, 0x03, 0x46, 0x21, 0x06, 0x0E}; //a-f
alt_u8 ptn;
if (hex < 16)
ptn = SSEG_HEX_TABLE[hex];
else
ptn = 0xff;
return (ptn);
}
int main(void){
char *strduty;
vga_clr_screen(VRAM_BASE,0xff);
volatile int duty_cycle;
int return_code = ALTERA_AVALON_PWM_OK;
//Initialize PWM and Check Return Code
return_code = altera_avalon_pwm_init(Z_PWM_0_BASE, 500000, 1);
check_return_code(Z_PWM_0_BASE, return_code);
//Enable PWM and Check Return Code
return_code = altera_avalon_pwm_enable(Z_PWM_0_BASE);
check_return_code(Z_PWM_0_BASE, return_code);
//init duty_cycle with the value written to duty_cycle register
during initialization
duty_cycle = IORD_ALTERA_AVALON_PWM_DUTY_CYCLE(Z_PWM_0_BASE);
altera_avalon_pwm_disable(Z_PWM_1_BASE);
IOWR_ALTERA_AVALON_PIO_DATA(HBRIDGE_ENABLE_BASE,1);
duty_cycle = 10; // ( 1 - 100000 )
return_code =
altera_avalon_pwm_change_duty_cycle(Z_PWM_0_BASE, duty_cycle);
check_return_code(Z_PWM_0_BASE, return_code);
int first_val, second_val;
int intit_pulse_val,final_pulse_val;
int RPM;
srpm=set_rpm;
float Error_term=0, P_Term=0, I_Term=0, D_Term=0, D_State=0,
I_Gain=5, P_Gain=15, D_Gain=2;
int x,y;
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
95 | Σ ε λ ί δ α
// --------- Σχεδιασμός ορθογωνίων ---------- //
for(x=0; x<40; x++)
for(y=0; y<480; y++)
vga_wr_pix(VRAM_BASE, x, y, 0x3B); //3b
for(x=600; x<640; x++)
for(y=0; y<480; y++)
vga_wr_pix(VRAM_BASE, x, y, 0x3B);
for(x=0; x<640; x++)
for(y=0; y<80; y++)
vga_wr_pix(VRAM_BASE, x, y, 0x3B);
for(x=0; x<640; x++)
for(y=400; y<480; y++)
vga_wr_pix(VRAM_BASE, x, y, 0x3B); //DA ,r 0x03
// ----------- Επικεφαλίδες ---------------//
vga_wr_bit_str(VRAM_BASE,20,20,"ZNUC II - CYCLONE II PID MOTOR
CONTROL SYSTEM",0x00,1);
vga_wr_bit_str(VRAM_BASE,400,55,"RPM:",0x44,1);
// ----------- Σχεδιασμός πλεγματος ------//
x=40,y=80;
while(y<=400){
vga_plot_line(VRAM_BASE,x,y,DISP_GRF_X_MAX-40,y,0x1c);
y+=10;
}
x=40,y=80;
while(x<=600){
vga_plot_line(VRAM_BASE,x,y,x,DISP_GRF_Y_MAX-80,0x1c);
x+=10;
}
// --------------- Περίγραμμα πλαισίου ----------------//
x=40,y=45;
vga_plot_line(VRAM_BASE,x,y,DISP_GRF_X_MAX-40,y,0x44);
vga_plot_line(VRAM_BASE,x,45,x,DISP_GRF_Y_MAX-40,0x44);
vga_plot_line(VRAM_BASE,DISP_GRF_X_MAX-40,45,DISP_GRF_X_MAX-
40,DISP_GRF_Y_MAX-40,0x44);
vga_plot_line(VRAM_BASE,x,DISP_GRF_Y_MAX-40,DISP_GRF_X_MAX-
40,DISP_GRF_Y_MAX-40,0x44);
// ----------------- Επικεφαλιδες ---------------------//
vga_wr_bit_str(VRAM_BASE,140,410,"Time elapsed:",0x44,1);
vga_wr_bit_str(VRAM_BASE,360,410,"Duty Cycle :",0x44,1);
vga_wr_bit_str(VRAM_BASE,45,410,"Status:",0x22,1);
vga_wr_bit_str(VRAM_BASE,100,55,"Initial RPM:",0x44,1);
int previous_duty=0;
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
96 | Σ ε λ ί δ α
while(1){
second_val = 0;
sprintf(SRPM,"%i",set_rpm);
vga_wr_bit_str(VRAM_BASE,280,55,"SET RPM:",0x44,1);
vga_wr_bit_str(VRAM_BASE,345,55,SRPM,0x03,1);
// ------ RMP computation in 0.1 sec delay ---- //
first_val = alt_nticks();
intit_pulse_val = IORD_32DIRECT(VELOCITY_BASE,0);
while((second_val-first_val)<100){ // 0.1 sec
second_val = alt_nticks();
}
final_pulse_val = IORD_32DIRECT(VELOCITY_BASE,0);
numRevsMotor = (final_pulse_val-intit_pulse_val);
RPM = abs((numRevsMotor*600)/1440);
// ------------------------------------------- //
plot_RPM(VRAM_BASE,RPM,RPM);
int xt, yt;
for(xt=460; xt<510; xt++)
for(yt=410; yt<425; yt++)
vga_wr_pix(VRAM_BASE, xt, yt, 0x3B);
for(xt=440; xt<475; xt++)
for(yt=55; yt<75; yt++)
vga_wr_pix(VRAM_BASE, xt, yt, 0x3B);
for(xt=265; xt<295; xt++)
for(yt=410; yt<425; yt++)
vga_wr_pix(VRAM_BASE, xt, yt, 0x3B);
if(srpm!=set_rpm)
{
for(xt=345; xt<380; xt++)
for(yt=55; yt<70; yt++)
vga_wr_pix(VRAM_BASE, xt, yt, 0x3B);
set_rpm=srpm;
}
if(initRPM==0){
sprintf(strduty,"%i",RPM);
vga_wr_bit_str(VRAM_BASE,200,55,strduty,0x03,1);
initRPM=RPM;
}
sprintf(strduty,"%i",RPM);
vga_wr_bit_str(VRAM_BASE,440,55,strduty,0x03,1);
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
97 | Σ ε λ ί δ α
// --------------- PID Computation ----------- //
Error_term = (float)set_rpm - RPM;
P_Term = P_Gain * Error_term;
D_Term = D_Gain * (Error_term - D_State);
D_State = Error_term;
I_Term = I_Term + I_Gain * Error_term;
duty_cycle = duty_cycle - (P_Term + I_Term + D_Term);
// ------------------------------------------ //
return_code =
altera_avalon_pwm_change_duty_cycle(Z_PWM_0_BASE,duty_cycle);
if(return_code==-1) //duty cycle reg must be less than or equal to
clock divider
{
duty_cycle = previous_duty;
return_code =
altera_avalon_pwm_change_duty_cycle(Z_PWM_0_BASE,duty_cycle);
}
check_return_code(Z_PWM_0_BASE, return_code);
sprintf(strduty,"%u32",alt_nticks()/alt_ticks_per_second());
vga_wr_bit_str(VRAM_BASE,265,410,strduty,0x03,1);
vga_wr_bit_str(VRAM_BASE,300,410,"sec",0x44,1);
previous_duty=duty_cycle;
if(alt_nticks()/alt_ticks_per_second()==20){
srpm=3300;
}
if(alt_nticks()/alt_ticks_per_second()==40){
srpm=2900;
}
if(alt_nticks()/alt_ticks_per_second()>=60){
srpm=3400;
}
if(alt_nticks()/alt_ticks_per_second()>=80){
srpm=3200;
}
}
return 0;
}
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
98 | Σ ε λ ί δ α
Κεφάλαιο 4
Κεφάλαιο 4: Υλοποίηση ψηφιακού φίλτρου
διακριτού χρόνου για απομόνωση λευκού
θορύβου σε FPGA Cyclone II
Λογισμικό :
Altera Quartus II v12.0_178sp2 ,
SOPC Builder ,
Nios II v12.0_178sp2 Software Build Tools for Eclipse,
Matlab 2012a
Υλικό :
Altera DE1 Board, PC
Διασυνδέσεις :
RS232
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
99 | Σ ε λ ί δ α
Προγραμματισμός FPGA Cyclone II EP2C2484C7n / DE1
Ο προγραμματισμός τις συσκευής απαιτεί την έναρξη του programmer και ο διακόπτης SW12 στο DE1 να βρίσκεται στην θέση RUN.
Στο κεντρικό μενού εργαλείων Tools Programmer για την εκκίνηση του
Programmer
Επιλέγετε το αρχείο που δημιουργήθηκε με κατάληξη (nios_sys.sof) και πατώντας
το Start το φορτώνετε στην συσκευή.
Από την μπάρα φόρτωσης μπορείτε να ενημερωθείτε για την επιτυχή φόρτωση του
αρχείου στην συσκευή
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
100 | Σ ε λ ί δ α
Πλέον βρίσκεστε σε θέση να προγραμματίσετε την συσκευή με C++,C ή Assembly, μέσω του περιβάλλοντος Nios II Software Build Tools For Eclipse.
Στο κεντρικό μενού εργαλείων Tools Nios II Software Build Tools For Eclipse για
να εκκινήσετε την εφαρμογή Nios II Software Build Tools For Eclipse
Αρχικά επιλέξτε ως τρέχων workspace την διαδρομή του έργου όπου είχατε
καθορίσει
και επιλέξτε το
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
101 | Σ ε λ ί δ α
Ακολούθως ανοίγει η σελίδα περιήγησης διαδρομής του project όπου και την επιλέγεται.
Ρυθμίσεις του Board Support Package και της εφαρμογής
Στον χώρο του Project Explorer Δεξί κλικ Nios II Application and BSP from
Template
Το Board Support Package είναι βιβλιοθήκη συστήματος που περιέχει όλους του οδηγούς για τα περιφερειακά σε μία αναπτυξιακή πλακέτα(π.χ. DE1,DE2) που υποστηρίζονται από τον επιλεγμένο επεξεργαστή Nios II.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
102 | Σ ε λ ί δ α
Στο πλαίσιο Target Hardware Information επιλέξτε το και επιλέξτε ως SOPC
Information File το αρχείο system_0.sopcinfo
Στο πλαίσιο Application Project εισάγετε ως όνομα εφαρμογής : WNF
Στο πλαίσιο Project template επιλέξτε ως template το Hello World
Επιλέξτε το για αποθήκευση και έξοδο
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
103 | Σ ε λ ί δ α
Για να ανοίξετε τον BSP Editor και να διαχειριστείτε τις ρυθμίσεις για τις διεπαφές
που θα χρησιμοποιήσετε και ρυθμίσεις σχετικά με τον επεξεργαστή Nios II που
δημιουργήσατε, στο αρχείο WNF_bsp που εκτελέστε Δεξί κλικ NIOS II BSP
Editor
Η ενέργεια αυτή εμφανίζει την φόρμα του BSP Editor, επιλέξτε ως stdin και stdout την
διεπαφή UART αντί της αρχικής JTAG_UART.
Στην επιλογή Settings αποεπιλέξτε την επιλογή enable_c_plus_plus για να μειωθεί το
μέγεθος του κώδικα που θα ‘κατέβει’ στην συσκευή και εφόσον δεν θα χρησιμοποιήσετε
C++ αλλά C.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
104 | Σ ε λ ί δ α
για να εκτελεστούν οι τροποποιήσεις επιλέξτε το
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
105 | Σ ε λ ί δ α
Δημιουργία σήματος με θόρυβο στο λογισμικό Matlab
Παρατίθεται ο κώδικας με τον οποίο δημιουργείτε το σήμα με θόρυβο στο Matlab
xin=[];
for t=0:0.02:1000
x=1-exp(-0.01*t)+0.1*randn;
xin=[xin [t;x]];
end
εκτελώντας την εντολή δημιουργίας γραφήματος plot γίνετε η σχεδίαση των τιμών του σήματος σε σχέση με τον καθορισμένο χρόνο
plot(xin(1,:),xin(2,:);
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
106 | Σ ε λ ί δ α
Προγραμματισμός συστήματος NIOS
Για την δημιουργία νέας εφαρμογής και νέου αρχείου Board Support Package επιλέγουμε
από το πτυσσόμενο μενού File, τα υπομενού New και Nios II Application and BSP from
Template όπως παρουσιάζεται και στις επόμενες εικόνες.
Στην επόμενη σελίδα παρατίθεται ο κώδικας για τον προγραμματισμό του επεξεργαστή
Nios II.
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
107 | Σ ε λ ί δ α
/* file: UART_fd.c */
#include <stdio.h> // printf
#include <fcntl.h> // open, O_RDWR | O_NONBLOCK
#include <stdlib.h>
#include <unistd.h>
#include <io.h>
#include <system.h>
#include "altera_avalon_uart.h"
#include "altera_avalon_uart_regs.h"
int main ( void )
{
char *buffer;
double dbl;
double y=0;
while(1){
scanf("%s",buffer);
dbl = atof(buffer);
y=0.9994*y+0.0006283*dbl;
sprintf(buffer,"%f",y);
printf("%s\r\n",buffer);
}
return 0;
}
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
108 | Σ ε λ ί δ α
Στο κεντρικό μενού επιλογών της εφαρμογής για να μεταγλωττιστούν οι κώδικες και
από τα δύο αρχεία επιλέξετε Project Build All
Γραφήματα προσομοίωσης συστήματος
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
109 | Σ ε λ ί δ α
Ανάλυση λειτουργίας του ψηφιακού φίλτρου
Το υψηλοπερατό φίλτρο 1ης τάξης έχει συνάρτηση μεταφοράς :
Με μετασχηματισμό Laplace μετατρέπεται στο πεδίο του χρόνου :
Επιλύοντας την διαφορική εξίσωση έχουμε :
και με τους όρους a, b και k να ισχύουν οι σχέσεις:
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
110 | Σ ε λ ί δ α
Παράρτημα Γ’ 4ου Κεφαλαίου
Κώδικας σε C – υλοποίηση φιλτρου για τον NIOS II
#include <stdio.h>
#include <stdlib.h>
int main ( void )
{
char *buffer;
double dbl;
double y=0;
while(1){
scanf("%s",buffer);
dbl = atof(buffer);
y=0.9994*y+0.0006283*dbl;
sprintf(buffer,"%f",y);
printf("%s\r\n",buffer);
}
return 0;
}
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
111 | Σ ε λ ί δ α
Κώδικας συστήματος προσομοίωσης σε Matlab
function fof()
clear all;% clear all previous variables
ser = serial('COM1'); % establish connection between Matlab and COM1
set(ser, 'Terminator','CR/LF'); % set communication string to end on ASCII 13
set(ser, 'BaudRate', 115200);
set(ser, 'DataBits', 8);
set(ser, 'Parity', 'none');
set(ser, 'Timeout', 10);
set(ser, 'StopBits', 1);
fopen(ser); % open the serial port connection
ser.ReadAsyncMode = 'continuous';
readasync(ser);
fprintf('First odrer filter FPGA controller is on-line.\n');
xout=[];
xin=[];
xvar=[];
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
112 | Σ ε λ ί δ α
for t=0:0.02:1000
x=1-exp(-0.01*t)+0.1*randn;
fprintf(ser,num2str(x));
xout =[xout [t;str2double(fscanf(ser,'%s'))]];
xin=[xin [t;x]];
end
save('array.txt','xin','-ASCII');
plot(xin(1,:),xin(2,:),'b',xout(1,:),xout(2,:),'r')
title('First Order Filter');
xlabel('Time');
fclose(ser);
clear ser;
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
113 | Σ ε λ ί δ α
Κοστολόγιο
Α.Α Είδος υλικού Ποσότητα Τιμή Αγοράς
1 Altera DE1 1 180 €
2 12V/1.5Kgm/365RPM 10:1 DC Gear Motor w/ Encoder
1 66 €
3 L293NE HBRIDGE 1 3 €
4 Λοιπά υλικά ( καλώδια,PCB,υγρά) - 15 €
Σύνολο 264 €
Προοπτικές ανάπτυξης
Εφαρμογές Digital signal processing (DSP) όπως audio signal processing, audio
compression, digital image processing, video compression, speech processing,
speech recognition, digital communications, RADAR, SONAR, seismology and
biomedicine.
Εφαρμογές ρομποτικής και αυτοματισμών
Ενδεικτικά παρουσιάζονται κάποια προϊόντα εμπορίου
Miniature Autopilot for a Micro Air Vehicle
http://www.itee.adfa.edu.au/research/details2.php?page_id=409
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
114 | Σ ε λ ί δ α
VPX Boards - Xilinx Virtex-6 FPGAs
http://www.rtcmagazine.com/articles/view/101972
FPGA Robot
http://www.jamesogden.net/2005/04/17/fpga-robot-awarded-bronze-metal-at-
robogames/
Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA
115 | Σ ε λ ί δ α
Βιβλιογραφία
http://www.altera.com/devices/fpga/cyclone2/features/nios2/cy2-cyclone2_nios2.html
http://www.altera.com/devices/fpga/cyclone2/cy2-index.jsp
http://www.altera.com/devices/processor/nios2/ni2-index.html
http://www.altera.com/education/univ/materials/boards/de1/unv-de1-
board.html?GSA_pos=1&WT.oss_r=1&WT.oss=de1
http://www.barrgroup.com/Embedded-Systems/How-To/PWM-Pulse-Width-Modulation
Rapid Prototyping of Digital Systems, Second Edition
Introduction to Quartus
Quartus Reference Manual Vol. 1
Quartus Reference Manual Vol. 2
Quartus Reference Manual Vol. 3
NIOS II Processor Manuals
Ram Megafunction User Guide
Quartus Web Version Software
DE1 CDROM with manuals and design examples
RPM Measurement Techniques
Embedded SoPC Design with Nios II Processor and VHDL Examples
PID Controller Design Approaches – Theory, Tuning and Application to Frontier
Modern Control Technology - Components and Systems
Recommended