小白该如何自学软件定义无线电（SDR）？
首先得有个平台，转载个文章，三款SDR平台对比 HackRF，bladeRF和USRP。 这篇文章是Taylor Killian今年8月发表在自己的博客上的。他对比了三款平价的SDR平台，认为这三款产品将是未来一年中最受欢迎的SDR平台。我觉得这篇文章很有参考价值，简单翻译一份转过来。 原文在这里： 翻起来才发现，太长了。觉得这么长就没必要翻译了，不符合快速阅读的习惯，深度阅读的人显然应该直接看原文。但是既然开了个头，就翻完吧。 以下是原文翻译： 今年或者明年看起来是SDR的黄金年代。将有三款新的SDR平台面世，用户可以有很多选择。这篇文章将比较这三款SDR平台：Great Scott Gadgets生产的HackRF, nuand生产的bladeRF, 和Ettus生产的USRP (B200/210)。 HackRF是Michael Ossmann开发的，他还开发过Ubertooth，这是第一款也是唯一款低价的蓝牙嗅探器(Bluetooth sniffer)。HackRF已经开发了好几个月了。Michael已经免费发放了500块HackRF的Beta版本给世界各地的黑客们。现在他正在开发正式版，并且正在众筹网站 上销售。这将是市场上最便宜的一款SDR平台，而且它可以工作在很宽的频率范围。 bladeRF也是在Kickstarter上成功建立的项目，而且产品都已经交付给用户了。bladeRF可以支持很宽的载频范围，带有一个大容量的FPGA，还有高速的USB3接口。开发者在时钟模块上花了不少钱，提供了VCTCXO，可以把精度校准到50 ppb。所有的模块都设计成同步的，因此没有ClockTamer。这款硬件现在可以在 网站上购买。 刚开始，这篇文章是想拿Ettus的USRP B100和N210跟HackRF、bladeRF比较。但当我把初稿发给Ettus公司看的时候，他们说新的USRP B200/210很快就要发布了，而且给我寄了一块开发版的B210。所以后来我重新修订了这篇文章。现在B210已经发布了，可以从Ettus购买。 Ettus可能是最老的SDR硬件生产商了。他们已经生产了很多款不同的USRP。USRP B200/210与之前的老款产品完全不同，是“单板”设计，而不再是“母板/子板”的组合。它也使用了USB3接口，支持很宽的射频频段。B200/210有一个新设计的GPSDO接头，可以通过GPS模块把精度调整到几个ppb。B210还是Ettus的第一款独立支持2x2 MIMO的板卡。我会在B210上做一些测试，把测试结果发布在这个博客上。这里还有一些B210的 :) 下表是三款硬件的对比！(Alin：重点看这个表就够了^_^) [1] – Separate daughterboards are required to receive/transmit. The WBX transceiver is included in this kit [2] – Half this if 16 bit samples are used [3] – 56 MHz for single half duplex channel, 30.72 MHz per channel full duplex [4] – There is a CPLD on the board, but no FPGA [5] – Ettus confirmed that the HDL + Code + Schematics will be released for the B210/B200 [6] - Estimated retail price, cheaper though Kickstarter 射频性能 HackRF和USRP B210的射频范围很宽。HackRF比B200/210还低20MHz，最高载频都可以达到6GHz。B210/200主要基于AD9361芯片。这块芯片其实是工作在70MHz~6GHz的，因此看起来B210/200稍微超出了一点使用范围，降低到50MHz。HackRF则采用了另一种方案，它使用了多个不同的射频芯片来支持宽频段。如果你看看它的 ，就会发现它混合了几块芯片，每块芯片负责一段频谱，至少有6个频段切换开关。希望这么多的器件没有给系统引入太多噪声。 另外，HackRF捆绑了一个上变频器“ ”，如果通过Kickstarter把两个东西打包购买的话，只要添$35就可以了。这个板卡可以使HackRF的载频降低到300KHz。也可以 这个“Ham It Up”，大约$43。我觉得USRP B210/200和WBX也可以使用这个“Ham It Up”。 对于更老的USRP B100来说，它可以用不同的子板来覆盖不同的频段。WBX子板可以覆盖50MHz~2.2GHz。新的CBX子板可以覆盖到6GHz。不过这种单独购买子板的方案的缺点是，成本会比HackRF和bladeRF高。 BladeRF可以支持300MHz到3.8GHz，它使用的芯片是 。这款芯片提供了绝大部分射频功能，包含所有的混频器，ADC,DAC和其他一些功能。这款芯片与AD9361是类似的。不过，它最高只能支持3.8GHz。这意味着，不可能用bladeRF来实现5GHz频段的802.11n。现在，bladeRF有计划要发布一块扩展板卡，允许载频降低到10MHz，不过这个计划仍然在进行当中，还没有做出来。 双工性能 值得注意的是，HackRF不同于其他两款硬件，它不支持全双工。这意味着要切换收和发的话，必须每次给控制器发送命令。微控制器处理切换可能要花费微秒级的时间。如果要算上信号到达计算机的时间，切换时间会更长。 bladeRF和USRP B210/200都可以支持全双工。USRP B100也支持全双工。有一些比较老的子板在B100上使用的时候，不支持全双工。但大部分的子板都可以支持。 根据 ，B200有一个全双工通道。而B210有两个接收机和两个发射机，目的是为了支持2x2 MIMO。两个接收机可以调到同一个频点，发射机同样（可以与接收频点不同）。这样做可以利用无线信道的空间分集，传输更高速率的数据。MIMO技术已经在4G LTE和802.11n系统中实现了。 需要注意的是，如果同时进行接收和发送。发射机可能会对接收机产生一些噪声，因为毕竟发射机距离接收机很近。 与主机的通信 对SDR而言，与主机的通信方式是非常重要的，因为它决定了信号的带宽和可靠性。 USRP B100和HackRF都使用USB2.0接口。这决定了最高的数据传输速率是35MB/s。然而，由于我们常常会在多个USB接口上插入其他设备，他们是共享带宽的，因此实际的数据速率比这更低。 USRP B210/200和bladeRF使用USB3.0接口。它可以支持400MB/s的传输速率。这对于大部分SDR应用来说，带宽已经足够了。与USB2.0类似，多个USB接口会共享带宽。 有个潜在的问题是，USB3.0可能会被干扰。Intel警告说，2.4GHz频段的信号可能会对USB3.0造成干扰，建议采取一些屏蔽措施。一个简单的办法是，你可以给板卡包一张锡箔。bladeRF和B210/200的开发者都做了一些测试，并认为这不算什么大问题。bladeRF的射频模块外面是包有外壳的。B210/200也很容易添加铜外壳。另外B210/200的电路板上还有大面积的“铺地”，这也能起到很好的屏蔽作用。 经过我的测试，USRP B210与我的ASMedia控制器连接还是有问题的。它只能工作在USB2。实际上在我收到B210之前，Ettus的工程师就提醒过我，ASMedia USB3芯片不完全符合USB3标准。最后，我买了一个PCIe USB3接口卡，它用的是VL805芯片，价格大约$20，现在我可以正常工作在USB3模式了。鉴于bladeRF也用的是FX3芯片，所以我想它可能也跟ASMedia不匹配。 ADC/DAC ADC和DAC的量化精度非常重要，增加一个bit就可以使精度加倍。因此，使用14-bit DAC的USRP B100比使用8-bit DAC的HackRF精度要好64倍。虽然说，一个便宜的8-bit精度的 ，但是更高的精度显然更有用。当然更好的天线和增益设置也会大有帮助。 另一个指标是ADC和DAC的转换速度。更高的采样率需要更大的处理带宽。许多老的通信系统可以使用非常低速的ADC或DAC，但比较新的通信系统，例如WiFi a/b/g，需要至少20MSps的ADC/DAC。在这三款硬件中，只有USRP B210/B200能够处理40MHz的802.11n信号。不过，即使USRP能够处理，计算机是否能够处理如此高速的数据，仍然是个巨大的挑战。实际上，即使仅仅想把这样高速的数据储存下来，都是一件麻烦事。 带宽 把所有的基带数据传到计算机，这是所有SDR硬件最主要的瓶颈，因为数据量实在太大。对使用USB2.0的USRP B100和HackRF来说，这一瓶颈非常明显。而其他使用USB3.0的硬件，这一瓶颈就相对宽松一点。虽然bladeRF也使用USB3.0接口，但它不能达到与USRP B210/B200一样的采样带宽。因为bladeRF使用了LMS6002D中的带通滤波器。在bladeRF的论坛中，有讨论如何 ，这样就可以使用外部的滤波器，从而增加采样带宽。关于USRP B210/B200，它的滤波器可以允许带宽高达56MHz的信号通过。 FPGA 如何使用这些基带信号呢？要么传到计算机上处理，要么在板卡上处理。bladeRF和USRP B210/200都有比较强大的FPGA，还有FX3微控制器。B210使用Spartan 6 LX150 FPGA，它有150k逻辑单元；B200使用LX75 FPGA，有75k的逻辑单元。bladeRF使用Cyclone 4 FPGA，x40有40k逻辑单元，x115有115k逻辑单元。USRP B100用的是比较小的FPGA，有25k逻辑单元。而HackRF使用的是CPLD，信号处理主要依赖于板上的微控制器。 逻辑单元的数量决定了FPGA的处理能力，显然越大越好。FPGA的长处是并行处理，短处是主频一般比微控制器低。如果开发者不是很擅长HDL语言的话，处理效率可能会比较低。 在USRP的 上有FPGA的使用情况说明，说明了FPGA还剩多少资源可以使用。对B100而言，留给用户开发的空间非常小，而B210/B200则有比较大的剩余空间可供用户使用。关于bladeRF，据说x40 FPGA当前已使用了大约15%，因此剩余空间也非常充足。FPGA除了作为ADC/DAC与FX3之间的桥梁之外，还可以完成例如数字滤波器之类的信号处理任务。USRP中就包含了数字变频，抽值和插值模块等等。我没有看bladeRF的功能，可能跟USRP差不多。 有一个差别需要注意的是，Ettus使用的是Xilinx的芯片，而nuand使用的是Altera的芯片，因此稍有不同。相比Altera，Xilinx的FPGA中有更多的DSP模块，包括预加法器，乘法器和累加器；而Altera FPGA在DSP模块部分只有乘法器。这意味着，加法需要用逻辑阵列来实现，所以同样的功能，Altera FPGA需要更多的逻辑单元。而且，Altera的RAM比Xilinx少。不过对于bladeRF，芯片上的RAM可能也够用了。还有一点需要注意的是，B210的LX150不支持免费的Xilinx ISE，而LX75和Altera的FPGA是可以使用免费的开发软件的。 最后强调一下FPGA的价格。x40 Cyclone IV价格大约100美元，x115 Cyclone IV大约315美元。这都是Digi-Key上的报价，可能不是厂家的成本价。不过这个芯片选型，至少说明了nuand不是一块高质高端的硬件。 微控制器 除了较老的USRP B100，其他几款板卡都有非常强大的微控制器。B100用的是FX2来提供USB2.0连接，只有16KB的RAM。bladeRF和B210/200都用的是FX3，提供USB3.0连接。HackRF用的是一个双核LPC43XX芯片，处理USB2.0接口，以及控制射频芯片。 HackRF的微控制器运行在204MHz的主频，NXP制造，有一个ARM M4内核和一个M0协处理器。含有64KB的ROM和264KB的SRAM。这颗芯片负责很多工作：发送和接收USB链路上的数据，控制板卡上所有的射频芯片。还有计划要往里面添加抽值和插值模块。之所以选择微控制器而不是FPGA来处理，是因为希望用户能够使用C语言来更快的修改代码，而不是使用HDL语言。如果连上一个 ，HackRF的这个微控制器能够不连接计算机，就直接变身为一个频谱分析仪。 FX3微控制器运行在200MHz主频，有一个 内核。这个芯片有GPIF，一旦开启，可以使ARM内核处于IDLE状态。它有512KB的SRAM，没有ROM。这款芯片有几种启动方式，包括USB启动方式，firmware常常用这种方式加载。bladeRF有4MB的SPI Flash，它含有微控制器和FPGA的代码，可以在脱机的情况下支持板卡的运行。B210只有32KB的EEPROM，用于存储一些基础配置程序，没有Flash。因为没有Flash，所以B210/200想要脱机运行的话，是非常困难的。nuand的开发者们希望能够在bladeRF上脱机运行OpenBTS和OpenLTE。已经有在B210上运行LTE系统的例子了，但是是在连接计算机（Core i7处理器）的情况下。能否在FX3上运行LTE系统，很值得怀疑。 开发者社区 软件无线电是个很大的概念，已经存在了十多年。一个硬件平台的使用者论坛或者社区是非常重要的。这些人可以相互提供技术支持，分享新创意。他们推动着创新的车轮持续前进。因此，对于一个生产SDR平台的公司，开发者社区是非常重要的，而且应给予大力支持。最简单的一个方法就是，开放源码，开放硬件。下面说说这三家公司都是怎么做的。 源代码 对SDR硬件而言，软件是非常重要的。幸运的是，这三款硬件都支持GNU Radio，它包含大量的免费且开源的代码。它还有非常好的图形界面，适合快速开发和测试。HackRF和bladeRF在GNU Radio中的驱动，放在 项目中，与RTL-SDR dongle的驱动包一样。bladeRF的驱动是前几个星期添加进去的（Alin：作者的写作时间是2013年8月），因此如果你要用的话，请及时更新代码。HackRF的驱动已经发布有一段时间了。而对于USRP，gr-uhd原本就是GNU Radio的一部分，需要安装 ，UHD驱动可以从Ettus官网得到。 这三款硬件板卡，所有的代码，HDL文件和电路原理图都可以免费获得，除了USRP B210/B200的还没有发布。HackRF更为开放，它甚至公布了所有的KiCad制板文件，包括原始格式的电路原理图（不是PDF）和PCB布线图。USRP B100和bladeRF的电路原理图是PDF格式的。我希望B210/200也能尽快开放原理图。HackRF的开放程度，使得其他人可以继续改进HackRF的设计，而且也是开发者社区的读者们非常好的学习材料。我想其他人可以很容易重用其中的一些设计。 USRP有一个独特的好处是，它的应用类代码非常丰富。因为USRP已经有很长的历史了，从2006年以来，已经有很多人使用过USRP。有很多的学术论文使用了USRP和GNU Radio进行实验。也涌现出很多新颖的应用和代码。UHD，是所有USRP板卡通用的接口，经过这么多年的优化改进，已经非常稳定成熟。一个GNU Radio应用，只要硬件满足要求，就很容易在各种USRP板卡上使用。也就是说，USRP对GNU Radio的支持是最好的。Ettus还发布了一个免费的 ，它包含了GNU Radio以及其他一些工具软件，可以以最快的速度搭建出一个GNU Radio的开发环境。虽然这个镜像目前只有UHD，但是把gr-osmosdr添加进去也应该很容易。 HackRF比USRP的历史要短得多，才刚开始开发一套代码（Alin：开发环境驱动什么的），不过进展很快。它应该能与GNU Radio兼容，正在测试当中。HackRF的优势在于，它有很多黑客型粉丝。已经有至少500块免费的HackRF交付使用，到本文写作的时间为止，又有1100块HackRF已经在Kickstarter上被预定了。这些用户可以为软件开发做出很大的贡献。相比USRP在学术界影响力，HackRF在黑客界有更大的影响力。当然，这两个人群有一部分重合的地方。但我认为黑客们更有能力写出更多更优秀的代码。 nuand团队是最近才发布的bladeRF的GNU Radio驱动。我估计大约有400个用户从Kickstarter上得到了bladeRF板卡。另外，还有相当一部分用户直接从nuand的网站订购了bladeRF。所有这些用户都能够为bladeRF的代码开发做出贡献。因为bladeRF跟USRP B210一样，使用了FX3，大容量的FPGA和单芯片的射频收发芯片，我估计两款硬件的驱动代码中，有相当一部分可以共享。虽然Xilinx和Altera之间的差别，给代码重用带来了一点麻烦，但是我想只要黑客们做出足够的努力，bladeRF就可以与UHD接口兼容，于是可以兼容USRP已有的大量的应用程序。 硬件 在硬件的开放性方面，HackRF是做得最好的。而USRP呢，B210/B200使用的AD9361芯片可能是一个开放性的障碍。因为Analog Devices网站上只提供了1页的datasheet。因此除了Ettus公司以外，其他人很难获得更详细的信息，除非你也跟AD公司签过NDA。不过Ettus公司的人承诺说，他们会开放相关的驱动的源代码。除了AD9361芯片以外，B210/B200上的其他芯片都有比较详细的资料。关于bladeRF，LMS6002D芯片有长达15页的datasheet，而且还有45页的编程和校准指南，这些对于其他开发者来说都是现成的。 最后的点评 HackRF，是一款覆盖频率最宽，而且价格最低廉的SDR板卡。它几乎所有的信息都是开源的，甚至包括KiCad文件。缺点是它没有FPGA，使用的低速的USB2接口,ADC/DAC的精度比较低。总的来说，HackRF非常适合那些对开放性要求很高的黑客，和那些那些对价格敏感的用户。 bladeRF，它的亮点在于大容量的FPGA和高速的USB3接口。它能够支持比较宽的频段，但是不如另外两者。它的ADC/DAC精度也还不错。我建议那些想脱机运行程序，并且射频频点不需要太高的人们，考虑选择这款硬件， USRP B100，这是一款比较老的板卡了，不能支持高带宽的应用。它通过替换子板来改变射频频段，最高可以支持到6GHz。它支持UHD接口。B100的价格跟B200是一样的，但能力却比B200差很多。所以我建议，只有当你有一些很特殊的应用，或者你要使用自己开发的子板时，才考虑B100。 USRP B210/B200，可以支持很宽的频段，也支持高速的接口带宽。它们有大容量的FPGA和快速的USB3接口。不过AD9361这款芯片的开放性略差。B210/B200是三款硬件中价格最贵的。但它们的很多指标已经与Ettus的另一款高端的N210板卡可以媲美。而且，B210还是唯一一款直接支持2x2 MIMO的板卡。我相信B210/B200将是最近市场上，性能最强的SDR平台，而且将得到Ettus公司的大力支持。我建议那些需要高带宽、宽频段，而且不需要脱机使用的应用，考虑这款硬件平台。 最后，我希望人们能够用这三款非常优秀的软件无线电平台，开发出更多新颖的应用。我用了几个星期的时间搜集整理这三款平台的信息，有一些没能收入文中，如果您有任何问题，请在 中提出。感谢您的阅读，并且欢迎您再回来看看我将要发表的关于B210的测试结果（Alin：到2013年11月27日为止，这个测试结果还未发表）。 Alin评论： 有两款硬件都是USB3.0接口的，说明USB3.0将成为SDR平台的主流接口。这与我们两年前的看法也是一致的。USB3的优点是USB接口数量多，而且很普及，速度也够快。但缺点是传输距离可能不够远，所以我个人认为10G或者更高速率的以太网接口也将是另一种主流的接口。 另外我发现这三款硬件的电路板都印成了黑底白字，比原来绿色的酷多了。看来硬件工程师们也开始注意“柜子背面的板子也要漂亮”了。 ------------------------------------------------------------------------------------------------------------ 推荐阅读