

	ColecoVision Sound Generation Hardware



 The ColecoVision uses the Texas Instruments SN76489A sound

generator chip. It contains three programmable tone generators,

each with its own programmable attenuator, and a noise source

with its own attenuator.



1. Tone Generators



 Each tone generator consists of a frequency synthesis section

requiring ten bits of information to define half the period of

the desired frequency (n). F0 is the most significant bit and

F9 is the least significant bit. The information is loaded into

a ten stage tone counter, which is decremented at a N/16 rate

where N (3.579MHz) is the input clock frequency. When the tone

counter decrements to zero, a borrow signal is produced. This

borrow signal toggles the frequency flip-flop and also reloads

the tone counter. Thus, the period of the desired frequency is

twice the value of the period register.



The frequency can be calculated by the following:



   f = 3.579MHz/(32n)



The output of the frequency flip-flop feeds into a four stage

attenuator. The attenuator values, along with their bit position

in the data word, are shown below. Multiple attenuation control

bits may be true simultaneously. THus, the maximum attenuation

is 28 db.



	A0	A1	A2	A3		Weight



	0	0	0	1		 2 db

	0	0	1	0		 4 db

	0	1	0	0		 8 db

	1	0	0	0		16 db

	1	1	1	1		 Off



2. Noise Generator



 The noise generator consists of a noise source that is a

shift register with an exclusive OR feedback network. The

feedback network has provisions to protect the shift register

from being locked in the zero state.



	Noise Feedback Control



		FB		Configuration



 		0		"Periodic" Noise

		1		"White" Noise





	Noise Generator Frequency Control



	NF0	NF1		Shift Rate



	0	0		N/512

	0	1		N/1024

	1	0		N/2048

	1	1		Tone gen #3 output



3. Control Registers



 The SN76489A has eight internal registers which are used

to control the three tone generators and the noise source.

During all data transfers to the SN76489A, the first byte

contains a three bit field which determines the destination

control register. The register address codes are shown here.







	Register Address Field



	R0	R1	R2	Destination Control Register



	0	0	0	Tone 1 Frequency

	0	0	1	Tone 1 Attenuation

	0	1	0	Tone 2 Frequency

	0	1	1	Tone 2 Attenuation

	1	0	0	Tone 3 Frequency

	1	0	1	Tone 3 Attenuation

	1	1	0	Noise Control

	1	1	1	Noise Attenuation



4. Data Formats



 The formats required to transfer data are shown below.



	Frequency

 LSB                  MSB    LSB                   MSB

+---+--------+-----------+  +---+---+-----------------+

|   |Reg Addr|    Data   |  |   |   |       Data      |

+ 1 +--+--+--+--+--+--+--+  | 0 | X +--+--+--+--+--+--+

|   |R0|R1|R2|F6|F7|F8|F9|  |   |   |F0|F1|F2|F3|F4|F5|

+---+--+--+--+--+--+--+--+  +---+---+--+--+--+--+--+--+



	Noise Control

 LSB                          MSB

+---+---+---+---+---+----+-------+

|   |  Reg Addr |   |    | Shift |

+ 1 +---+---+---+ X | FB +---+---+

|   | 1 | 1 | 0 |   |    |NF0|NF1|

+---+---+---+---+---+----+---+---+



	Attenuator

 LSB                  MSB    

+---+--------+-----------+

|   |Reg Addr|    Data   |

+ 1 +--+--+--+--+--+--+--+

|   |R0|R1|R2|A0|A1|A2|A3|

+---+--+--+--+--+--+--+--+



