Commit graph

12 commits

Author SHA1 Message Date
Thomas Tsou
7251140a21 Transceiver52M: Add SSE floating point / integer conversion
Convertions are performed in multiples of 4 or 8. All loads are
considered unaligned.

Signed-off-by: Thomas Tsou <tom@tsou.cc>

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6734 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2013-10-17 06:18:18 +00:00
Thomas Tsou
9dbadffcc5 Transceiver52M: Replace resampler with SSE enabled implementation
Replace the polyphase filter and resampler with a separate
implementation using SSE enabled convolution. The USRP2 (including
derived devices N200, N210) are the only supported devices that
require sample rate conversion, so set the default resampling
parameters for the 100 MHz FPGA clock. This changes the previous
resampling ratios.

  270.833 kHz -> 400 kHz      (65 / 96)
  270.833 kHz -> 390.625 kHz  (52 / 75)

The new resampling factor uses a USRP resampling factor of 256
instead of 250. On the device, this allows two halfband filters to
be used rather than one. The end result is reduced distortial and
aliasing effecits from CIC filter rolloff.

B100 and USRP1 will no be supported at 400 ksps with these changes.

Signed-off-by: Thomas Tsou <tom@tsou.cc>

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6733 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2013-10-17 06:18:14 +00:00
Thomas Tsou
00d6835d72 Transceiver52M: Replace convolve and related calls with SSE implementation
This large patch replaced the convolve() call with an SSE vector
enabled version. The lower C and SSE intrinsic based code operates
on fixed and aligned vectors for the filter taps. The storage format
of interleaved I/Q for both complex and real vectors is maintained.

SSE filter tap values must:

  1. Start 16-byte aligned
  2. Number with a multiple of 4 between 4 and 20 for real taps
  3. Number with a multiple of 4 for complex taps

Non-compliant values will fall back to non-SSE usage. Fixed length
iterators mean that head and tail cases may require reallocation of
the input vector, which is automatically handled by the upper C++
interface.

Other calls are affected by these changes and adjusted or rewritten
accordingly. The underlying algorithms, however, are unchanged.

  generateGSMPulse()
  analyzeTrafficBurst()
  detectRACHBurst()

Intel SSE configuration is automatically detected and configured at
build time with Autoconf macros.

Signed-off-by: Thomas Tsou <tom@tsou.cc>

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6732 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2013-10-17 06:18:09 +00:00
Thomas Tsou
0e0c81de63 Transceiver52M: Set resampling option automatically based on device
Remove the built time resampling selection and link both options.
Move the normal push/pullBuffer() calls back to the base class and
overload them in the inherited resampling class.

USRP2/N2xx devices are the only devices that require resampling so
return that resampling is necessary on the device open(), which is
the point at which the device type will be known.

The GSM transceiver only operates at a whole number multiple of
the GSM rate and doesn't care about the actual device rate and
if resampling is used. Therefore GSM specific portion of the
transceiver should only need to submit the samples-per-symbol
value to the device interface.

Then, the device should be able to determine the appropriate
sample rate (400 ksps or 270.833 ksps) and if resampling is
appropriate.

Signed-off-by: Thomas Tsou <tom@tsou.cc>

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@6723 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2013-10-17 06:17:35 +00:00
Kurtis Heimerl
2ada18a775 cleaned up makefiles, and now can is confflags="--with-uhd" dpkg-buildpackage -B to build the uhd version. There's still an issue with linking uhd though, I have to test on a real install.
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@5904 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2013-07-09 07:22:26 +00:00
Kurtis Heimerl
3afb9ecd93 changing config scripts to explitly target UHD/USRP1
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2692 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26 03:19:36 +00:00
Kurtis Heimerl
bfe288e32e transceiver: enable USRP1 firmware binary install
Not sure why this functionality is commented out.

Make install places the FPGA firmware image in:

  /usr/local/share/usrp/rev2/
  /usr/local/share/usrp/rev4/

Signed-off-by: Thomas Tsou <ttsou@vt.edu>

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2690 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26 03:19:31 +00:00
Kurtis Heimerl
3cec3eee0a transceiver, resamp: insert missing filter values
With transceiver integration, the resampling filter files were
dropped. This created a working resampling implementation for
the USRP2 / N200, but with spectrum irregulaties that likely
caused issues at longer range operation. Simply reinsert the
filter files and modify the filter initialization to use them.

Signed-off-by: Thomas Tsou <ttsou@vt.edu>

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2689 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26 03:19:28 +00:00
Kurtis Heimerl
98621b28c7 build: insert autofoo for usrp transceiver and options
Usage:

  ./configure --with-usrp1

  Enable non-UHD USRP1 support through the gnuradio-based
  driver. Requires gnuradio (libusrp) to be installed.

 ./configure --with-resample

  Enable host-based 400ksps to 270.833ksps resampling.
  Only supported for UHD devices. If not enabled, the GSM
  sample rate is requested directly from the device.

Signed-off-by: Thomas Tsou <ttsou@vt.edu>

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2681 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26 03:19:05 +00:00
Kurtis Heimerl
c7e3d8133e transceiver: separate I/O portion of radio interface implementation
Move push and pull of buffers into a dedicated file. This will
allow us to swap out resampling, non-resampling, and possibly
floating point device interfaces while presenting a single
floating point abstration in the interface itself.

Signed-off-by: Thomas Tsou <ttsou@vt.edu>

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2670 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26 03:18:34 +00:00
Kurtis Heimerl
40d7af3176 transceiver: separate radio clock and vector interfaces
Remove radio clock and vector interfaces into their own
files. This clears up and simplifies the radio interface
and, additionaly, prepares for a further split of the I/O
portion for optional resampler use.

Signed-off-by: Thomas Tsou <ttsou@vt.edu>

git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2669 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26 03:18:30 +00:00
David Burgess
a92b0e1bba Adding in the missing Transceiver52M directory
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2307 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-10-12 07:44:40 +00:00