usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

OFDM Reciever chain on USRPx310

QP
Quentin Prieels
Thu, Mar 6, 2025 2:19 PM

Hello everyone,

As part of a research project, I'm looking to implement an OFDM receiver
on the FPGA of a USRPx310 (and more specifically, the synchronisation
stage). According to my research, some RFNoC blocks with this function
already perform this function. Where can I find them?

If you are not aware of the existence of these blocks, I imagine the
best thing to do is to develop a new OOT module implementing this
functionality. Where can I find the documentation for creating a new
block (in UHD 4.8) ? In the RFNoC specifications? (I've already
installed UHD4.8, Vivado, ModelSim and run the Gain module's test-bench
successfully, created a new module with 'rfnoc_modtool', but I am a bit
lost about how to design my <block>.yml file, and then, wich signal to
drive in the SystemVerilog user logic code). I'm also wondering where I
can find the documentation for the available IPs to integrate in a new
design ?

Thanks for your help,
Quentin

Hello everyone, As part of a research project, I'm looking to implement an OFDM receiver on the FPGA of a USRPx310 (and more specifically, the synchronisation stage). According to my research, some RFNoC blocks with this function already perform this function. Where can I find them? If you are not aware of the existence of these blocks, I imagine the best thing to do is to develop a new OOT module implementing this functionality. Where can I find the documentation for creating a new block (in UHD 4.8) ? In the RFNoC specifications? (I've already installed UHD4.8, Vivado, ModelSim and run the Gain module's test-bench successfully, created a new module with 'rfnoc_modtool', but I am a bit lost about how to design my <block>.yml file, and then, wich signal to drive in the SystemVerilog user logic code). I'm also wondering where I can find the documentation for the available IPs to integrate in a new design ? Thanks for your help, Quentin
RK
Rob Kossler
Thu, Mar 6, 2025 3:27 PM

Hi Quentin,
I don't know what OFDM blocks are available. But, regarding your questions
about getting started with RFNoC, you will want to use the RFNoC
Specification document along with reviewing the XML blocks that Ettus
developed for the various included blocks such as FFT, FIR, SplitStream,
etc. Also, reviewing exactly how the Gain block works is very helpful. You
mentioned that you ran the test bench for the example Gain block but
perhaps you could build this into an FPGA image and go through all of the
steps to make this run on the hardware while controlling it from software.
I would also search Ettus Knowledge base and past conference presentations
such as GRCon for information about creating your own RFNoC OOT block.
Rob

On Thu, Mar 6, 2025 at 9:20 AM Quentin Prieels <
quentin.prieels@student.uclouvain.be> wrote:

Hello everyone,

As part of a research project, I'm looking to implement an OFDM receiver
on the FPGA of a USRPx310 (and more specifically, the synchronisation
stage). According to my research, some RFNoC blocks with this function
already perform this function. Where can I find them?

If you are not aware of the existence of these blocks, I imagine the best
thing to do is to develop a new OOT module implementing this functionality.
Where can I find the documentation for creating a new block (in UHD 4.8) ?
In the RFNoC specifications? (I've already installed UHD4.8, Vivado,
ModelSim and run the Gain module's test-bench successfully, created a new
module with 'rfnoc_modtool', but I am a bit lost about how to design my
<block>.yml file, and then, wich signal to drive in the SystemVerilog user
logic code). I'm also wondering where I can find the documentation for the
available IPs to integrate in a new design ?

Thanks for your help,
Quentin


USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-leave@lists.ettus.com

