MC680x0 asyncronous bus

The Motorola 68010 CPU has what is called an asyncronous bus. Fancy word, but what does it mean? In simple terms there is two ways of doing things; syncronous or asyncronous. Syncronous means that all involved peaces needs to be in sync in such an way that when you read something from the bus, the part that put things on the bus must do so in the frame of the CPU’s cycle definition. If the part does not present the data when the CPU reads the bus, it would cause an fault, either an bus error, or even worse, garbled data. The CPU will simply assume that the data on the bus is ready to read.

Ayncronous on the other hand, means that the CPU will insert waits until it get an thumbs up from the other part that the data is now available, and when it gets the sign, read data and continue. This is handled by the DTACK pin on the CPU. In simple terms, the CPU will wait endlessly until this pin is low (0) before continuing its execution.

This gives some serious benefits. It let us connect slower stuff on the bus, as long as we have an way of pulling that DTACK pin low when we are ready to deliver som data on the bus. Many of the Motorola support chip have an DTACK acknowledge pin just for this specification. If your pheripherals are fast enough to keep up with the CPU, you could get away with tying the DTACK pin to ground. However, one major thing by using the DTACK pin, is that we can use an micro controller such as an Raspberry PI as an device emulator, enabling us to do magic stuff in software, when integrating with hardware. This is an extremely valuable tool early into the development cycle. In this project, I will use an Arduino Mega to act as ROM and debugger.

Leave a Reply

Your email address will not be published. Required fields are marked *

Please reload

Please Wait