RFNoC DUC: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
(Updated/Completed description for the ddc block)
(Updated/Completed description for the duc block)
Line 1: Line 1:
<!-- RFNoC_Digital_Downconverter_Block.mediawiki -->
<!-- RFNoC_Digital_Upconverter_Block.mediawiki -->
<!-- /dcs/local/share/gnuradio/grc/blocks/uhd_rfnoc_ddc.block.yml -->
<!-- /dcs/local/share/gnuradio/grc/blocks/uhd_rfnoc_duc.block.yml -->
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 RFNoC Digital Upconverter (DUC) block is utilized to transform a signal from a lower sample rate to a higher one, while also providing the functionality 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}.
The DUC block supports integer sample rate conversion factors, offering versatility in signal processing. For achieving the best performance, particularly with minimal filter roll-off and maximum aliasing suppression, it is advisable to use conversion factors of {2, 4, 8}.


== Parameters ==
== Parameters ==
Line 12: Line 12:
;Block Args
;Block Args
:default: ""
:default: ""
:Viable properties can be found at [https://files.ettus.com/manual/classuhd_1_1rfnoc_1_1ddc__block__control.html RFNoC ddc control].
:Viable properties can be found at [https://files.ettus.com/manual/classuhd_1_1rfnoc_1_1duc__block__control.html RFNoC duc control].


;Device Select / Instance Select
;Device Select / Instance Select
Line 31: Line 31:
:Positive or negative Frequency offset relative to the original frequency
:Positive or negative Frequency offset relative to the original frequency


;Ch0: Output Rate (Hz)
;Ch0: Input Rate (Hz)
:default: 0
:default: 0
:Output sample rate in Hz
:Output sample rate in Hz
<!-- EOh: "Output sample rate in Hz", same below --> <!-- corrected -->


;Ch1: Frequency Shift (Hz)
;Ch1: Frequency Shift (Hz)
Line 40: Line 39:
:Positive or negative Frequency offset relative to the original frequency
:Positive or negative Frequency offset relative to the original frequency


;Ch1: Output Rate (Hz)
;Ch1: Input Rate (Hz)
:default: 0
:default: 0
:Output sample rate in Hz
:Output sample rate in Hz
Line 48: Line 47:
:Positive or negative Frequency offset relative to the original frequency
:Positive or negative Frequency offset relative to the original frequency


;Ch2: Output Rate (Hz)
;Ch2: Input Rate (Hz)
:default: 0
:default: 0
:Output sample rate in Hz
:Output sample rate in Hz
Line 56: Line 55:
:Positive or negative Frequency offset relative to the original frequency
:Positive or negative Frequency offset relative to the original frequency


;Ch3: Output Rate (Hz)
;Ch3: Input Rate (Hz)
:default: 0
:default: 0
:Output sample rate in Hz
: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>
You can find this example at [https://github.com/gnuradio/gnuradio/blob/main/gr-uhd/examples/grc/rfnoc_duc_radio.grc rfnoc_duc_radio.grc]. <br>
[[File:Rfnoc duc radio.png]]
[[File:Rfnoc radio ddc.png]]
== Example Output ==
== Example Output ==


Line 68: Line 67:


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


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


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


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


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

Revision as of 11:38, 22 May 2025

The RFNoC Digital Upconverter (DUC) block is utilized to transform a signal from a lower sample rate to a higher one, while also providing the functionality to shift the signal's frequency. The DUC block supports integer sample rate conversion factors, offering versatility in signal processing. For achieving the best performance, particularly with minimal filter roll-off and maximum aliasing suppression, it is advisable 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 duc 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
Input 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
Input 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
Input 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
Input Rate (Hz)
default: 0
Output sample rate in Hz

Example Flowgraph

You can find this example at rfnoc_duc_radio.grc.
Rfnoc radio ddc.png

Example Output

Source Files

C++ files
rfnoc_duc_impl.cc
Header files
rfnoc_duc_impl.h
Public header files
rfnoc_duc.h
Block definition
uhd_rfnoc_duc.block.yml