Noob question: Tri-state logic chaos and system startup
Posted: Thu Mar 15, 2018 2:37 pm
Hello! I'm Aaron -- First post! Woo-hoo!
I'm not a credentialed EE, just an enthusiastic electronics hobbyist who's worked with microcontrollers for a while and has finally resolved to take on 6502 project. I've got what I believe to be a good (if somewhat weird) design worked out, but my question is far more general and perhaps eye-rollingly noobish. Here goes:
So, my memory system comprises an assortment of buffer and register ICs with tri-state outputs and output-enable (OE) pins. The OE signals to each IC are, according to the address decoding logic, mutually exclusive. That is, only one OE should be asserted at any time. OE is further predicated on Phi2, the period of which is a massive ~560ns in this design, so there's no way that the outputs of one IC could still be driven when another IC takes over. I see no potential for bus conflicts during actual system operation.
...but what about at system startup? It seems likely that, for some tens of ns--perhaps longer--after power is applied, the OE signals of multiple ICs may be effectively asserted because the controlling logic isn't "awake" yet and hasn't had time to de-assert them (and de-asserting takes some time, too). So multiple ICs may be putting conflicting garbage onto the data bus. Is this just...ok? Too brief of an event to be damaging? I'm guessing so. I noticed that the TI datasheets for "AC" series logic mention putting pull-up resistors on the OE pins to ensure high-Z at startup (even that makes me scratch my head a bit), but I'm using "HC" series logic and there's no such warning in the datasheets for those parts. Further, I don't see pull-ups used for this sort of thing in any example schematics, or indeed in schematics of commercially-sold 6502-based equipment. *shrug*
I suppose it's possibly silly to worry about something that only happens for tens of ns and only during system startup, but...these are the sorts of things that irritate me and make me realize that I'm missing some obvious rule-of-thumb or something.
...Thanks for reading!
I'm not a credentialed EE, just an enthusiastic electronics hobbyist who's worked with microcontrollers for a while and has finally resolved to take on 6502 project. I've got what I believe to be a good (if somewhat weird) design worked out, but my question is far more general and perhaps eye-rollingly noobish. Here goes:
So, my memory system comprises an assortment of buffer and register ICs with tri-state outputs and output-enable (OE) pins. The OE signals to each IC are, according to the address decoding logic, mutually exclusive. That is, only one OE should be asserted at any time. OE is further predicated on Phi2, the period of which is a massive ~560ns in this design, so there's no way that the outputs of one IC could still be driven when another IC takes over. I see no potential for bus conflicts during actual system operation.
...but what about at system startup? It seems likely that, for some tens of ns--perhaps longer--after power is applied, the OE signals of multiple ICs may be effectively asserted because the controlling logic isn't "awake" yet and hasn't had time to de-assert them (and de-asserting takes some time, too). So multiple ICs may be putting conflicting garbage onto the data bus. Is this just...ok? Too brief of an event to be damaging? I'm guessing so. I noticed that the TI datasheets for "AC" series logic mention putting pull-up resistors on the OE pins to ensure high-Z at startup (even that makes me scratch my head a bit), but I'm using "HC" series logic and there's no such warning in the datasheets for those parts. Further, I don't see pull-ups used for this sort of thing in any example schematics, or indeed in schematics of commercially-sold 6502-based equipment. *shrug*
I suppose it's possibly silly to worry about something that only happens for tens of ns and only during system startup, but...these are the sorts of things that irritate me and make me realize that I'm missing some obvious rule-of-thumb or something.
...Thanks for reading!