Hi Quentin, I don't know what OFDM blocks are available. But, regarding your questions about getting started with RFNoC, you will want to use the RFNoC Specification document along with reviewing the XML blocks that Ettus developed for the various included blocks such as FFT, FIR, SplitStream, etc. Also, reviewing exactly how the Gain block works is very helpful. You mentioned that you ran the test bench for the example Gain block but perhaps you could build this into an FPGA image and go through all of the steps to make this run on the hardware while controlling it from software. I would also search Ettus Knowledge base and past conference presentations such as GRCon for information about creating your own RFNoC OOT block. Rob On Thu, Mar 6, 2025 at 9:20 AM Quentin Prieels < quentin.prieels@student.uclouvain.be> wrote: > Hello everyone, > > As part of a research project, I'm looking to implement an OFDM receiver > on the FPGA of a USRPx310 (and more specifically, the synchronisation > stage). According to my research, some RFNoC blocks with this function > already perform this function. Where can I find them? > > If you are not aware of the existence of these blocks, I imagine the best > thing to do is to develop a new OOT module implementing this functionality. > Where can I find the documentation for creating a new block (in UHD 4.8) ? > In the RFNoC specifications? (I've already installed UHD4.8, Vivado, > ModelSim and run the Gain module's test-bench successfully, created a new > module with 'rfnoc_modtool', but I am a bit lost about how to design my > <block>.yml file, and then, wich signal to drive in the SystemVerilog user > logic code). I'm also wondering where I can find the documentation for the > available IPs to integrate in a new design ? > > Thanks for your help, > Quentin > _______________________________________________ > USRP-users mailing list -- usrp-users@lists.ettus.com > To unsubscribe send an email to usrp-users-leave@lists.ettus.com >
CH
Cédric Hannotier
Thu, Mar 6, 2025 3:53 PM

On 2025-03-06 15:19 +0100, Quentin Prieels wrote:
Hello Quentin,

On 2025-03-06 15:19 +0100, Quentin Prieels wrote:

As part of a research project, I'm looking to implement an OFDM receiver on
the FPGA of a USRPx310 (and more specifically, the synchronisation stage).
According to my research, some RFNoC blocks with this function already
perform this function. Where can I find them?

AFAIR, there are some RFNoC blocks in a branch over the old FPGA repo:
https://github.com/EttusResearch/fpga/tree/rfnoc-ofdm
for example:
https://github.com/EttusResearch/fpga/blob/rfnoc-ofdm/usrp3/lib/rfnoc/ofdm_peak_detector.v
Apart from Schmidl&Cox, I don't see anything merged into the default branch.

Never used them. Don't know how accurate they are.
Note that they are 7-8 years old...

Best

Cédric Hannotier

On 2025-03-06 15:19 +0100, Quentin Prieels wrote: Hello Quentin, On 2025-03-06 15:19 +0100, Quentin Prieels wrote: > As part of a research project, I'm looking to implement an OFDM receiver on > the FPGA of a USRPx310 (and more specifically, the synchronisation stage). > According to my research, some RFNoC blocks with this function already > perform this function. Where can I find them? AFAIR, there are some RFNoC blocks in a branch over the old FPGA repo: https://github.com/EttusResearch/fpga/tree/rfnoc-ofdm for example: https://github.com/EttusResearch/fpga/blob/rfnoc-ofdm/usrp3/lib/rfnoc/ofdm_peak_detector.v Apart from Schmidl&Cox, I don't see anything merged into the default branch. Never used them. Don't know how accurate they are. Note that they are 7-8 years old... Best -- Cédric Hannotier
QP
Quentin Prieels
Thu, Mar 6, 2025 7:07 PM

Hello Cédric, Hello everyone

Thanks for your replies.  I will try to use or be inspired by those blocks.

I have a slightly more specific question on this subject. Do you know
how to integrate the codes in the fpga/usrp3/lib/blocks/rnfoc folder
into a new OOT block/module? Do you instantiate them in the same way as
the ‘mult_rc’ IP (the one in the "HDL_IP" parameter) in the example of
the gain module? To structure the code, is it possible to define how to
move this code within the OOT block?

Thanks for your help, I appreciate.

Quentin

On 6/03/25 16:53, Cédric Hannotier wrote:

