halleffector
Member
I'm trying to build this circuit: http://www.z80.info/z80test0.htm
I can't for the life of me get this to work. I have among other things tried 7 different CPUs and various switches. If anyone could please look for obvious mistakes or something weird I'd be grateful. I'd really like to get this to work after spending so much time with it. It shouldn't be that hard.
The idea with this circuit, which I fully understand, is to give the CPU the same instruction all the time and watch the address bus increment. This is realized through that the data bus lines are all pulled low. This makes the CPU read a NOP (No Operation) opcode, execute it, and increment the address bus. Again it will fetch a NOP, since the data bus is always hard-wired to give it NOPs. Yet, the address bus will increment, and eventually wrap around.
Expected results:
The address bus should start counting. The LEDs should flash when this happens. A0 should blink at 12 Hz (since I'm giving it 12 Hz) and A1 should blink at 12/2 Hz, A2 at 12/4 Hz.
Actual results:
All address lines are pulled high! The LEDs light up, and stay lit. But it is not limited to just A0, A1, and A2, all of them are like this. I've checked.
This is my progress/circuit so far:
I have a two-transistor oscillator circuit on the right, and the Z80 on the left, with three LEDs attached to the address bus. The data bus is all pulled to ground by 470 ohm resistors as in the original circuit. The two wires running off screen are for the switch. +5 volts is given on the upper rail, ground is on the bottom rail, both by wires running off screen to a power supply.
I have verified that the clock signal from the oscillator circuit appears good at around 12 Hz as seen in one of the attached images.
**broken link removed**
**broken link removed**
**broken link removed**
**broken link removed**
I have tried 7 different Z80 CPUs (6 from a batch from eBay, 1 from a parts bin), all have the same result. I have tried 3 different switches, all with the same result. I have tried a clock signal at less than 1 Hz and around 12 Hz (by changing the capacitors in the oscillator circuit), again there is no difference. With < 1 Hz it takes some seconds before the LEDs turn on, but once they do, there is again no counting.
I have tried to start the circuit and hold RESET both low and high, it doesn't matter. It should be noted that when powering the circuit on while holding RESET low, the LEDs will turn on for a brief second, then turn off again.
I = 106.7 mA (starts at 108.7 and gets reduced over time)
U = 5.13 volts
Without Z80:
I = 10.97 mA
U = 5.13 volts
A11 (pin 1): Floating.
A12 (pin 2): Floating.
A13 (pin 3): Floating.
A14 (pin 4): Floating.
A15 (pin 5): Floating.
CLK (pin 6): Connected to 12 Hz square wave, verified to be good on oscilloscope.
D4 (pin 7): Connected directly to ground.
D3 (pin 8): Connected directly to ground.
D5 (pin 9): Connected directly to ground.
D6 (pin 10): Connected directly to ground.
+5V (pin 11): Connected to +5 volts.
D2 (pin 12): Connected directly to ground.
D7 (pin 13): Connected directly to ground.
D0 (pin 14): Connected directly to ground.
D1 (pin 15): Connected directly to ground.
INT (pin 16): Connected to +5 volts.
NMI (pin 17): Connected to +5 volts.
HALT (pin 18): Floating. (Note: HALT is an output pin!)
MREQ (pin 19): Floating.
IRQ (pin 20): Floating.
RD (pin 21): Floating.
WR (pin 22): Floating.
BUSAK (pin 23): Floating.
WAIT (pin 24): Connected to +5 volts.
BUSRQ (pin 25): Connected to +5 volts.
RESET (pin 26): Connected to +5 volts via 470 ohm resistor, pulled to ground when a switch is toggled.
M1 (pin 27): Floating.
REFSH (pin 28): Floating.
GND (pin 29): Connected to ground.
A0 (pin 30): Connected to LED via 470 ohm resistor.
A1 (pin 31): Connected to LED via 470 ohm resistor.
A2 (pin 32): Connected to LED via 470 ohm resistor.
A3 (pin 33): Floating.
A4 (pin 34): Floating.
A5 (pin 35): Floating.
A6 (pin 36): Floating.
A7 (pin 37): Floating.
A8 (pin 38): Floating.
A9 (pin 39): Floating.
A10 (pin 40): Floating.
Again, what am I doing wrong?
Do I need to reset it in some specific way? Should I hold down RESET when I give it power, or not? As mentioned I've tried both.
I can't for the life of me get this to work. I have among other things tried 7 different CPUs and various switches. If anyone could please look for obvious mistakes or something weird I'd be grateful. I'd really like to get this to work after spending so much time with it. It shouldn't be that hard.
The idea with this circuit, which I fully understand, is to give the CPU the same instruction all the time and watch the address bus increment. This is realized through that the data bus lines are all pulled low. This makes the CPU read a NOP (No Operation) opcode, execute it, and increment the address bus. Again it will fetch a NOP, since the data bus is always hard-wired to give it NOPs. Yet, the address bus will increment, and eventually wrap around.
Expected results:
The address bus should start counting. The LEDs should flash when this happens. A0 should blink at 12 Hz (since I'm giving it 12 Hz) and A1 should blink at 12/2 Hz, A2 at 12/4 Hz.
Actual results:
All address lines are pulled high! The LEDs light up, and stay lit. But it is not limited to just A0, A1, and A2, all of them are like this. I've checked.
This is my progress/circuit so far:
I have a two-transistor oscillator circuit on the right, and the Z80 on the left, with three LEDs attached to the address bus. The data bus is all pulled to ground by 470 ohm resistors as in the original circuit. The two wires running off screen are for the switch. +5 volts is given on the upper rail, ground is on the bottom rail, both by wires running off screen to a power supply.
I have verified that the clock signal from the oscillator circuit appears good at around 12 Hz as seen in one of the attached images.
**broken link removed**
**broken link removed**
**broken link removed**
**broken link removed**
I have tried 7 different Z80 CPUs (6 from a batch from eBay, 1 from a parts bin), all have the same result. I have tried 3 different switches, all with the same result. I have tried a clock signal at less than 1 Hz and around 12 Hz (by changing the capacitors in the oscillator circuit), again there is no difference. With < 1 Hz it takes some seconds before the LEDs turn on, but once they do, there is again no counting.
I have tried to start the circuit and hold RESET both low and high, it doesn't matter. It should be noted that when powering the circuit on while holding RESET low, the LEDs will turn on for a brief second, then turn off again.
I = 106.7 mA (starts at 108.7 and gets reduced over time)
U = 5.13 volts
Without Z80:
I = 10.97 mA
U = 5.13 volts
A11 (pin 1): Floating.
A12 (pin 2): Floating.
A13 (pin 3): Floating.
A14 (pin 4): Floating.
A15 (pin 5): Floating.
CLK (pin 6): Connected to 12 Hz square wave, verified to be good on oscilloscope.
D4 (pin 7): Connected directly to ground.
D3 (pin 8): Connected directly to ground.
D5 (pin 9): Connected directly to ground.
D6 (pin 10): Connected directly to ground.
+5V (pin 11): Connected to +5 volts.
D2 (pin 12): Connected directly to ground.
D7 (pin 13): Connected directly to ground.
D0 (pin 14): Connected directly to ground.
D1 (pin 15): Connected directly to ground.
INT (pin 16): Connected to +5 volts.
NMI (pin 17): Connected to +5 volts.
HALT (pin 18): Floating. (Note: HALT is an output pin!)
MREQ (pin 19): Floating.
IRQ (pin 20): Floating.
RD (pin 21): Floating.
WR (pin 22): Floating.
BUSAK (pin 23): Floating.
WAIT (pin 24): Connected to +5 volts.
BUSRQ (pin 25): Connected to +5 volts.
RESET (pin 26): Connected to +5 volts via 470 ohm resistor, pulled to ground when a switch is toggled.
M1 (pin 27): Floating.
REFSH (pin 28): Floating.
GND (pin 29): Connected to ground.
A0 (pin 30): Connected to LED via 470 ohm resistor.
A1 (pin 31): Connected to LED via 470 ohm resistor.
A2 (pin 32): Connected to LED via 470 ohm resistor.
A3 (pin 33): Floating.
A4 (pin 34): Floating.
A5 (pin 35): Floating.
A6 (pin 36): Floating.
A7 (pin 37): Floating.
A8 (pin 38): Floating.
A9 (pin 39): Floating.
A10 (pin 40): Floating.
Again, what am I doing wrong?
Do I need to reset it in some specific way? Should I hold down RESET when I give it power, or not? As mentioned I've tried both.
Last edited: