1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
*****************************
TI TMS5220 Emulator
(c) Frank Palazzolo
*****************************
The TI TMS5220 Speech chip uses Linear-Predictive decoding scheme to produce
speech from very compact data. This scheme is very similar to the U.S.
Federal Standard LPC-10e coding system, which was developed soon after
this chip.
It is virtually identical to the chip used in the landmark "Speak 'N Spell"
toy produced in the '70s.
Acknowledgements:
-----------------
I would like to thank Larry Brantingham, the original designer of the chip,
for his technical help.
I would also like to thank Neill Cortlett, who first showed that this chip
could be emulated in real-time in his Multi-Gauntlet Emulator.
Theory of operation:
--------------------
The TI speech chip contains a 128-bit parallel-in, serial-out FIFO, a
10-pole digital lattice filter which models the vocal tract, and a D/A
converter. It was originally design to operate either with a microcomputer
interface, or with a serial speech ROM. The Speech ROM functionality is
not emulated as no arcade games require it.
The input data is writen a byte at a time into the chip, and it is
decoded bitwise into variable length frames.
Possible Frame Types are as follows:
Energy RF Pitch K1 K2 K3 K4 K5 K6 K7 K8 K9 K10
-----------------------------------------------------------------
Silent 0000
Stop 1111
Repeat XXXX 1 XXXXXX
Unvoiced XXXX 0 000000 XXXXX XXXXX XXXX XXXX
Voiced XXXX 0 XXXXXX XXXXX XXXXX XXXX XXXX XXXX XXXX XXXX XXX XXX XXX
Stop Frame: Stops the current speech
Repeat Frame: Uses the digital filter coefficients from the previous frame,
with new Energy and Pitch values
Unvoiced Frame: Uses Noise generator to feed 4 pole digital filter
(All other coefficients are set to zero)
Voiced Frame: Uses Pulse Generator to feed 10 pole digital filter
All parameters (Energy, Pitch, K1-K10) are indexes into a lookup table for
actual values (see TMS5220R.c)
K1-K10 are reflection coefficients for the lattice filter.
Each frame is used to generate 200 samples, and 8 times during each frame,
(every 25 samples), these values are linearly interpolated to smooth out
frame transitions.
The Noise generator is based on a shift-register type random-bit generator.
The Pulse generator is based on a lookup table.
API:
----
TBD
More:
-----
For further technical info, the data sheet is floating around on the net.
(I believe the name is TMS.PDF) If you can't find a copy, email me and
I'll point you towards it. Feel free to contact me if you have a question.
Frank Palazzolo
palazzol@tir.com
Downloaded from: http://files.emuwiki.com/tms5220.7z
|