[Vous ne recevez pas souvent de courriers decedric.hannotier@ulb.be. Découvrez pourquoi ceci est important àhttps://aka.ms/LearnAboutSenderIdentification ]

On 2025-03-06 15:19 +0100, Quentin Prieels wrote:
Hello Quentin,

On 2025-03-06 15:19 +0100, Quentin Prieels wrote:

As part of a research project, I'm looking to implement an OFDM receiver on
the FPGA of a USRPx310 (and more specifically, the synchronisation stage).
According to my research, some RFNoC blocks with this function already
perform this function. Where can I find them?

AFAIR, there are some RFNoC blocks in a branch over the old FPGA repo:
https://github.com/EttusResearch/fpga/tree/rfnoc-ofdm
for example:
https://github.com/EttusResearch/fpga/blob/rfnoc-ofdm/usrp3/lib/rfnoc/ofdm_peak_detector.v
Apart from Schmidl&Cox, I don't see anything merged into the default branch.

Never used them. Don't know how accurate they are.
Note that they are 7-8 years old...

Best

Cédric Hannotier

Hello Cédric, Hello everyone Thanks for your replies.  I will try to use or be inspired by those blocks. I have a slightly more specific question on this subject. Do you know how to integrate the codes in the fpga/usrp3/lib/blocks/rnfoc folder into a new OOT block/module? Do you instantiate them in the same way as the ‘mult_rc’ IP (the one in the "HDL_IP" parameter) in the example of the gain module? To structure the code, is it possible to define how to move this code within the OOT block? Thanks for your help, I appreciate. Quentin On 6/03/25 16:53, Cédric Hannotier wrote: > [Vous ne recevez pas souvent de courriers decedric.hannotier@ulb.be. Découvrez pourquoi ceci est important àhttps://aka.ms/LearnAboutSenderIdentification ] > > On 2025-03-06 15:19 +0100, Quentin Prieels wrote: > Hello Quentin, > > On 2025-03-06 15:19 +0100, Quentin Prieels wrote: >> As part of a research project, I'm looking to implement an OFDM receiver on >> the FPGA of a USRPx310 (and more specifically, the synchronisation stage). >> According to my research, some RFNoC blocks with this function already >> perform this function. Where can I find them? > AFAIR, there are some RFNoC blocks in a branch over the old FPGA repo: > https://github.com/EttusResearch/fpga/tree/rfnoc-ofdm > for example: > https://github.com/EttusResearch/fpga/blob/rfnoc-ofdm/usrp3/lib/rfnoc/ofdm_peak_detector.v > Apart from Schmidl&Cox, I don't see anything merged into the default branch. > > Never used them. Don't know how accurate they are. > Note that they are 7-8 years old... > > Best > -- > > Cédric Hannotier
MB
Martin Braun
Wed, Mar 19, 2025 10:46 AM

On Thu, Mar 6, 2025 at 8:07 PM Quentin Prieels <
quentin.prieels@student.uclouvain.be> wrote:

Hello Cédric, Hello everyone

Thanks for your replies.  I will try to use or be inspired by those
blocks.

I have a slightly more specific question on this subject. Do you know how
to integrate the codes in the fpga/usrp3/lib/blocks/rnfoc folder into a new
OOT block/module? Do you instantiate them in the same way as the ‘mult_rc’
IP (the one in the "HDL_IP" parameter) in the example of the gain module?
To structure the code, is it possible to define how to move this code
within the OOT block?

You can reference them in your custom Verilog simply by module name. In
your OOT module, make sure to reference them in the Makefile.srcs. You
might have to add an include line to your RFNoC block's Makefile.

--M

Thanks for your help, I appreciate.

Quentin
On 6/03/25 16:53, Cédric Hannotier wrote:

[Vous ne recevez pas souvent de courriers de cedric.hannotier@ulb.be. Découvrez pourquoi ceci est important à https://aka.ms/LearnAboutSenderIdentification ]

On 2025-03-06 15:19 +0100, Quentin Prieels wrote:
Hello Quentin,

On 2025-03-06 15:19 +0100, Quentin Prieels wrote:

As part of a research project, I'm looking to implement an OFDM receiver on
the FPGA of a USRPx310 (and more specifically, the synchronisation stage).
According to my research, some RFNoC blocks with this function already
perform this function. Where can I find them?

AFAIR, there are some RFNoC blocks in a branch over the old FPGA repo:https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FEttusResearch%2Ffpga%2Ftree%2Frfnoc-ofdm&data=05%7C02%7Cquentin.prieels%40student.uclouvain.be%7C3ae893fb4a284ca44e9f08dd5cc714ca%7C7ab090d4fa2e4ecfbc7c4127b4d582ec%7C1%7C0%7C638768732336272267%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=daAwbNquMCdD0qG2gSu73Zv9XjU8OF03P4YAY%2BncKVw%3D&reserved=0 https://github.com/EttusResearch/fpga/tree/rfnoc-ofdm
for example:https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FEttusResearch%2Ffpga%2Fblob%2Frfnoc-ofdm%2Fusrp3%2Flib%2Frfnoc%2Fofdm_peak_detector.v&data=05%7C02%7Cquentin.prieels%40student.uclouvain.be%7C3ae893fb4a284ca44e9f08dd5cc714ca%7C7ab090d4fa2e4ecfbc7c4127b4d582ec%7C1%7C0%7C638768732336299309%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=XnKpXNpmd9RTNmyF%2FFewBEL8MpL32bbe%2B1S1aUtyr%2Bo%3D&reserved=0 https://github.com/EttusResearch/fpga/blob/rfnoc-ofdm/usrp3/lib/rfnoc/ofdm_peak_detector.v
Apart from Schmidl&Cox, I don't see anything merged into the default branch.

Never used them. Don't know how accurate they are.
Note that they are 7-8 years old...

Best

Cédric Hannotier


USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-leave@lists.ettus.com

On Thu, Mar 6, 2025 at 8:07 PM Quentin Prieels < quentin.prieels@student.uclouvain.be> wrote: > Hello Cédric, Hello everyone > > Thanks for your replies. I will try to use or be inspired by those > blocks. > > I have a slightly more specific question on this subject. Do you know how > to integrate the codes in the fpga/usrp3/lib/blocks/rnfoc folder into a new > OOT block/module? Do you instantiate them in the same way as the ‘mult_rc’ > IP (the one in the "HDL_IP" parameter) in the example of the gain module? > To structure the code, is it possible to define how to move this code > within the OOT block? > You can reference them in your custom Verilog simply by module name. In your OOT module, make sure to reference them in the Makefile.srcs. You might have to add an include line to your RFNoC block's Makefile. --M > Thanks for your help, I appreciate. > > Quentin > On 6/03/25 16:53, Cédric Hannotier wrote: > > [Vous ne recevez pas souvent de courriers de cedric.hannotier@ulb.be. Découvrez pourquoi ceci est important à https://aka.ms/LearnAboutSenderIdentification ] > > On 2025-03-06 15:19 +0100, Quentin Prieels wrote: > Hello Quentin, > > On 2025-03-06 15:19 +0100, Quentin Prieels wrote: > > As part of a research project, I'm looking to implement an OFDM receiver on > the FPGA of a USRPx310 (and more specifically, the synchronisation stage). > According to my research, some RFNoC blocks with this function already > perform this function. Where can I find them? > > AFAIR, there are some RFNoC blocks in a branch over the old FPGA repo:https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FEttusResearch%2Ffpga%2Ftree%2Frfnoc-ofdm&data=05%7C02%7Cquentin.prieels%40student.uclouvain.be%7C3ae893fb4a284ca44e9f08dd5cc714ca%7C7ab090d4fa2e4ecfbc7c4127b4d582ec%7C1%7C0%7C638768732336272267%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=daAwbNquMCdD0qG2gSu73Zv9XjU8OF03P4YAY%2BncKVw%3D&reserved=0 <https://github.com/EttusResearch/fpga/tree/rfnoc-ofdm> > for example:https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FEttusResearch%2Ffpga%2Fblob%2Frfnoc-ofdm%2Fusrp3%2Flib%2Frfnoc%2Fofdm_peak_detector.v&data=05%7C02%7Cquentin.prieels%40student.uclouvain.be%7C3ae893fb4a284ca44e9f08dd5cc714ca%7C7ab090d4fa2e4ecfbc7c4127b4d582ec%7C1%7C0%7C638768732336299309%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=XnKpXNpmd9RTNmyF%2FFewBEL8MpL32bbe%2B1S1aUtyr%2Bo%3D&reserved=0 <https://github.com/EttusResearch/fpga/blob/rfnoc-ofdm/usrp3/lib/rfnoc/ofdm_peak_detector.v> > Apart from Schmidl&Cox, I don't see anything merged into the default branch. > > Never used them. Don't know how accurate they are. > Note that they are 7-8 years old... > > Best > -- > > Cédric Hannotier > > _______________________________________________ > USRP-users mailing list -- usrp-users@lists.ettus.com > To unsubscribe send an email to usrp-users-leave@lists.ettus.com >