tuto_fpga_pico
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tuto_fpga_pico [2016/05/18 10:47] – [Edit the .grc file] lbeseme | tuto_fpga_pico [2017/11/15 16:22] (current) – [Create the scenario] onicolas | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | # Using a custom bitstream with a PicoSDR | + | # Using a custom bitstream with a PicoSDR |
- | This tutorial shows how to use a custom bitstream when you are making experiments with PicoSDR. For this we will be using a Nutaq exemple | + | This tutorial shows how to use a custom bitstream when you are making experiments with PicoSDR. For this we will be using a Nutaq example |
- | This exemple | + | This example |
- | + | ||
- | The GRC file can be found at ''/ | + | |
+ | The GRC file can be found at ''/ | ||
## Edit the .grc file | ## Edit the .grc file | ||
- | Let's take a look at '' | + | Let's take a look at '' |
+ | |||
+ | First, what it is intended to do: we send a video file to RTDEX Sink, and from RTDEX Source we get the constellation points of the OFDM demodulation and the video file is sent to a UDP Sink (in order to open it with VLC for example). We have also a lot of parameter | ||
- | This example can be used straight away when you are working on your setup, but not in CortXlab | + | This example can be used straight away when you are working on your setup, but not in CorteXlab |
- | First of all, we need to change the generate option of the graph to 'No GUI'. Thus we can remove the '' | + | First of all, we need to change the generate option of the graph to 'No GUI'. Thus we can remove the '' |
- | Let's back to the idea of sending a constant number to the PicoSDR and see if we get it back. First thing to do is to add a '' | + | Let' |
- | Add a Python Block, open it, and click on 'Open in Editor' | + | Add a Python Block (from category '' |
< | < | ||
""" | """ | ||
Embedded Python Blocks: | Embedded Python Blocks: | ||
- | Each this file is saved, GRC will instantiate the first class it finds to get | + | Each time this file is saved, GRC will instantiate the first class it finds to get |
- | ports and parameters of your block. The arguments to __init__ | + | the ports and parameters of your block. The arguments to __init__ |
parameters. All of them are required to have default values! | parameters. All of them are required to have default values! | ||
""" | """ | ||
Line 70: | Line 71: | ||
- | The code is quite simple : you take to input streams of int, you compare them over a number of samples defined by the paramter num\_samples, | + | The code is quite simple : you take two input streams of int, you compare them over a number of samples defined by the paramter num\_samples, |
Line 82: | Line 83: | ||
## Create the scenario | ## Create the scenario | ||
- | In order to run the experiment in CorteXlab we need a description called scenario. Create a file name '' | + | In order to run the experiment in CorteXlab we need a description called scenario. Create a file named '' |
< | < | ||
# Example scenario description file | # Example scenario description file | ||
Line 91: | Line 92: | ||
# Scenario textual description | # Scenario textual description | ||
# | # | ||
- | desc base scenario for CorteXlab | + | description: |
# Experiment maximum duration | # Experiment maximum duration | ||
# Time after which the experiment is forced to stop | # Time after which the experiment is forced to stop | ||
- | # | + | # |
- | durat 5 | + | duration: 300 |
# Node list | # Node list | ||
Line 102: | Line 103: | ||
# | # | ||
# | # | ||
- | # | + | # nodes: |
- | # entry (entry point script relative to the task root) | + | # (machine): |
- | # exit (exit point script relative to the task root. Use " | + | # command: |
- | node31: | + | nodes: |
- | entry ofdm.py | + | |
- | | + | |
+ | bitstreamA: OFDM_6_6_0_sx315.bit | ||
</ | </ | ||
- | If you trasnlate | + | If you translate |
Line 122: | Line 124: | ||
│ ├── ofdm.py | │ ├── ofdm.py | ||
│ ├── epy_block_0.py | │ ├── epy_block_0.py | ||
- | │ ├── scenario.desc | + | │ ├── scenario.yaml |
│ ├── ofdm.grc | │ ├── ofdm.grc | ||
│ └── OFDM_6_6_0_sx315.bit | │ └── OFDM_6_6_0_sx315.bit | ||
Line 128: | Line 130: | ||
</ | </ | ||
- | The .grc will not be used by CorteXlab but you can let it in the same directory. '' | + | The .grc will not be used by CorteXlab but you can let it in the same directory. '' |
### Upload the files on airlock | ### Upload the files on airlock | ||
Line 208: | Line 210: | ||
</ | </ | ||
- | So we see that we have a folder for each task and inside each folder one compressed file per participant node. Let' | + | So we see that we have a folder for each task and inside each folder one compressed file per participant node. Let' |
< | < | ||
Line 217: | Line 219: | ||
you@srvairlock: | you@srvairlock: | ||
epy_block_0.py | epy_block_0.py | ||
- | epy_block_0.pyc | + | epy_block_0.pyc |
_impactbatch.log | _impactbatch.log | ||
</ | </ | ||
- | We see that all of the files we used to create the task are inside. The other two are: | + | We see that all of the files we used to create the task are inside. The others |
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
- | * '' | + | * '' |
Let's take a look inside '' | Let's take a look inside '' | ||
Line 234: | Line 236: | ||
</ | </ | ||
- | You should get a long file that looks more or less like this: | + | You should get a file looking |
< | < | ||
Line 283: | Line 285: | ||
</ | </ | ||
- | Here we have 98% valid reveived | + | Here we have 98% valid received |
## What's next | ## What's next | ||
- | Obviously, the next step for you is to try an experiment with your own bitstream. But you can also try to adapt other Nutaq exemple | + | Obviously, the next step for you is to try an experiment with your own bitstream. But you can also try to adapt other Nutaq example |
tuto_fpga_pico.1463561250.txt.gz · Last modified: 2016/05/18 10:47 by lbeseme