LimeSDR-USB hardware description

LimeSDR-USB Board Key Features
The LimeSDR-USB development board provides a hardware platform for developing and prototyping high-performance and logic-intensive digital and RF designs using Altera’s Cyclone IV FPGA and Lime Microsystems transceiver.

The LimeSDR-USB has two different USB connector versions. LimeSDR-USB 1v4 is micro USB type B connector (socket) based, as shown in Figure 1. LimeSDR-USB 1v4s is a USB type A connector (plug) based, as shown in Figure 2.





LimeSDR-USB board features:
 * USB Interface
 * Cypress FX3 Super Speed USB 3rd generation controller


 * FPGA Features
 * Cyclone IV EP4CE40F23C8N device in 484-pin FPGA
 * 39’600 logic elements
 * 1134 Kbits embedded memory
 * 116 embedded 18x18 multipliers
 * 4 PLLs


 * FPGA Configuration
 * JTAG mode configuration
 * Active serial mode configuration
 * Possibility to update FPGA gateware by using FX3 (USB)


 * Memory Devices
 * 2x 1Gbit (64M x 16) DDR2 SDRAM
 * 4Mbit flash for FX3 firmware
 * 16Mbit flash for FPGA gateware
 * 2 x 128K (16K x 8) EEPROMs for LMS MCU firmware, LMS MCU data
 * 1 x 64K (8K x 8) EEPROM for FX3 data


 * Connections
 * microUSB3.0 (type B) connector or USB3.0 (type A) plug
 * Coaxial RF (U.FL) connectors
 * FPGA GPIO headers (0.05” pitch)
 * FPGA and FX3 JTAG connectors (0.05” pitch)
 * 6..12V DC power jack and pinheader
 * Fan connector (3.3V)


 * Clock System
 * 30.72MHz VCTCXO (precision: ±1 ppm initial, ±4 ppm stable).
 * Possibility to lock VCTCXO to external clock or tune VCTCXO by onboard DAC
 * Programmable clock generator for the FPGA reference clock input or LMS PLLs


 * Board Size 60mm x 100mm (2.36” x 3.94”)

LimeSDR-USB board overview
LimeSDR-USB board version 1.4 picture with highlighted major connections presented in Figure 3. There are three connector types – data and debugging (USB3.0, FPGA GPIO and JTAG), power (DC jack and external supply pinheader) and high frequency (RF and reference clock).



Board components description listed in the Table 1 and Table 2.

LimeSDR-USB board version 1.4 picture with highlighted top components are presented in Figure 4.



LimeSDR-USB board version 1.4 picture with highlighted bottom components is presented in Figure 5.



LimeSDR-USB board architecture
The heart of the LimeSDR-USB board is Altera Cyclone IV FPGA. Its main function is to transfer digital data between the PC through a USB3.0 connector. The block diagram for LimeSDR-USB board is presented in the Figure 6.



LMS7002M based connectivity
The interface and control signals are described below:


 * Digital Interface Signals: LMS7002 is using data bus LMS_DIQ1_D[11:0] and LMS_DIQ2_D[11:0], LMS_ENABLE_IQSEL1 and LMS_ENABLE_IQSEL2, LMS_FCLK1 and LMS_FCLK2, LMS_MCLK1 and LMS_MCLK2 signals to transfer data to/from FPGA. Indexes 1 and 2 indicate transceiver digital data PORT-1 or PORT-2. Any of these ports can be used to transmit or receive data. By default, PORT-1 is selected as transmit port and PORT-2 is selected as receiver port. The FCLK# is input clock and MCLK# is output clock for LMS7002M transceiver. TXNRX signals sets ports directions. For LMS7002M interface timing details refer to LMS7002M transceiver datasheet.


 * LMS Control Signals: these signals are used for optional functionality:
 * LMS_RXEN, LMS_TXEN – receiver and transmitter enable/disable signals connected to FPGA Bank 8 (VDIO_LMS_FPGA; 2.5V).
 * LMS_RESET – LMS7002M reset connected to FPGA Bank 7 (VDIO_LMS_FPGA; 2.5V).


 * SPI Interface: LMS7002M transceiver is configured via 4-wire SPI interface; FPGA_SPI0_SCLK, FPGA_SPI0_MOSI, FPGA_SPI0_MISO, FPGA_SPI0_LMS_SS. The SPI interface controlled from FPGA Bank 8 (VDIO_LMS_FPGA; 2.5V).


 * Main I2C Interface: used to control external clock synthesizer, port expander, temperature sensor, EEPROM, I2C-SPI bridge on LimeSDR-USB board. The signals FX3_I2C_SCL, FX3_I2C_SDA connected to FX3. Also these I2C lines are connected via 0R resistors to FPGA Bank 8 (VCC3P3; 3.3V) lines FPGA_I2C_SCL, FPGA_I2C_SDA.


 * LMS I2C Interface: can be used for LMS EEPROM content modifying or for debug purposes. The signals LMS_I2C_SCL, LMS_I2C_DATA connected to FPGA Bank 8 (VDIO_LMS_FPGA; 2.5V).

