Το
τροφοδοτικό του συστήματος παίρνει είσοδο 220V από το δίκτυο της ΔΕΗ και
δίνει στην έξοδο 4 επίπεδα τάσης : +5V, -5V, +12V και -12V. Αυτό επιτυγχάνεται
ως εξής :
Αρχικά υπάρχουν 2 μετασχηματιστές που δίνουν 5V και 12V αντίστοιχα εναλλασσόμενη τάση. Κατόπιν γίνεται ανόρθωση μέσω μιας γέφυρας ανόρθωσης με διόδους. Ακολούθως υπάρχουν πυκνωτές για εξομάλυνση και έπονται σταθεροποιητές τύπου 7805, 7905, 7812, 7912 οι οποίοι στην έξοδό τους δίνουν σταθεροποιημένες τάσεις αντίστοιχα +5V, -5V, +12V, -12V. Κάθε μια απ' αυτές αργότερα θα χρησιμοποιηθεί για να τροφοδοτήσει κάποιο chip ή το ISA bus.
Χρησιμοποιούμε
τον επεξεργαστή Ζ-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 - μνήμη) με τα άλλα τμήματα του υπολογιστή.
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 και γείωση.
Η
μονάδα χρονισμού του συστήματος δημιουργεί 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.
Το κύκλωμα αυτό περιλαμβάνει το 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 ακολουθούν παρακάτω.
Διαθέτει 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.
Αναλυτικότερα στο διπλανό σχήμα έχουμε:
Το κύκλωμα
αυτό είναι και η μεγαλύτερη καινοτομία αυτού του 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 στον μικροϋπολογιστικό σύστημα.
Το ISA έχει τις εξής ομάδες σημάτων:
Πιο συγκεκριμένα:
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.
Το
τμήμα αυτό ελέγχει τα modules του φωτορυθμικού, παίρνοντας την είσοδο από
ένα βύσμα CENTRONICS (τύπου εκτυπωτή παράλληλης θύρας). Το μεγάλο πλεονέκτημα
της σχεδίασης αυτής, είναι ότι είναι δυνατόν να προσθέσει κανείς modules,
ανάλογα με τα φώτα και τα μηχανήματα που θα οδηγήσει. Η λογική είναι ότι
κάθε module έχει ένα σήμα τύπου Chip Select (MODULE CS), ένα για CLK (MODULE
DATA STROBE) και φυσικά τον 8bit δίαυλο δεδομένων.
Τα σχεδιασμένα modules αυτή την στιγμή υποστηρίζουν:
Αξιοσημείωτο είναι ότι το κομμάτι αυτό μπορεί να χρησιμοποιηθεί για πολύ γενικότερες εφαρμογές από ένα φωτορυθμικό!
Το
κύκλωμα αυτό αναλύει εάν τα εισερχόμενα δεδομένα είναι address ή data για
κάποιο module. Αυτό διαχωρίζεται με βάση το SELECT OUT σήμα. Το σήμα STROBE
κάνει την ουσιαστική εγγραφή στο address latch τύπου 74HC574 ή στο αντίστοιχο
module (data). Το σχήμα αυτό εξασφαλίζει και ανοσία ως προς το θόρυβο που
πιθανόν υπάρχει στην παράλληλη γραμμή μεταφοράς από τον μικροϋπολογιστή.
Το PAL 16L8 δημιουργεί 8 CS σήματα για modules. Σε αυτό το σημείο είναι δυνατόν να μπούν και άλλα PAL, μέχρι να καλυφτούν οι 256 διευθύνσεις (Σημ. το software υποστηρίζει μέχρι 128).
Το DAC βασίζεται στο ολοκληρωμένο DAC832 της National Semiconductor. Η έξοδος του κυκλώματος δίνεται από τον τύπο:

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

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