Advertisement

MSX Super Turbo

Not rated 30,889

#Z80 CPU #clock signal #MSX #turbo circuit #digital switching #computer hardware #retro computing #clock switching
MSX Super Turbo
MSX Super Turbo

Description: The electronic circuit described below can switch the clock signal of a Z80 CPU between two different sources. This can be used to create a turbo circuit in a Z80-based system. It was originally designed for use in MSX computers but is likely suitable for other systems as well. Its main advantage over similar circuits is the ability to switch between completely independent clock sources. This description is provided for reference purposes only; this circuit is considered outdated, as there are better methods to construct a Z80 turbo circuit today. The hardware and software environment, along with typical use cases, have changed significantly since this design was created, making many reasons for upgrading a Z80-based system questionable. However, there remains interest in such upgrades, and information is provided for those who wish to explore it. This page was mirrored elsewhere but has recently become difficult to find, prompting a re-upload. It is important to note that these circuits have not been built for a long time, and there are no plans to sell circuit boards, kits, or parts. The information is intended to enable users to understand how it works, allowing for DIY projects or the development of improved designs. While the Z80 inside the MSX can run faster, this does not guarantee that the entire system will function faster. The circuit was specifically designed for speeding up Z80-based MSX systems; those with faster CPUs, like the MSX TurboR or 1chipMSX, should not attempt this modification. For other Z80-based systems, it may work, but integration will require individual consideration. There are faster, compatible Z80 processors available, such as Zilog's Z180 and eZ80, the Rabbit family of microcontrollers, and various FPGA implementations, but these would necessitate significant modifications or a complete rebuild of an MSX machine. This document does not cover such extensive modifications. Several turbo projects for MSX have existed, with the most notable being a 7 MHz design published in MSX Club Magazine, which proved reliable after initial corrections. Conversely, a 6 MHz project had numerous issues and was likely never perfected. The main challenge with designing such circuits is that the Z80 CPU imposes strict voltage level and timing constraints on its clock signal input, making simple electronic switches unsuitable for switching between clock signals. The 7 MHz circuit employs a 14 MHz base frequency, switching outputs between half and a quarter of that frequency using a dedicated IC (Z8581 Clock Generator Controller). The initial design of this circuit utilized a variable RC-oscillator, but it was abandoned due to sensitivity to temperature and component variations. The final design, version 3.0, includes two independent crystal oscillators, each capable of using a quartz crystal or suitable external clock source without requiring circuit changes. The control signal used to switch the clock output is flexible, allowing various input types. The circuit employs a double 4-to-1 multiplexer (IC3) and a positive-edge triggered 4-bit register (IC2) to manage output frequency and maintain current states. The design allows for easy modifications to accommodate different frequencies and switching methods.

The circuit operates by switching the clock signal of a Z80 CPU between two independently functioning clock sources, enhancing the performance of Z80-based systems, particularly MSX computers. The core of the circuit utilizes a double 4-to-1 multiplexer (IC3) and a positive-edge triggered 4-bit register (IC2) to facilitate the necessary clock signal transitions while adhering to the strict timing requirements of the Z80 CPU.

The design incorporates two independent crystal oscillators, each capable of being configured with either a quartz crystal or an external clock source. This flexibility allows users to tailor the circuit to their specific requirements without the need for extensive adjustments or settings. The oscillators produce two distinct frequencies: the lower frequency typically set at 3.58 MHz and the higher frequency approaching the maximum reliable speed for the computer.

To manage the switching process, the circuit employs a delay mechanism controlled by a resistor-capacitor (R5/C5) combination. When the circuit switches from a higher to a lower frequency, the capacitor charges to a specified voltage, ensuring that the Z80 CPU is serviced correctly at the lower speed before reverting to the higher frequency. A manual switch (S1) is also incorporated, allowing users to force the circuit to operate at the lower speed, which can be beneficial for certain applications.

The circuit's design emphasizes reliability and simplicity, with careful consideration given to component selection. For instance, the use of Schottky diodes for signal routing minimizes voltage drop and enhances performance. Capacitor values are specified to ensure optimal operation across various conditions, and resistor values are generally non-critical, allowing for some flexibility in component choice.

Overall, this circuit represents a practical solution for those seeking to enhance the performance of Z80-based systems while providing a foundation for further experimentation and improvement. Its design allows for straightforward integration into existing systems, making it an accessible option for hobbyists and engineers alike.The electronic circuit described below can switch the clock signal of a Z80 CPU between 2 different sources. This can be used to make a turbo circuit in a Z80-based system. It was originally designed for use in MSX computers, but is probably suited for use in other systems as well.

