Click for homepage
OWVL
DDR
Stasi
  
← 302620
  
Speech module
Language cartridge for Device 32620.2

This page describes the speech module of the 32620.2 speech/morse generator. It was created in an attempt to make a working reproduction of the module, as it was missing from the 32620.2 in our collection. In the original 32620, the module consists of two identical speech boards, one of which is mounted upside down. This allows the unit to be installed in two possible orientations.

The purpose of using two speech boards, is twofold: (1) It can be used to accomodate two languages (one on each board), or (2) it can be used for a language which cannot be fitted onto a single card. The board furthest from the CPU is the primary speech card '0'. It is used by default.

If two languages are used (one on each board), the alternative language can be selected by in­serting the speech module upside-down before switching the device on. The secondary speech board has now become the primary one. In this configuration, the secondary board is not used.
  

In case a language cannot be fitted into the six 8KB EPROMs of a single board, the remainder is stored on the secondary board. This is the case, for example, with the Spanish version which requires eight EPROMs. In this configuration, the speech module cannot be used upside-down. Please note that the simultaneous use of two speech boards is only possible with the 32620.2 version. The older 32620 version has no provisions for this, as the secondary socket is unwired.

When the CPU is started, the firmware reads a lookup table that is stored in the first 64 bytes (0x40) of the first EPROM (Speech 1) on the primary board. This lookup table tells the firmware where each sound sample starts an on which card it is stored. Although the format of the lookup table is not documented, most of it is trivial. Full details of the lookup table are provided below. The samples are recorded a 8 kHz, using 8-bit Linear Pulse-Code Modulation (PCM or LPCM).

Origial speech module. Photograph by Detlev Vreisleben [2].
Origial speech module. Photograph by Detlev Vreisleben [2].
Origial speech module - populated board. Photograph by Detlev Vreisleben [2].
Origial speech module - unpopulated board. Photograph by Detlev Vreisleben [2].
Modified frame with the two speech PCBs
Crypto Museum speech cartridge
Crypto Museum speech cartridge
Crypto Museum speech cartridge
A
×
A
1 / 8
Origial speech module. Photograph by Detlev Vreisleben [2].
A
2 / 8
Origial speech module. Photograph by Detlev Vreisleben [2].
A
3 / 8
Origial speech module - populated board. Photograph by Detlev Vreisleben [2].
A
4 / 8
Origial speech module - unpopulated board. Photograph by Detlev Vreisleben [2].
A
5 / 8
Modified frame with the two speech PCBs
A
6 / 8
Crypto Museum speech cartridge
A
7 / 8
Crypto Museum speech cartridge
A
8 / 8
Crypto Museum speech cartridge

Memory map
Below is the memory map of the Z80 CPU platform used in the 32620. The Z80 has 16 address lines (A0-A15), which is equivalent to a total address space of 64KB. The bottom 16KB (0x0000 - 0x3FFF) is used for the system EPROM, the SRAMs and off-board memory-mapped peripherals.

Memory map of the 32620 when used with Spanish language EPROMs

The top 48KB (0x4000-0xFFFF) is used for external memory, which in our case is taken by the speech module. In the standard design, this space is used to address 6 EPROMs of 8KB each. The logic on the original 32620 maps the 6 EPROMs to the external memory space (0x4000-0xFFFF).

If the sound samples for a given language can be fitted into these 6 EPROMs, only one speech board is needed. This is the case for the German version. In that situation, the second speech board (when present) can hold an alternative language, but only if it can also be fitted into 48KB of memory. To use the second language, the user has to install the speech module upside-down.

If the sound samples for a given language cannot be fitted into 6 EPROMs, they have to be spread over the two boards. If this is the case, the speech module can only be used in one orientation. This is the case with the Spanish version, which needs 8 EPROMs. In this case, 6 EPROMs are on the primary speech card (0) and 2 on the secondary card (1). The remaining 4 spaces are empty.


Lookup table
The first EPROM (Speech 1) of the primary speech board holds a lookup table in the first 64 bytes (0x40). This means that the first sound sample starts at offset 0x40 (actually at address 0x4040 as the EPROM starts at 0x4000). The table has 20 entries of 3 bytes each, and is 0xFF terminated. Only the first 13 entries of the table are used. The rest is reserved for 'future expansion' and is filled with 0xFF. The first two bytes of each entry contain a pointer to the start of the sample (i.e. the start address) in LSB/MSB order. For example: address [0x4AF8] is stored as [0xF8] [0x4A].

The third byte contains the flags for that entry. The upper nibble of the flags specifies the board that holds the sample. Only bits 6 and 7 of the upper nibble are used. Of the lower nibble, bits 0-2 specify the audio level in the range 0-7 [3]. The remainings bits (3-5) are unused (all 0).


