Frontend Module
The frontend module (FEM) is a device that performs the analog signal processing after the LNAs. This includes filtering, downconversion, and amplification. Additionally, this module provides rudimentary monitor and control support.
Bare PCB | Completed Module |
---|---|
Hardware Design
The hardware design itself is implemented in the free KiCAD program and is available here. The current hardware uses ENIG to help reflow of the fine-pitch components. Additionally, it utilizes the low-loss RO4003C substrate in a custom 4-layer stackup.
- Schematics
- BOM
- Case
Here is an annotated view of the PCB with major system components labeled:
Software Design
The RF hardware mostly operates without the intervention of any software. The only step required to use the RF hardware is to set the valid attenuation level, which defaults to 0 dB. As such, the primary goal of the digital section of the FEM is to perform Monitor and Control (MnC). MnC is achieved via an 115200 baud 3.3V UART interface on the main connector. The firmware design is carried out in the Rust programming language, and whose source can be found here. In that repository, one can also find the control software, which is used to perform the monitoring and controlling.
With this software, there is control for enabling/disabling the LNA bias and setting the interstage IF attenuator. For the digital attenuator, we can set attenuation (and therefore change the total gain) from 0 dB to 31.5 dB. This attenuator is used to maximize the dynamic range of the ADC and can be set for environmental RFI levels.
CLI
To use the CLI program, connect the FEM to a serial port either with a USB to serial adapter or directly to a hardware UART port (like on the Raspberry Pi). If the pi doesn't have the cli program already copied over, it can be found here.
Usage: cli <PORT> <COMMAND>
Commands:
mon Gets monitor data from the FEM
lna Controls the power of the LNA
if Sets the IF "power good" threshold
atten Sets the attenuation level in dB (0 to 31.5)
help Print this message or the help of the given subcommand(s)
Arguments:
<PORT> Serial port for the FEM
Options:
-h, --help Print help
-V, --version Print version
To set the power state of the LNAs, use:
./cli <serial-port> lna ch<1|2> <enabled|disabled>
To set the attenuation:
./cli atten <0-31.5>
To grab the monitor data:
./cli mon
Physical Interface
There are eight LEDs on the front panel. Four red LEDs to indicate power statess, two blue LEDs for serial activity, and two green LEDs for system status. The green LEDs will be enabled when the IF power is at a nominal level.