Its main advantage over similar circuits, is the ability to switch between totally independent clock sources. This description is provided for reference purposes only: I consider this circuit completely outdated (regardless of how well it works) because there would be much better ways to construct a Z80 turbo circuit these days. It`s just that it never was a priority for me to update this circuit using currently available parts/technology - I leave that to other interested parties.

Also the hardware/software environment, and typical use cases, have changed significantly since this design was made. Which (IMHO) makes most reasons for upgrading a Z80-based system questionable. But there appear to be still some people interested in doing such upgrades, and I have no problem with providing info.

This page was mirrored in other locations, but seems to have disappeared from the web recently (or hard to find). Therefore I decided to re-upload it. To make it clear: I have not built these circuits for a looonng time, and don`t plan to! Nor am I selling circuit boards, kits or parts. Or soldering these things into MSX computers. I just provide this info - enabling you to find out how it works, Do-It-Yourself, have someone else do it, or base an improved design on it.

It cannot make an MSX run faster in all circumstances; that a Z80 inside the MSX is capable of running faster, does not imply that you can let it run faster, nor does it mean the rest of the computer will work faster as well. It was specifically designed for speeding up Z80-based MSX systems, so if you own an MSX that already has a more speedy CPU (like an MSX TurboR or 1chipMSX): leave it be.

If you have another Z80-based system: it will probably work fine, but you figure out how to build it into your specific machine. For other applications: do as you like, I won`t help you with it. There exist much faster, more or less compatible Z80 processors: Zilog`s own Z180 and eZ80, the Rabbit family of microcontrollers, and various FPGA implementations come to mind.

Because these are wildly different beasts, an MSX machine would require much more extensive modification (or complete rebuild) to use these. Not saying that couldn`t/hasn`t been done, but: it is beyond the scope of this document. There have been several turbo projects for MSX in the past. Most widely used was probably the 7 MHz. design, published in MSX Club Magazine (numbers 31 (Sept/Oct. 1990), original publication, and 34 (March/April 1991), minor corrections and improvements). This turned out to be a reliable design; after the first corrections and improvements, there were no real problems with it, and has been used widely (MSX Club Gouda, MK Computers and others).

Then there was this 6 MHz. project from the C. U. C. (Computer Users Club). This design turned out to be rather buggy, one improvement followed the other, and I doubt if it was ever perfected. Main problem with the design of such circuits is this: the Z80 CPU places some strict voltage level & timing constraints on its clock signal input.

Because of that, it is impossible to use a simple electronic switch (like a multiplexer, or a logic gate) to switch between clock signals. The easiest solution is to make use of some relation between the signals that are switched between. In the 7 MHz. circuit, this is done by using a 14 MHz. base frequency, where an output is switched between half, and a quarter of that (7. 16 and 3. 58 MHz. respectively), using a dedicated IC (Z8581 Clock Generator Controller). I`m not sure how this is done in the 6 MHz. design. Being busy at the time, building these things (7 MHz. ) into several MSX`s myself, more or less frequently, and having my own MSX running this way, I kept wondering where speed limits actually were.

So I decided to make my own design. First version consisted of a variable RC-oscillator, with its timing coupled to a (slower!) 3. 58 MHz. signal. It was absolutely great to adjust the speed of one`s computer with a simple variable resistor, but this solution turned out to be far too sensitive to factors like temperature and component variations, and was therefore quickly abandoned. It was time to get back to the drawing board. Doing some research on IC`s specially meant for this job, I found there were few to choose from, their availability might be a problem, and the exact way they worked, would largely remain a mystery.

Not willing to compromise on this, requirements for a new design became clear: The on-circuit clock sources should work independently, each taking a quartz crystal or a suitable external clock source, preferably without the need for changes or settings in the circuit. The control signal used to switch the clock output, should be a `don`t care` (whatever, take an audio signal for instance, or something at a higher frequency than either of the clock signals).

After having thought about this for a while, I worked out a principle that turned out to work so well, no need for another design remained. Versions 2. x consisted of the first practical implementations. Having tested these for quite a while, a thorough redesign was done (thus calling it version 3. 0), which consisted of cosmetic changes, mainly aimed at making it more compact. This latest version (designed in June 1995) has been built into about a dozen MSX machines (several different types), and has stood the test of time.

I have heard of people from places like Spain and South America, who have reproduced & used this circuit successfully. Various improvements are still possible though. Given the many MSX machines that were modified to run on 7 MHz, practical issues with that circuit are well known.

Therefore it`s useful to make a comparison between these 2 circuits: Pocket-money as well. For both 7 MHz. & this circuit, that is apart from the faster Z80 and other components that might need to be replaced (different for each computer type) The 7 MHz. circuit can serve as replacement for a broken VDP clock output (3. 58 MHz), making it unnecessary to replace the videochip, if it still works for the rest It produces a Z80 clock signal equal to the high frequency, until one of several inputs is activated.

It then switches over to a lower frequency as quickly as possible, keeps running at this lower frequency until a certain delay (controlled by R5/C5) has expired, and then switches back to the higher frequency. If in the meanwhile any of the switch-back inputs are activated, this delay starts from the beginning again.

