back

Building a high throughput low-latency PCIe based SDR

Lessons learnt implementing PCIe on FPGA for XTRX Software Defined Radio

If you suspend your transcription on amara.org, please add a timestamp below to indicate how far you progressed! This will help others to resume your work!

Please do not press “publish” on amara.org to save your progress, use “save draft” instead. Only press “publish” when you're done with quality control.

Video duration
01:00:54
Language
English
Abstract
Software Defined Radios (SDRs) became a mainstream tool for wireless engineers and security researches and there are plenty of them available on the market. Most if not all SDRs in the affordable price range are using USB2/USB3 as a transport, because of implementation simplicity. While being so popular, USB has limited bandwidth, high latency and is not really suitable for embedded applications. PCIe/miniPCIe is the only widespread bus which is embedded friendly, low latency and high bandwidth at the same time. But implementing PCIe/miniPCIe is not for the faint of heart - you have to write your own FPGA code, write your own Linux kernel driver and ensure compatibility with different chipsets, each with its own quirks. In this talk we will look at the requirements for a high performance SDR like XTRX, how this leads to certain design decisions and share pitfalls and gotchas we encountered (and solved).

We've been working with SDRs since 2008 and building own SDRs since 2011, focusing on embedded systems and mobile base stations. We created ClockTamer configurable clock source and UmTRX SDR and built a complete base station (UmSITE) to run OpenBTS and later Osmocom GSM stacks. This year we've started working on a new tiny high-performance SDR called XTRX which fits into the miniPCIe form-factor and using PCIe for the I/Q samples transfer.

We will talk about when to use PCIe and when not to use PCIe and why did we choose it for XTRX; FPGA implementation of PCIe with optimization for low latency and high throughput; Linux kernel driver for this PCIe device; integration with various SDR platforms; all the various issues we encountered and how you can avoid them.

Talk ID
8338
Event:
33c3
Day
1
Room
Saal G
Start
12:45 p.m.
Duration
01:00:00
Track
Hardware & Making
Type of
lecture
Speaker
Alexander Chemeris
Sergey Kostanbaev
Talk Slug & media link
33c3-8338-building_a_high_throughput_low-latency_pcie_based_sdr

Talk & Speaker speed statistics

Very rough underestimation:
124.3 wpm
677.8 spm
100.0% Checking done100.0%
0.0% Syncing done0.0%
0.0% Transcribing done0.0%
0.0% Nothing done yet0.0%
  

Work on this video on Amara!

Talk & Speaker speed statistics with word clouds

Whole talk:
124.3 wpm
677.8 spm
pciexpressworkperformancebusdevicedatakernelthingquestiondriveracsystemchipproblemtime.plugministuffradiosignalsamplegoodlaptophighfpgasmallalexanderbasicallyworkingsergeylinuxsoftwareskspacesecondcarduserchemerishardwritinglowdmaboardinterestingdebuggingsdrrealterms