Nios II Processor Implementation in Cyclone II FPGAs

115
ΤΕΙ ΚΑΒΑΛΑΣ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Nios II Processor Implementation in Cyclone II FPGAs Υλοποίηση Ελεγκτών PID με τον Επεξεργαστή Nios II σε FPGA ΝΙΚΟΛΑΟΥ ΠΑΝΑΓΙΩΤΗΣ ΕΠΙΒΛΕΠΩΝ: ΔΡ. ΤΣΑΧΟΥΡΙΔΗΣ ΒΑΣΙΛΕΙΟΣ, Α.

Transcript of Nios II Processor Implementation in Cyclone II FPGAs

Page 1: Nios II Processor Implementation in Cyclone II FPGAs

ΤΕΙ ΚΑΒΑΛΑΣ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Nios II Processor Implementation in Cyclone II FPGAs

Υλοποίηση Ελεγκτών PID με

τον Επεξεργαστή Nios II σε

FPGA

ΝΙΚΟΛΑΟΥ ΠΑΝΑΓΙΩΤΗΣ

ΕΠΙΒΛΕΠΩΝ:

ΔΡ. ΤΣΑΧΟΥΡΙΔΗΣ ΒΑΣΙΛΕΙΟΣ, Α.

Page 2: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

2 | Σ ε λ ί δ α

Page 3: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

3 | Σ ε λ ί δ α

‘Όλα τα σήματα και πνευματικά δικαιώματα που χρησιμοποιούνται στο παρόν έγγραφο

είναι ιδιοκτησία του αντίστοιχου ιδιοκτήτη τους.

Οι πληροφορίες από άλλες πηγές αναφέρονται αντίστοιχα.

Διαφορετικά οι πληροφορίες που παρουσιάζονται στην παρούσα έκθεση είναι

αποκλειστικά δουλειά του συγγραφέα.

να ευχαριστήσω:

Την οικογένεια μου για την εμπιστοσύνη και συμπαράσταση τους

Τον Δρ. Τσαχουρίδη Βασίλειο Α. για την υποστήριξη και καθοδήγηση.

Page 4: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

4 | Σ ε λ ί δ α

Περίληψη

Ο σκοπός αυτής της Πτυχιακής Εργασίας είναι να παρουσιάσει την

υλοποίηση του ενσωματωμένου μικροεπεξεργαστή NIOS II για το FPGA

Altera Cyclone II και τις εφαρμογές αυτού του συστήματος: α) στον

αυτόματο έλεγχο κινητήρων συνεχούς ρεύματος με ελεγκτές PID και β)

στην υλοποίηση χαμηλοπερατών (Low-Pass) φίλτρων.

Γραφικές παραστάσεις των πραγματικών αποκρίσεων των συστημάτων

θα παράγονται ώστε να αναλύεται η απόκριση του κάθε συστήματος σε

διακυμάνσεις των τιμών των παραμέτρων του.

Page 5: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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

Page 6: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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

Page 7: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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

Βιβλιογραφία

Page 8: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

8 | Σ ε λ ί δ α

Ο ακόλουθος πίνακας υποδεικνύει τις τυπογραφικές συμβάσεις που χρησιμοποιούνται σε

αυτό το έγγραφο.

Πίνακας 1 - Τυπογραφικές συμβάσεις

Οπτική ένδειξη Έννοια

Α,Β,Γ…. Όλες οι επικεφαλίδες στο έγγραφο παρουσιάζονται με αρχικό κεφαλαίο γράμμα και την μορφοποίηση που

εμφανίζετε στην αριστερή στήλη.

1,2,3… Οι επιγραμματικοί τίτλοι στο έγγραφο παρουσιάζονται με

αρχικό κεφαλαίο γράμμα και την μορφοποίηση που εμφανίζετε στην αριστερή στήλη.

Το εικονίδιο ‘σφαίρα’ χρησιμοποιείται για να υποδείξει

προτάσεις οι οποίες περιγράφουν λειτουργικά σημεία της μεθοδολογίας.

Το εικονίδιο ‘προσοχή’ χρησιμοποιείται για να υποδείξει

προτάσεις στις οποίες πρέπει να δοθεί προσοχή.

Το εικονίδιο ‘επιτυχία’ χρησιμοποιείται για να υποδείξει προτάσεις οι οποίες πιστοποιούν την ολοκλήρωση του

επιτεύξιμου σκοπού.

Page 9: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

9 | Σ ε λ ί δ α

Κεφάλαιο 1

Εισαγωγή στις πεδιακά προγραμματιζόμενες συστοιχίες πυλών (FPGA)

Θεμελιώδη στοιχεία των FPGA

Οι πεδιακά προγραμματιζόμενες συστοιχίες πυλών (FPGA) είναι επαναπρογραμματιζόμενα

chip πυριτίου. Ο συνιδρυτής της εταιρίας Xilinx, Ross Freeman εφηύρε το πρώτο FPGA το

1985. Η υιοθέτηση των FPGA chip σε όλες τις βιομηχανίες οδηγήθηκε από το γεγονός ότι τα

FPGA συνδυάζουν τα καλύτερα τμήματα εφαρμογής συγκεκριμένων ολοκληρωμένων

κυκλωμάτων (ASIC) και συστήματα που βασίζονται σε επεξεργαστή. Τα FPGA παρέχουν

υλικό χρονικής σήμανσης ταχύτητας και αξιοπιστίας, αλλά δεν απαιτούν υψηλούς όγκους

για να δικαιολογήσουν το μεγάλο έξοδο του σχεδίου από προσαρμοσμένα σχέδια εκ των

προτέρων σε συσκευές ASIC.

Τα επαναπρογραμματιζόμενα τσιπ πυριτίου έχουν επίσης την ίδια ευελιξία του λογισμικού

που εκτελείται σε ένα επεξεργαστή-με βάση το σύστημα, αλλά δεν περιορίζεται από τον

αριθμό των διαθέσιμων πυρήνων επεξεργασίας. Σε αντίθεση με τους επεξεργαστές, τα

FPGA είναι πραγματικά παράλληλα από την φύση τους , διαφορετικές λειτουργίες

επεξεργασίας δεν πρέπει να ανταγωνίζονται για τους ίδιους πόρους. Κάθε ανεξάρτητη

διεργασία επεξεργασίας ανατίθεται σε ειδικό τμήμα του τσιπ, και μπορεί να λειτουργήσει

αυτόνομα χωρίς καμία επιρροή από άλλα block λογικής. Ως αποτέλεσμα, η απόδοση ενός

τμήματος της εφαρμογής δεν επηρεάζεται όταν προστίθεται περισσότερη επεξεργασία.

Ένα από τα οφέλη των FPGA σε σχέση με συστήματα βασισμένα σε επεξεργαστή είναι ότι η

