USRP FPGA

USRP 所用到的FPGA是 Altera 公司的 Cyclone EP1C12Q240C8.

EP1C12 的特性:

 LEs  12,060
 M4k RAM blocks (128 x 36 bits)  52
 Total RAM bits  239,616
 PLLs  2
Maximum user I/O pins 173

用硬件语言 Verilog 描述FPGA内部功能,用Altera's免费网络版 Quartus II 工具对它进行综合。Quartus II 的免费版只有用于 Windows 环境,也有一些办法让它运行在Linux 环境下 run Quartus II under Linux 而不需 Windows - YMMV.

FPGA 运行在 64MHz 时钟下,其所有内部部件同全球时钟同步。由于其极高的时钟,所以FPGA内部部件都被极高的流水线规划以求达到极高速度效果。

接收链路

见图 UsrpRfxDiagrams.

AD9862 -> CORDIC -> CIC 抽取滤波器 (4阶的, 可编程抽取速率 [4,128]) -> 半带数字抽取滤波器 (固定抽头系数 2) -> RX FIFO.

这提供了所有在 [8,256]范围内所有可能的偶数抽取速率。

发射链路

这里是一个发射链路的大概原理框图: 

http://img213.imageshack.us/img213/8275/tx2ph9.png

详细框图参看 UsrpRfxDiagrams.

有两路时钟:一个用于USB总线(上达 FIFO) 一个用于发射链路自身。 频道0具有本地环回功能。级联积分梳状滤波器(CIC) 速率由寄存器 FR_INTERP_RATE控制。CORDIC 变换在svn HEAD中被禁止.

Tx Modifications

AD9862 MxFE 去了解它是如何被控制以及其中滤波器是如何被控制的。

USB 接口

描述主机(计算机)如何同 USRP 通信。

FPGA 寄存器

寄存器被分为三类 - 公用(common), 标准(standard), 及自定义(custom)。寄存器,除三个可读标准寄存器外,仅仅是把数据映射到计算机用于读取目的用的。 

Common Registers  (公用寄存器)

Writable Address Range: 0 - 31 (可写地址范围:0 -31)

Address
地址
Register
寄存器
Brief Description
简述
0 FR_TX_SAMPLE_RATE_DIV Transmit sample rate divisor (发送采样速率除法器)
1 FR_RX_SAMPLE_RATE_DIV Receive sample rate divisor (接收采样速率除法器)
2 UNUSED Unused Register  (没有用到的寄存器)
3 UNUSED Unused Register  (没有用到的寄存器)
4 FR_MASTER_CTRL Master Reset and Enable controls (主复位及使能控制)
5 FR_OE_0 IO Buffer direction settings for pins that go to daugherboards (指向子板的管脚的IO缓存流向设置)
6 FR_OE_1 IO Buffer direction settings for pins that go to daugherboards (指向子板的管脚的IO缓存流向设置)
7 FR_OE_2 IO Buffer direction settings for pins that go to daugherboards (指向子板的管脚的IO缓存流向设置)
8 FR_OE_3 IO Buffer direction settings for pins that go to daugherboards (指向子板的管脚的IO缓存流向设置)
9 FR_IO_0 IO Registers for pins that go to daugherboards (指向子板的管脚的IO寄存器)
10 FR_IO_1 IO Registers for pins that go to daugherboards (指向子板的管脚的IO寄存器)
11 FR_IO_2 IO Registers for pins that go to daugherboards (指向子板的管脚的IO寄存器)
12 FR_IO_3 IO Registers for pins that go to daugherboards (指向子板的管脚的IO寄存器)
13 FR_MODE Sets RX Mode [NORMAL,LOOPBACK,RX_COUNTING,RX_COUNTING_32BIT](RX 方式设置)
14 FR_DEBUG_EN Enables debug settings for debugging FPGA designs   (FPGA 使能诊断设置)
15 FR_DC_OFFSET_CL_EN DC offset control loop enable                                     (DC 补偿控制环路使能)
16 FR_ADC_OFFSET_0

