This project was a proof of concept prototype to test the usability of a MAX10 FPGA as a repeater controller. The FPGA board is an off the shelf EK10M08 from Altera/Intel, which supports the Arduino I/O standard. This board has analog and digital I/O, but requires an external programming cable which costs more than the board itself!
The Arduino board was built using KiCAD, it has audio inputs and outputs for the radios, with level control, LED’s for COR and PTT status, and a couple of buttons for test purposes. The FPGA board does not have any audio output, so a PWM technique was used to generate the CW ID.
The firmware on the FPGA provides basic control using a Finite State Machine, which is programmed into the flash memory on the device. CW ID’s are automatically generated when the repeater ‘wakes up’, is going back to a sleep mode, and every 10 minutes in between, whether active or not. The go-ahead tone is independently programmable, and can be modulated to indicate an external condition such as a link being active or battery backup is active.
DTMF decoding is also supported using a Goertzel algorithm decoder. Simple control sequences can be implemented to activate pins on the FPGA that are brought out to 40-pin connectors on the lower board. Audio mixing and control of the links will need to be implemented on external logic.
As stated earlier, this project was a proof of concept and it did produce a working controller. It has been superseded by a smaller form factor Raspberry Pi HAT that provides the same functionality with the ability to use a SIP connection for a digital phone. The functionality on the Arduino board was copied to an interface board that provides the familiar connectors for radios.
Both the HAT and interface board are from MapleDSP.