fpga_phy_zigbee
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
fpga_phy_zigbee [2017/12/06 15:22] – [Create Scenario (.yaml file)] ooubejja | fpga_phy_zigbee [2017/12/14 16:25] (current) – [What's new here ?] ooubejja | ||
---|---|---|---|
Line 1: | Line 1: | ||
--- // | --- // | ||
- | ! UNDER CONSTRUCTION ! | ||
{{ : | {{ : | ||
Line 9: | Line 8: | ||
- | In this tutorial we will focus on the PHY layer exclusively and, in order to encode/ | + | In this tutorial we will focus on the PHY layer exclusively and, in order to encode/ |
==== What's new here ? ==== | ==== What's new here ? ==== | ||
As seen in the previous tutorials, operations such as FFT, MUX/DEMUX, encoding, modulation, | As seen in the previous tutorials, operations such as FFT, MUX/DEMUX, encoding, modulation, | ||
The goal of this tutorial is to transmit IEEE 802.15.4 packets with a " | The goal of this tutorial is to transmit IEEE 802.15.4 packets with a " | ||
- | In this tutorial, we will see how to transmit and receive IEEE 802.15.4 packets using a .hex file as an input and a [[custom Bitstream]] of a IEEE 802.15.4 PHY Layer Transmitter targeting the Xilinx FPGA [[https:// | + | In this tutorial, we will see how to transmit and receive IEEE 802.15.4 packets using a .hex file as an input and a custom Bitstream of a IEEE 802.15.4 PHY Layer Transmitter targeting the Xilinx FPGA [[https:// |
---- | ---- | ||
Line 22: | Line 21: | ||
We will need some blocks of the module [[https:// | We will need some blocks of the module [[https:// | ||
- | ==== Download bitstream | + | ==== Find the Bitstream |
- | In order to use the FPGA Transmitter design, we will have to load the custom | + | In order to use the FPGA Transmitter design, we will have to load the custom |
- | The receiver node(s) will run the default | + | |
+ | ''/ | ||
+ | |||
+ | Copy the file in your main directory : | ||
+ | < | ||
+ | you@srvairlock: | ||
+ | </ | ||
+ | |||
+ | //The receiver node(s) will run the default | ||
---- | ---- | ||
Line 40: | Line 47: | ||
- | === Generate .hex file as an input source === | + | - === Generate .hex file as an input source === |
Here is a simple tool for creating/ | Here is a simple tool for creating/ | ||
Line 47: | Line 55: | ||
{{ : | {{ : | ||
- | === TX Flowgraph in GRC (ieee802154_tx_pico.grc)=== | + | - === TX Flowgraph in GRC (ieee802154_tx_pico.grc)=== |
- | + | ||
The PicoSDR needs some initializing stuff to be done : | The PicoSDR needs some initializing stuff to be done : | ||
- | * Add and configure these blocks: | + | * Add and configure these blocks |
- | * **RTDEx Sink** | + | * **RTDEx Sink** |
* ATTENTION : **Channel** parameter has to be set to **__3__** as in the previous image. That's the only channel that allows access to the custom design. | * ATTENTION : **Channel** parameter has to be set to **__3__** as in the previous image. That's the only channel that allows access to the custom design. | ||
- | |||
- | * **Radio420x** | ||
* **Custom Register** (CR 1 & 4) | * **Custom Register** (CR 1 & 4) | ||
- | * CR1 : | + | * Set CR1 value to 0 to enable the transmitter |
+ | * Set CR4 value to 0 to disable MIMO synchronization | ||
+ | |||
+ | * **Radio420 ** | ||
+ | * The Radio420x is a Multimode SDR [[https:// | ||
+ | * To be short, add 2 '' | ||
+ | * Now, we only need one transmitter per node, so make sure to enable only the Radio420 TX of Card 1, and set the gain values as following : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | * For the 3 remaining '' | ||
//If you don't get this part, have a look [[from_gnuradio_to_cortxlab_pico|here]].// | //If you don't get this part, have a look [[from_gnuradio_to_cortxlab_pico|here]].// | ||
- | There isn't that much done in here since all baseband processing is done by the FPGA. All that is left is to connect a '' | + | There isn't that much left in here since all baseband processing is done by the FPGA. All you have to do now is to connect a '' |
{{ : | {{ : | ||
- | The final flow-graph should look like this : | + | The final flow-graph |
{{ : | {{ : | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
Line 77: | Line 100: | ||
==== Receiver (ieee802154_rx_pico.grc)==== | ==== Receiver (ieee802154_rx_pico.grc)==== | ||
+ | |||
+ | not finished | ||
+ | |||
+ | |||
{{ : | {{ : | ||
==== Generate .py files ==== | ==== Generate .py files ==== | ||
Line 96: | Line 123: | ||
command: ./ | command: ./ | ||
bitstreamA: pico_tx802154_sx315.bit | bitstreamA: pico_tx802154_sx315.bit | ||
- | </ | + | </ |
- | + | ||
- | + | ||
- The RX node will have the default Bitstream that makes received/ | - The RX node will have the default Bitstream that makes received/ | ||
- | < | + | |
+ | < | ||
node31: | node31: | ||
command: ./ | command: ./ | ||
- | </ | + | </ |
The complete scenario should look like this : | The complete scenario should look like this : | ||
Line 131: | Line 159: | ||
===== Upload files and run the experiment ===== | ===== Upload files and run the experiment ===== | ||
+ | The experiment directory should look like this by now : | ||
< | < | ||
... | ... | ||
- | ├── pico_zigbee.task | ||
├── pico_zigbee | ├── pico_zigbee | ||
│ | │ | ||
Line 143: | Line 171: | ||
│ | │ | ||
│ | │ | ||
- | |||
... | ... | ||
</ | </ | ||
- | The .grc files are not needed to create the task, but if ever you want to change/ | + | The '' |
+ | |||
+ | Now you have to [[exp_upload|upload the files]] to Airlock server and [[reserve|book the testbed]]. | ||
+ | |||
+ | Create the task : | ||
+ | < | ||
+ | you@srvairlock: | ||
+ | </ | ||
+ | |||
+ | And submit it : | ||
+ | < | ||
+ | you@srvairlock: | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
Line 153: | Line 195: | ||
===== Check results ===== | ===== Check results ===== | ||
- | Wait until the task is finished, proceed to extract results of the RX node(s). In our case it's the Node31 only. | + | Check the experiment status : |
+ | |||
+ | < | ||
+ | you@srvairlock: | ||
+ | </ | ||
+ | |||
+ | And when the task is finished | ||
+ | |||
+ | < | ||
+ | you@srvairlock: | ||
+ | num total tasks: | ||
+ | num tasks waiting: 0 | ||
+ | num tasks running: 0 | ||
+ | tasks currently running: | ||
+ | (none) | ||
+ | </ | ||
+ | |||
+ | Then proceed to extract results of the RX node(s). In our case it's the Node31 only. | ||
The file tree should look like this : | The file tree should look like this : | ||
Line 171: | Line 230: | ||
│ | │ | ||
│ | │ | ||
- | impact_instr.txt | + | │ |
- | frame_fpga.hex | + | │ |
- | _impactbatch.log | + | │ |
- | stderr.txt | + | │ |
- | __stdout.txt__ | + | │ |
... | ... |
fpga_phy_zigbee.txt · Last modified: 2017/12/14 16:25 by ooubejja