λογική της εφαρμογής υλοποιείται σε κυκλώματα υλικού αντί να εκτελέσει πάνω σε ένα

λειτουργικό σύστημα με οδηγούς και στο λογισμικό εφαρμογής.

Page 10: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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.

Page 11: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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

Page 12: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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. Επεξεργαστής για διεπαφή ανθρώπου/μηχανής

Page 13: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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

Page 14: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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.

Page 15: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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.

Page 16: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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

Page 17: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

17 | Σ ε λ ί δ α

Έναρξη λογισμικού Altera Quartus v12.02

Ξεκινήστε το Altera Quartus II όπου είναι η κεντρική εφαρμογή για ανάπτυξη εφαρμογών για το FPGA.

Το εικονίδιο της εφαρμογής είναι το εικονιζόμενο εικονίδιο που παρουσιάζεται παρακάτω.

Εμφανίζετε η σελίδα έναρξης της εφαρμογής

Στο μενού επιλογής , επιλέγουμε την επιλογή File, στο αναδιπλούμενο μενού που

εμφανίζεται επιλέγουμε την επιλογή New Project Wizard για την δημιουργία νέου

project.

Page 18: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

18 | Σ ε λ ί δ α

Η σελίδα που εμφανίζεται κάνει μία εισαγωγή στον οδηγό δημιουργίας project

Στην σελίδα αυτή, καθορίστε την διαδρομή αποθήκευσης και το όνομα του project,

αυτόματα δίνεται το όνομα της οντότητας ανωτέρου επιπέδου το οποίο είναι ίδιο με το όνομα που καθορίσατε για το project.

Page 19: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

19 | Σ ε λ ί δ α

Στην σελίδα αυτή μπορούμε να προσθέσουμε components σε HDL

επιλέξτε το

Family & Device Settings Στην σελίδα αυτή καθορίσουμε την οικογένεια της συσκευής (FPGA)

Family : CycloneII και τον ακριβές τύπο της συσκευής

Name EP2C20F484C7 (αναγράφεται στο FPGA)

Κατόπιν της επιλογής των προαναφερθέντων επιλογών όπως αυτές παρουσιάζονται,

επιλέξτε το

Page 20: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

20 | Σ ε λ ί δ α

EDA ( Electronic Design Automation ) Tools settings

επιλέξτε το

Summary

Η τελική σελίδα μας ενημερώνει για τις προηγούμενες επιλογές μας,

κατόπιν ελέγχου επιλέξτε το

Page 21: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

21 | Σ ε λ ί δ α

Κεντρική σελίδα εφαρμογής Quartus II version 12.0

Έναρξη εφαρμογής SOPC Builder

Στο μενού επιλογής , επιλέγουμε την επιλογή Tools, στο αναδιπλούμενο μενού

που εμφανίζεται επιλέγουμε την επιλογή SOPC Builder

Page 22: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

22 | Σ ε λ ί δ α

Με την εκκίνηση του SOPC Builder εμφανίζεται η φόρμα εισαγωγής ονομασίας του

συστήματος που θα δημιουργήσετε και η επιλογή της γλώσσας περιγραφής υλικού που

αυτό θα μεταφραστεί.

Εισάγετε :

System Name: system_0

Target HDL: Verilog

Το όνομα του συστήματος θα πρέπει να διαφέρει από το όνομα της οντότητας

ανώτερου επιπέδου που καθορίσατε στον οδηγό δημιουργίας project

κατόπιν εισαγωγής ονόματος συστήματος και επιλογής HDL επιλέξτε το

Page 23: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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.

επιλέξτε το

Page 24: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

24 | Σ ε λ ί δ α

Εισαγωγή συνιστώσας Nios II Processor

Από το μενού Library επιλέγουμε την κατηγορία Processors

Nios II Processor

Η ενέργεια αυτή εμφανίζει το πλαίσιο δημιουργίας του NIOS II/core

Page 25: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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

Page 26: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

26 | Σ ε λ ί δ α

Εισαγωγή συνιστώσας SDRAM Controller

Από το μενού Library επεκτείνετε την κατηγορία Memories and Memory Controllers,

επεκτείνετε την υποκατηγορία External Memory Interfaces , προσθέστε την συνιστώσα

SDRAM Controller από την υποκατηγορία SDRAM Interfaces

Σο Preset επιλέξτε την επιλογή Custom και στο πλαίσιο Data width επιλέξτε Bits : 16

επιλέξτε το

Μετά την ολοκλήρωση του οδηγού μετονομάστε σε sdram

Page 27: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

27 | Σ ε λ ί δ α

Εισαγωγή συνιστώσας Interval Timer

επιλέξτε το

Μετά την ολοκλήρωση του οδηγού μετονομάστε σε systimer

Επαναλάβετε την ίδια διαδικασία για την δημιουργία ενός ακόμα Interval Timer

αλλάζοντας την επιλογή Units: από ms σε us όπως παρουσιάζεται στην επόμενη εικόνα

Μετά την ολοκλήρωση του οδηγού μετονομάστε σε stamptimer

Page 28: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

28 | Σ ε λ ί δ α

Δημιουργία συνιστώσας JTAG UART

Αποδεχτείτε τις αρχικές ρυθμίσεις εφόσον συμφωνούν με την ανωτέρω εικόνα

επιλέξτε το

Μετά την ολοκλήρωση του οδηγού μετονομάστε σε jtag_uart

Page 29: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

29 | Σ ε λ ί δ α

Δημιουργία συνιστώσας UART(RS-232 Serial Port)

Αποδεχτείτε τις αρχικές ρυθμίσεις εφόσον συμφωνούν με την ανωτέρω εικόνα

επιλέξτε το

Μετά την ολοκλήρωση του οδηγού μετονομάστε σε uart

Page 30: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

30 | Σ ε λ ί δ α

Δημιουργία συνιστώσας System ID Peripheral

Μετά την ολοκλήρωση του οδηγού μετονομάστε σε sysid

Εάν δεν μετονομαστεί σε sysid δεν μπορεί να αναγνωριστεί η συνιστώσα και κατά

συνέπεια να δοθεί αναγνωριστικό στο σύστημα.

Page 31: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

31 | Σ ε λ ί δ α

Δημιουργία συνιστώσας Avalon ALTPLL

ΣΗΜΕΙΩΣΗ :Το PLL (Phase Locked Loop) το χρησιμοποιούμε διότι η SDRAM λειτουργεί στο

αρνητικό μέτωπο του παλμού χρονισμού και με το PLL δημιουργούμε δύο χρονιστές , έναν

για το σύστημα του επεξεργαστή και έναν για την εξωτερική SDRAM.

Page 32: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

32 | Σ ε λ ί δ α

Επιλέξτε στο αναπτυσσόμενο μενού which device grade will be using ? τον τύπο 7

