aboutsummaryrefslogtreecommitdiffstats
path: root/fpga/docs/usrp2/customize_signal_chain.md
diff options
context:
space:
mode:
Diffstat (limited to 'fpga/docs/usrp2/customize_signal_chain.md')
-rw-r--r--fpga/docs/usrp2/customize_signal_chain.md49
1 files changed, 49 insertions, 0 deletions
diff --git a/fpga/docs/usrp2/customize_signal_chain.md b/fpga/docs/usrp2/customize_signal_chain.md
new file mode 100644
index 000000000..dfd28b3cc
--- /dev/null
+++ b/fpga/docs/usrp2/customize_signal_chain.md
@@ -0,0 +1,49 @@
+# Customizing the Signal Chain in Generation 2 products
+
+## Adding DSP logic to Generation 2 products
+
+As part of the USRP FPGA build-framework, there are several convenient places
+for users to insert custom DSP modules into the transmit and receive chains.
+
+- Before the DDC module
+- After the DDC module
+- Replace the DDC module
+- Before the DUC module
+- After the DUC module
+- Replace the DUC module
+- As an RX packet engine
+- As an TX packet engine
+
+### Customizing the top level makefile
+
+Each USRP device has a makefile associated with it. This makefile contains all
+of the necessary build rules. When making a customized FPGA design, start by
+copying the current makefile for your device. Makefiles can be found in
+`usrp2/top/{product}/Makefile`
+
+Edit your new makefile:
+- Set BUILD_DIR to a unique directory name
+- Set CUSTOM_SRCS for your verilog sources
+- Set CUSTOM_DEFS (see section below)
+
+### Inserting custom modules
+
+CUSTOM_DEFS is a string of space-separate key-value pairs. Set the CUSTOM_DEFS
+variable so the FPGA fabric glue will substitute your custom modules into the
+DSP chain.
+
+Example:
+
+ CUSTOM_DEFS = "TX_ENG0_MODULE=my_tx_engine RX_ENG0_MODULE=my_rx_engine"
+
+Where `my_tx_engine` and `my_rx_engine` are the names of custom verilog modules.
+
+The following module definition keys are possible (X is a DSP number):
+
+- `TX_ENG<X>_MODULE`: Set the module for the transmit chain engine.
+- `RX_ENG<X>_MODULE`: Set the module for the receive chain engine.
+- `RX_DSP<X>_MODULE`: Set the module for the transmit dsp chain.
+- `TX_DSP<X>_MODULE`: Set the module for the receive dsp chain.
+
+Examples of custom modules can be found in the Verilog files in `usrp2/custom/`.
+