Will the circuit work properly if the processor and support chips are running at different speeds
Short answer: No, as they usually never ever run at different bus speeds.Mixing various speed ratings just means that the system at whole should not run faster than the slowest one.
Speed of classic CPUs like Z80 is the speed rating for the bus. An since it's one bus connecting all chips (*1), there can only be one speed and this speed is supplied by a single clock generator. In most cases the speed is defined by the system board, so plugging in chips with a higher rating won't change anything, while inserting some with lower rating bears the chance of malfunction.
Bottom Line: Classic CPUs work in a single tightly coupled system, not like today's with many different domains and speeds within the same system.
It seams from the comment as if your're about to build a system, like with a Z80H and a 8255-5. This opens three possible szenarios:
- Run the system at 5 MHz. That's the slowest component guaranteed speed.
- 'Overclock' it. Try 8 MHz or 10 MHz and see if the 8255 still works fine.
- Run it at 10 MHz, but insert wait states during 8255 access.
While #1 is the conservative and easy choice, #2 ist a fair game for a one off hobby board, it's #3 what a serious design would be. Most simple solution (beside some clever hack) would be a programmable wait state generator like this:
- Take a 74191
- Set it to 5 clocks (B/D to ground and A/C to +5V)
- Tie UP and Enable to ground
- Use system clock for CLK (*)
- Use the 8255 CS for LOAD (*)
- Use Min/Max for WAIT (or make up a combination using on of the counter outputs)
(*) - may need to be inverted
Such a setup has even the advantage to try out 'overclocking' the 8255 between 5 and 10 MHz - and with a bit more puzzling (and logic) it can offer specific delay for any additional chip with different timing.
*1 - Of course one could think about a system with different sections operating at different speed, but the effort is quite large, as any transaction going across would need synchronisation.