Εισάγετε την συχνότητα του εισερχόμενου χρονιστή (χρονιστής συστήματος) : 50MHz

επιλέξτε το

Αποεπιλέξτε τις επιλογές

Create an ‘areset’ input to asynchronously reset the PLL Create ‘locked’ output

επιλέξτε το

Page 33: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

33 | Σ ε λ ί δ α

επιλέξτε το

Στην καρτέλα αυτή εισάγετε την συχνότητα του c0 (clock 0 )

Enter output clock frequency : 50.0MHz

επιλέξτε το

Page 34: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

34 | Σ ε λ ί δ α

Η συχνότητα του c1 που θα δημιουργήσει το PLL θα τροφοδοτήσει τον χρονιστή της

SDRAM, εισάγετε στο Clock Phase Shift : -3 ns

μετά την εισαγωγή επιλέξτε το

επιλέξτε το

Page 35: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

35 | Σ ε λ ί δ α

επιλέξτε το για έξοδο από τον οδηγό.

Μετά την ολοκλήρωση του οδηγού μετονομάστε σε pll_nios

ΣΗΜΕΙΩΣΗ: Tο pll δεν μπορεί να έχει ως όνομα altpll γιατί το φορτώνει από την βιβλιοθήκη

Altera ALTPLL σε αυτή την περίπτωση και όχι από την βιβλιοθήκη Megacore IP Library.

Page 36: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

36 | Σ ε λ ί δ α

Μετονομάστε τους τρεις χρονιστές στο πλαίσιο Clock Settings σε

clk50M

clksys

clksdram

Ρυθμίστε το Clock σε όλες τις συνιστώσες πλην του pll_nios να είναι το clksys

Το σύστημα σε αυτό το στάδιο πρέπει να είναι πανομοιότυπο με την εικόνα που ακολουθεί.

Οι τελικές ρυθμίσεις είναι να αναθέσετε την κάθε συνιστώσα στην αρχική της περιοχή

μνήμης και να αναθέσετε αριθμούς προτεραιότητας στις διακοπές.

Οι ενέργειες αυτές επιτυγχάνονται με τις επιλογές από το μενού

System Assign Base Addresses

System Assign Interrupt Numbers

Page 37: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

37 | Σ ε λ ί δ α

Καρτέλα System Generation

Αποθηκεύστε το σύστημα και επιλέξτε

Το μήνυμα SUCCESS SYSTEM GENERATION COMPLETED επιβεβαιώνει την επιτυχή δημιουργία του συστήματος.

Page 38: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

38 | Σ ε λ ί δ α

Επιστρέψτε στο λογισμικό Quartus II και στην καρτέλα Files επιλέξτε τον φάκελο

Files δεξί κλικ Add/Remove Files in Project

επιλέξτε το

Page 39: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

39 | Σ ε λ ί δ α

Επιλέξτε το αρχείο system_0_inst.v και επιλέξτε το

Στο κεντρικό μενού επιλογής File New

Design Files Block Diagram/Schematic File

Page 40: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

40 | Σ ε λ ί δ α

Στο κενό διάγραμμα που ανοίγει , Δεξί κλικ Insert Symbol

Στο αναπτυσσόμενο μενού, κάτω από τον φάκελο Project υπάρχει το σύστημα που

δημιουργήσατε στο SOPC Builder, επιλέξτε το και

επιλέξτε το

Page 41: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

41 | Σ ε λ ί δ α

Από το κεντρικό μενού επιλογής πατήστε FileSave ( το όνομα του αρχείου αυτόματα θα

πρέπει να είναι ίδιο με το όνομα που είχατε θέσει στον αρχικό οδηγό δημιουργίας project )

Δεξί κλικ επάνω στο σύστημα Generate Pins for Symbol Ports

Page 42: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

42 | Σ ε λ ί δ α

Από το κεντρικό μενού Processing Start Start Analysis & Elaboration

Την ενέργεια αυτή την κάνετε για να βρει το Quartus σε ποιές συνιστώσες του

συστήματος έχουν ανατεθεί οδηγοί ώστε να αναθέστε τις πραγματικές ακίδες του

FPGA στο επόμενό βήμα

Με την ολοκλήρωση της διαδικασίας της ανάλυσης δεν θα πρέπει να υπάρχουν

λάθη.

Page 43: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

43 | Σ ε λ ί δ α

Από το κεντρικό μενού επιλέξτε Assignments Pin Planner

Page 44: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

44 | Σ ε λ ί δ α

Η διαδικασία ανάθεσης pins είναι μία διαδικασία που απαιτεί ιδιαίτερη προσοχή.

Παρακάτω παρουσιάζονται οι ακριβείς αναθέσεις των pins που θα πρέπει να εισάγεται.

Το ολοκληρωμένο αρχείο για τις αναθέσεις των ακίδων( pins assignment) που

παρέχει η εταιρία βρίσκεται στον ακόλουθο σύνδεσμο για το DE1.

ftp://ftp.altera.com/up/pub/Altera_Material/9.1/Boards/DE1/DE1.qsf

Μετά την ανάθεση των pins το ολοκληρωμένο σχέδιο στο pin planner θα πρέπει να

παρουσιάζεται παρόμοιο με την επόμενη εικόνα.

Page 45: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

45 | Σ ε λ ί δ α

Μετά την επιτυχή ανάθεση των ακίδων του συστήματος επιλέγουμε από το μενού

Assignments Device

Page 46: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

46 | Σ ε λ ί δ α

επιλέξτε το

Επιλέξτε στο Reserve all unused pins : As input tri-state with weak pull-up

Page 47: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

47 | Σ ε λ ί δ α

Το τελικό βήμα είναι να μεταφραστεί το ολοκληρωμένο σχέδιο, από το κεντρικό μενού

επιλέξτε Processing Start Compilation ή επιλέξτε το

Με την επιτυχή σύνθεση του σχεδίου ενημερώνεστε για την εξέλιξη της σύνθεσης

και στο Flow Summary μπορείτε να ενημερωθείτε για τις ακριβείς λεπτομέρειες

του σχεδίου που δημιουργήσατε.

Ο προγραμματισμός τις συσκευής απαιτεί την έναρξη του programmer και ο διακόπτης SW12 στο DE1 να βρίσκεται στην θέση RUN.

Page 48: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

48 | Σ ε λ ί δ α

Στο κεντρικό μενού εργαλείων Tools Programmer για την εκκίνηση του

Programmer

Επιλέγετε το αρχείο που δημιουργήθηκε με κατάληξη (nios_sys.sof) και πατώντας

το Start το φορτώνετε στην συσκευή.

Page 49: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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

Page 50: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

50 | Σ ε λ ί δ α

Αρχικά επιλέξτε ως τρέχων workspace την διαδρομή του έργου όπου είχατε

καθορίσει

και επιλέξτε το

Στον χώρο του Project Explorer Δεξί κλικ Nios II Application and BSP from

Template

Το Board Support Package είναι βιβλιοθήκη συστήματος που περιέχει όλους του οδηγούς για τα περιφερειακά σε μία αναπτυξιακή πλακέτα(π.χ. DE1,DE2) που υποστηρίζονται από τον επιλεγμένο επεξεργαστή Nios II.

Page 51: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

51 | Σ ε λ ί δ α

Στο πλαίσιο Target Hardware Information επιλέξτε το και επιλέξτε ως SOPC

Information File το αρχείο system_0.sopcinfo

Στο πλαίσιο Application Project εισάγετε ως όνομα εφαρμογής : DCMOTOR

Στο πλαίσιο Project template επιλέξτε ως template το Hello World

Επιλέξτε το για αποθήκευση και έξοδο

Page 52: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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.

Page 53: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

53 | Σ ε λ ί δ α

για να εκτελεστούν οι τροποποιήσεις επιλέξτε το

Page 54: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

54 | Σ ε λ ί δ α

Στο κεντρικό μενού επιλογών της εφαρμογής για να μεταγλωττιστούν οι κώδικες και

από τα δύο αρχεία επιλέξετε Project Build All

Για μεγαλύτερη κατανόηση μετονομάστε το αρχείο hello_world.c σε dcmotor.c

Αντιγράψτε τον κώδικα που παρέχετε στο ‘Παράρτημα Α’ για το dc motor control στο

αρχείο dcmotor.c

Page 55: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

55 | Σ ε λ ί δ α

Στον φάκελο της εφαρμογής εκτελέστε Δεξί κλικ Run As Nios II Hardware

Στην επόμενη εικόνα παρουσιάζεται η επιτυχής λειτουργία του PID με συγκεκριμένες

τιμές για τους όρους kp,ki,kd.

Page 56: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

56 | Σ ε λ ί δ α

Πλέον η βαθμονόμηση του ελεγκτή έγκειται στην κατανόηση και μεταφορά της

κλασσικής θεωρίας ελέγχου σε κώδικα C προσδιορίζοντας τις ακριβείς τιμές για την

επιθυμητή βαθμονόμηση του ελεγκτή.

Page 57: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

57 | Σ ε λ ί δ α

Γραφήματα προσομοίωσης συστήματος

Κατά το γράφημα προσομοίωσης παρατηρούμε την κόκκινη γραμμή όπου

υποδεικνύει την επιθυμητή θέση του κινητήρα και την μπλε γραμμή όπου

παρουσιάζει την απόκριση του συστήματος ελέγχου καθοδηγούμενο από τον

ψηφιακό ελεγκτή PID, την πραγματική θέση του κινητήρα. Η βαθμονόμηση του

ελεγκτή εξαρτάται από τις παραμέτρους(κέρδη) kp, ki, kd του ελεγκτή στο

πρόγραμμα.

Page 58: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

58 | Σ ε λ ί δ α

Ανάλυση λειτουργίας του ελεγκτή PID

Ένας αναλογικός-ολοκληρωτικός-παραγωγικός ελεγκτής (ελεγκτής PID) είναι ένας

γενικός μηχανισμός με ανατροφοδότηση βρόχων ελέγχου που χρησιμοποιείται

ευρέως στα βιομηχανικά συστήματα ελέγχου. Ένας ελεγκτής PID προσπαθεί να

διορθώσει το λάθος μεταξύ μιας μετρημένης μεταβλητής-διαδικασίας

(ProcessValue) και ενός επιθυμητού σημείου λειτουργίας (setpoint) με τον

υπολογισμό και έπειτα την έξοδο μιας διορθωτικής δράσης που μπορεί να ρυθμίσει

τη διαδικασία αναλόγως.

Ο υπολογισμός της εξόδου του ελεγκτή PID (αλγόριθμος) περιλαμβάνει τρεις

ξεχωριστούς όρους. Τον αναλογικό, ολοκληρωτικό και παραγωγικό ορό. Το

αναλογικό κέρδος καθορίζει την αντίδραση στο τρέχον λάθος, το ολοκλήρωμα

καθορίζει την αντίδραση βασισμένη στο άθροισμα των λαθών και η παράγωγος

καθορίζει την αντίδραση βάση του ποσοστού στο οποίο το λάθος έχει αλλάξει. Το

σταθμισμένο ποσό αυτών των τριών ενεργειών χρησιμοποιείται για να ρυθμίσει τη

διαδικασία μέσω ενός στοιχείου ελέγχου όπως η θέση μιας βαλβίδας ελέγχου ή η

παροχή ηλεκτρικού ρεύματος ενός στοιχείου θέρμανσης, κινητήρα κτλ.

Με "το συντονισμό" των τριών σταθερών στον αλγόριθμο ελεγκτών PID, ο PID

μπορεί να παρέχει τη δράση ελέγχου που χρειάζεται για τις συγκεκριμένες

απαιτήσεις της διαδικασίας. Η έξοδος του ελεγκτή μπορεί να περιγράφει από τον

τρόπο της απόκρισης του ελεγκτή σε ένα λάθος, ο βαθμός στον οποίο ο ελεγκτής

κάνει υπερύψωση από το setpoint και το βαθμό των ταλαντώσεων του συστήματος.

Σημειώστε ότι η χρήση του αλγορίθμου PID για τον έλεγχο δεν εγγυάται τον βέλτιστο

έλεγχο του συστήματος.

Μερικές εφαρμογές μπορούν να απαιτήσουν μόνο έναν ή δύο όρους για να

παρέχουν τον κατάλληλο έλεγχο συστημάτων. Αυτό επιτυγχάνεται με τον καθορισμό

του κέρδους των ανεπιθύμητων όρων ελέγχου σε μηδέν. Ένας ελεγκτής PID θα

λέγεται ελεγκτής pi, pd, p ή i ανάλογα με την έλλειψη των αντίστοιχων όρων

ελέγχου. Οι ελεγκτές pi είναι ιδιαίτερα κοινοί, δεδομένου ότι η δράση του

παραγωγικού όρου είναι πολύ ευαίσθητη στο θόρυβο μέτρησης.

Page 59: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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

Page 60: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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).

Page 61: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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;

}

Page 62: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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;

Page 63: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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 του

συστήματος.

Page 64: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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

Page 65: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

65 | Σ ε λ ί δ α

Διάγραμμα ελέγχου κινητήρα

Διάγραμμα ελέγχου συστήματος PID

Page 66: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

66 | Σ ε λ ί δ α

12V/1.5Kg-cm/365RPM 10:1 DC Gear Motor w/ Encoder

