Changes

PSG

1,096 bytes added, 14 April
/* Input Clock Speed */
The Programmable Sound Generator (PSG) is able to output three separate sound channels (named Channel A, B and C). Each channel can be used to output tones and/or white noise.
 
== Clock Frequency ==
 
The PSG is driven by an external clock at 1MHz provided by the [[Gate Array]]. The AY chip has an internal clock divider by 8 which means that it works internally at 125KHz, outputting 125,000 samples per second for each channel.
== PSG Registers ==
===05h - Channel C Tone Frequency High (4bit)===
The tone (square wave) frequency in Hertz is calculated as follows:
F = 4MHz 1MHz / 64 16 / nn ;with nn in range 1..4095 (nn=0 acts as nn=1)
Possible frequencies are in range from 62500Hz (nn=1) down to approx. 15.26Hz (nn=4095).
The noise frequency in Hertz is calculated as follows:
F = 4MHz 1MHz / 64 16 / nn ;with nn in range 1..31 (nn=0 acts as nn=1)
Noise can be output on all 3 channels, but there is only one noise generator (so all channels share the same noise frequency). The noise generator consists of 17bit shift register, and a 1bit noise level (0=LOW or 1=HIGH). These are updated at the selected frequency as follows:
Envelope step frequency (tone or noise) calculated as follows:
F = 4MHz 1MHz / 64 16 / nn ;with nn in range 1..65535 (nn=0 acts as nn=1)
Depending on the envelope shape, the volume is incremented from 0 to 15, or decremented from 15 to 0. In either case it takes 16 steps to complete, the completion time for 16 steps is therefore:
T = nn*1024 256 / 4MHz 1MHz ;with nn in range 1..65535 (256us .. 16.7 seconds)
=== 0Dh - Volume Envelope Shape (4bit) ===
01XX 04h-07h /_________ (same as 0Fh)
1000 08h \\\\\\\\\\
1001 09h \_________ (volume remains quitequiet)
1010 0Ah \/\/\/\/\/
1011 0Bh \""""""""" (volume remains high)
1101 0Dh /""""""""" (volume remains high)
1110 0Eh /\/\/\/\/\
1111 0Fh /_________ (volume remains quitequiet)
When using the volume envelope generator, the volume is always increased from 00h to 0Fh (or vice versa), it is not possible to specify a starting/ending point (like from 00h to 07h).
=== 0Eh - External Dataregister Port A ===
This register receives data from the CPC keyboard (or joystick), for more information read the chapter about the [[Programming:Keyboard_scanning|CPC Keyboard Matrix]]. This register can be also used as output port by setting bit 6 of the PSG control register to 1 (that would allow to use the six data pins of the joystick connector to output data to external hardware).
=== 0Fh - External Dataregister Port B ===
== Mono and Stereo Output ==
When using the CPC's external stereo jack, channel A is output to the right, channel C is output left, and channel B is output to both left and right, in that case channel B is output through a bigger resistor to prevent that this channel appears loader louder than the others.
Otherwise (when using the built-in speaker), all three channels are mixed at the same intensity. This signal appears to be also sent to the Tape output line also, so a connected Data Recorder could be used to record CPC music also.
== Datasheet D/A converter table ==* [[Media:Ay3These are the 16-891xbit values used in Arkos Tracker.pdf|AY-3-891x They are more accurate than the datasheet]]you can find, as they were tested electronically by Grim and Zik directly from a real CPC:
== Links ==0, 231, 695, 1158, 2084, 2779, 4168, 6716, 8105, 13200, 18294, 24315, 32189, 40757, 52799, 65535
[httpay3 manual show different values://en2 steps down = half values down.wikipedia.org/wiki/General_Instrument_AY-3-8910 Wikipedia on the PSG]
Thus, the theoretical formula is f(x) == Video ==2 ^ ((x - 15) / 2) with x between 0 and 15.
Introduction to This is the AY-3-8912volume table used by BSC:[[File:PSG DAC volume table.jpg]]
{{#ev:youtube|eSfoQKiXo5g|200}}ETO once started testing the output levels (to be fair, with a multimeter only) and it was very close to the theoretical value based on the data sheet and how the CPC mixes the channels.
Amstrad CPC6128 playing See [[MYM files]https://www.cpcwiki.eu/forum/technical-support/amstrad-cpc-volume-decibel-table/ Discussion on the forum]
{{#ev== Block Diagram ==*[[File:youtubePSG Block Diagram.png]] == Datasheet ==* [[Media:Ay3-891x.pdf|PTslbiAbb5A|200}}AY-3-891x datasheet]] == Links ==*[http://en.wikipedia.org/wiki/General_Instrument_AY-3-8910 Wikipedia on the PSG]*[http://quasar.cpcscene.net/doku.php?id=assem:psg Quasar PSG documentation (in french)]
[[Category:Stub]]
[[Category:Hardware]]
[[Category:Music and sound| ]]
[[Category:Video contents]][[Category:CPC Internal Components]]
4,605
edits