Professional Documents
Culture Documents
Jonathon Pendlum
8/26/2015
Agenda
Hardware:
PC or Laptop, decent amount of RAM (4+ GB)
USRP X300, X310, or E310
Xilinx JTAG debugger module (optional)
Only needed for E310, X3x0 series has
built in USB JTAG
Software:
Linux based OS
Xilinx Vivado 2014.4
E310 can use free Webpack version
Modelsim (optional)
UHD
GNU Radio (optional, but highly recommended)
gr-ettus
Tutorial Setup
clk
set_stb
set_addr D/C A0 D/C A1 D/C
set_data D/C D0 D/C D1 D/C
rb_data D/C R0 R1
Base Building Blocks
Function:
FFT, Windowing, FIR, Vector Averaging, Log Power,
Polyphase filter bank, AddSub
Utility:
Packet resizer, Split stream, Keep one in N, FIFO
Null source and sink
Application:
OFDM: Schmidl Cox, One tap Equalizer, Constellation
Demapper
Fosphor, Radio Core
Existing RFNoC blocks
Checkpoint
PCI Express
Crossbar
Moving Average
FIR Fosphor LogPwr
x2
PCI Express
Crossbar
Moving Average
FIR Fosphor LogPwr
x2
usrp3/lib/rfnoc/noc_block_moving_average.v
1 𝑀−1
y[n] =
𝑀 𝑘=0 𝑥[𝑛 − 𝑘]
Software approach:
Array of samples x
y[n] = y[n-1] + x[n] - x[n-M], MA[n] = y[n]*(1/M)
Hardware approach similar:
y[n-1]
Reg
NoC Shell
Command & Response Data Packets
Packets
AXI Wrapper
Sample Data
SR 128: Next Dst
Re
Moving Sum Xilinx Divider SR 192: Sum Len
Split Join SR 193: Divisor
Im
Moving Sum Xilinx Divider SR 255: Rb Addr
RB 0: Sum Len
CVITA AXI-Stream Settings Bus RB 1: Divisor
NoC Block Moving Average
NoC Shell
Command & Response Data Packets
Packets
AXI Wrapper
Sample Data
SR 128: Next Dst
Re
Moving Sum Xilinx Divider SR 192: Sum Len
Split Join SR 193: Divisor
Im
Moving Sum Xilinx Divider SR 255: Rb Addr
RB 0: Sum Len
CVITA AXI-Stream Settings Bus RB 1: Divisor
NoC Block Moving Average
NoC Shell
Command & Response Data Packets
Packets
AXI Wrapper
Sample Data
SR 128: Next Dst
Re
Moving Sum Xilinx Divider SR 192: Sum Len
Split Join SR 193: Divisor
Im
Moving Sum Xilinx Divider SR 255: Rb Addr
RB 0: Sum Len
CVITA AXI-Stream Settings Bus RB 1: Divisor
CVITA over AXI-Stream
clk
tready
tvalid
tlast
tdata D/C Header D0 D1 D/C
CVITA Packet Protocol
Pkt Has
Type Time
EOB Seq # Length (in bytes) SRC SID DST SID
63 - 62 61 60 59 - 48 47 - 32 31 - 16 15 - 0
Fractional Time (Optional, Has Time = 1)
Payload
…
SID
Crossbar Block
Crossbar
Port Port
15 - 8 7-4 3-0
16 bit Stream ID
256 unique crossbar (or device) IDs
16 ports per crossbar
16 ports per block
Example Crossbar ID: 2, Port: 1, Block Port: 0
SID: 2.1.0
Block Ports
NoC Shell
Command & Response Data Packets
Packets
AXI Wrapper
Sample Data
SR 128: Next Dst
Re
Moving Sum Xilinx Divider SR 192: Sum Len
Split Join SR 193: Divisor
Im
Moving Sum Xilinx Divider SR 255: Rb Addr
RB 0: Sum Len
CVITA AXI-Stream Settings Bus RB 1: Divisor
NoC Shell
Data To User
From FIFO
Crossbar Clock Response
Demux
Crossing Command
FIFO
Flow Control
Settings
Bus
Command
Processor
Data
Source Flow Control
From User
Clock Response
Mux
Crossing
To FIFO Command
Crossbar Flow Control Observe
Flow Control Responder
Crossbar Computation Engine
Clock Domain Clock Domain
NoC Shell
Data To User
From FIFO
Crossbar Clock Response
Demux
Crossing Command
FIFO
Flow Control
Settings
Bus
Command
Processor
Data
Source Flow Control
From User
Clock Response
Mux
Crossing
To FIFO Command
Crossbar Flow Control Observe
Flow Control Responder
Crossbar Computation Engine
Clock Domain Clock Domain
NoC Shell
Data To User
From FIFO
Crossbar Clock Response
Demux
Crossing Command
FIFO
Flow Control
Settings
Bus
Command
Processor
Data
Source Flow Control
From User
Clock Response
Mux
Crossing
To FIFO Command
Crossbar Flow Control Observe
Flow Control Responder
Crossbar Computation Engine
Clock Domain Clock Domain
NoC Shell
Data To User
From FIFO
Crossbar Clock Response
Demux
Crossing Command
FIFO
Flow Control
Settings
Bus
Command
Processor
Data
Source Flow Control
From User
Clock Response
Mux
Crossing
To FIFO Command
Crossbar Flow Control Observe
Flow Control Responder
Crossbar Computation Engine
Clock Domain Clock Domain
NoC Shell
Data To User
From FIFO
Crossbar Clock Response
Demux
Crossing Command
FIFO
Flow Control
Settings
Bus
Command
Processor
Data
Source Flow Control
From User
Clock Response
Mux
Crossing
To FIFO Command
Crossbar Flow Control Observe
Flow Control Responder
Crossbar Computation Engine
Clock Domain Clock Domain
Flow Control
Data To User
From FIFO
Crossbar Clock Response
Demux
Crossing Command
FIFO
Flow Control
Settings
Bus
Command
Processor
Data
Source Flow Control
From User
Clock Response
Mux
Crossing
To FIFO Command
Crossbar Flow Control Observe
Flow Control Responder
Crossbar Computation Engine
Clock Domain Clock Domain
NoC Block Moving Average
NoC Shell
Command & Response Data Packets
Packets
AXI Wrapper
Sample Data
SR 128: Next Dst
Re
Moving Sum Xilinx Divider SR 192: Sum Len
Split Join SR 193: Divisor
Im
Moving Sum Xilinx Divider SR 255: Rb Addr
RB 0: Sum Len
CVITA AXI-Stream Settings Bus RB 1: Divisor
NoC Block Moving Average
NoC Shell
Command & Response Data Packets
Packets
AXI Wrapper
Sample Data
SR 128: Next Dst
Re
Moving Sum Xilinx Divider SR 192: Sum Len
Split Join SR 193: Divisor
Im
Moving Sum Xilinx Divider SR 255: Rb Addr
RB 0: Sum Len
CVITA AXI-Stream Settings Bus RB 1: Divisor
NoC Block Moving Average
NoC Shell
Command & Response Data Packets
Packets
AXI Wrapper
Sample Data
SR 128: Next Dst
Re
Moving Sum Xilinx Divider SR 192: Sum Len
Split Join SR 193: Divisor
Im
Moving Sum Xilinx Divider SR 255: Rb Addr
RB 0: Sum Len
CVITA AXI-Stream Settings Bus RB 1: Divisor
AXI Wrapper
Simple Mode 1 0
Sample Data
Framer FIFO Resize Output
To NoC Shell From User IP
Simple Mode 1 0
Sample Data
Framer FIFO Resize Output
To NoC Shell From User IP
Simple Mode 1 0
Sample Data
Framer FIFO Resize Output
To NoC Shell From User IP
Simple Mode 1 0
Sample Data
Framer FIFO Resize Output
To NoC Shell From User IP
Simple Mode 1 0
Sample Data
Framer FIFO Resize Output
To NoC Shell From User IP
Simple Mode 1 0
Sample Data
Framer FIFO Resize Output
To NoC Shell From User IP
NoC Shell
Command & Response Data Packets
Packets
AXI Wrapper
Sample Data
SR 128: Next Dst
Re
Moving Sum Xilinx Divider SR 192: Sum Len
Split Join SR 193: Divisor
Im
Moving Sum Xilinx Divider SR 255: Rb Addr
RB 0: Sum Len
CVITA AXI-Stream Settings Bus RB 1: Divisor
Register Space
clk
set_stb
set_addr D/C A0 D/C A1 D/C
set_data D/C D0 D/C D1 D/C
rb_data D/C R0 R1
NoC Block Moving Average
NoC Shell
Command & Response Data Packets
Packets
AXI Wrapper
Sample Data
SR 128: Next Dst
Re
Moving Sum Xilinx Divider SR 192: Sum Len
Split Join SR 193: Divisor
Im
Moving Sum Xilinx Divider SR 255: Rb Addr
RB 0: Sum Len
CVITA AXI-Stream Settings Bus RB 1: Divisor
NoC Block Moving Average
NoC Shell
Command & Response Data Packets
Packets
AXI Wrapper
Sample Data
SR 128: Next Dst
Re
Moving Sum Xilinx Divider SR 192: Sum Len
Split Join SR 193: Divisor
Im
Moving Sum Xilinx Divider SR 255: Rb Addr
RB 0: Sum Len
CVITA AXI-Stream Settings Bus RB 1: Divisor
NoC Block Moving Average
NoC Shell
Command & Response Data Packets
Packets
AXI Wrapper
Sample Data
SR 128: Next Dst
Re
Moving Sum Xilinx Divider SR 192: Sum Len
Split Join SR 193: Divisor
Im
Moving Sum Xilinx Divider SR 255: Rb Addr
RB 0: Sum Len
CVITA AXI-Stream Settings Bus RB 1: Divisor
NoC Block Moving Average
NoC Shell
Command & Response Data Packets
Packets
AXI Wrapper
Sample Data
SR 128: Next Dst
Re
Moving Sum Xilinx Divider SR 192: Sum Len
Split Join SR 193: Divisor
Im
Moving Sum Xilinx Divider SR 255: Rb Addr
RB 0: Sum Len
CVITA AXI-Stream Settings Bus RB 1: Divisor
RFNoC Test bench Infrastructure
AXI Crossbar
noc_block_tb
DUT
RFNoC
RFNoC NoC Shell
Block
Block
AXI Wrapper
Testbench
AXI Crossbar
noc_block_tb
DUT
RFNoC
RFNoC NoC Shell
Block
Block
AXI Wrapper
Testbench
AXI Crossbar
noc_block_tb
Moving NoC Shell
Average
AXI Wrapper
Testbench
noc_block_moving_avg_tb.sv
In system debugging
Simulate!
Future Improvements
Radio Lite
DSP separated from Radio Core, very useful for E310
Improvements to NoC Shell
Additional base blocks
DRAM RFNoC block
Resource utilization reduction
No promise dates
Any suggestions?
Guided Debugging
NoC Shell
Command & Response Data Packets
Packets
AXI Wrapper
Sample FFT
Data Config
SR 131: FFT Reset
SR 132: FFT Size
Xilinx FFT FFT
|x| SR 133: Mag Out
IP Core Shift
|x|2 SR 255: Rb Addr
RB 0: FFT Reset
CHDR AXI-Stream Settings Bus RB 1: Mag Out