Προδιαγραφές προϊόντος

Προδιαγραφές κινητήρα σε μέγιστη απόδοση

Ονομαστικό ρεύμα 2A

Ροπή εξόδου 1.53 Kg/cm

Ισχύς 7W

Ονομαστική Ταχύτητα 365RPM

Page 67: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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

Page 68: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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 χιλιοστών βήματος) σύνδεσης.

Page 69: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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ΕΝ. Όταν οι είσοδοι ενεργοποίησης είναι σε χαμηλή κατάσταση, οι οδηγοί απενεργοποιούνται και οι έξοδοι απενεργοποιούνται επίσης και παραμένουν σε κατάσταση υψηλής αντίστασης. Με τα κατάλληλα δεδομένα εισόδων, κάθε ζεύγος σχηματίζει έναν πλήρως-Η( ή γέφυρα) αναστρέψιμο οδηγό κατάλληλο για εφαρμογές οδήγησης κινητήρων ή ηλεκτρομαγνητικών

βαλβίδων.

Page 70: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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)

Page 71: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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 μπορούν να συνδεθούν σε λογική κυκλώματος εντός ή εκτός της συσκευής. Ο πυρήνας μπορεί να ρυθμιστεί για εισόδους μόνο, εξόδους μόνο ή και τα δύο. Εάν ο πυρήνας χρησιμοποιείται για να ελέγξει αμφίδρομες ακίδες Ι/Ο, ο πυρήνας παρέχει αμφίδρομο έλεγχο με λογική τριών καταστάσεων. Η λογική υλικού είναι ξεχωριστή για ανάγνωση και εγγραφή των καταχωρητών δεδομένων. Η ανάγνωση των καταχωρητών δεδομένων επιστρέφουν την παρούσα τιμή των θυρών εισόδου. Η εγγραφή δεδομένων επηρεάζει την τιμή που οδηγείται στις θύρες εξόδου. Αυτές οι θύρες είναι ανεξάρτητες κατά την ανάγνωση και δεν επιστρέφουν προηγούμενα εγγεγραμμένα δεδομένα

Page 72: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

72 | Σ ε λ ί δ α

Καταχωρητής ανίχνευσης αιχμών Ο πυρήνας PIO μπορεί να ρυθμιστεί να ανιχνεύει αιχμές στις θύρες εισόδου του. Μπορεί να εντοπίσει μετάβαση από χαμηλό σε υψηλό, μετάβαση από υψηλό σε χαμηλό ή και τα δύο. Κάθε φορά που η είσοδος ανιχνεύει αιχμή, η κατάσταση αναγράφεται στον καταχωρητή ανίχνευσης αιχμών. Ο τύπος της αιχμής όπου ανιχνεύτηκε καθορίζεται κατά τον χρόνο εκτέλεσης του συστήματος και δεν μπορεί να τροποποιηθεί δια μέσου των καταχωρητών. Καταχωρητής παραγωγής διακοπών IRQ Ο πυρήνας PIO μπορεί να ρυθμιστεί να παράγει διακοπές υπό ορισμένες συνθήκες. Οι συνθήκες αυτές μπορεί να είναι : ■ Level-sensitive (επιπέδου) - Ο πυρήνας PIO υλικού μπορεί να ανιχνεύσει ένα υψηλό επίπεδο. Μία πύλη NOT μπορεί να συνδεθεί εξωτερικά στον πυρήνα για να παρέχει αρνητική ευαισθησία στα επίπεδα. ■ Edge-sensitive (τύπου αιχμής) – Η ρύθμιση της ανίχνευσης αιχμών του πυρήνα μπορεί να καθορίσει τι τύπος αιχμής θα παράγει μία διακοπή. Οι διακοπές είναι ανεξάρτητες με μάσκα για κάθε είσοδο. Η μάσκα διακοπής μπορεί να καθορίσει ποια είσοδος μπορεί να προκαλέσει διακοπές.

Λογισμικό μοντέλου προγράμματος

Ο πυρήνας PIO συνοδεύεται από ένα αρχείο λογισμικού, το altera_avalon_pio_regs.h. Στο αρχείο αυτό καθορίζονται οι χαρτογραφήσεις των καταχωρητών του πυρήνα, παρέχοντας συμβολικές σταθερές για πρόσβαση σε υλικό χαμηλού επιπέδου.

Ο πυρήνας PIO με θύρες εισόδου & εξόδου & με υποστήριξη διακοπών

Page 73: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

73 | Σ ε λ ί δ α

Εισαγωγή στην Διαμόρφωση εύρους παλμού (Pulse Width

Modulation - PWM)

Η διαμόρφωση εύρους παλμού (PWM) είναι μια ισχυρή τεχνική για τον έλεγχο αναλογικών

κυκλωμάτων με τις ψηφιακές εξόδους του επεξεργαστή. Η τεχνική PWM χρησιμοποιείται σε

μια ευρεία ποικιλία εφαρμογών, που κυμαίνονται από τη μέτρηση και την επικοινωνία με

τον έλεγχο της ισχύς και της μετατροπής.

Αναλογικά ηλεκτρονικά

Ένα αναλογικό σήμα έχει μια συνεχώς μεταβαλλόμενη τιμή, με άπειρη ανάλυση τόσο σε

χρόνο όσο και το μέγεθος. Μία εννέα (9) Volt μπαταρία είναι ένα παράδειγμα μίας

αναλογικής συσκευής, όμως η τάση εξόδου της δεν είναι ακριβώς 9V, και με την πάροδο

του χρόνου μπορεί να λάβει οποιαδήποτε πραγματική αρίθμηση τιμή. Παρομοίως, η

ποσότητα του ρεύματος που λαμβάνεται από μια μπαταρία δεν περιορίζεται σε ένα

πεπερασμένο σύνολο δυνατών τιμών. Τα αναλογικά σήματα είναι πιο ευδιάκριτα από τα

ψηφιακά σήματα, επειδή το ψηφιακά λαμβάνουν πάντα τιμές μόνον από ένα

πεπερασμένο σύνολο προκαθορισμένων τιμών, όπως το σύνολο {0V, 5V}.

Οι αναλογικές τάσεις και τα ρεύματα μπορούν να χρησιμοποιηθούν για να ελέγχουν τα

πράγματα άμεσα, όπως την ένταση ενός ραδιοφώνου αυτοκινήτου. Σε ένα απλό αναλογικό

ραδιόφωνο, ένα κόμβιο συνδέεται με μία μεταβλητή αντίσταση. Καθώς γυρίζετε το κόμβιο,

η τιμή της αντίστασης ανεβαίνει και κατεβαίνει. Καθώς αυτό συμβαίνει, το ρεύμα που ρέει

διαμέσου των αντιστάσεων αυξάνεται ή μειώνεται. Αυτό αλλάζει την ποσότητα του

