Hi everyone,
I am currently working a simple 8-bit hobby processor design.
I am still in the early phases of designing the processor logic and haven't started on the actual circuit.
Premise: my processor's control unit design was inspired by what Ben Eater has done in his project: basically, the instruction register (IR)'s value is used to address a variable number of EEPROMS which in turn output the control lines that enable the components (in my case, 6 EEPROMs output 48 control lines).
While doing some testing, I saw that the simulator I'm using (Logisim-evolution) briefly showed intermittent error values on the data bus. I investigated some more and saw that the errors only happened during the switch between one microinstruction and the next; furthermore, the errors where only detected when sampling in continuous mode, which means that bus contention only happened during the propagation phase of the simulation and not when the circuit is stabilized.
Basically what I think is happening is that the EEPROMS in the control unit are not updating their values and propagating simultaneously, so when switching from a microinstruction to the next it may happen that one EEPROM and its signals have already been updated to the next state (and so have the components they control) while another EEPROM is still behind, briefly resulting in a "mixed" state where two or more components are enabled to write to the bus during the switch.
I initially shrugged it off as an issue with Logisim, but then I started wondering if it could be an problem when I eventually design and build the hardware, and I think it will.
The EEPROMs I plan to use (AT28C64B) specify a maximum 150ns delay between a change in the address and a the output. Also, the line drivers that prevent components from writing to the data bus, switch from output enabled to floating within 30 ms.
Basically, with this uncertainty in the propagation and with the right control lines placement I think there can be bus contention during control lines switching for a very brief time each transition.
I couldn't find any resources on this particular problem.
Is it going to be an issue?
What can I do to deal with it?
Thanks in advance.
I am currently working a simple 8-bit hobby processor design.
I am still in the early phases of designing the processor logic and haven't started on the actual circuit.
Premise: my processor's control unit design was inspired by what Ben Eater has done in his project: basically, the instruction register (IR)'s value is used to address a variable number of EEPROMS which in turn output the control lines that enable the components (in my case, 6 EEPROMs output 48 control lines).
While doing some testing, I saw that the simulator I'm using (Logisim-evolution) briefly showed intermittent error values on the data bus. I investigated some more and saw that the errors only happened during the switch between one microinstruction and the next; furthermore, the errors where only detected when sampling in continuous mode, which means that bus contention only happened during the propagation phase of the simulation and not when the circuit is stabilized.
Basically what I think is happening is that the EEPROMS in the control unit are not updating their values and propagating simultaneously, so when switching from a microinstruction to the next it may happen that one EEPROM and its signals have already been updated to the next state (and so have the components they control) while another EEPROM is still behind, briefly resulting in a "mixed" state where two or more components are enabled to write to the bus during the switch.
I initially shrugged it off as an issue with Logisim, but then I started wondering if it could be an problem when I eventually design and build the hardware, and I think it will.
The EEPROMs I plan to use (AT28C64B) specify a maximum 150ns delay between a change in the address and a the output. Also, the line drivers that prevent components from writing to the data bus, switch from output enabled to floating within 30 ms.
Basically, with this uncertainty in the propagation and with the right control lines placement I think there can be bus contention during control lines switching for a very brief time each transition.
I couldn't find any resources on this particular problem.
Is it going to be an issue?
What can I do to deal with it?
Thanks in advance.