36 lines
1.7 KiB
Plaintext
36 lines
1.7 KiB
Plaintext
The Transceiver
|
|
|
|
The transceiver consists of three modules:
|
|
--- transceiver
|
|
--- radioInterface
|
|
--- USRPDevice
|
|
|
|
The USRPDevice module is basically a driver that reads/writes
|
|
packets to a USRP with two RFX900 daughterboards, board
|
|
A is the Tx chain and board B is the Rx chain.
|
|
|
|
The radioInterface module is basically an interface b/w the
|
|
transceiver and the USRP. It operates the basestation clock
|
|
based upon the sample count of received USRP samples. Packets
|
|
from the USRP are queued and segmented into GSM bursts that are
|
|
passed up to the transceiver; bursts from the transceiver are
|
|
passed down to the USRP.
|
|
|
|
The transceiver basically operates "layer 0" of the GSM stack,
|
|
performing the modulation, detection, and demodulation of GSM
|
|
bursts. It communicates with the GSM stack via three UDP sockets,
|
|
one socket for data, one for control messages, and one socket to
|
|
pass clocking information. The transceiver contains a priority
|
|
queue to sort to-be-transmitted bursts, and a filler table to fill
|
|
in timeslots that do not have bursts in the priority queue. The
|
|
transceiver tries to stay ahead of the basestation clock, adapting
|
|
its latency when underruns are reported by the radioInterface/USRP.
|
|
Received bursts (from the radioInterface) pass through a simple
|
|
energy detector, a RACH or midamble correlator, and a DFE-based demodulator.
|
|
|
|
NOTE: There's a SWLOOPBACK #define statement, where the USRP is replaced
|
|
with a memory buffer. In this mode, data written to the USRP is actually stored
|
|
in a buffer, and read commands to the USRP simply pull data from this buffer.
|
|
This was very useful in early testing, and still may be useful in testing basic
|
|
Transceiver and radioInterface functionality.
|