ρεύματος οδήγησης των ηχείων, έτσι αυξάνοντας ή μειώνοντας την ένταση του ήχου. Ένα

αναλογικό κύκλωμα είναι ένα, όπως το ραδιόφωνο, του οποίου η έξοδος είναι γραμμικά

ανάλογη με την είσοδο της.

Όσο διαισθητικός και απλός μπορεί να φαίνεται ο αναλογικός έλεγχος, δεν είναι πάντα

ελκυστικός από οικονομικής άποψης ή πρακτικός. Για έναν λόγο τα αναλογικά κυκλώματα

τείνουν να αποσυρθούν με την πάροδο του χρόνου και μπορεί, ως εκ τούτου, να είναι πολύ

δύσκολο να συντονιστεί. Τα αναλογικά κυκλώματα ακρίβειας, τα οποία μπορούν να λύσουν

αυτό το πρόβλημα, μπορεί να είναι πολύ μεγάλα και βαριά (απλά σκεφτείτε τους

παλαιότερους εξοπλισμούς στερεοφωνικών) και ακριβά. Τα αναλογικά κυκλώματα

μπορούν επίσης να θερμανθούν πολύ, η διαχεόμενη ενέργεια που είναι ανάλογη προς την

τάση στα άκρα των ενεργών στοιχείων πολλαπλασιάζεται με το ρεύμα μέσω αυτών. Τα

αναλογικό κυκλώματα μπορούν επίσης να είναι ευαίσθητα στο θόρυβο. Λόγω της άπειρης

ανάλυσης τους, η κάθε διατάραξη ή ο θόρυβος για ένα αναλογικό σήμα αλλάζει

αναγκαστικά την τρέχουσα τιμή.

Page 74: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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 σήματα διαφόρων κύκλων

Page 75: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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 βρίσκει εφαρμογή σε μία ποικιλία

συστημάτων.

Page 76: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

76 | Σ ε λ ί δ α

Altera Avalon PWM IP Core

PWM Design Files

Λειτουργικές προδιαγραφές Μία συνιστώσα PWM παράγει ένα τετραγωνικό σήμα με διαμορφωμένο κύκλο λειτουργίας. Μία βασική κυματομορφή φαίνεται στην εικόνα.

Μία συνιστώσα PWM καθορίζεται και δημιουργείται ακολούθως: ■ Η λογική διεργασία λειτουργεί σύγχρονα με ένα χρονιστή. ■ Η λογική διεργασία χρησιμοποιεί μετρητές 32-bit για να παρέχει ένα κατάλληλο εύρος περιόδων PWM και κύκλων λειτουργίας ■ Ο επεξεργαστής είναι υπεύθυνος για την ρύθμιση της τιμής της περιόδου της PWM και την τιμή του κύκλου λειτουργίας. Η απαίτηση αυτή απαιτεί την ανάγκη μίας διεπαφής για εγγραφή/ανάγνωση για τον λογικό έλεγχο. ■ Τα στοιχεία καταχωρητών έχουν καθοριστεί για να συγκρατούν την περίοδο της PWM και την τιμή του ενεργού κύκλου λειτουργίας. ■ TΟ επεξεργαστής μπορεί να σταματήσει την έξοδο PWM χρησιμοποιώντας τον έλεγχο ενεργοποίησης.

Page 77: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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.Κάθε καταχωρητής έχει πρόσβαση ανάγνωσης και εγγραφής, που σημαίνει ότι το λογισμικό μπορεί να διαβάσει τις προηγούμενες εγγεγραμμένες τιμές των καταχωρητών.

Αυτή είναι μια αυθαίρετη επιλογή σχεδιασμού που παρέχει πρακτικότητα του λογισμικού σε βάρος των πόρων του υλικού. Θα μπορούσαν να σχεδιαστούν εξίσου οι καταχωρητές ώστε να είναι προσβάσιμοι μόνο για εγγραφή, σχεδίαση η οποία θα διατηρούσε την χρήση πόρων σε χαμηλά επίπεδα, αλλά καθιστεί αδύνατο για το λογισμικό για να διαβάσει τις προηγούμενες τιμές του καταχωρητή.

Page 78: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

78 | Σ ε λ ί δ α

Διεπαφή Avalon

Η διεπαφή Avalon για την συνιστώσα PWM απαιτεί μία θύρα slave χρησιμοποιώντας ένα μικρό σύνολο σημάτων Avalon για τον χειρισμό απλές μεταφορές εγγραφής και ανάγνωσης στους καταχωρητές. Η συνιστώσα της θύρας Avalon slave έχει τα εξής χαρακτηριστικά: ■ Είναι σύγχρονη στον χρονιστή θύρας Avalon slave. ■ Είναι αναγνώσιμη και εγγράψιμη. ■ Έχει καταστάσεις μηδενικής αναμονής για εγγραφή και ανάγνωση επειδή οι καταχωρητές είναι ικανοί να ανταποκριθούν σε μεταφορές σε ένα ωρολογιακό κύκλο. ■ Δεν έχει ρύθμιση ή περιορισμούς αναμονής για την ανάγνωση και τη εγγραφή. ■ Η καθυστέρηση ανάγνωσης δεν είναι απαραίτητη, διότι όλες οι μεταφορές μπορούν να ολοκληρωθούν σε έναν κύκλο ρολογιού. Η καθυστέρηση ανάγνωσης δεν βελτιώνει την απόδοση. ■ Χρησιμοποιεί εγγενή ευθυγράμμιση των διευθύνσεων, επειδή η θύρα slave συνδέεται με καταχωρητές και όχι σε συσκευή μνήμης.

API Λογισμικού

Το παράδειγμα σχεδίου παρέχει ένα αρχείο επικεφαλίδων που ορίζει την χαρτογράφηση των καταχωρητών και τους οδηγούς λογισμικού για τον επεξεργαστή Nios II.

Page 79: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

79 | Σ ε λ ί δ α

Παραμετροποίηση συστήματος NIOS II (SOPC Builder)

Το σύστημα όπου δημιουργήθηκε στο προηγούμενο κεφάλαιο παραμετροποιείται όπως

παρουσιάζεται στην εικόνα. Παρατηρείτε ότι έχουν προστεθεί τα αντίστοιχα pin

εισόδου/εξόδου για την επιτυχή σύνδεση με την γέφυρα L293NE και τον encoder U.S. E4P.

Επίσης προστέθηκαν οι οδηγοί για υποστήριξη οθόνης γραφικών με τις κατάλληλες

ρυθμίσεις.

Page 80: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

80 | Σ ε λ ί δ α

Αναθεώρηση στοιχείου top-level design file στο Quartus II(BDF)

Δεξί κλικ στο σχέδιο του επεξεργαστή > Update Symbol or Block…