In the German version of the EPROM-set, all flags have a value of 0x43, except for the terminator which is 0xFF. In the Spanish version, flags values 0x42, 0x43, 0x45, 0xC3 and 0x83 are found (plus 0xFF for the terminator). This confirms that the Spanish data is spread over two boards and that a varying audio level is used. The German and Spanish lookup tables are listed below.

    German       Spanish
   40 40 43      40 40 42
   F8 4A 43      19 50 43  ← Stored on board 0
   1C 58 43      18 5C 45  ← ?
   ED 66 43      CA 70 43
   F7 73 43      26 81 43
   18 82 43      49 95 43
   3F 92 43      7A A9 43
   AC A1 43      FF BD 43
   5E B1 43      D2 D0 43
   1E C0 43      F7 E3 43
   73 D0 43      70 F9 C3  ← Spread over board 0 and 1
   15 E0 43      13 57 83  ← Stored on board 1
   1F EF 43      6D 6B 83
   9D FB FF      BA 7F FF  ← End-address and terminator


 Play German version
 Play Spanish version

Additional samples
To verify the format of the lookup tables (above), we created various language files from publicly available sound samples, and added a matching lookup table. Trying this with Dutch and Arabic, worked at the first attempt. Other languages are currently under development. We are still looking for original sound samples that were used with the 32620, like Russian and Polish. From publicly available recordings, we have recreated the English cartridge that was used in Poland.

 Play the English version (spoken by a Polish person)


Reproduction board
Making an exact copy of the original sound cards is not difficult. The board measures 95 x 170 mm and contains six 2764 (8KB) EPROMs, plus a number of logic circuits to map these EPROMs into the 0x4000-0xFFFF address space. This means that the lower 16KB of the address space (0x000-0x3FFF) is not used. This is the area in which the CPU's EPROM and SRAMs are located.

Circuit diagram
To save ourselves a lot of work, it was decided to use the larger EPROM type 27C020, which has a storage space of 256KB. If we divide this into 4 banks, each bank has a capacity of 64KB, of which only the upper 48KB can be used (the lower 16KB is not addressable). This allows us to store four langages on a single card. The upper two address lines of the EPROM are controlled by switches.


The diagram above shows the proposed circuit, in which all 16 address lines from the CPU (A0-A15) are connected directly to the EPROM. Address lines A16 and A17 are connected to toggle switches, so that they can be made HI or LO. This allows any of four 64KB banks to be selected.

Note that the switches have a neutral centre position (OFF), that allows the secondary board to be slaved to the primary one. If this option is used, a 3-wire cable should be connected between the slave connectors of the two boards. This feature can be particularly useful, if one or more languages are too large to be fitted onto a single speech board, such as with Spanish.

MERQ is the external memory select line, directly from the CPU. BS is the board select line, which is controlled by one of the PIOs on the expansion board. BS and MERQ are both fed to the logic circuit around IC2 (27HCT27). They are used to enable the EPROM (CE) under control of the CPU. Address lines A14 and A15 are also fed to IC2, to disable the lower 16KB segment of the EPROM.


The diagram above shows how the two bank switches (S1,S2) can be replaced by a single 4-position rotary selector (S1a, b), which is what we used in the reproduction described below.

Printed circuit board
The above circuit diagram was converted into a Printed Circuit Board (PCB) in December 2021. At the same time, a simple BASIC program was created to allow the EPROM-dumps of the available languages to be merged into two 27C020 EPROMs of 256KB each (one for each speech board).

There were two practical problems though. The first one is the 58-way connector by which the speech board is slotted into the backplane of the 32620. These connectors were made by RFT and have a pin distance of 2.5 mm (metric) instead of the conventional 2.54 mm (imperial). These are no longer in production. In addition, a frame was needed to allow both speech cards to be inserted into the backplane of the 32620 simultaneously.

Both problems were solved by some very kind members of the Robotron Forum; a group of people that keeps old DDR technology alive [4].
  

The required EFS-58/AB connectors – extremely hard to find these days – were kindly provided and soldered onto our board. Furthermore, one of the members provided a so-called EGS frame that allows both boards to be merged into a single cartridge. The same EGS frame was used in the original 32620 speech cartridge. Many thanks to all contributors from the Robotron Forum.

For future service and repair, we also decided to make an extension board that allows us to run any of the 32620 boards outside of the device.

To make life a bit easier, we used two 29C020 Flash-ROMs instead of conventional 27C020 EPROMs. They have the same pinout but can be erased and programmed in a couple of seconds.

Next, the two boards were installed on the back­plane of the 32620: the primary one in the right­most slot and the secondary one to its left. After turning the device on, it worked straight away.
  

The lady now speaks German and – with the flick of a switch – Spanish. As there were quite a few anomalies with the German speech, it was replaced with the ROM-dump from a different source. It fixed the anomalies. Both German and Spanish now sound exactly like they did in the 1980s.

In the next stage, the rear end of the EGS frame was reinforced with an aluminium panel and a grip. This makes it easier to install and remove the cartridge. It also makes the unit resemble the original 32620 speech cartridge a bit more.

The grip was placed towards the top, to make room at the lower half for fitting a subminiature 4-position rotary selector in the narrow space between the two PCBs. The image on the right shows the completed speech cartridge, which supports up to four languages. The red dot is the knob of the four-position rotary selector.
  

It replaces the two miniature switches on each of the speech cards. The image also shows the interconnection cable between the two cards. Note that in our case, we had to remove a metal stub from the backplane of the 32620. This is a 5 mm thick metal alignment guide that was added to prevent the cartridge from being installed upside down. As the EGS frame we used for the reconstructed cartridge does not support this guide pin, it was blocking the cartridge.

Bank selector and LED indicators
Speech card
Crypto Museum speech card
Two speech PCs and an emptry cartridge
Modified frame with the two speech PCBs
Extension board
Crypto Museum speech cartridge
Crypto Museum speech cartridge
Crypto Museum speech cartridge
Crypto Museum speech cartridge
Crypto Museum speech cartridge
Connector side of the speech cartridge
Wiring from the 4-position selector, and to the adjacent speech card
Connector-end of the speech cartridge
Close-up of the 4-position switch
4-position language selector
B
×
B
1 / 16
Bank selector and LED indicators
B
2 / 16
Speech card
B
3 / 16
Crypto Museum speech card
B
4 / 16
Two speech PCs and an emptry cartridge
B
5 / 16
Modified frame with the two speech PCBs
B
6 / 16
Extension board
B
7 / 16
Crypto Museum speech cartridge
B
8 / 16
Crypto Museum speech cartridge
B
9 / 16
Crypto Museum speech cartridge
B
10 / 16
Crypto Museum speech cartridge
B
11 / 16
Crypto Museum speech cartridge
B
12 / 16
Connector side of the speech cartridge
B
13 / 16
Wiring from the 4-position selector, and to the adjacent speech card
B
14 / 16
Connector-end of the speech cartridge
B
15 / 16
Close-up of the 4-position switch
B
16 / 16
4-position language selector

Contributors
The following persons have contributed to this page and to the reconstruction of the speech cartridge as described above:

  • Various members of the Robotron Forum
  • Detlev Vreisleben
  • Jörg Drobick
  • Marc Simons
  • Paul Reuvers
Download
  1. Improved version in which glitches in the sound samples have been repaired.
  2. Recreated by Crypto Museum from surviving recordings.

Datasheets
  1. EPROM 2764 (8KB)
    ST Microelectronics, 2000.

  2. EPROM 27C020 (256KB)
    ST Microelectronics, 2000.
Documentation
  1. Sprach-Morse-Generator und Programmiergerät 32620 / 32621 1
    Full description of Speech-Morse-Generator and Programming Aid (German).
    Nr. 1176-0.1 KB (4). February 1985. MfS-OTS Nr. 4061.

  2. Marcus Simons, Reproduction speech card - circuit diagram
    Crypto Museum, 28 December 2021. Version X1.

  3. Marcus Simons, Reproduction speech card - PCB layout
    Crypto Museum, 28 December 2021. Version X1.
  1. Document from BStU archives [2], kindly supplied by Detlev Vreisleben [1].

References
  1. Detlev Vreisleben, Personal correspondence
    July 2017.

  2. Bundesbeauftragte für die Stasi-Unterlagen (BStU) 1
    Federal Commissioner for the Stasi-Records.

  3. @uberardy, Taking a look at Gerät 32620
    29 August 2020.

  4. Robotron Forum, various members
    January 2022.
  1. Full name: Bundesbeauftragte für die Unterlagen des Staatssicherheitsdienstes der ehemaligen Deutschen Demokratischen Republik (DDR) — Federal Commissioner for the Records of the State Security Service of the former German Democratic Republic (GDR) — officially abbreviated to BStU.

Further information
Any links shown in red are currently unavailable. If you like the information on this website, why not make a donation?
© Crypto Museum. Created: Tuesday 28 December 2021. Last changed: Wednesday, 08 May 2024 - 07:45 CET.
Click for homepage