{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "be503286",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "%pylab is deprecated, use %matplotlib inline and import the required libraries.\n",
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "from qick import *\n",
    "from qick.rfboard import RFQickSoc216V1\n",
    "\n",
    "%pylab inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "0d52df3c",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "\n",
       "try {\n",
       "require(['notebook/js/codecell'], function(codecell) {\n",
       "  codecell.CodeCell.options_default.highlight_modes[\n",
       "      'magic_text/x-csrc'] = {'reg':[/^%%microblaze/]};\n",
       "  Jupyter.notebook.events.one('kernel_ready.Kernel', function(){\n",
       "      Jupyter.notebook.get_cells().map(function(cell){\n",
       "          if (cell.cell_type == 'code'){ cell.auto_highlight(); } }) ;\n",
       "  });\n",
       "});\n",
       "} catch (e) {};\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "try {\n",
       "require(['notebook/js/codecell'], function(codecell) {\n",
       "  codecell.CodeCell.options_default.highlight_modes[\n",
       "      'magic_text/x-csrc'] = {'reg':[/^%%pybind11/]};\n",
       "  Jupyter.notebook.events.one('kernel_ready.Kernel', function(){\n",
       "      Jupyter.notebook.get_cells().map(function(cell){\n",
       "          if (cell.cell_type == 'code'){ cell.auto_highlight(); } }) ;\n",
       "  });\n",
       "});\n",
       "} catch (e) {};\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "resetting clocks: 245.76 491.52\n",
      "\n",
      "QICK configuration:\n",
      "\n",
      "\tBoard: ZCU216\n",
      "\n",
      "\tSoftware version: 0.2.228\n",
      "\tFirmware timestamp: Wed Jan 31 08:18:41 2024\n",
      "\n",
      "\tGlobal clocks (MHz): tProcessor 349.997, RF reference 245.760\n",
      "\n",
      "\t16 signal generator channels:\n",
      "\t0:\taxis_sg_int4_v1 - envelope memory 4096 samples (13.333 us)\n",
      "\t\tfs=4915.200 MHz, fabric=307.200 MHz, 16-bit DDS, range=1228.800 MHz\n",
      "\t\tDAC tile 0, blk 0 is 0_228, on JHC1\n",
      "\t1:\taxis_sg_int4_v1 - envelope memory 4096 samples (13.333 us)\n",
      "\t\tfs=4915.200 MHz, fabric=307.200 MHz, 16-bit DDS, range=1228.800 MHz\n",
      "\t\tDAC tile 0, blk 1 is 1_228, on JHC2\n",
      "\t2:\taxis_sg_int4_v1 - envelope memory 4096 samples (13.333 us)\n",
      "\t\tfs=4915.200 MHz, fabric=307.200 MHz, 16-bit DDS, range=1228.800 MHz\n",
      "\t\tDAC tile 0, blk 2 is 2_228, on JHC1\n",
      "\t3:\taxis_sg_int4_v1 - envelope memory 4096 samples (13.333 us)\n",
      "\t\tfs=4915.200 MHz, fabric=307.200 MHz, 16-bit DDS, range=1228.800 MHz\n",
      "\t\tDAC tile 0, blk 3 is 3_228, on JHC2\n",
      "\t4:\taxis_sg_int4_v1 - envelope memory 4096 samples (9.524 us)\n",
      "\t\tfs=6881.280 MHz, fabric=430.080 MHz, 16-bit DDS, range=1720.320 MHz\n",
      "\t\tDAC tile 1, blk 0 is 0_229, on JHC1\n",
      "\t5:\taxis_sg_int4_v1 - envelope memory 4096 samples (9.524 us)\n",
      "\t\tfs=6881.280 MHz, fabric=430.080 MHz, 16-bit DDS, range=1720.320 MHz\n",
      "\t\tDAC tile 1, blk 1 is 1_229, on JHC2\n",
      "\t6:\taxis_sg_int4_v1 - envelope memory 4096 samples (9.524 us)\n",
      "\t\tfs=6881.280 MHz, fabric=430.080 MHz, 16-bit DDS, range=1720.320 MHz\n",
      "\t\tDAC tile 1, blk 2 is 2_229, on JHC1\n",
      "\t7:\taxis_sg_int4_v1 - envelope memory 4096 samples (9.524 us)\n",
      "\t\tfs=6881.280 MHz, fabric=430.080 MHz, 16-bit DDS, range=1720.320 MHz\n",
      "\t\tDAC tile 1, blk 3 is 3_229, on JHC2\n",
      "\t8:\taxis_signal_gen_v6 - envelope memory 16384 samples (1.667 us)\n",
      "\t\tfs=9830.400 MHz, fabric=614.400 MHz, 32-bit DDS, range=9830.400 MHz\n",
      "\t\tDAC tile 2, blk 0 is 0_230, on JHC3\n",
      "\t9:\taxis_signal_gen_v6 - envelope memory 16384 samples (1.667 us)\n",
      "\t\tfs=9830.400 MHz, fabric=614.400 MHz, 32-bit DDS, range=9830.400 MHz\n",
      "\t\tDAC tile 2, blk 1 is 1_230, on JHC4\n",
      "\t10:\taxis_signal_gen_v6 - envelope memory 16384 samples (1.667 us)\n",
      "\t\tfs=9830.400 MHz, fabric=614.400 MHz, 32-bit DDS, range=9830.400 MHz\n",
      "\t\tDAC tile 2, blk 2 is 2_230, on JHC3\n",
      "\t11:\taxis_signal_gen_v6 - envelope memory 16384 samples (1.667 us)\n",
      "\t\tfs=9830.400 MHz, fabric=614.400 MHz, 32-bit DDS, range=9830.400 MHz\n",
      "\t\tDAC tile 2, blk 3 is 3_230, on JHC4\n",
      "\t12:\taxis_signal_gen_v6 - envelope memory 16384 samples (1.667 us)\n",
      "\t\tfs=9830.400 MHz, fabric=614.400 MHz, 32-bit DDS, range=9830.400 MHz\n",
      "\t\tDAC tile 3, blk 0 is 0_231, on JHC3\n",
      "\t13:\taxis_signal_gen_v6 - envelope memory 16384 samples (1.667 us)\n",
      "\t\tfs=9830.400 MHz, fabric=614.400 MHz, 32-bit DDS, range=9830.400 MHz\n",
      "\t\tDAC tile 3, blk 1 is 1_231, on JHC4\n",
      "\t14:\taxis_signal_gen_v6 - envelope memory 16384 samples (1.667 us)\n",
      "\t\tfs=9830.400 MHz, fabric=614.400 MHz, 32-bit DDS, range=9830.400 MHz\n",
      "\t\tDAC tile 3, blk 2 is 2_231, on JHC3\n",
      "\t15:\taxis_sg_mux4_v3 - envelope memory 0 samples (0.000 us)\n",
      "\t\tfs=9830.400 MHz, fabric=614.400 MHz, 32-bit DDS, range=9830.400 MHz\n",
      "\t\tDAC tile 3, blk 3 is 3_231, on JHC4\n",
      "\n",
      "\t8 readout channels:\n",
      "\t0:\taxis_pfb_readout_v2 - controlled by PYNQ\n",
      "\t\tfs=2457.600 MHz, fabric=307.200 MHz, 32-bit DDS, range=307.200 MHz\n",
      "\t\tmaxlen 16384 accumulated, 16384 decimated (53.333 us)\n",
      "\t\ttriggered by output 7, pin 4, feedback to tProc input 0\n",
      "\t\tADC tile 2, blk 0 is 0_226, on JHC7\n",
      "\t1:\taxis_pfb_readout_v2 - controlled by PYNQ\n",
      "\t\tfs=2457.600 MHz, fabric=307.200 MHz, 32-bit DDS, range=307.200 MHz\n",
      "\t\tmaxlen 16384 accumulated, 16384 decimated (53.333 us)\n",
      "\t\ttriggered by output 7, pin 5, feedback to tProc input 1\n",
      "\t\tADC tile 2, blk 0 is 0_226, on JHC7\n",
      "\t2:\taxis_pfb_readout_v2 - controlled by PYNQ\n",
      "\t\tfs=2457.600 MHz, fabric=307.200 MHz, 32-bit DDS, range=307.200 MHz\n",
      "\t\tmaxlen 16384 accumulated, 16384 decimated (53.333 us)\n",
      "\t\ttriggered by output 7, pin 6, feedback to tProc input 2\n",
      "\t\tADC tile 2, blk 0 is 0_226, on JHC7\n",
      "\t3:\taxis_pfb_readout_v2 - controlled by PYNQ\n",
      "\t\tfs=2457.600 MHz, fabric=307.200 MHz, 32-bit DDS, range=307.200 MHz\n",
      "\t\tmaxlen 16384 accumulated, 16384 decimated (53.333 us)\n",
      "\t\ttriggered by output 7, pin 7, feedback to tProc input 3\n",
      "\t\tADC tile 2, blk 0 is 0_226, on JHC7\n",
      "\t4:\taxis_readout_v2 - controlled by PYNQ\n",
      "\t\tfs=2457.600 MHz, fabric=307.200 MHz, 32-bit DDS, range=2457.600 MHz\n",
      "\t\tmaxlen 16384 accumulated, 16384 decimated (53.333 us)\n",
      "\t\ttriggered by output 7, pin 8, feedback to tProc input -1\n",
      "\t\tADC tile 1, blk 0 is 0_225, on JHC5\n",
      "\t5:\taxis_readout_v2 - controlled by PYNQ\n",
      "\t\tfs=2457.600 MHz, fabric=307.200 MHz, 32-bit DDS, range=2457.600 MHz\n",
      "\t\tmaxlen 16384 accumulated, 16384 decimated (53.333 us)\n",
      "\t\ttriggered by output 7, pin 9, feedback to tProc input -1\n",
      "\t\tADC tile 1, blk 1 is 1_225, on JHC6\n",
      "\t6:\taxis_readout_v2 - controlled by PYNQ\n",
      "\t\tfs=2457.600 MHz, fabric=307.200 MHz, 32-bit DDS, range=2457.600 MHz\n",
      "\t\tmaxlen 16384 accumulated, 16384 decimated (53.333 us)\n",
      "\t\ttriggered by output 7, pin 10, feedback to tProc input -1\n",
      "\t\tADC tile 1, blk 2 is 2_225, on JHC5\n",
      "\t7:\taxis_readout_v2 - controlled by PYNQ\n",
      "\t\tfs=2457.600 MHz, fabric=307.200 MHz, 32-bit DDS, range=2457.600 MHz\n",
      "\t\tmaxlen 16384 accumulated, 16384 decimated (53.333 us)\n",
      "\t\ttriggered by output 7, pin 11, feedback to tProc input -1\n",
      "\t\tADC tile 1, blk 3 is 3_225, on JHC6\n",
      "\n",
      "\t4 digital output pins:\n",
      "\t0:\tSPARE0_1V8\n",
      "\t1:\tSPARE1_1V8\n",
      "\t2:\tSPARE2_1V8\n",
      "\t3:\tSPARE3_1V8\n",
      "\n",
      "\ttProc axis_tproc64x32_x8: program memory 1024 words, data memory 1024 words\n",
      "\t\texternal start pin: None\n"
     ]
    }
   ],
   "source": [
    "# Load bitstream with custom overlay\n",
    "soc = RFQickSoc216V1('./qick_rf216_v2.bit', clk_output=None)\n",
    "soccfg = soc\n",
    "\n",
    "print(soccfg)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "38ad4a9c",
   "metadata": {},
   "source": [
    "### general notes\n",
    "* In this firmware, generator numbers map directly to front-panel DAC port numbers. (This is not a fundamental rule, and we will eventually put the front-panel port numbers next to the JHC port numbers in the soccfg printout.)\n",
    "* In this firmware, readouts 4-7 map to front-panel ADC ports 0-3; readouts 0-3 are multiplexed onto front-panel ADC port 4.\n",
    "* In this firmware, the digital output pins from the tProc map to the first four User I/O SMA ports."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 226,
   "id": "1f61d999",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "01650ea01d3c483296ac0788f5288267",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABDsAAALaCAYAAAA/e1g/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAB7CAAAewgFu0HU+AADr2UlEQVR4nOzddZgb1f7H8fdZrbdQoEgpheJ6cbi4+0Uv7s7Ff7S4uzsXvxSKFGuxtkAplAqFulB3d+92Lcn5/ZFsN7sbmSSTTJL9vJ5nn84kZ875bjZNZr5zxFhrERERERERERHJFwVeByAiIiIiIiIi4iYlO0REREREREQkryjZISIiIiIiIiJ5RckOEREREREREckrSnaIiIiIiIiISF5RskNERERERERE8oqSHSIiIiIiIiKSV5TsEBEREREREZG8omSHiIiIiIiIiOQVJTtEREREREREJK8o2SEiIiIiIiIieUXJDhERERERERHJK0p2iIiIiIiIiEheUbJDRERERERERPKKkh0iIiIiIiIikleU7BARERERERGRvFLkdQCSPYwxpcAeod2lgN/DcERERERERCT/FQKbhrbHWWsr3ahUyQ4JtwcwzOsgREREREREpFHaHxjuRkUaxiIiIiIiIiIieUU9OyTc0pqNoUOHssUWW3gZi4iIiIiIiOS5hQsXcsABB9TsLo1VNhFKdki4DXN0bLHFFrRv397LWERERERERKRxcW3eSA1jEREREREREZG8omSHiIiIiIiIiOQVJTtEREREREREJK8o2SEiIiIiIiIieUXJDhERERERERHJK0p2iIiIiIiIiEheUbJDRERERERERPKKkh0iIiIiIiIikleU7BARERERERGRvKJkh4iIiIiIiIjklSKvAxAREREREZHGpaKiglWrVrF+/Xr8fr/X4UgKCgsLadasGW3atKFJkyZeh7OBkh0iIiIiIiKSEdZaFi5cyOrVq70ORVzi8/morKxk5cqVtG7dmi222AJjjNdhKdkhIiIiIiIimbF8+fIGiY6iIl2W5jKfz7dhe/Xq1ZSUlLDJJpt4GFGQ3lUiIiIiIiKSdlVVVSxdunTD/mabbUabNm0oLCz0MCpJld/vZ9WqVSxZsgSApUuX0qpVK0pKSjyNSxOUioiIiIiISNqtW7duw3bbtm1p27atEh15oLCwcMPfs0b439orSnaIiIiIiIhI2pWVlW3YbtWqlYeRSDqE/03D/9ZeUbJDRERERERE0q6qqgoAYwylpaUeRyNuKy0t3TAxac3f2ktKdoiIiIiIiEjaBQIBIDjsIRtW6xB3GWM2DEuq+Vt7SckOEREREREREckrSnaIiIiIiIiISF5RskNERERERERE8oqSHSIiIiIiIiKSV5TsEBEREUlF1XooW+51FCIiIhJGyQ4RERGRZM0aDC/tBs9tBz1vAGu9jkhERERQskNEREQkeT/eBeUrgttjPoV5w72NR0REJKR///4YYzDG8PDDD3sdTsYp2SEiIiKSrEXj6u4Pf9+bOERERKQOJTtEREREREREJK8o2SEiIiIiIiIieUXJDhERERERERHJK0p2iIiIiIiIiEheUbJDRERERERERPKKkh0iIiIiIiIikleKvA5AREREREREBCAQsKxcX+V1GBmzUbMSCgqM12HkJSU7REREREREJCusXF/Fvo//4nUYGTPi/mNp26LU6zDykoaxiIiIiIiIiEheUbJDRERExC3Weh2BiIiIoGSHiIiIiIiIiOQZzdkhIiIi4hajSeZERFKxUbMSRtx/rNdhZMxGzUq8DiFvKdkhIiIiIiIiWaGgwGjCTnGFhrGIiIiIiIiISF5RskNERETELZqgVEREJCso2SEiIiIiIiIieUXJDhERERERERHJK0p2iIiIiLhFq7GIiIhkhZxNdhhj9jHG3GuM6WOMmWuMqTTGrDPGTDHGdDXGHOagjsuNMdbhz+UO6mtmjOlijBlqjFkRimeiMeZ5Y0yHBH633Ywxbxljphljyo0xS40xA4wx1xljtIKOiIiIiIiISAw5eeFsjPkdODzCUyXADqGfy4wx3YCrrbVVGYipE9AL2KneUzuHfq42xlxore0dp56rgDeA8PWWmgCHhX4uN8acaq1d7lrwIiIiIiIikleOPPJIbCOeODsnkx3AVqF/FwBfAgOBOUAhcDBwR6jMJQR/xwsd1HlCqL5o5kV7whjTAviB2kTHu0B3oBw4CrgHaA18aYw52Fo7Nko9JwDvEOxxsxh4AvgL2Bi4BjgLOAjoYYw5ylobcPB7iYiISKY04pNKERGRbJKryY5JwL3A19Zaf73n/gz16BgM7AhcYIx501o7ME6dU6y1s5KMpzPB3hsAd1prnwt7bogx5jdgANAMeBk4un4FoeEprxNM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Xr2aN954g5NPPpmOHTvSrFkzWrduzY477sjFF1/Ml19+id+fP7Ml5GTPDhERySa6uBEyN5dFwA+9/g/KVwT3e90BO5+aPXODjO8Z/DnwBjjpaa+jkWxjLXx2Pkz9CQqK4cy3YI9zvI5KRBqB9957j7vvvpvly5fXeby8vJw1a9YwdepUPvnkE/bYYw/efvttDj441rSWuUE9O0RExLnGODmjJC8dQxqWTYGypbX7ZUth6WT320nVX2/CkkleRyHZZvYfwUQHQKAavr7K23hEpFHo0qUL11xzDcuXL6eoqIiLL76YL774gr/++ouBAwfy3nvvccwxxwAwbtw4jj76aL777juPo06denaIiIg4FQiArxyKmmRPT4Ks4WEiLFuTcKO6wQlPeB1FZmnOjtgm9/Y6AhFpZN544w2ef/55ALbeemu+//579tprrzplDj30UK666io+//xzLr30UioqKjjvvPMYMWIEu+66qxdhu0I9O0RERJwoXwkfngZPbgnvHQNrF3kdkUgWSiDZ4auCfo9C11PhzzeVKBERcdns2bPp3LkzAC1atODXX39tkOgId9555/Hhhx8CUFFRwSWXXJKRONNFyQ4REREnRn8GswcFtxeMgqHvZLDxXL0IzFDcukhOszS9viM/hIEvwKyB8OPdML1fetrJJnqvikgGvfzyy1RUVADw0EMPsf3228c95vzzz+eUU04BYOTIkfTt2zetMaaTkh0iIiJO/HRP3f2BL3gTR7bK2FCSLB2yIonr3bnu/jc3ehOHiEgestby0UcfAdC0aVOuueYax8fecsstG7bff/9912PLFCU7REQkNbpTKdHk5XsjH3+neBJIMKXyN1+noWEiIm4ZP348K1YEVy47/PDDad26teNjjznmGJo1awbAoEGD0hJfJmiCUhERSYDuqks0em80kK0Tp4qIZLNAoHZ58cag6cZQ4H4fhDFjxmzY3meffRI6trCwkL322oshQ4Ywf/58Fi9eTLt27dwOMe2U7BARkQREuGurCzqJKh97QTTC9/vqOcEeG/nyf33Cd8E5QgpL4LRXYLsjvI5IRMKVr4DnOnkdReZ0mQ7NN3G92mXLlm3Y3nzzzRM+Pjy5sWzZspxMdmgYi4iIpCYvhypIwiJdCOu9kT+WTvI6Anf4quC7m2DNfFg5E364Xe9TEclL69at27DdvHnzhI8P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DhGJICd7dlhro00CmkqdvQn2zEiljjLg2dBPKvX8TcOeISIiIiIiUl+D9QNERNSzQ0REREREcpqSHSLSkJIdIiIiIiKSu5TrEJEIlOwQEREREZHcpTk7RCQCJTtERERERCSHqWuHiDSkZIeIiIiIiOQuTVAqIhEo2SEiIiIiIiIieUXJDhERERERERHJK0p2iIiIiIiIiEheUbJDRERERERy14RvvY5ARLKQkh0iIiIiIpK7fOVeRyAiWUjJDhERERERERHJK0p2iIiIiIiIiEheUbJDRERERERERPKKkh0iIiIiIiIikleU7BARERERERGRvKJkh4iIiIiIiIjkFSU7RERERERERCSvKNkhIiIiIiIiInlFyQ4RERERERERyStKdoiIiIiIiIhIXlGyQ0RERERERETyipIdIiIiIiIiIpJXlOwQERERERERkbyiZIeIiIiIiIiI5BUlO0REREREREQkryjZISIiIiIiIiJ5RckOEREREREREckrSnaIiIiIiIiISF5RskNERERERERE8oqSHSIiIiIiIiKSV5TsEBEREREREZG8omSHiIiIiIiIiOQVJTtEREREREREJK8o2SEiIiIiIiIieUXJDhERERERERHJK0p2iIiIiIiIiEheUbJDRERERERERPKKkh0iIiIiIiIikleU7BARERERERGRvKJkh4iIiIiIiIjkFSU7RERERERERCSvKNkhIiIiIiIiInlFyQ4RERERERERyStKdoiIiIiIiIhIXlGyQ0RERERERETyipIdIiIiIiIiIpJXlOwQERERERERkbyiZIeIiIiIiIiI5BUlO0REREREREQkryjZISIiIiIiIiJ5RckOEREREREREckrSnaIiIiIiIiISF5RskNERERERERE8krOJjuMMZsZY041xjxqjOljjFlmjLGhn64O67g87Jh4P5c7qK+ZMaaLMWaoMWaFMWadMWaiMeZ5Y0yHBH633Ywxbxljphljyo0xS40xA4wx1xljipzWIyIiIiIiItIY5fKF82KvAwhnjOkE9AJ2qvfUzqGfq40xF1pre8ep5yrgDaA07OEmwGGhn8uNMadaa5e7FryIiIiIiIhIHsnlZEe4ucBE4PgU6jgBWBDj+XnRnjDGtAB+oDbR8S7QHSgHjgLuAVoDXxpjDrbWjo1SzwnAOwR73CwGngD+AjYGrgHO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\n",
      "text/plain": [
       "<Figure size 1200x800 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "##########################################\n",
    "### One generator/readout and raw-data ###\n",
    "##########################################\n",
    "class ReadoutTest(AveragerProgram):\n",
    "    def initialize(self):\n",
    "        # Set the nyquist zone for the DACs.\n",
    "        self.declare_gen(ch=self.cfg[\"gen_ch\"], nqz=self.cfg['gen_nqz'])\n",
    "        \n",
    "        # DAC channel.\n",
    "        freq = self.freq2reg(self.cfg['pulse_freq'], gen_ch=self.cfg['gen_ch'], ro_ch=self.cfg['ro_ch'][0])\n",
    "        self.set_pulse_registers(ch     = self.cfg['gen_ch'], \n",
    "                                 style  = 'const', \n",
    "                                 freq   = freq,\n",
    "                                 phase  = 0, \n",
    "                                 gain   = self.cfg['pulse_gain'], \n",
    "                                 length = self.us2cycles(self.cfg['pulse_length'],gen_ch=self.cfg['gen_ch']))\n",
    "        \n",
    "        # Readout.\n",
    "        self.declare_readout(ch      = self.cfg['ro_ch'][0], \n",
    "                             length  = self.us2cycles(self.cfg['ro_length'], ro_ch = self.cfg['ro_ch'][0]),\n",
    "                             freq    = self.cfg['ro_freq'],\n",
    "                             gen_ch  = self.cfg['gen_ch'])\n",
    "        \n",
    "        self.synci(200)  # give processor some time to configure pulses\n",
    "    \n",
    "    def body(self):       \n",
    "        self.measure(pulse_ch        = self.cfg['gen_ch'], \n",
    "                     adcs            = self.cfg['ro_ch'],\n",
    "                     pins            = [0],\n",
    "                     t               = self.us2cycles(self.cfg['pulse_start']),\n",
    "                     adc_trig_offset = self.us2cycles(self.cfg['ro_offset'], ro_ch = self.cfg['ro_ch'][0]),\n",
    "                     )        \n",
    "\n",
    "config={\"ro_ch\"       : [5],\n",
    "        \"ro_length\"   : 40,\n",
    "        \"ro_freq\"     : 4000,\n",
    "        \"ro_offset\"   : 0,\n",
    "        \n",
    "        \"gen_ch\"      : 14,        \n",
    "        \"gen_nqz\"     : 2,\n",
    "        \"pulse_length\": 20,\n",
    "        \"pulse_start\" : 10,\n",
    "        \"pulse_gain\"  : 30000,\n",
    "        \"pulse_freq\"  : 4000,\n",
    "        \n",
    "        \"reps\"        : 1,\n",
    "        \"period\"      : 20\n",
    "       }\n",
    "\n",
    "########################\n",
    "### RF Board Setting ###\n",
    "########################\n",
    "\n",
    "#######\n",
    "# DAC #\n",
    "#######\n",
    "freq = config['pulse_freq']\n",
    "\n",
    "# Set Filter.\n",
    "soc.rfb_set_gen_filter(config['gen_ch'], fc=fc, ftype='bandpass')\n",
    "#soc.rfb_set_gen_filter(config['gen_ch'], fc=2.5, ftype='lowpass')\n",
    "\n",
    "# Set attenuator on DAC.\n",
    "soc.rfb_set_gen_rf(config['gen_ch'], 15, 20)\n",
    "\n",
    "#######\n",
    "# ADC #\n",
    "#######\n",
    "# Set Filter.\n",
    "soc.rfb_set_ro_filter(config['ro_ch'][0], fc=freq/1000, ftype='bandpass')\n",
    "\n",
    "# Set attenuator on ADC.\n",
    "soc.rfb_set_ro_rf(config['ro_ch'][0], 20)\n",
    "\n",
    "prog = ReadoutTest(soccfg, config)\n",
    "iq_list = prog.acquire_decimated(soc)\n",
    "\n",
    "# Plot Captured Data.\n",
    "plt.figure(dpi=200)\n",
    "\n",
    "yi = iq_list[0][0]\n",
    "yq = iq_list[0][1]\n",
    "t = soccfg.cycles2us(ro_ch=config['ro_ch'][0], cycles=np.arange(len(iq_list[0][0])))\n",
    "\n",
    "plt.plot(t,yi)\n",
    "plt.plot(t,yq)\n",
    "    \n",
    "plt.xlabel('t [us]');\n",
    "plt.legend(['I','Q']);\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d3a927e",
   "metadata": {},
   "source": [
    "### little note on the generator outputs\n",
    "This firmware uses the \"tmux\" which multiplexes multiple generators onto each tProc output. Generally this works transparently, but be aware that if you try to play simultaneous pulses on generators that share a tmux channel, the pulses will get offset by a tProc clock cycle (or something like that)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "5858be3a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'type': 'axis_sg_int4_v1',\n",
       "  'fullpath': 'axis_sg_int4_v1_0',\n",
       "  'tmux_ch': 0,\n",
       "  'tproc_ch': 0,\n",
       "  'dac': '00',\n",
       "  'fs': 4915.2,\n",
       "  'fs_mult': 40,\n",
       "  'fs_div': 2,\n",
       "  'interpolation': 4,\n",
       "  'f_fabric': 307.2,\n",
       "  'f_dds': 1228.8,\n",
       "  'fdds_div': 8,\n",
       "  'maxlen': 4096,\n",
       "  'b_dds': 16,\n",
       "  'switch_ch': 0,\n",
       "  'samps_per_clk': 1,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 0.9},\n",
       " {'type': 'axis_sg_int4_v1',\n",
       "  'fullpath': 'axis_sg_int4_v1_1',\n",
       "  'tmux_ch': 1,\n",
       "  'tproc_ch': 0,\n",
       "  'dac': '01',\n",
       "  'fs': 4915.2,\n",
       "  'fs_mult': 40,\n",
       "  'fs_div': 2,\n",
       "  'interpolation': 4,\n",
       "  'f_fabric': 307.2,\n",
       "  'f_dds': 1228.8,\n",
       "  'fdds_div': 8,\n",
       "  'maxlen': 4096,\n",
       "  'b_dds': 16,\n",
       "  'switch_ch': 1,\n",
       "  'samps_per_clk': 1,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 0.9},\n",
       " {'type': 'axis_sg_int4_v1',\n",
       "  'fullpath': 'axis_sg_int4_v1_2',\n",
       "  'tmux_ch': 2,\n",
       "  'tproc_ch': 0,\n",
       "  'dac': '02',\n",
       "  'fs': 4915.2,\n",
       "  'fs_mult': 40,\n",
       "  'fs_div': 2,\n",
       "  'interpolation': 4,\n",
       "  'f_fabric': 307.2,\n",
       "  'f_dds': 1228.8,\n",
       "  'fdds_div': 8,\n",
       "  'maxlen': 4096,\n",
       "  'b_dds': 16,\n",
       "  'switch_ch': 2,\n",
       "  'samps_per_clk': 1,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 0.9},\n",
       " {'type': 'axis_sg_int4_v1',\n",
       "  'fullpath': 'axis_sg_int4_v1_3',\n",
       "  'tmux_ch': 3,\n",
       "  'tproc_ch': 0,\n",
       "  'dac': '03',\n",
       "  'fs': 4915.2,\n",
       "  'fs_mult': 40,\n",
       "  'fs_div': 2,\n",
       "  'interpolation': 4,\n",
       "  'f_fabric': 307.2,\n",
       "  'f_dds': 1228.8,\n",
       "  'fdds_div': 8,\n",
       "  'maxlen': 4096,\n",
       "  'b_dds': 16,\n",
       "  'switch_ch': 3,\n",
       "  'samps_per_clk': 1,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 0.9},\n",
       " {'type': 'axis_sg_int4_v1',\n",
       "  'fullpath': 'axis_sg_int4_v1_4',\n",
       "  'tmux_ch': 0,\n",
       "  'tproc_ch': 1,\n",
       "  'dac': '10',\n",
       "  'fs': 6881.280000000001,\n",
       "  'fs_mult': 56,\n",
       "  'fs_div': 2,\n",
       "  'interpolation': 4,\n",
       "  'f_fabric': 430.08,\n",
       "  'f_dds': 1720.3200000000002,\n",
       "  'fdds_div': 8,\n",
       "  'maxlen': 4096,\n",
       "  'b_dds': 16,\n",
       "  'switch_ch': 4,\n",
       "  'samps_per_clk': 1,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 0.9},\n",
       " {'type': 'axis_sg_int4_v1',\n",
       "  'fullpath': 'axis_sg_int4_v1_5',\n",
       "  'tmux_ch': 1,\n",
       "  'tproc_ch': 1,\n",
       "  'dac': '11',\n",
       "  'fs': 6881.280000000001,\n",
       "  'fs_mult': 56,\n",
       "  'fs_div': 2,\n",
       "  'interpolation': 4,\n",
       "  'f_fabric': 430.08,\n",
       "  'f_dds': 1720.3200000000002,\n",
       "  'fdds_div': 8,\n",
       "  'maxlen': 4096,\n",
       "  'b_dds': 16,\n",
       "  'switch_ch': 5,\n",
       "  'samps_per_clk': 1,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 0.9},\n",
       " {'type': 'axis_sg_int4_v1',\n",
       "  'fullpath': 'axis_sg_int4_v1_6',\n",
       "  'tmux_ch': 2,\n",
       "  'tproc_ch': 1,\n",
       "  'dac': '12',\n",
       "  'fs': 6881.280000000001,\n",
       "  'fs_mult': 56,\n",
       "  'fs_div': 2,\n",
       "  'interpolation': 4,\n",
       "  'f_fabric': 430.08,\n",
       "  'f_dds': 1720.3200000000002,\n",
       "  'fdds_div': 8,\n",
       "  'maxlen': 4096,\n",
       "  'b_dds': 16,\n",
       "  'switch_ch': 6,\n",
       "  'samps_per_clk': 1,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 0.9},\n",
       " {'type': 'axis_sg_int4_v1',\n",
       "  'fullpath': 'axis_sg_int4_v1_7',\n",
       "  'tmux_ch': 3,\n",
       "  'tproc_ch': 1,\n",
       "  'dac': '13',\n",
       "  'fs': 6881.280000000001,\n",
       "  'fs_mult': 56,\n",
       "  'fs_div': 2,\n",
       "  'interpolation': 4,\n",
       "  'f_fabric': 430.08,\n",
       "  'f_dds': 1720.3200000000002,\n",
       "  'fdds_div': 8,\n",
       "  'maxlen': 4096,\n",
       "  'b_dds': 16,\n",
       "  'switch_ch': 7,\n",
       "  'samps_per_clk': 1,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 0.9},\n",
       " {'type': 'axis_signal_gen_v6',\n",
       "  'fullpath': 'axis_signal_gen_v6_8',\n",
       "  'tmux_ch': 0,\n",
       "  'tproc_ch': 2,\n",
       "  'dac': '20',\n",
       "  'fs': 9830.4,\n",
       "  'fs_mult': 40,\n",
       "  'fs_div': 1,\n",
       "  'interpolation': 1,\n",
       "  'f_fabric': 614.4,\n",
       "  'f_dds': 9830.4,\n",
       "  'fdds_div': 1,\n",
       "  'maxlen': 16384,\n",
       "  'b_dds': 32,\n",
       "  'switch_ch': 8,\n",
       "  'samps_per_clk': 16,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 1.0},\n",
       " {'type': 'axis_signal_gen_v6',\n",
       "  'fullpath': 'axis_signal_gen_v6_9',\n",
       "  'tmux_ch': 1,\n",
       "  'tproc_ch': 2,\n",
       "  'dac': '21',\n",
       "  'fs': 9830.4,\n",
       "  'fs_mult': 40,\n",
       "  'fs_div': 1,\n",
       "  'interpolation': 1,\n",
       "  'f_fabric': 614.4,\n",
       "  'f_dds': 9830.4,\n",
       "  'fdds_div': 1,\n",
       "  'maxlen': 16384,\n",
       "  'b_dds': 32,\n",
       "  'switch_ch': 9,\n",
       "  'samps_per_clk': 16,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 1.0},\n",
       " {'type': 'axis_signal_gen_v6',\n",
       "  'fullpath': 'axis_signal_gen_v6_10',\n",
       "  'tmux_ch': 0,\n",
       "  'tproc_ch': 3,\n",
       "  'dac': '22',\n",
       "  'fs': 9830.4,\n",
       "  'fs_mult': 40,\n",
       "  'fs_div': 1,\n",
       "  'interpolation': 1,\n",
       "  'f_fabric': 614.4,\n",
       "  'f_dds': 9830.4,\n",
       "  'fdds_div': 1,\n",
       "  'maxlen': 16384,\n",
       "  'b_dds': 32,\n",
       "  'switch_ch': 10,\n",
       "  'samps_per_clk': 16,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 1.0},\n",
       " {'type': 'axis_signal_gen_v6',\n",
       "  'fullpath': 'axis_signal_gen_v6_11',\n",
       "  'tmux_ch': 1,\n",
       "  'tproc_ch': 3,\n",
       "  'dac': '23',\n",
       "  'fs': 9830.4,\n",
       "  'fs_mult': 40,\n",
       "  'fs_div': 1,\n",
       "  'interpolation': 1,\n",
       "  'f_fabric': 614.4,\n",
       "  'f_dds': 9830.4,\n",
       "  'fdds_div': 1,\n",
       "  'maxlen': 16384,\n",
       "  'b_dds': 32,\n",
       "  'switch_ch': 11,\n",
       "  'samps_per_clk': 16,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 1.0},\n",
       " {'type': 'axis_signal_gen_v6',\n",
       "  'fullpath': 'axis_signal_gen_v6_12',\n",
       "  'tmux_ch': 0,\n",
       "  'tproc_ch': 4,\n",
       "  'dac': '30',\n",
       "  'fs': 9830.4,\n",
       "  'fs_mult': 40,\n",
       "  'fs_div': 1,\n",
       "  'interpolation': 1,\n",
       "  'f_fabric': 614.4,\n",
       "  'f_dds': 9830.4,\n",
       "  'fdds_div': 1,\n",
       "  'maxlen': 16384,\n",
       "  'b_dds': 32,\n",
       "  'switch_ch': 12,\n",
       "  'samps_per_clk': 16,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 1.0},\n",
       " {'type': 'axis_signal_gen_v6',\n",
       "  'fullpath': 'axis_signal_gen_v6_13',\n",
       "  'tmux_ch': 1,\n",
       "  'tproc_ch': 4,\n",
       "  'dac': '31',\n",
       "  'fs': 9830.4,\n",
       "  'fs_mult': 40,\n",
       "  'fs_div': 1,\n",
       "  'interpolation': 1,\n",
       "  'f_fabric': 614.4,\n",
       "  'f_dds': 9830.4,\n",
       "  'fdds_div': 1,\n",
       "  'maxlen': 16384,\n",
       "  'b_dds': 32,\n",
       "  'switch_ch': 13,\n",
       "  'samps_per_clk': 16,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 1.0},\n",
       " {'type': 'axis_signal_gen_v6',\n",
       "  'fullpath': 'axis_signal_gen_v6_14',\n",
       "  'tproc_ch': 5,\n",
       "  'dac': '32',\n",
       "  'fs': 9830.4,\n",
       "  'fs_mult': 40,\n",
       "  'fs_div': 1,\n",
       "  'interpolation': 1,\n",
       "  'f_fabric': 614.4,\n",
       "  'f_dds': 9830.4,\n",
       "  'fdds_div': 1,\n",
       "  'maxlen': 16384,\n",
       "  'b_dds': 32,\n",
       "  'switch_ch': 14,\n",
       "  'samps_per_clk': 16,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 1.0},\n",
       " {'type': 'axis_sg_mux4_v3',\n",
       "  'fullpath': 'axis_sg_mux4_v3_0',\n",
       "  'tproc_ch': 6,\n",
       "  'dac': '33',\n",
       "  'fs': 9830.4,\n",
       "  'fs_mult': 40,\n",
       "  'fs_div': 1,\n",
       "  'interpolation': 1,\n",
       "  'f_fabric': 614.4,\n",
       "  'f_dds': 9830.4,\n",
       "  'fdds_div': 1,\n",
       "  'maxlen': 0,\n",
       "  'b_dds': 32,\n",
       "  'switch_ch': -1,\n",
       "  'samps_per_clk': 1,\n",
       "  'maxv': 32766,\n",
       "  'maxv_scale': 1.0}]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "soccfg['gens']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "8ca89fd0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0, 0),\n",
       " (1, 0),\n",
       " (2, 0),\n",
       " (3, 0),\n",
       " (4, 1),\n",
       " (5, 1),\n",
       " (6, 1),\n",
       " (7, 1),\n",
       " (8, 2),\n",
       " (9, 2),\n",
       " (10, 3),\n",
       " (11, 3),\n",
       " (12, 4),\n",
       " (13, 4),\n",
       " (14, 5),\n",
       " (15, 6)]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[(i,gen['tproc_ch']) for i,gen in enumerate(soccfg['gens'])]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "ab69b004",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['axi_dma_avg', 'axi_dma_buf', 'axi_dma_gen', 'axi_dma_tproc', 'axis_avg_buffer_0', 'axis_avg_buffer_1', 'axis_avg_buffer_2', 'axis_avg_buffer_3', 'axis_avg_buffer_4', 'axis_avg_buffer_5', 'axis_avg_buffer_6', 'axis_avg_buffer_7', 'axis_pfb_readout_v2_0', 'axis_readout_v2_1', 'axis_readout_v2_2', 'attn_spi', 'axis_readout_v2_3', 'axis_readout_v2_4', 'axis_sg_int4_v1_1', 'axis_sg_int4_v1_2', 'axis_switch_avg', 'axis_switch_buf', 'axis_switch_gen', 'axis_sg_int4_v1_3', 'axis_sg_int4_v1_4', 'axis_sg_int4_v1_0', 'axis_signal_gen_v6_8', 'usp_rf_data_converter_0', 'axis_signal_gen_v6_9', 'bias_gpio', 'bias_spi', 'brd_sel_gpio', 'filter_spi', 'pmod_bits_gpio', 'pmod_led_gpio', 'axis_sg_mux4_v3_0', 'axis_sg_int4_v1_5', 'axis_sg_int4_v1_6', 'axis_sg_int4_v1_7', 'axis_signal_gen_v6_10', 'axis_signal_gen_v6_11', 'axis_signal_gen_v6_12', 'axis_signal_gen_v6_13', 'axis_signal_gen_v6_14', 'axis_tproc64x32_x8_0', 'zynq_ultra_ps_e_0'])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "soc.ip_dict.keys()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8dac28af",
   "metadata": {},
   "source": [
    "### playing with LEDs (and ribbon I/O connector)\n",
    "The LEDs are wired to the PMOD0 connector on the ZCU216, the ribbon is wired to PMOD1. In this firmware these are connected to an AxiGPIO which is controlled by software (vs. in most QICK firmware, where the PMODs are connected to the tProc). So these are for slow control.\n",
    "\n",
    "The LEDs are very dim (trying to drive the LEDs directly with PMOD outputs?).\n",
    "\n",
    "There is also some weirdness with the AxiGPIO we're using for this.\n",
    "\n",
    "The ribbon connector works identically (`soc.pmod_bits_gpio` instead of `soc.pmod_led_gpio`), except that the pin mapping seems to be screwed up somewhere, such that even and odd pins are swapped: PMOD1_0=ribbon signal 1, PMOD 1_1=ribbon signal 0, etc. The ribbon pins should be input-capable, but I haven't checked."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "7aebff6e",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on AxiGPIO in module pynq.lib.axigpio object:\n",
      "\n",
      "class AxiGPIO(pynq.overlay.DefaultIP)\n",
      " |  AxiGPIO(description)\n",
      " |  \n",
      " |  Class for interacting with the AXI GPIO IP block.\n",
      " |  \n",
      " |  This class exposes the two banks of GPIO as the `channel1` and\n",
      " |  `channel2` attributes. Each channel can have the direction and\n",
      " |  the number of wires specified.\n",
      " |  \n",
      " |  The wires in the channel can be accessed from the channel using\n",
      " |  slice notation - all slices must have a stride of 1. Input wires\n",
      " |  can be `read` and output wires can be written to, toggled, or\n",
      " |  turned off or on. InOut channels combine the functionality of\n",
      " |  input and output channels. The tristate of the pin is determined\n",
      " |  by whether the pin was last read or written.\n",
      " |  \n",
      " |  Method resolution order:\n",
      " |      AxiGPIO\n",
      " |      pynq.overlay.DefaultIP\n",
      " |      builtins.object\n",
      " |  \n",
      " |  Methods defined here:\n",
      " |  \n",
      " |  __getitem__(self, idx)\n",
      " |  \n",
      " |  __init__(self, description)\n",
      " |      Initialize self.  See help(type(self)) for accurate signature.\n",
      " |  \n",
      " |  setdirection(self, direction, channel=1)\n",
      " |      Sets the direction of a channel in the controller\n",
      " |      \n",
      " |      Must be one of AxiGPIO.{Input, Output, InOut} or the string\n",
      " |      'in', 'out' or 'inout'\n",
      " |  \n",
      " |  setlength(self, length, channel=1)\n",
      " |      Sets the length of a channel in the controller\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Data and other attributes defined here:\n",
      " |  \n",
      " |  Channel = <class 'pynq.lib.axigpio.AxiGPIO.Channel'>\n",
      " |      Class representing a single channel of the GPIO controller.\n",
      " |      \n",
      " |      Wires are and bundles of wires can be accessed using array notation\n",
      " |      with the methods on the wires determined by the type of the channel::\n",
      " |      \n",
      " |          input_channel[0].read()\n",
      " |          output_channel[1:3].on()\n",
      " |      \n",
      " |      This class instantiated not used directly, instead accessed through\n",
      " |      the `AxiGPIO` classes attributes. This class exposes the wires\n",
      " |      connected to the channel as an array or elements. Slices of the\n",
      " |      array can be assigned simultaneously.\n",
      " |  \n",
      " |  \n",
      " |  InOut = <class 'pynq.lib.axigpio.AxiGPIO.InOut'>\n",
      " |      Class representing wires in an inout channel.\n",
      " |      \n",
      " |      This class should be passed to `setdirection` to indicate the\n",
      " |      channel should be used for both input and output. It should not\n",
      " |      be used directly.\n",
      " |  \n",
      " |  \n",
      " |  Input = <class 'pynq.lib.axigpio.AxiGPIO.Input'>\n",
      " |      Class representing wires in an input channel.\n",
      " |      \n",
      " |      This class should be passed to `setdirection` to indicate the\n",
      " |      channel should be used for input only. It should not be used\n",
      " |      directly.\n",
      " |  \n",
      " |  \n",
      " |  Output = <class 'pynq.lib.axigpio.AxiGPIO.Output'>\n",
      " |      Class representing wires in an output channel.\n",
      " |      \n",
      " |      This class should be passed to `setdirection` to indicate the\n",
      " |      channel should be used for output only. It should not be used\n",
      " |      directly.\n",
      " |  \n",
      " |  \n",
      " |  bindto = ['xilinx.com:ip:axi_gpio:2.0']\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Methods inherited from pynq.overlay.DefaultIP:\n",
      " |  \n",
      " |  read(self, offset=0)\n",
      " |      Read from the MMIO device\n",
      " |      \n",
      " |      Parameters\n",
      " |      ----------\n",
      " |      offset : int\n",
      " |          Address to read\n",
      " |  \n",
      " |  write(self, offset, value)\n",
      " |      Write to the MMIO device\n",
      " |      \n",
      " |      Parameters\n",
      " |      ----------\n",
      " |      offset : int\n",
      " |          Address to write to\n",
      " |      value : int or bytes\n",
      " |          Data to write\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Readonly properties inherited from pynq.overlay.DefaultIP:\n",
      " |  \n",
      " |  register_map\n",
      " |  \n",
      " |  signature\n",
      " |      The signature of the `call` method\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Data descriptors inherited from pynq.overlay.DefaultIP:\n",
      " |  \n",
      " |  __dict__\n",
      " |      dictionary for instance variables (if defined)\n",
      " |  \n",
      " |  __weakref__\n",
      " |      list of weak references to the object (if defined)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(soc.pmod_led_gpio)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "id": "5feff16d",
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "Input \u001b[0;32mIn [219]\u001b[0m, in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ch \u001b[38;5;129;01min\u001b[39;00m soc\u001b[38;5;241m.\u001b[39mpmod_led_gpio:\n\u001b[1;32m      6\u001b[0m     ch\u001b[38;5;241m.\u001b[39moff()\n\u001b[0;32m----> 7\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "# this works\n",
    "while True:\n",
    "    for ch in soc.pmod_led_gpio:\n",
    "        ch.on()\n",
    "    time.sleep(1)\n",
    "    for ch in soc.pmod_led_gpio:\n",
    "        ch.off()\n",
    "    time.sleep(1)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "id": "83e700dc",
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "Input \u001b[0;32mIn [215]\u001b[0m, in \u001b[0;36m<cell line: 2>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      7\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m      8\u001b[0m         soc\u001b[38;5;241m.\u001b[39mpmod_led_gpio[j]\u001b[38;5;241m.\u001b[39moff()\n\u001b[0;32m----> 9\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.2\u001b[39;49m\u001b[43m)\u001b[49m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "# this works\n",
    "while True:\n",
    "    for i in range(8):\n",
    "        for j in range(8):\n",
    "            if i==j:\n",
    "                soc.pmod_led_gpio[j].on()\n",
    "            else:\n",
    "                soc.pmod_led_gpio[j].off()\n",
    "        time.sleep(0.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "id": "18da5393",
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "Input \u001b[0;32mIn [214]\u001b[0m, in \u001b[0;36m<cell line: 2>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      7\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m      8\u001b[0m         soc\u001b[38;5;241m.\u001b[39mpmod_led_gpio[j]\u001b[38;5;241m.\u001b[39mwrite(\u001b[38;5;241m0\u001b[39m)\n\u001b[0;32m----> 9\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.2\u001b[39;49m\u001b[43m)\u001b[49m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "# this works\n",
    "while True:\n",
    "    for i in range(8):\n",
    "        for j in range(8):\n",
    "            if i==j:\n",
    "                soc.pmod_led_gpio[j].write(1)\n",
    "            else:\n",
    "                soc.pmod_led_gpio[j].write(0)\n",
    "        time.sleep(0.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "id": "debb667e",
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "Input \u001b[0;32mIn [213]\u001b[0m, in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m8\u001b[39m):\n\u001b[1;32m      3\u001b[0m     soc\u001b[38;5;241m.\u001b[39mpmod_led_gpio\u001b[38;5;241m.\u001b[39mchannel1\u001b[38;5;241m.\u001b[39mwrite(val\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m\u001b[38;5;241m<<\u001b[39mi, mask\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0xFF\u001b[39m)\n\u001b[0;32m----> 4\u001b[0m     \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.2\u001b[39;49m\u001b[43m)\u001b[49m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "# this works\n",
    "while True:\n",
    "    for i in range(8):\n",
    "        soc.pmod_led_gpio.channel1.write(val=1<<i, mask=0xFF)\n",
    "        time.sleep(0.2)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 203,
   "id": "3f3d3135",
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "Input \u001b[0;32mIn [203]\u001b[0m, in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m      2\u001b[0m \u001b[38;5;66;03m#     soc.pmod_led_gpio.channel1.write(0x0,0xFF)\u001b[39;00m\n\u001b[0;32m----> 3\u001b[0m     \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m      4\u001b[0m     soc\u001b[38;5;241m.\u001b[39mpmod_led_gpio\u001b[38;5;241m.\u001b[39mchannel1\u001b[38;5;241m.\u001b[39mwrite(\u001b[38;5;241m0xFF\u001b[39m,\u001b[38;5;241m0xFF\u001b[39m)\n\u001b[1;32m      5\u001b[0m     time\u001b[38;5;241m.\u001b[39msleep(\u001b[38;5;241m1\u001b[39m)\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "# this doesn't work, not sure why\n",
    "while True:\n",
    "    soc.pmod_led_gpio.channel1.write(0x0,0xFF)\n",
    "    time.sleep(1)\n",
    "    soc.pmod_led_gpio.channel1.write(0xFF,0xFF)\n",
    "    time.sleep(1)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "id": "9497f45f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on method write in module pynq.lib.axigpio:\n",
      "\n",
      "write(val, mask) method of pynq.lib.axigpio.Channel instance\n",
      "    Set the state of the output pins\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(soc.pmod_led_gpio.channel1.write)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