Μετά την επιτυχή αναθεώρηση του σχεδίου του επεξεργαστή πρέπει να αναθέσουμε

νέους οδηγούς-ακίδες για την επικοινωνία του σχεδίου με την συσκευή.

Δεξί κλικ στο σχέδιο του επεξεργαστή > Generate Pins for Symbol Ports…

Για την αποκωδικοποίηση των σημάτων που προέρχονται από τον encoder θα

χρησιμοποιηθεί ένας αποκωδικοποιητής/μετρητής ανάλυσης X4 όπου θα καταμετρά τις

θετικές και αρνητικές ακμές των κυματομορφών που προέρχονται από τον US E4P

encoder.

Page 81: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

81 | Σ ε λ ί δ α

Στην εικόνα παρουσιάζεται το σχέδιο του αποκωδικοποιητή/μετρητή και η

σύνδεση με τον επεξεργαστή NIOS II.

NIOS II Pin Assignment (Pin Planner, Quartus II)

Μετά από την δημιουργία των οδηγών του συστήματος θα πρέπει να ανατεθούν σε

πραγματικές ακίδες του FPGA.

Page 82: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

82 | Σ ε λ ί δ α

Project Compilation-Report (Quartus II)

Με την ολοκλήρωση των αναθέσεων είμαστε σε θέση να μεταφράσουμε το σχέδιο.

Στην επόμενη εικόνα παρουσιάζεται η επιτυχής μεταγλώττιση του σχεδίου.

Ο προγραμματισμός της συσκευής πραγματοποιείται μέσω της εφαρμογής programmer

Page 83: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

83 | Σ ε λ ί δ α

Έναρξη εφαρμογής NIOS II Software Build Tools for eclipse

Για τον προγραμματισμό του επεξεργαστή πραγματοποιείται η εκκίνηση του περιβάλλοντος NIOS II Software Build Tools for eclipse και η δημιουργία νέου αρχείου NIOS II Application και BSP from template.

Page 84: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

84 | Σ ε λ ί δ α

Ρυθμίσεις του Board Support Package και της εφαρμογής

Στην σελίδα του BSP Editor πραγματοποιούνται οι κατάλληλες ρυθμίσεις και

έλεγχοι για πιθανές αστοχίες αναγνώρισης υλικού.

Page 85: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

85 | Σ ε λ ί δ α

Τεχνικές μετρήσεων RPM

Στην ενότητα αυτή περιγράφονται οι μέθοδοι για την μέτρηση της ταχύτητας περιστροφής ενός άξονα σε περιστροφές ανά λεπτό (RPM). Οι μετρήσεις των RPM είναι σημαντικές όταν ελέγχεται ή παρακολουθείται η ταχύτητα κινητήρων, τουρμπίνων κλπ. Αισθητήρες για μέτρηση των RPM Ένας αισθητήρας είναι απαραίτητος για την μέτρηση της ταχύτητας του άξονα. Τυπικές συσκευές που χρησιμοποιούνται για αυτόν τον σκοπό είναι οι αποκωδικοποιητές άξονα ( γεννήτριες παλμών περιστροφής),αισθητήρες απόστασης και φωτοηλεκτρικοί αισθητήρες. Κάθε συσκευή από αυτές στέλνει τα δεδομένα ταχύτητας στην μορφή παλμών. Δύο παράγοντες επηρεάζουν την ποιότητα των δεδομένων αυτών: • Ο αριθμός των παλμών κάθε περιστροφής του άξονα (Pulses Per Revolution-PPR) Υψηλότερες τιμές PPR αποδίδουν καλύτερη ανάλυση. • Συμμετρία των παλμών. Η συμμετρία ενός παλμού με τον επόμενο μπορούν να παίξουν σημαντικό ρόλο στην συνέπεια αναγνωσιμότητας των RPM. Οι συμμετρικοί παλμοί μπορούν να παρέχουν πιο ακριβείς δεδομένα. Κωδικοποιητές (Encoders) Οι κωδικοποιητές αιχμής είναι η καλύτερη λύση για τις συσκευές μετρήσεων. Προσφέρουν υψηλή ανάλυση ( συνήθως 1 με 5000 PPR) και παρέχουν συμμετρικούς παλμούς. Ωστόσο μερικές φορές δεν είναι εφικτό να τεθεί υπό παρακολούθηση ένας κωδικοποιητής σε έναν άξονα. Αισθητήρες απόστασης Οι αισθητήρες απόστασης παρέχουν μεσαία ή χαμηλή ανάλυση που εξαρτάται από τον αριθμό των παλμών που μετράται σε κάθε περιστροφή. Οι καλύτερες μέθοδοι για την χρήση αισθητήρων απόστασης είναι να αντιλαμβάνονται τη οδοντωτή πλευρά ενός γραναζιού. Αυτός ο τύπος του αισθητήρα έχει συνήθως την επιλογή για 60,120 ή 240 PPR και οι παλμοί είναι σχετικά καθαροί και συμμετρικοί. Φωτοηλεκτρικοί αισθητήρες Οι φωτοηλεκτρικοί αισθητήρες συνήθως παρέχουν χαμηλή ανάλυση, λόγο του μετρήσιμου αριθμού παλμών ανά περιστροφή. Ένας φωτοηλεκτρικός αισθητήρας αντιλαμβάνεται έναν αντανακλώμενο στόχο στον άξονα. Εάν περισσότερος από ένας στόχος χρησιμοποιείται για να αυξήσει την μέτρηση των PPR,τότε η συμμετρία από τον έναν παλμό στον άλλο είναι χαμηλής ποιότητας. Αντιστοίχιση ανάλυση αισθητήρα ταχύτητας σε άξονα Κατά την επιλογή των αισθητήρων, βεβαιωθείτε ότι η ανάλυση του αισθητήρα είναι κατάλληλη για την ταχύτητα του άξονα. Για παράδειγμα, εάν χρησιμοποιείτε ένα 5000-PPR κωδικοποιητή σε ένα ταχέως κινούμενο άξονα, οι παλμοί που προκύπτουν μπορεί να υπερβαίνουν τη μέγιστη συχνότητα εισόδου του συστήματος, προκαλώντας ανακριβείς αναγνώσεις.

Page 86: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

86 | Σ ε λ ί δ α

Μέθοδοι για τον προσδιορισμό των RPM

Θα παρουσιαστούν δύο μέθοδοι για τον καθορισμό των RPM: Η μέθοδος μέτρησης Συχνότητας και η μέθοδος μέτρησης Περιόδου. Η μέτρηση Συχνότητας είναι καλύτερη για γρήγορες συσκευές όπως κινητήρες και τουρμπίνες που τυπικά περιστρέφονται με χιλιάδες περιστροφές ανά λεπτό. Η μέτρηση Περιόδου είναι καλύτερη για συσκευές που κινούνται βραδύτερα όπως άξονες που περιστρέφονται λιγότερο από 10 RPM. Λύσεις μετρήσεων υψηλών PPR χρησιμοποιώντας την μέθοδο μέτρησης συχνότητας Υψηλές μετρήσεις PPR θεωρούνται τουλάχιστον τα 60 PPR.

