5. Hardware Φωτορυθμικού

5.1 POWER UNIT

Το τροφοδοτικό του συστήματος παίρνει είσοδο 220V από το δίκτυο της ΔΕΗ και δίνει στην έξοδο 4 επίπεδα τάσης : +5V, -5V, +12V και -12V. Αυτό επιτυγχάνεται ως εξής :

Αρχικά υπάρχουν 2 μετασχηματιστές που δίνουν 5V και 12V αντίστοιχα εναλλασσόμενη τάση. Κατόπιν γίνεται ανόρθωση μέσω μιας γέφυρας ανόρθωσης με διόδους. Ακολούθως υπάρχουν πυκνωτές για εξομάλυνση και έπονται σταθεροποιητές τύπου 7805, 7905, 7812, 7912 οι οποίοι στην έξοδό τους δίνουν σταθεροποιημένες τάσεις αντίστοιχα +5V, -5V, +12V, -12V. Κάθε μια απ' αυτές αργότερα θα χρησιμοποιηθεί για να τροφοδοτήσει κάποιο chip ή το ISA bus.

5.2 ΣΥΣΤΗΜΑ ΚΜΕ - ΜΝΗΜΗΣ (CPU, ROM, RAM)

5.2.1 Γενικά

Χρησιμοποιούμε τον επεξεργαστή Ζ-80Α της Zilog στα 4MHz, το chip 2764 για ROM, το 6164 για RAM, δύο 8K flash RAMS καθώς και ένα αποκωδικοποιητή 74HC138 για chip select.

Οι γραμμές που είναι συνδεμένες στον επεξεργαστή είναι ομαδοποιημένες ως εξής:

Τα σήματα αυτά λειτουργούν κατά τον τρόπο που περιγράφεται στην παράγραφο pin-out του Ζ-80. Ο αποκωδικοποιητής έχει είσοδο τα Α13, Α14 και Α15 του address bus και παράγει το chip select σήμα για καθένα από τα chip μνήμης.

Στη ROM συνδέονται τα εξής σήματα:

Στη RAM συνδέονται τα εξής σήματα :

Σε κάθε FLASH RAM συνδέονται τα εξής σήματα :

Σύμφωνα με το μοντέλο αυτό το σύστημα διαθέτει : 8Κ ROM, 8K RAM και 2x8Κ FLASH RAM. Οταν πρόκειται να γίνει μεταφορά δεδομένων επιλέγεται απ' τη CPU η διεύθυνση μνήμης (τα Α13-Α15 επιλέγουν το chip και τα Α0-Α12 την "εσωτερική" διεύθυνση) καθώς επίσης και το αν θα γίνει read ή write με τα σήματα RD/WR. Οταν η μνήμη είναι έτοιμη και δέν επιστρέφει wait, τότε γίνεται η μεταφορά. Το address bus, το data bus και οι "γραμμές ελέγχου" της ΚΜΕ συνδέουν το τμήμα αυτό (CPU - μνήμη) με τα άλλα τμήματα του υπολογιστή.

5.2.2 PIN-OUT Z-80

Address bus Είναι τα pin Α0-Α15 η θέση των οποίων είναι 30-40 και 1-5. Είναι ο δίαυλος διευθύνσεων. Είναι ενεργά υψηλά σήματα 3ων καταστάσεων.

Data bus Ενεργά υψηλά σήματα τριών καταστάσεων. Αποτελούν ένα διπλής κατεύθυνσης δίαυλο δεδομένων.

BUSACK' (bus acknowledge-pin 23) Ενεργά χαμηλό σήμα εξόδου. Δείχνει στη συσκευή που απαιτεί τον έλεγχο ότι μπορεί να ελέγξει τους διαύλους διευθύνσεων και δεδομένων καθώς και τις γραμμές MREQ', IOREQ', RD', και WR'.

BUSREQ' (bus request-pin 25) Ενεργά χαμηλό σήμα εισόδου. Προέρχεται από μια εξωτερική συσκευή πού ζητά να αποκτήσει τον έλεγχο των διαύλων της ΚΜΕ.

M1' (machine cycle one) Ενεργά χαμηλό σήμα εισόδου. Σε συδυασμό με το MREQ' δείχνει ότι ο παρών κύκλος μηχανής είναι code fetch cycle. Σε συνδυασμό με το IORQ' δείχνει ένα κύκλο interrupt acknowledge.