SDRAM
LimeSDR-USB board has two 128MB (16bit bus) DDR2 SDRAM ICs (AS4C64M16D2-25BCN) connected to double data rate pins on Cyclone IV 1.8V Bank 2, Bank 3 and Bank 4. RAM chips are connected to separate memory controllers so RAM chips works in dual channel mode. The memory can be used for data manipulation at high date rates between transceiver and FPGA.

USB 3.0 controller
Software controls LimeSDR-USB board via the USB3 microcontroller (CYUSB3014 (FX3)). The data transfer to/from the board, SPI communication, FPGA configuration is done via the USB3 controller. The controller signals description showed below:


 * FX3_DQ[31:0] – FX3 32-bit GPIF data interface is connected to Cyclone IV 1.8V Bank 5.
 * FX3_CTL[8:0], [12:11] – FX3 GPIF interface control signals.
 * FX3_PCLK – GPIF interface clock. Clock from FX3 is fed to FPGA.
 * FX3_SPI interface is used to program FX3 firmware flash or FPGA configuration flash memory.
 * FX3 I2C bus is connected to the main I2C bus.
 * PMODE[2:0] – boot options, by default boot from SPI and USB boot is enabled. If J17 jumper is present or R122 is soldered FX3 will boot from IC8 flash memory if correct firmware exists.
 * SW1 – resets FX3
 * J16 – FX3 JTAG programming/debugging pin header.

Indication LEDs
LimeSDR-USB board comes with four dual colour (red and green (RG)) indication LEDs. These LEDs can be SMD or 3mm TH with dedicated right angle plastic holders. By default, dual colour SMD LEDs are populated and through hole LEDs are unpopulated. If required, the user can fit dual colour TH LEDs.



Each LED has it is own function. Most of LEDs are connected to FPGA and their function can be changed. Default LEDs functions and other information are listed in the table below.

Low speed interfaces
LimeSDR-USB board low speed interfaces are divided into FX3 and FPGA groups that are presented in Figure 3, Figure 8 and Figure 9. The latter block diagrams depict the main ICs, corresponding IC pin numbers, data buses and serial protocol addresses.



LimeSDR-USB board peripherals are controlled via USB interface. All commands that comes from USB are firstly processed by FX3 controller. If I2C peripheral (temperature sensor, port expander, clock generator) on FX3_I2C bus must be controlled this can be done directly. FX3_I2C is also connected to FPGA.



There are several SPI interfaces with their slave devices:


 * FX3_SPI: FX3 hardware SPI cannot be used if 32-bit GPIF interface is configured. If any slave device on this bus must be accessed then FX3 switches to 16-bit GPIF. This bus has these slave devices:
 * FX3 firmware Flash
 * FPGA configuration flash: using switch (IC9) flash memory is switched from FPGA to FX3_SPI BUS. Then flash content is updated and flash memory is switch back to FPGA. This is done when needs to update FPGA gateware in flash memory.


 * FPGA_SPI0, FPGA_SPI1: these SPI interfaces are connected to FPGA and slave devices can be accessed by transferring data to internal FPGA NIOS CPU. This bus has these slave devices:
 * RFIC (FPGA_SPI0)
 * Phase detector (FPGA_SPI1)
 * DAC (FPGA_SPI1)


 * Internal FPGA SPI module: FPGA has its own SPI module and can be controlled as regular SPI device. By using FPGA SPI it is possible to control FPGA modes etc.


 * BRDG_SPI: this is alternative SPI interface for FX3 and currently is not used.

In the table below are listed USB3.0 controller (FX3) pins, schematic signal name, FPGA interconnections and I/O standard.

In the table below are listed RF transceiver (LMS7002M) pins, schematic signal name, FPGA interconnections and I/O standard.

SPI interfaces, connected to the FPGA are listed in the tables bellow.

FX3 MCU features I2C interface. Slave devices and related information, connected to this interface, are listed in the table bellow.

Eight GPIOs from FPGA are connected to 10 pin 0.05” header. Additional 2 pins are dedicated for power. FPGA_GPIO related information is presented in the table below.

Board temperature control
LimeSDR-USB has integrated temperature sensor which controls FAN to keep board in operating temperature range. FAN must be connected to J19 (0.1” pitch) connector or to J20 (0.05” pitch) connector. FAN control voltage is 3.3V.

Fan will be turned on if board will heat up to 55°C and FAN will be turned off if board will cool down to 45°C.



Measured temperature value can read by using LimeSuiteGUI.