Όταν χρησιμοποιούνται αισθητήρες υψηλών μετρήσεων PPR, όπως κωδικοποιητές άξονα ή αισθητήρες απόστασης που αντιλαμβάνονται το οδοντωτό μέρος του γραναζιού, ο ευκολότερος τρόπος για τον καθορισμό των RPM είναι η παρακολούθηση της συχνότητας των παλμών, ο ευκολότερος τρόπος για τον καθορισμό των RPM είναι η παρακολούθηση της συχνότητας των παλμών στον αισθητήρα χρησιμοποιώντας μια ψηφιακή είσοδο. Για τον υπολογισμό των RPM χρησιμοποιείται η εξίσωση:

Κατανοώντας την μέθοδο μέτρησης συχνότητας Όταν χρησιμοποιείται η μέθοδος μέτρησης συχνότητας για την παρακολούθηση των RPM , ο παράγοντας κλειδί είναι ο αριθμός των παλμών που ανιχνεύονται ανά περιστροφή. Η μέθοδος αυτή λειτουργεί πολύ καλά για αισθητήρες PPR υψηλών μετρήσεων και λειτουργεί φτωχά για αισθητήρες χαμηλών PPR μετρήσεων.

Page 87: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

87 | Σ ε λ ί δ α

Προγραμματισμός συστήματος και επεξήγηση λειτουργίας

Στην εικόνα παρατηρούμε την συνάρτηση για τον υπολογισμό των RPM και στην

συνέχεια τον υπολογισμό του PID διακριτού χρόνου με έξοδο τροποποιημένη σε

PWM.

Page 88: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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 μνήμη ως πλαίσιο χαρακτήρων.

Page 89: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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, οι χρήστες μπορεί να χρειαστεί να καθορίσουν

το εύρος τιμών σε σχέση με διαφορετικό χρωματικό μοντέλο.

Page 90: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

90 | Σ ε λ ί δ α

Σχεδίαση καμπύλης ροπής κινητήρα σε οθόνη VGA και έλεγχος

Συνάρτηση plot_RPM για σχεδίαση της τρέχουσας τιμής RPM στην οθόνη VGA.

Στην εικόνα παρουσιάζεται η σχεδίαση καμπύλης ροπής του κινητήρα από το

DE1/Cyclone II με τρεις αλλαγές ανά 20’’ και ρύθμιση από τον ελεγκτή PID

Page 91: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

91 | Σ ε λ ί δ α

Πλακέτα τυπωμένου κυκλώματος (Printed Circuit Board PCB )

Page 92: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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++)

Page 93: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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);

}

}

Page 94: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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;

Page 95: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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;

Page 96: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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);

Page 97: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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;

}

Page 98: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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

Page 99: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

99 | Σ ε λ ί δ α

Προγραμματισμός FPGA Cyclone II EP2C2484C7n / DE1

Ο προγραμματισμός τις συσκευής απαιτεί την έναρξη του programmer και ο διακόπτης SW12 στο DE1 να βρίσκεται στην θέση RUN.

Στο κεντρικό μενού εργαλείων Tools Programmer για την εκκίνηση του

Programmer

Επιλέγετε το αρχείο που δημιουργήθηκε με κατάληξη (nios_sys.sof) και πατώντας

το Start το φορτώνετε στην συσκευή.

Από την μπάρα φόρτωσης μπορείτε να ενημερωθείτε για την επιτυχή φόρτωση του

αρχείου στην συσκευή

Page 100: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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 την διαδρομή του έργου όπου είχατε

καθορίσει

και επιλέξτε το

Page 101: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

101 | Σ ε λ ί δ α

Ακολούθως ανοίγει η σελίδα περιήγησης διαδρομής του project όπου και την επιλέγεται.

Ρυθμίσεις του Board Support Package και της εφαρμογής

Στον χώρο του Project Explorer Δεξί κλικ Nios II Application and BSP from

Template

Το Board Support Package είναι βιβλιοθήκη συστήματος που περιέχει όλους του οδηγούς για τα περιφερειακά σε μία αναπτυξιακή πλακέτα(π.χ. DE1,DE2) που υποστηρίζονται από τον επιλεγμένο επεξεργαστή Nios II.

Page 102: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

102 | Σ ε λ ί δ α

Στο πλαίσιο Target Hardware Information επιλέξτε το και επιλέξτε ως SOPC

Information File το αρχείο system_0.sopcinfo

Στο πλαίσιο Application Project εισάγετε ως όνομα εφαρμογής : WNF

Στο πλαίσιο Project template επιλέξτε ως template το Hello World

Επιλέξτε το για αποθήκευση και έξοδο

Page 103: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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.

Page 104: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

104 | Σ ε λ ί δ α

για να εκτελεστούν οι τροποποιήσεις επιλέξτε το

Page 105: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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,:);

Page 106: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

106 | Σ ε λ ί δ α

Προγραμματισμός συστήματος NIOS

Για την δημιουργία νέας εφαρμογής και νέου αρχείου Board Support Package επιλέγουμε

από το πτυσσόμενο μενού File, τα υπομενού New και Nios II Application and BSP from

Template όπως παρουσιάζεται και στις επόμενες εικόνες.

Στην επόμενη σελίδα παρατίθεται ο κώδικας για τον προγραμματισμό του επεξεργαστή

Nios II.

Page 107: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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;

}

Page 108: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

108 | Σ ε λ ί δ α

Στο κεντρικό μενού επιλογών της εφαρμογής για να μεταγλωττιστούν οι κώδικες και

από τα δύο αρχεία επιλέξετε Project Build All

Γραφήματα προσομοίωσης συστήματος

Page 109: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική FPGA

109 | Σ ε λ ί δ α

Ανάλυση λειτουργίας του ψηφιακού φίλτρου

Το υψηλοπερατό φίλτρο 1ης τάξης έχει συνάρτηση μεταφοράς :

Με μετασχηματισμό Laplace μετατρέπεται στο πεδίο του χρόνου :

Επιλύοντας την διαφορική εξίσωση έχουμε :

και με τους όρους a, b και k να ισχύουν οι σχέσεις:

Page 110: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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;

}

Page 111: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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=[];

Page 112: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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;

Page 113: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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

Page 114: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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/

Page 115: Nios II Processor Implementation in Cyclone II FPGAs

Συστήματα ελέγχου βασισμένα σε αρχιτεκτονική 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