MREQ' (memory request) Σήμα εξόδου τριών καταστάσεων ενεργά χαμηλό. Δείχνει ότι ο δίαυλος διευθύνσεων κρατάει μια διεύθυνση για λειτουργία διαβάσματος ή γραψίματος στη μνήμη.

IORQ' (input-output request) Σήμα εξόδου τριών καταστάσεων ενεργά χαμηλό. Δείχνει ότι τα 8 less significant bits του address bus περιέχουν μια διεύθυνση περιφεριακής συσκευής για διάβασμα ή γράψιμο σ'αυτή.

RD' (read) Σήμα εξόδου τριών καταστάσεων ενεργά χαμηλό. Δείχνει ότι η ΚΜΕ θέλει να διαβάσει δεδομένα.

WR' (write) Σήμα εξόδου τριών καταστάσεων ενεργά χαμηλό. Δειχνει ότι ο δίαυλος δεδομένων περιέχει δεδομένα προς αποθήκευση.

RFSH' (refresh) Σήμα εξόδου ενεργά χαμηλό. Μαζί με το MREQ' δείχνει ότι τα 7 λιγότερο σημαντικά ψηφία του διαύλου διευθύνσεων μπορούν να χρησιμοποιηθούν σαν refresh address στις δυναμικές μνήμες του συστήματος.

HALT' (halt state) Σήμα εξόδου ενεργά χαμηλό. Δείχνει ότι η ΚΜΕ έχει εκτελέσει μια εντολή σταματήματος και βρίσκεται εν αναμονή κάποιου interrupt.

WAIT' (wait) Σήμα εισόδου ενεργά χαμηλό. Δείχνει στην ΚΜΕ ότι η διευθυνσιοδοτημένη μνήμη ή η περιφεριακή συσκευή δεν είναι έτοιμα για μεταφορά δεδομένων.

INT' (interrupt request) Σήμα εισόδου ενεργά χαμηλό που ενεργοποιείται από περιφερειακές συσκευές.

NMI' (non maskable interrupt) Σήμα εισόδου ενεργά χαμηλό. Εχει μεγαλύτερη προτεραιότητα απ' το ΙΝΤ'. Το σήμα αυτό ελέγχεται στο τέλος της εκτέλεσης κάθε εντολής.

RESET' (reset) Σήμα εισόδου ενεργά χαμηλό. Αρχικοποιεί την ΚΜΕ.

CLK (clock) Μονοφασικό ρολόι MOS level.

+5V, GND Τροφοδοσία +5V και γείωση.

5.3 CLOCK

Η μονάδα χρονισμού του συστήματος δημιουργεί 4 σήματα: 4MHz, 3906,25Hz, 14,318MHz και 4,77MHz. Τα δύο δημιουργούνται με ένα συνηθισμένο κύκλωμα ταλαντωτή NOT πυλών, ενώ τα άλλα δύο με διαίρεση απ' αυτά. Ο παρακάτω πίνακας περιγράφει τη χρήση τους.

4MHz Σύστημα (CPU κ.τ.λ.)
3906.25Hz Σήμα interrupt 1
14,318MHz Για το ISA
4,77MHz Για το ISA

Τα 4MHz διαιρούνται με 2^10 και δίνουν 3906.25Hz, ενώ τα 14,318 MHz διά του 3 και δίνουν 4,77 MHz (με duty cylce 2:1) σύμφωνα με τις προδιαγραφές του ISA.

5.4 BASIC I/O

Το κύκλωμα αυτό περιλαμβάνει το PPI 8255 τον ADC 820 και έναν αποκωδικοποιητή διευθύνσεων.

Ο τελευταίος χρησιμεύει στην διευθυνσιοδότηση των input-output chip του μικροϋπολογιστή. Βασίζεται στην λογική πύλη NAND 74HC4078 και στο PAL 16L8 της AMD. Με κατάλληλο προγραμματισμό του PAL παίρνουμε τα εξής σήματα:

I/O address chip select
$FF00 8255_CS
$FF01 ISA_HIGH
$FF02 ADC820-CS

Το ADC 820 είναι ένας analog to digital converter με τον οποίο παίρνουμε τη στάθμη της μουσικής εισόδου εκτελώντας μία εντολή του τύπου IN A,(HL), με HL=$FF02.