Note that this is the standard application; the frequencies can be chosen freely, and it is easy to modify for using another way of switching between these, or even to switch between more than 2 frequencies. IC3 (a double 4-to-1 multiplexer) forms the heart of the circuit, together with IC2 (a simple positive-edge triggered 4bit register).

IC2 maintains a current state, and controls a LED output signaling the status. Its clock input is triggered on the low-to-high transition, making sure that changes occur only right after the should-be clock signal (IC3 pin 7) has turned high (to meet Z80 CPU requirements). Its most important output (pin 2) indicates the desired output frequency. This is fed into multiplexer IC3. One half of IC3 is used internally to switch directly between the clock signals. This is necessary to prevent the circuit from halting itself. At the next low-to-high transition, a second output of IC2 (pin 15), following the first one, controls the actual switching of the clock output.

If these 2 controlling lines are the same, multiplexer IC3 works as a simple buffer for the desired output frequency. If the two controlling signals are different, which may be understood as "circuit is in the process of switching over", the other multiplexer inputs (tied to +5V supply) lengthen the high-period of the clock output.

The main advantage this setup gives, is that there is no real difference between switching from low to high speed, or switching from high to low speed. This is treated exactly the same, making the clock inputs fully interchangeable, and avoiding problems that might arise, when it is switched again, while still in the process of switching.

The circuit contains 2 independent crystal oscillators. Each of these can be set to a specific frequency either by connecting a quartz crystal between the 2 connections, or by connecting a suitable clock source to the connection marked "in". No quartz crystal should be present in this case. The 2 oscillators can both use a quartz crystal, of the same or different frequencies, one can use an external clock source, or both, they can even share the same clock source (don`t know what the point would be), this can all be decided for each specific use.

For both uses (quartz crystal or external clock) there are no settings, or component value adjustments required. If an external clock source is used, capacitors C1 or C3 will simply add a small capacitive load, which any decent clock source should have no problem with.

The circuit around X1 produces the lower frequency, usually 3. 58 Mhz. The circuit around X2 produces the higher frequency, usually close to the maximum speed the computer can run on reliable. Note: in some oscillator circuits like these, the parallel resistor (R2 or R4 here) is connected directly between the input and output of the inverter.

In this design, this would probably simplify the PCB layout. During testing, it was found that this construction could cause startup problems under some circumstances, leaving the oscillator in a non-oscillating state. This may have been caused by non-optimal component values, which enable a wide range of crystal frequencies.

The slightly different construction used here, solved this problem. Diodes D1. D6 form a discrete 6-input OR gate (together with R6), whose output is fed to an inverter, which switches FET T1 on or off. If switched off, this FET goes into a high impedance state, allowing R5 to charge C5 to approximately +5 volts.

If switched on, it discharges C5, starting a delay, after which the circuit switches back to the higher frequency. The delay time is the time required for C5 to charge up to a high input level for IC2, in this case about half the supply voltage, so ~2.

5 volts. The combination R5/C5 is calculated such, that even the slowest components in the system can be serviced at low speed, after an initial time they are accessed. Switch S1 is used as a 7th input, allowing the user to manually switch back to the lower speed (useful for audio applications, or software depending on a particular CPU speed).

Note that this switch is connected between ground and the other side of D1. D6 directly, which is okay since it cannot produce a high level input voltage. It may just as well be connected to one of the diode inputs, or left out completely. These capacitor values should be deviated from as little as possible. The values are not critical, but required for the wide range of operation this circuit offers (remember that this has been extensively tested). If other values are used, chances are things will work fine, but under some conditions problems might occur.

So please try and use the values indicated. Preferably the common ceramic capacitors, or SMD counterparts should be used. Together with R5, the value of this capacitor determines the delay time, before the circuit switches back to the higher frequency. With a CMOS type for IC2 (~2. 5V input threshold), the delay time can be calculated using this expression: Any fast, small signal diode will do (don`t use rectifier types).

Better is to use Schottky types, giving a lower voltage drop. Useable types include: BAT85, BAT82, 1N4148, 1N4448, BAS32(SMD). I used BAW56, double-diodes in SMD transistor-type housing (tiny little things), 3 pieces here. Limits turbo-LED current, any value down to about 100 © allowed. The presence of the inverse turbo-signal (IC2 pins 6 & 11) makes it possible to use a duo-LED (for instance red/green), alternating LEDs, changing LED-display etc. Meant to minimize overshoot/undershoot (spikes) on the output clock signal. Optimal value depends on circuitry / board layout of the target machine. Try not to change this value too much, or experiment a bit to determine optimal value for your system.

In general, resistor values are non-critical, so ordinary carbon types will do. Slightly different values should be okay, and SMD or other types can be used as desired.

Related Circuits