RFNoC DUC: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
m (Duggabe moved page DUC to RFNoC DUC)
(Updated/Completed description for the ddc block)
Line 1: Line 1:
<!-- DUC.mediawiki -->
<!-- RFNoC_Digital_Downconverter_Block.mediawiki -->
<!-- /dcs/local/share/gnuradio/grc/blocks/uhd_fpga_duc.block.yml -->
<!-- /dcs/local/share/gnuradio/grc/blocks/uhd_rfnoc_ddc.block.yml -->
Statement of purpose / function<br>
The RFNoC Digital Downconverter (DDC) block is designed to efficiently transform a signal from a higher sample rate to a lower one, and it also offers the capability to shift the signal's frequency.
The DDC block supports integer sample rate conversion factors, allowing for flexibility in signal processing. For optimal performance, especially in terms of minimal filter roll-off and maximum aliasing suppression, it is recommended to use conversion factors of {2, 4, 8}.
 
== Parameters ==
== Parameters ==
<b>(R):</b> <span class="plainlinks">[https://wiki.gnuradio.org/index.php/GNURadioCompanion#Variable_Controls <b>Run-time adjustable</b>]</span><br>
<b>(R):</b> <span class="plainlinks">[https://wiki.gnuradio.org/index.php/GNURadioCompanion#Variable_Controls <b>Run-time adjustable</b>]</span><br>
;Channel count
:default: 1
:This specifies the number of channels / streams to be used with the block.


;RFNoC Block Type
;Block Args
:default: 'block'
:default: ""
:options: ['block', 'sep', 'device']
:Viable properties can be found at [https://files.ettus.com/manual/classuhd_1_1rfnoc_1_1ddc__block__control.html RFNoC ddc control].


;Block Descriptor
;Device Select / Instance Select
:default: 'duc.yml'
:Default: -1 / Default: -1
:These properties specify the device and instance to be used. It is best practice to always explicitly specify both. This is crucial because many USRP setups involve multiple instances of different blocks, and GNU Radio tends to select the first device or instance it finds, which may not be the most suitable choice. Explicit specification helps to prevent errors and ensures the correct setup is used.
:- Use ''uhd_usrp_probe'' to determine the correct device and instance numbers.
:- Always specify the device and instance explicitly to avoid automatic mismatches by GNU Radio.
:Even with a single device with multiple instances:
:- 0/Radio#0 → Device 0, Instance 0
:- 0/Radio#1 → Device 0, Instance 1
:Specification with multiple devices:
:- 0/Radio#1 → Device 0, Instance 1
:- 1/Radio#1 → Device 1, Instance 1
:By consistently specifying the device and instance, you ensure that the most appropriate settings are applied and avoid potential issues caused by automatic selection.


;Number of Ports
;Ch0: Frequency Shift (Hz)
:default: '2'
:default: 0
:Positive or negative Frequency offset relative to the original frequency
 
;Ch0: Output Rate (Hz)
:default: 0
:Output sample rate in Hz
<!-- EOh: "Output sample rate in Hz", same below --> <!-- corrected -->
 
;Ch1: Frequency Shift (Hz)
:default: 0
:Positive or negative Frequency offset relative to the original frequency
 
;Ch1: Output Rate (Hz)
:default: 0
:Output sample rate in Hz
 
;Ch2: Frequency Shift (Hz)
:default: 0
:Positive or negative Frequency offset relative to the original frequency
 
;Ch2: Output Rate (Hz)
:default: 0
:Output sample rate in Hz
 
;Ch3: Frequency Shift (Hz)
:default: 0
:Positive or negative Frequency offset relative to the original frequency
 
;Ch3: Output Rate (Hz)
:default: 0
:Output sample rate in Hz


== Example Flowgraph ==
== Example Flowgraph ==
 
You can find this example at [https://github.com/gnuradio/gnuradio/blob/main/gr-uhd/examples/grc/rfnoc_radio_ddc.grc rfnoc_radio_ddc.grc] <br>
[[File:Rfnoc duc radio.png]]
== Example Output ==
== Example Output ==


Line 22: Line 68:


; C++ files
; C++ files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-uhd/lib/rfnoc_ddc_impl.cc rfnoc_ddc_impl.cc]


; Header files
; Header files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-uhd/lib/rfnoc_ddc_impl.h rfnoc_ddc_impl.h]


; Public header files
; Public header files
: [https://github.com/gnuradio/gnuradio TODO]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-uhd/include/gnuradio/uhd/rfnoc_ddc.h rfnoc_ddc.h]


; Block definition
; Block definition
: [https://github.com/gnuradio/gnuradio/blob/main/gr-uhd/grc/uhd_fpga_duc.block.yml uhd_fpga_duc.block.yml]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-uhd/grc/gen_rfnoc_ddc_block_yml.py uhd_rfnoc_ddc.block.yml]


[[Category:Stub Docs]]
[[Category:Stub Docs]]
[[Category:Block Docs]]
[[Category:Block Docs]]

Revision as of 15:03, 12 May 2025

The RFNoC Digital Downconverter (DDC) block is designed to efficiently transform a signal from a higher sample rate to a lower one, and it also offers the capability to shift the signal's frequency. The DDC block supports integer sample rate conversion factors, allowing for flexibility in signal processing. For optimal performance, especially in terms of minimal filter roll-off and maximum aliasing suppression, it is recommended to use conversion factors of {2, 4, 8}.

Parameters

(R): Run-time adjustable

Channel count
default: 1
This specifies the number of channels / streams to be used with the block.
Block Args
default: ""
Viable properties can be found at RFNoC ddc control.
Device Select / Instance Select
Default: -1 / Default: -1
These properties specify the device and instance to be used. It is best practice to always explicitly specify both. This is crucial because many USRP setups involve multiple instances of different blocks, and GNU Radio tends to select the first device or instance it finds, which may not be the most suitable choice. Explicit specification helps to prevent errors and ensures the correct setup is used.
- Use uhd_usrp_probe to determine the correct device and instance numbers.
- Always specify the device and instance explicitly to avoid automatic mismatches by GNU Radio.
Even with a single device with multiple instances:
- 0/Radio#0 → Device 0, Instance 0
- 0/Radio#1 → Device 0, Instance 1
Specification with multiple devices:
- 0/Radio#1 → Device 0, Instance 1
- 1/Radio#1 → Device 1, Instance 1
By consistently specifying the device and instance, you ensure that the most appropriate settings are applied and avoid potential issues caused by automatic selection.
Ch0
Frequency Shift (Hz)
default: 0
Positive or negative Frequency offset relative to the original frequency
Ch0
Output Rate (Hz)
default: 0
Output sample rate in Hz
Ch1
Frequency Shift (Hz)
default: 0
Positive or negative Frequency offset relative to the original frequency
Ch1
Output Rate (Hz)
default: 0
Output sample rate in Hz
Ch2
Frequency Shift (Hz)
default: 0
Positive or negative Frequency offset relative to the original frequency
Ch2
Output Rate (Hz)
default: 0
Output sample rate in Hz
Ch3
Frequency Shift (Hz)
default: 0
Positive or negative Frequency offset relative to the original frequency
Ch3
Output Rate (Hz)
default: 0
Output sample rate in Hz

Example Flowgraph

You can find this example at rfnoc_radio_ddc.grc
Rfnoc duc radio.png

Example Output

Source Files

C++ files
rfnoc_ddc_impl.cc
Header files
rfnoc_ddc_impl.h
Public header files
rfnoc_ddc.h
Block definition
uhd_rfnoc_ddc.block.yml