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)。寄存器,除三个可读标准寄存器外,仅仅是把数据映射到计算机用于读取目的用的。
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 管脚值) |
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 探讨高效地发送和接收功用。