USRP使用入门USRP硬件平台 USRP:Universal Software Radio Peripheral
USRP由母板和子板组成。一块USRP母板主要包括如下硬件器件[1]:
USRP2是USRP的增强版,于2008年9月推出,其母板所选用硬件的信号处理能力有很大提高[1]:
USRP的子板作为射频前端使用,其作用是将基带信号调制到一个较高的载频上输出,或将输入信号下变频到基带。子板的类型有三种:接收板(Receiver)、发送板(Transmitter)、收发板(Transceiver)。 接收板只支持接收,并只有一个RX端口,接收板有以下几种[1][2]:
发送板只支持发送,并占用一个TX端口:
子板允许USRP工作在全频段上。但是,如果多块子板同时装载在一块母板上,当要求接收机具有较高的灵敏度时,那么可能需要某些屏蔽措施以避免子板间的串扰[1]。 下图是USRP硬件平台的图片,其中下方是母板,上方为子板(子板为Basic板)[2]。 USRP的硬件特性很大程度上限制了GNU Radio的波形开发。因此,了解掌握USRP的硬件性能限制对于波形开发来说是非常重要的。以下,列举几项注意事项[2]: 1. 母板对信号载频的限制。USRP的AD转换器采样速率为64M Sample/s。原则上讲,当对带通信号采样时,只需要遵循带通采样定理,对信号的载频不做要求。但事实上,信号频率越高,由抖动引起的信噪比下降会越严重,USRP建议信号频率最高不超过100MHz。(这可能是AD器件的SFDR的限制引起的,但不理解SFDR的含义。另外,ADC中的jitter的含义是什么?) 2. ADC与PGA(Programmable gain amplifier)。PGA在ADC之前,用于调整输入信号的动态范围匹配ADC的动态范围,以使量化误差最小。有关PGA与ADC的主要参数如下图所示。其中ADC采样率为128MHz的约数,最高采样速率为32MS/s。 3. DAC。DAC位宽为14bit,采样率为128MS/s。理论上,Nyquist速率为64MHz,但受滤波器非理想因素的影响,需要有一定的保护带宽开销。建议信号带宽最大不超过50MHz(基带采样)。 4. 支持信道数。一个USRP母板上有4个DAC与4个ADC,如果是对实信号进行采样,则可以同时支持4个信道,如果是对复信号进行采样,则可以同时支持2个信道。 以上列举了4项母板使用的注意事项,对子板的使用需要注意: 5. 子板与母板的连接关系。母板上有两对互相对应的TX与RX插槽(slot),分别为TXA、TXB、RXA、RXB。每个插槽占用2个DAC或ADC。因此,对于实信号,每个子板支持2个互相独立的RF通道,整个系统支持4个独立实数RF通道;对于复信号,每个子板支持1个RF通道,整个系统支持4个独立实数RF通道。另外,每个子板上有2个SMA射频连接器。下图为SMA射频连接线。 (SMA-M,SMA-F)(摘自:http://www.surplussales.com/connectors/SMA-4.html) 6. FPGA。 a) FPGA的功能是完成数字上下变频、插值/抽取滤波。FPGA与母板上的ADC与DAC相连,并连接USB2控制器,其的连接关系如下图所示。 (摘自文献[2])b) FPGA接收通道标配。FPGA接收通道标配为DDC(Digital down converter)与CIC(cascaded integrator-comb)的级联。CIC只采用加法与时延实现,十分高效。FPGA中有4个DDC,可支持独立的1、2或4个接收通道。每个DDC有一对I路与Q路输入。母板上的4个ADC的输出可任意布线到任意一个DDC的任意I路或Q路输入。 i. 限制:1、2或4个RX通道必须具有相同的数据速率,也即相同的抽取率。 ii. 如何控制哪个ADC与哪个DDC相连?在Python语言中,使用usrp.set_mux()方法。 下图是MUX与ADC、DDC的互联关系:
下图是一个DDC内部的结构。每个DDC有两个输入I和Q路数字信号,进入DDC后,首先进行正交下变频至基带信号,然后分别对下变频之后的I路和Q路进行抽取,以适配USB2接口速率与PC机的处理能力。 复信号的接收路径可进行如下配置: 注:如果不是零中频,如上图所示,需要占用2 ADC+1 DDC资源构成一个射频通路;如果是零中频,则需要占用1 ADC+1 DDC资源构成一个射频通路。 实信号的接收路径可进行如下配置: iii. Usrp.set_mux()控制字设置 MUX控制字格式如下: 每个DDC的每个输入(I或Q)用一个4bit值来指定与哪个ADC相连,每个DDC的I路必定与四个ADC中的一个相连,四个DDC的Q路或者全部接地(配置为0xf),或者全部与ADC相连。对于实信号采样的应用,所有DDC的Q路永远接地,这是FPGA的标准配置;如果是复信号采样的应用,则需要改变FPGA的标准配置。 iv. DDC中的最后一步是CIC抽取滤波器,抽取得到的基带IQ信号需要通过USB接口送入PC机。USB接口速率是32MB/sec(256Mbps),通过USB接口的采样值用16-bit signed integers数据类型表示,即16-bit I与16-bit Q数据。因此,经过USB接口的最大基带采样信号速率为:8M Sample/sec (32bit/Sample)。也就是说,接收端最大Nyquist带宽为8MHz。在Python语言中,可以使用usrp.set_rx_freq()方法设置DDC的中频频率,用usrp.set_decim_rate()方法设置DDC中的抽取倍数,抽取倍数可设置范围为[1, 256]。 v. 4个DDC的输出交织被USB接口读取,如ii中图所示。例如,如果使用4个信道(这是最大信道数),序列以I0 Q0 I1 Q1 I2 Q2 I3 Q3 I0 Q0 I1 Q1…的方式通过USB接口发送给PC。USRP可以工作在全双工模式。当使用这种模式时,发送与接收部分是完全独立的,唯一需要考虑的是通过USB接口的总数据速率不能小于32MB/s。 vi. OK!I/Q复信号便通过USB进入了PC,从此进入软件世界! c) FPGA的发送通道。AD9862中内置CORDIC算法进行数字上变频,因此,DUC(digital up converter)在AD9862中,而不在FPGA中。在发送端,FPGA的唯一工作是将发送信号进行内插滤波,直至速率为32MS/s,送给AD9862。(AD9862会使用两个级联的半带滤波器将信号内插至128MS/s,再利用其内置的CORDIC算法进行数字上变频,得到所期望的调制信号。) 上述各项内容可称之为USRP的“Data Sheet”,开发者必须了解这些特性才能灵活有效地使用USRP进行软件无线电的开发。 建议阅读 参考文献: [1] http://en.wikipedia.org/wiki/Universal_Software_Radio_Peripheral [2] Dawei Shen, “Tutorial 4: The USRP Board.”
|