TAISC running on zedzynqSDR

This tutorial elaborates how to flash a wireless stack on the ZedBoard Zynq-7000 ARM/FPGA SoC Development Board. At the moment, two zed boards are deployed in the testbed, more information are available here.

The wireless stack consists of:

  1. Contiki-NG, which is an open-source operating system (see http://www.contiki-ng.org/);
  2. TAISC, which is a MAC execution engine which allows for easy creation of novel MAC protocols;
  3. SDR physical layer, which is the novel PHY implementation developed by IDLab - Ghent University

Code structure

Currently there are two types of implemetations available on ZedBoard, hosted at different repositories. First gitlab repository is running Zigbee physical layer in single channel mode with configurable bandwidth, and the second gitlab repository contians code that also supports concurrent communication over multiple channels, referred to as multi-channel virtual tranceiver. Please email Muhammad.Aslam@UGent.be to request access.

Following files are of importance:

  1. os/net/mac/taisc/lower_mac/chains/TDMA-chain.c: This file contains the time-critical lower-MAC TDMA protocol code. This file should only be changed when experienced with TAISC.
  2. os/net/mac/taisc/upper_mac/tdma/tdma_uppermac.c: This file contains the non-time-critical uppermac-MAC TDMA protocol code. Here you can make alterations on how the lower-MAC and PHY will behave. For example the superframe, channel, bandwidht, etc. can be altered.
  3. arch/platform/sdr: This directory contains the platform code of the Zedboard;
  4. arch/cpu/arm-sdr: This directory contains the CPU code of the ZYNQ-9000 ARM processor;

Flash example

This section explains how to flash a first example on two boards, the example itself is for single channel mode, however can be adapted to applications on multi-channel transceiver. First go to examples/taisc_examples/nullnet. This directory contains a simple unicast example with uni-directional traffic. To change the destination, change the destination address in nullnet-unicast.c. The MAC protocol running on the device will be TDMA, with a simple slot layout:

NODE 1: BEACON  - RX - TX - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI
NODE 1: SYNC    - TX - RX - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI - NOPI

To flash the node, execute following command:

# Node 1:
rm build/sdr/obj/ieee-addr.*; make TARGET=sdr nullnet-unicast.upload NODE_ID=1
# Node 2:
rm build/sdr/obj/ieee-addr.*; make TARGET=sdr nullnet-unicast.upload NODE_ID=2

Afterwards you can log in to the device and observe the output:

tools/serial-io/serialdump -b11520/dev/ttyACM0