* [[MEA8000 I/O Ports and Pinouts]]
* [[MEA8000 Voice Generator]]
Philips/Mullard/Signetics MEA8000 Speech Chip
== Status Register (R) ==
7 REQ Data Request (0=Busy, 1=Data Request)
6-0 N/A Not used
== Data Register (W) (A0=0) ==
If the device is in STOP mode, then first data byte must be the 8bit pitch:
7-0 PITCH Starting Pitch (8bit) (sawtooth) (don't care for noise)
thereafter, 32bit Speech Frame(s) can be written:
31-30 BW1 2bit Bandwidth is? 1st formant
29-28 BW2 2bit Bandwidth of 2nd formant bandwidth "4 KH"
27-26 BW3 2bit Bandwidth of 3rd formant
25-24 BW4 2bit Bandwidth of 4th formant
N/A FM4 0bit Frequency of 4th formant (fixed at 3500 Hz)
23-21 FM3 3bit Frequency of 3rd formant
20-16 FM2 5bit Frequency of 2nd formant resonance frequency
15-11 FM1 5bit Frequency of 1st formant
10-7 AMPL 4bit Amplitude (volume)
6-5 FD 2bit Frame Duration (8,16,32,64 ms)
4-0 PI 5bit Pitch Increment (signed?) (?=Noise)
the 32bit parameter is split into 4bytes (starting with bit31-24). wait for REQ=1 before sending further speech frame(s).
== Command Register (W) (A0=1) ==
3-2 CONT Continue (0=No change, 1=No change, 2=Slow Stop, 3=Continue)
1-0 ROE /REQ Output (0=No change, 1=No change, 2=Disable, 3=Enable)
* STOP Mode: Output is silent, REQ is set, next write to Data register will be treated as 8bit Starting Pitch value, to be followed by the 32bit Speech Frame data, thereafter sound output will start (and the device is no longer in STOP Mode).
* After completing a speech frame (which takes 8..64 ms), the CPU can output another speech frame (by writing another 32bit to the data register), if the CPU doesn't supply new data then Slow Stop or Continue will occur (as selected in the Command Register).
* SLOW STOP Mode: After completing the last speech frame, the last frame will be repeated once (with decaying amplitude & same pitch), thereafter, STOP mode is entered.
* CONTINUE Mode: The last speech frame will be repeated indefinetly (until a new 32bit data has been supplyied, or until SLOW STOP mode is selected, or until INSTANT STOP is forced).
== MEA8000 Pinouts Status Register (R) (A0=Don't care) == 7 REQ Data Request (0=Busy, 1=Data Request) 6-0 N/A Not used (probably high-z?)* Do not write to the Data Register when REQ=0. Timings should be somehow like so: After 1st..3rd Frame Byte, REQ=0 occurs for 3us. After 4th byte (and after Initital Pitch) REQ=0 occurs for 8..64ms?* '''Caution''' - The device automatically enters Slow-Stop mode (if enabled) if software fails to send new data continously. Using VBLANK interrupts to send data is too slow. Using the CPC's 300Hz IRQ is okay - as long as the IRQ is continously enabled and processed (if it isn't then the device may run into slow stop mode - and expect a 5-byte frame instead of the normal 4-byte frames). Ie. operation doesn't just depend on WHAT data you are sending, but also on WHEN you are sending it. A similar (though less dramatic) problem may also arise in Continue mode (in case the device keeps adding PI to P during continue)? == Data Register (W) (A0=0) ==If the device is in STOP mode, then first data byte must be the 8bit pitch: 7-0 P 8bit Starting Pitch (0..510 Hz) (sawtooth) (unused for noise)thereafter, 32bit Speech Frame(s) can be written: 31-30 BW1 2bit Bandwidth of 1st formant (726,309,125,50 Hz) 29-28 BW2 2bit Bandwidth of 2nd formant (726,309,125,50 Hz) 27-26 BW3 2bit Bandwidth of 3rd formant (726,309,125,50 Hz) 25-24 BW4 2bit Bandwidth of 4th formant (726,309,125,50 Hz) N/A FM4 0bit Resonance Frequency of 4th formant (3500 Hz) (fixed) 23-21 FM3 3bit Resonance Frequency of 3rd formant (1179..3400 Hz) 20-16 FM2 5bit Resonance Frequency of 2nd formant (440..3400 Hz) 15-11 FM1 5bit Resonance Frequency of 1st formant (150..1047 Hz) 10-7 AMPL 4bit Amplitude (volume) (0.000 .. 1.000) (nonlinear) 6-5 FD 2bit Frame Duration (8,16,32,64 ms) 4-0 PI 5bit Pitch Increment (signed, -15..+15 Hz per 8ms) (or -16=Noise)the 32bit parameter is split into 4bytes (starting with bit31-24). == Parameter Translation ==The chip contains a small ROM table that translates the incoming binary values to following meanings: Val FD(ms) P(Hz) PI(Hz/8ms) Ampl. FM1(Hz) FM2(Hz) FM3(Hz) FM4(Hz) BW(Hz) 0 8 0 0 0.000 150 440 1179 3500 726 1 16 2 +1 0.008 162 466 1337 - 309 2 32 4 +2 0.011 174 494 1528 - 125 3 64 6 +3 0.016 188 523 1761 - 50 4 - 8 +4 0.022 202 554 2047 - - 5 - 10 +5 0.031 217 587 2400 - - 6 - 12 +6 0.044 233 622 2842 - - 7 - 14 +7 0.062 250 659 3400 - - 8 - 16 +8 0.088 267 698 - - - 9 - 18 +9 0.125 286 740 - - - 10 - 20 +10 0.177 305 784 - - - 11 - 22 +11 0.250 325 830 - - - 12 - 24 +12 0.354 346 880 - - - 13 - 26 +13 0.500 368 932 - - - 14 - 28 +14 0.707 391 988 - - - 15 - 30 +15 1.000 415 1047 - - - 16 - 32 Noise - 440 1100 - - - 17 - 34 -15 - 466 1179 - - - 18 - 36 -14 - 494 1254 - - - 19 - 38 -13 - 523 1337 - - - 20 - 40 -12 - 554 1428 - - - 21 - 42 -11 - 587 1528 - - - 22 - 44 -10 - 622 1639 - - - 23 - 46 -9 - 659 1761 - - - 24 - 48 -8 - 698 1897 - - - 25 - 50 -7 - 740 2047 - - - 26 - 52 -6 - 784 2214 - - - 27 - 54 -5 - 830 2400 - - - 28 - 56 -4 - 880 2609 - - - 29 - 58 -3 - 932 2842 - - - 30 - 60 -2 - 988 3105 - - - 31 - 62 -1 - 1047 3400 - - - ... - ... - - - - - - - 255 - 510 - - - - - - -
== MEA8000 Pinouts ==
1-GND 4-D6 7-D3 10-D0 13-VCC 16-OSC IN 19-REF 22-/RD
2-/REQ 5-D5 8-D2 11-A0 14-/REQEN 17-OSC OUT 20-OUT 23-/WR
3-D7 6-D4 9-D1 12-/CE 15-NC 18-CLK IN 21-CLK OUT 24-TEST