To 8255 χρησιμεύει για την οδήγηση των τεσσάρων 7 segment displays καθώς και για τον έλεγχο των 4 πλήκτρων συστήματος key 0-3. Το A port είναι reserved για μελλοντική επέκταση. Περισσότερες πληροφορίες για το 8255 ακολουθούν παρακάτω.

5.4.1 8255A PARALLEL PERIPHERAL INTERFACE ADAPTER

Διαθέτει 24 ανεξάρτητα προγραμματιζόμενες πόρτες εισόδου - εξόδου χωρισμένες σε δυο ομάδες (Group A και Group B) που λειτουργούν με όλους τους τρόπους Modes 0, 1, 2. H ομάδα Α αποτελείται από τα PA0-PA7, PC4-PC7 και η Β από τα PB0-PB7, PC5-PC0 που προγραμματίζονται ανεξάρτητα σαν είσοδοι ή σαν έξοδοι σε 16 συνδυασμούς και είναι ο βασικός τρόπος λειτουργίας Mode ) που καθιερώνει και η ενεργοποίηση του Reset.

Στον mode 2 επιτυγχάνεται η αμφίδρομη επικοινωνία με λειτουργία Handshaking με οκτώ γραμμές δεδομένων και πέντε γραμμές ελέγχου επικοινωνίας.

Δύο από τους ακροδέκτες του 8255 οι 8 & 9 (Α0, Α1) συνδέονται με το address bus. Οι συνδυασμοί των καταστάσεων αποτελούν την επιλογή μιας από τις πόρτες Α, Β ή C. Ο συνδυασμός αυτών με τις λογικές καταστάσεις των RD' και WR' ορίζουν την λειτουργία κάθε μιας πόρτας αν θα είναι είσοδος ή έξοδος.

Ενας ακόμη ακροδέκτης CS' ενεργοποιεί το ολοκληρωμένο ή το απενεργοποιεί σε tri-state.

Υπάρχει ένας καταχωρητής ελέγχου Control register των 8 bit που η λογική του κατάσταση καθορίζει την λειτουργία εισόδου / εξόδου καθώς και τα modes όλων των Ports A, B και C. Η επιλογή του Control register γίνεται όταν τα Α0=Α1=1 και ότι υπάρχει εκείνη τη στιγμή στο Data bus μπαίνει στον καταχωρητή αυτό. Η ομάδα Β ελέγχεται από τα D0, D1, D2 του Control register με δύο τρόπους επιλογής modes που καθορίζονται από τις καταστάσεις των D5 και D6. Το τελευταίο bit 7 ενεργοποιεί ή απενεργοποιεί την δυνατότητα αλλαγής της επιλογής των modes.

Αναλυτικότερα στο διπλανό σχήμα έχουμε:

5.5 ISA BUS EXTENSION

Το κύκλωμα αυτό είναι και η μεγαλύτερη καινοτομία αυτού του project. Δίνει στον μικροϋπολογιστή με επεξεργαστή Ζ-80, την δυνατότητα να αξιοποιήσει κάρτες που είναι κατασκευασμένες για μία άλλη οικογένεια υπολογιστών, αυτήν του IBM PC. Έτσι είναι δυνατόν να χρησιμοποιούμε έτοιμες κάρτες, που είναι άφθονες στην αγορά και έχουν καλό παράγοντα απόδοση/κόστος.

Το 8-bit ISA bus εξομοιώνεται μόνο ως προς τις δυνατότητες που μας ενδιαφέρουν, δηλαδή την προσαρμογή σειριακών & παραλληλίας καρτών, και συγκεκριμένα δεν περιλαμβάνει τα εξής:

Ας δούμε αναλυτικά πώς γίνεται η προσαρμογή:

Σε γενικές γραμμές πρέπει να παρατηρήσουμε ότι το σχήμα αυτό θα μας εξυπηρετήσει στο να προσαρμόσουμε μία multi-I/O κάρτα στο μηχάνημά μας και να βρούμε:

ADDRESS PORT INT.
$3F8-$3FF COMM1 4
$2F8-$2FF COMM2 3
$378-$37A LPT1 -

Είναι ευνόητη η ευελιξία που δίνει ο δίαυλος ISA στον μικροϋπολογιστικό σύστημα.