ADC/DAC DC correction offset value (2's compliment) (ADC/DAC 纠错补偿值)

17 FR_ADC_OFFSET_1 ADC/DAC DC correction offset value (2's compliment) (ADC/DAC 纠错补偿值)
18 FR_ADC_OFFSET_2 ADC/DAC DC correction offset value (2's compliment) (ADC/DAC 纠错补偿值)
19 FR_ADC_OFFSET_3 ADC/DAC DC correction offset value (2's compliment) (ADC/DAC 纠错补偿值)
20 FR_ATR_MASK_0 Automatic Transmit/Receive Enable (Slot 0)               (自动发射/接收使能)
 21 FR_ATR_TXVAL_0 Automatic Transmit/Receive TX Pin Values (Slot 0)     (自动发射/接收 TX 管脚值)
22 FR_ATR_RXVAL_0 Automatic Transmit/Receive RX Pin Values (Slot 0)     (自动发射/接收 RX 管脚值)
23 FR_ATR_MASK_1 Automatic Transmit/Receive Enable (Slot 1)               (自动发射/接收使能)
 24 FR_ATR_TXVAL_1

Automatic Transmit/Receive TX Pin Values (Slot 1)     (自动发射/接收 TX 管脚值)

25 FR_ATR_RXVAL_1 Automatic Transmit/Receive RX Pin Values (Slot 1)     (自动发射/接收 RX 管脚值)
26 FR_ATR_MASK_2 Automatic Transmit/Receive Enable (Slot 2)               (自动发射/接收使能)
27 FR_ATR_TXVAL_2 Automatic Transmit/Receive TX Pin Values (Slot 2)     (自动发射/接收 TX 管脚值)
28 FR_ATR_RXVAL_2 Automatic Transmit/Receive RX Pin Values (Slot 2)     (自动发射/接收 RX 管脚值)
29 FR_ATR_MASK_3 Automatic Transmit/Receive Enable (Slot 3)               (自动发射/接收使能)
30 FR_ATR_TXVAL_3 Automatic Transmit/Receive TX Pin Values (Slot 3)     (自动发射/接收 TX 管脚值)
31 FR_ATR_RXVAL_3 Automatic Transmit/Receive RX Pin Values (Slot 3)     (自动发射/接收 RX 管脚值)

Standard Registers (标准寄存器)

Writable Address Range: 32 - 63 (可写地址范围:32 -63)

Address
地址
Register
寄存器
Brief Description
简述
32 FR_INTERP_RATE Transmit interpolation rate [1,1024]   (发射查补速率[1,1024])
33 FR_DECIM_RATE Receive decimation rate [1,256]         (接收抽取速率 [1,256])
34 FR_RX_FREQ_0 DDC Center Frequency (word 0)          (DDC 中心频率)
35 FR_RX_FREQ_1 DDC Center Frequency (word 1)          (DDC 中心频率)
36 FR_RX_FREQ_2 DDC Center Frequency (word 2)          (DDC 中心频率)
37 FR_RX_FREQ_3 DDC Center Frequency (word 3)          (DDC 中心频率)
38 FR_RX_MUX Configure the RX muxing stream of I/Q data           (配置RX链路复接I/Q数据流)
39 FR_TX_MUX Configure the TX muxing stream of I/Q data           (配置TX链路复接I/Q数据流)
40 FR_TX_A_REFCLK Configures a reference clock sent to daughterboard A (TX)      (配置发往子板的参考时钟)
41 FR_RX_A_REFCLK Configures a reference clock sent to daughterboard A (RX)      (配置发往子板的参考时钟)
42 FR_TX_B_REFCLK Configures a reference clock sent to daughterboard B (TX)      (配置发往子板的参考时钟)
43 FR_RX_B_REFCLK Configures a reference clock sent to daughterboard B (RX)      (配置发往子板的参考时钟)
44 FR_RX_PHASE_0 RX DDC Starting Phase (word 0)  (RX DDC 启动阶段)
45 FR_RX_PHASE_1 RX DDC Starting Phase (word 1)  (RX DDC 启动阶段)
46 FR_RX_PHASE_2 RX DDC Starting Phase (word 2)  (RX DDC 启动阶段)
47 FR_RX_PHASE_3 RX DDC Starting Phase (word 3)  (RX DDC 启动阶段)
48 FR_TX_FORMAT Configures TX Format     (配置TX格式)
49 FR_RX_FORMAT Configures RX Format     (配置TX格式)
50 AVAILABLE Available for future use (将来备用)
51 AVAILABLE Available for future use (将来备用)
52 AVAILABLE Available for future use (将来备用)
53 AVAILABLE Available for future use (将来备用)
54 AVAILABLE Available for future use (将来备用)
55 AVAILABLE Available for future use (将来备用)
56 AVAILABLE Available for future use (将来备用)
57 AVAILABLE Available for future use (将来备用)
58 AVAILABLE Available for future use (将来备用)
59 AVAILABLE Available for future use (将来备用)
60 AVAILABLE Available for future use (将来备用)
61 AVAILABLE Available for future use (将来备用)
62 AVAILABLE Available for future use (将来备用)
63 AVAILABLE Available for future use (将来备用)

Readable Address Range: 1 - 3 (可读地址范围:1 - 3)

仅仅只有三个可读寄存器,它们不和可写寄存器在一起,代码 fpga_regs_standard.h 在末尾部分定义它们。(所寻 READBACK 寄存器。)

Address Register Brief Description
1 FR_RB_IO_RX_A_IO_TX_A Readback A-Side I/O pins   (可读取A端I/O管脚)
2 FR_RB_IO_RX_B_IO_TX_B Readback B-Side I/O pins   (可读取B端I/O管脚)
3 FR_RB_CAPS Readback FPGA capabilities (FPGA可读取使能)

Custom Registers (自定义寄存器)

Writable Address Range: 64 - 79 (可写地址范围:64 -79)

这些寄存器地址确保没被定义为公用(common)和 标准(standard)寄存器,专用于用户自定义的寄存器。

子板

如何去写USB接口用来控制诸如频率调制,滤波。 时序图或者子板的特定锁相时间,合成锁相时间等是很有意思的工作,下面是到子板清单的链接。

子板清单

参见 List of USRP daughterboards

Message Block

链接 FPGA 的 MessageBlocks 探讨高效地发送和接收功用。





注:UsrpFPGA(原文出处,翻译整理仅供参考!