MSX Super Turbo

What is MSX Super Turbo?
What can it do?
What can it not do?
Design considerations
Circuit diagram
Description of the circuit
Component selection
PCB layout
Copyrights
Updates
Feedback/support
Current version: 3.0
This page last updated: september 7, 1998
Status: finished (no real errors found since its last revision, in june 1995)


What is MSX Super Turbo?

The electronic circuit described below is a circuit that can be used to switch the clock frequency of a Z80 CPU between 2 different values. 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. In comparison with some known 'competitors', its main advantage is the ability to switch between 2 entirely independent frequencies. Both of these can be determined by using either a quartz crystal (wide frequency range possible), or a suitable external clock source. For both frequencies independently, any combination can be used.
It can also serve as a direct 1:1 replacement for the well known MSX 7 MHz. circuit. Most connections and the way it is built into MSX computers, work just the same (but do note that this IS a completely different circuit).

What can it do?


What can it not do?


Design considerations

There have been several turbo projects for MSX in the past. Most widely used is probably the 7 MHz. design, published in MSX Club Magazine (numbers 31 (sept/okt. 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 has ever been perfected.
The 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 few logic gates) to switch between different 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. crystal base frequency, where an output is switched between half, and a quarter of that (7.16 or 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, buildings 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 (one always wants more). So, being not too clumsy when it comes to hardware, I decided to make my own design. 'Version 1.x' 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 'environmental' 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 make any compromises on this, the demands for a new design became clear: 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 of this, and 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, leaving the principle unchanged.

With this latest version (designed in june 1995), all above demands are met, it has been built into about a dozen MSX-machines by now (several different types), and has stood 'the test of time'. Some improvements are still possible, I leave that up to you, I didn't feel a strong enough need so far (works fine as it is)

Circuit diagram

The circuit diagram (22 K, 1200 x 900 x 16 color GIF, actually black & white) contains the complete circuit drawing, component values, and seperate pin-layouts for convenience. Note that the powersupply-connections of IC's, and decoupling capacitors (100 nF ceramic between GND and Vcc of each IC) are not shown in the diagram. As the designer of more circuits like this, I consider these so 'standard', that I find such a diagram simply easier to read without these.

Circuit description

In general, the circuit does the following:
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 (usually 3.58 MHz. for this purpose) as quickly as possible (this is where most problems with designs like this arise), 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 mean while any of the 'switch-back' inputs are activated, this delay starts from the beginning again. Note that this is the 'standard' application, the frequencies used can be chosen freely, and it is easy to modify it 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 4-bit register). IC2 maintains a 'current state', and controls a LED output signalling the current 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 ouput frequency'. This is fed into multiplexer IC3. One half of IC3 is used internally, to switch directly between the clock signals, which is necessary to prevent the circuit from halting itself. At the next low-to-high transition of this, 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 the +5 V supply) lengthen the high period of the clock output, needed for use by a Z80 CPU.
The main advantage this setup gives, is that there is no real difference between 'switching from low to high speed' and '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.

Crystal oscillators

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, 1 can use an external clock source, or both, they can even share the same clock source (don't know what the use 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 somewhere 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. However, during testing, it was found that this construction could cause startup problems under some circumstances, leaving the oscillator in one non-oscillating state. This might have been because of non-optimal component values used, necessary to accomodate a wide range of crystal frequencies without the need for any changes. In any case, the slightly different construction used here solved this problem.

Speed control circuitry

Diodes D1...D6 form a discrete 6-input 'OR' gate (together with R6), whose 'output' is fed into an inverter, which switches 'on' or 'off' FET T1. 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 about 2.5 volts. The combination R5/C5 is calculated such, that even the slowest components in the computer 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 (usefull with 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, because it cannot produce a high level input voltage. It may just as well be connected to one of the diode inputs instead, or left out completely.

Component selection

C1, C2, C3, C4 = 22 pF
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.

C5 = 330 pF
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 (about 2.5 volts input threshold), this delay time can be calculated using this expression:
T = 0.69 * R5 * C5 (approximately, T in seconds, R in Ohms, C in Farads)
With R5 = 100 K and C5 = 330 pF, this delay becomes about 23 usec, or about 82 clock-cycles at 3.58 MHz. This satisfies about all MSX applications.

D1...D6 = standard diodes, 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: BAT 85, BAT 82, 1N4148, 1N4448, BAS 32 (SMD). I used BAW 56, double-diodes in SMD transistor-type housing (tiny little things), 3 pieces here.

IC1 = 74HC04 (6 inverters)
IC2 = 74HC175 (positive edge-triggered quad flip-flop)
IC3 = 74HC153 (dual 4-to-1 multiplexer)
All IC's MUST be high speed CMOS types. IC's like 74HCTxx, 74LSxx, 74ALSxx or 74Fxx will not do, because they will mess up the output voltage levels, the duty-cycle of the output signal, or the timing of the R5/C5 combination. Faster CMOS types will probably be a GOOD replacement for any of the IC's, as long as types with CMOS compatible inputs and outputs are used (like the 74ACxx family). CMOS IC's in the 4000 or 74Cxx family cannot be used, simply because they won't keep up with the speeds used here.
IC1 would probably be well replaced by a 74HCU04 (unbuffered outputs, this means a shorter delay, and a smaller amplification, giving a more linear relation between input and output voltage, like an opamp). In that case, it might be necessary to modify the values of components used in the crystal oscillators, followed by extensive testing. Advantage of using standard CMOS inverters here, is that these can easily be replaced by other types, like inverting gates.

R1, R3 = 220 Ohm
R2, R4 = 10 M Ohm
Used in the crystal oscillator circuits; use values as close as possible
R5 = 100 K Ohm, determines delay-time together with C5
R6 = 22 K Ohm pull-up, may be anywhere between 10 times smaller, or 10 times bigger
R7 = 560 Ohm, limits turbo-LED current, any value down to about 100 Ohm 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.
R8 = 47 Ohm
Used to supress 'spikes' on the output clock signal; try not to change this value too much

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

S1 = ANY ordinairy switch; use the most ugly, big, or lousy working ones you can find, if you want to. Any 'bouncing' effects (call it 'noise production') when switching on or off is no problem. Sometimes a switch with built-in LED is used, so that the 'turbo on' indication is in the switch itself.

T1 = BS170 or BS170P (Field Effect Transistor)
This is probably the most problematic part of this circuit. The BS170 and BS170P are the same thing, but with their connections turned around 180 degrees (I hope they fired the sucker who made that happen). An ordinary transistor (NPN) with series resistance MIGHT be used instead, but I would strongly advise against it. By the time this design was made, the BS170(P) was about the only FET that was a) commonly available, and b) had the right characteristics. There are probably several SMD types to choose from now, which would be easier in construction. You could leave out the inverter/FET section entirely, but this would require the input signals to take care of discharging C5, which could increase 'switch-back-time' in some cases. In this circuit, input signal characteristics are 'don't cares'.

X1, X2 = quartz crystal, any ordinary type

The oscillator circuits are optimised for use with crystals in the 3.58 to about 10 MHz. range, but have been succesfully tested with crystals for frequencies as low as 2 MHz., and as high as 18 and 20 MHz. (crystal oscillators of this type will probably not go too far beyond that).
Given this tolerance, most likely other types of crystals like mini-types, or SMD counterparts can be used succesfully, but this has not been properly tested.

Decoupling capacitors

As in almost every digital circuit, every IC's powersupply should have a decoupling capacitor connected between the powersupply-pins, with leads as short as possible. For this circuit, a 100 nF ceramic capacitor should be used for every IC (3 pieces), and a capacitor of 10 uF/10 V for the entire circuit. SMD parts are preferred here, because these can usually be located closer to the IC's than 'normal' parts.
Note: in the PCB layout below, only 2 decoupling capacitors of 100 nF (SMD) are present. This is because one of these is placed in such a way between 2 IC's, that another one there would be useless.

PCB layout

The PCB layout (12 K, 700 x 500 x 16 color GIF) is the one I used myself, when I last built these things. Actual size is about 46 x 27 millimeters. Apart from IC's and transistor T1, all passive components used here are SMD types, and most of these are placed UNDER the IC's, or on the other side of the PCB. It is included here only to save you the trouble of making your own layout, in case you are able to reproduce this one. If this turns out to be too difficult, or you want to use another technique, you will have to make your own. This circuit offers plenty of options to swap pins, to make this easier. I will not include any instructions here on how to make PCB layouts, or producing these things. Everyone making such things will have to find his/her own way of doing this.

Copyrights

As the designer, I claim full copyrights on this circuit, and especially where the principle it uses is concerned. At the same time, you are free to use this information in whatever way you like, for any purpose, as long as you observe these conditions: That's all I ask. Should these conditions be a restriction in any way, or create difficulties for you, than please let me know (see below).

How to obtain the latest version

On top of this page, there is a link named "this page", which should take you to a webpage containing the latest version of this document. If for some reason this page should become unavailable, visit one or more of the major internet search engines, and enter "MSX Super Turbo", which should list a current location for this page.

Feedback / support

Personally, I have no interest anymore in further development of this circuit as a turbo circuit for MSX computers. On the other hand, I have no problem with answering any questions of you, that might remain. And, if you want to make use of this circuit on a commercial scale, I would be happy to help with that.
Apart from that, I would be very interested, simply to hear about your experiences with this circuit. What you did to get it built, where it was built into, how it works for you, what problems you encountered etc. If you have any additions to this circuit, like suggestions for improvements, or other applications, I will include these on my webpage.

Alwin Henseler
e-mail: alwinh@dds.nl


This document was made using 100 % recycled electrons.