-
Notifications
You must be signed in to change notification settings - Fork 462
Architecture
This is where we describe the hardware architecture.
The hardware consists of:
- Si5338 clock generator for arbitrary sample rate generation
- Lime Microsystems LMS6002D
- Altera Cyclone IV E (40kLE or 115kLE) FPGA for signal processing and control
- Cypress FX3 USB 3.0 Superspeed Microcontroller
This is where we describe the software architecture.
This is where we describe the host side software architecture.
Talk about the library.
Talk about the host side utilities which include the CLI, and simple RX/TX.
The FX3 firmware basically has 3 separate modes of operation:
- FPGA Loading
- RF Link
- SPI flashing
Software in the FPGA consists of two major pieces:
- Hardware Description Language (HDL) for the logic/signal processing
- C code in a NIOS II processor for control of the LMS6002D, VCTCXO trim DAC and Si5338 PLL
- GPIF for RF samples (both TX and RX)
- UART for command/control information
The HDL for the FPGA focuses on a clock domain transfer FIFO between the 100MHz clock domain of the FX3, and the arbitrary sample clock of the LMS6002D ADC/DAC. The sample rate clock is running at 2x the sample rate due to the way the LMS6002D interface works. All samples go through a dual-clock FIFO.
The GPIF is a simple DMA state machine. For RX, when there are enough samples in the FIFO, the logic checks to make sure that samples are indeed being requested by the host and that a DMA into the FX3 is currently being requested.
Conversely, for TX, the logic first checks to make sure there is room in a FIFO for new samples to get pushed. It then checks to ensure transmit samples are being pushed to the FX3 and that a DMA transfer is being requested.
Each DMA transfer over the GPIF is 512 or 256 samples worth of data depending if the USB is in high or superspeed mode.