Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Multi Mode Digital Voice Modem
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 signalling 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.
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.
the project was moved to a new location https://github.com/g4klx