5.5.1 Προδιαγραφές 8-bit ISA BUS

Το ISA έχει τις εξής ομάδες σημάτων:

Πιο συγκεκριμένα:

5.6 INTERRUPT CONTROLLER

O interrupt controller είναι απλά υλοποιημένος με μια πύλη AND (λογικά OR, γιατί το σήμα INT. είναι αρνητικής λογικής) και ένα latch, όπως φαίνεται στο σχήμα. Μπορεί να χειρίζεται ταυτόχρονα 7 interrupts. Όταν συμβεί ένα interrupt τότε ενεργοποιείται η έξοδος της AND και στέλνεται το interrupt στην ΚΜΕ (pin INT'). O latch "κλειδώνει" τις 8 γραμμές των interrupts και τις τοποθετεί στο data bus όταν γίνει interrupt acknowledge απ' τη ΚΜΕ. Η είσοδος G' (tristate enable) του latch συνδέεται στην πύλη OR (λογικό AND) με εισόδους τα σήματα M1' και IORQ' της KM (Βλ. Z-80A CPU Technical Manual ). Το interrupt 1 είναι καλωδιωμένο στο σήμα του ρολογιού με συχνότητα 3906.25Hz. Το σχήμα αυτό εκμεταλλεύεται το πολύ ισχυρό interrupt mode 2 του Ζ-80. Το int0 δεν μπορεί πρακτικά να χρησιμοποιηθεί, γιατί το bit0 πρέπει να είναι 0. Τα int1 - 7 σε συνδυασμό με τον I register δείχνουν έμμεσα (indirectly) την interrupt service routine.

5.7 CONTROLLER & MODULES

Το τμήμα αυτό ελέγχει τα modules του φωτορυθμικού, παίρνοντας την είσοδο από ένα βύσμα CENTRONICS (τύπου εκτυπωτή παράλληλης θύρας). Το μεγάλο πλεονέκτημα της σχεδίασης αυτής, είναι ότι είναι δυνατόν να προσθέσει κανείς modules, ανάλογα με τα φώτα και τα μηχανήματα που θα οδηγήσει. Η λογική είναι ότι κάθε module έχει ένα σήμα τύπου Chip Select (MODULE CS), ένα για CLK (MODULE DATA STROBE) και φυσικά τον 8bit δίαυλο δεδομένων.

Τα σχεδιασμένα modules αυτή την στιγμή υποστηρίζουν:

Αξιοσημείωτο είναι ότι το κομμάτι αυτό μπορεί να χρησιμοποιηθεί για πολύ γενικότερες εφαρμογές από ένα φωτορυθμικό!

5.7.1 CENTRONICS Interface

Το κύκλωμα αυτό αναλύει εάν τα εισερχόμενα δεδομένα είναι address ή data για κάποιο module. Αυτό διαχωρίζεται με βάση το SELECT OUT σήμα. Το σήμα STROBE κάνει την ουσιαστική εγγραφή στο address latch τύπου 74HC574 ή στο αντίστοιχο module (data). Το σχήμα αυτό εξασφαλίζει και ανοσία ως προς το θόρυβο που πιθανόν υπάρχει στην παράλληλη γραμμή μεταφοράς από τον μικροϋπολογιστή.

Το PAL 16L8 δημιουργεί 8 CS σήματα για modules. Σε αυτό το σημείο είναι δυνατόν να μπούν και άλλα PAL, μέχρι να καλυφτούν οι 256 διευθύνσεις (Σημ. το software υποστηρίζει μέχρι 128).

5.7.2 Modules

Το DAC βασίζεται στο ολοκληρωμένο DAC832 της National Semiconductor. Η έξοδος του κυκλώματος δίνεται από τον τύπο:


Με R2=30k και R1=10k, τελικά έχουμε:


Δηλαδή η τάση που θέλουμε για την οδήγηση των dimmer.

Ο δεύτερος τελεστικός χρησιμεύει για απομόνωση- ενίσχυση.

Τα υπόλοιπα modules περιέχουν optotransistors, optocouplers, relays, από 8 το καθένα. Η σχεδίαση τους είναι πανομοιότυπη, και δεν έχει κάτι το ιδιαίτερο, με εξαίρεση, ίσως, το που χρησιμοποιούμε κάθε module: