Multi Mode Digital Voice Modem – MMDVM

The MMDVM is intended to be an open-source Multi-Mode Digital Voice Modem, which utilities the power of an ARM processor and a simple analogue interface board. The Multi-Mode Digital Voice Modem is a combined hardware and software development of a modem to handle all amateur digital voice modes. Initially, it will support D-Star and DMR, with System Fusion and P.25 coming later, as well as a built-in FM repeater controller. For all modes other than DMR and FM, the modem can be used in simplex or duplex mode, while for DMR and FM full duplex must be used.

It is aimed at the Arduino Due, Teensy 3.1/3.2 and mbed platforms, the only requirement for the hardware is to be ARM Cortex-M3, M4, or M7 based, and access to raw interrupts and ADC and ADC ports as well as digital signaling ports. For this reason, the Raspberry Pi and similar single board computers are not being targeted as access to the raw I/O is mediated by the operating system kernel and does not provide the performance, nor does the hardware provide the necessary direct access to the I/O pins on the ARM processor. However such boards are very useful for hosting the interface of the modem to external networks such as ircDDB in the case of D-Star.

MMDVM Hardware

Currently the only hardware device specified is the Arduino Due. However, the requirements are common to all supported platforms. The modem requires one analogue input, one analogue output, and one digital output. A second digital output. The analogue input requires that the audio is low pass filtered with a cut-off of around 5 kHz and the output then level shifted so that a zero input signal provides an output of half the rail voltage (3.3V) for the ADC, it is important that the low-frequency characteristics of this stage is very good with little or no low-frequency roll-off due to any coupling capacitors in the signal path.

The analogue output has very similar requirements to the input filtering with the caveat that the output signal from the DAC will be at half the rail voltage for a zero output. Both the input and output can be inverted in software, The one required output line will be used to signal a transmit condition, the modem is capable of providing an inverted output if needed. The extra output can be used to drive a LED which is used by the modem to indicate that an incoming signal is being decoded.


Source: GitHub

« Back to Glossary Index