{ "cells": [ { "cell_type": "markdown", "id": "ec5d948b", "metadata": {}, "source": [ "## Effect of LDPC Decoding Iterations on PDSCH BLER\n", "\n", "This notebook evaluates how the number of LDPC decoding iterations, controlled by `numIter`, affects the block error rate (BLER) of a 5G NR PDSCH link-level simulation.\n", "\n", "For each value of `numIter`, the simulation runs an end-to-end PDSCH transmission over a CDL channel across a range of SNR values. The resulting BLER curves are then compared to show the trade-off between decoding performance and computational complexity." ] }, { "cell_type": "code", "execution_count": 1, "id": "2415601e", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import time\n", "import matplotlib.pyplot as plt\n", "\n", "from neoradium import BandwidthPart, PDSCH, CdlChannel, AntennaPanel, random, SnrScheduler\n" ] }, { "cell_type": "code", "execution_count": 2, "id": "43fe9eef", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Simulating end-to-end with numIter = 3\n", "SNR(dB) Total Blocks Block Errors BLER(%) Time(Sec.)\n", "--------- ------------ ------------ ------- ----------\n", " -12.0 200 200 100.00 47.749 \n", " -11.0 200 200 100.00 48.129 \n", " -10.0 200 152 76.00 48.385 \n", " -10.1 200 171 85.50 47.930 \n", " -10.2 200 177 88.50 50.028 \n", " -10.3 200 185 92.50 49.731 \n", " -10.4 200 190 95.00 48.801 \n", " -10.5 200 199 99.50 48.800 \n", " -10.6 200 200 100.00 49.082 \n", " -10.7 200 200 100.00 48.801 \n", " -9.9 200 126 63.00 49.032 \n", " -9.8 200 112 56.00 48.697 \n", " -9.7 200 89 44.50 49.137 \n", " -9.6 200 69 34.50 48.395 \n", " -9.5 200 53 26.50 49.073 \n", " -9.4 200 43 21.50 48.865 \n", " -9.3 200 29 14.50 48.663 \n", " -9.2 200 16 8.00 48.562 \n", " -9.1 200 9 4.50 49.055 \n", " -9.0 200 6 3.00 49.214 \n", " -8.9 200 3 1.50 48.992 \n", " -8.8 200 3 1.50 49.416 \n", " -8.7 200 2 1.00 48.679 \n", " -8.6 200 1 0.50 49.091 \n", " -8.5 200 1 0.50 49.189 \n", " -8.4 200 0 0.00 48.632 \n", " -8.3 200 0 0.00 48.859 \n", "\n", "Simulating end-to-end with numIter = 5\n", "SNR(dB) Total Blocks Block Errors BLER(%) Time(Sec.)\n", "--------- ------------ ------------ ------- ----------\n", " -12.0 200 126 63.00 52.318 \n", " -12.1 200 148 74.00 52.423 \n", " -12.2 200 172 86.00 52.315 \n", " -12.3 200 188 94.00 52.186 \n", " -12.4 200 194 97.00 52.333 \n", " -12.5 200 198 99.00 52.376 \n", " -12.6 200 199 99.50 52.575 \n", " -12.7 200 200 100.00 52.544 \n", " -12.8 200 200 100.00 52.821 \n", " -11.9 200 90 45.00 52.602 \n", " -11.8 200 61 30.50 52.404 \n", " -11.7 200 25 12.50 52.434 \n", " -11.6 200 15 7.50 52.354 \n", " -11.5 200 5 2.50 52.079 \n", " -11.4 200 2 1.00 52.287 \n", " -11.3 200 1 0.50 52.222 \n", " -11.2 200 1 0.50 52.031 \n", " -11.1 200 1 0.50 53.185 \n", " -11.0 200 0 0.00 53.111 \n", " -10.9 200 0 0.00 52.540 \n", "\n", "Simulating end-to-end with numIter = 10\n", "SNR(dB) Total Blocks Block Errors BLER(%) Time(Sec.)\n", "--------- ------------ ------------ ------- ----------\n", " -12.0 200 0 0.00 61.648 \n", " -13.0 200 5 2.50 61.457 \n", " -13.1 200 23 11.50 61.306 \n", " -13.2 200 70 35.00 61.472 \n", " -13.3 200 116 58.00 61.484 \n", " -13.4 200 156 78.00 61.636 \n", " -13.5 200 177 88.50 61.783 \n", " -13.6 200 193 96.50 61.788 \n", " -13.7 200 198 99.00 61.447 \n", " -13.8 200 200 100.00 61.277 \n", " -13.9 200 200 100.00 61.647 \n", " -12.9 200 0 0.00 61.282 \n", " -12.8 200 0 0.00 61.075 \n", "\n", "Simulating end-to-end with numIter = 20\n", "SNR(dB) Total Blocks Block Errors BLER(%) Time(Sec.)\n", "--------- ------------ ------------ ------- ----------\n", " -12.0 200 0 0.00 78.873 \n", " -13.0 200 0 0.00 79.292 \n", " -14.0 200 190 95.00 79.669 \n", " -14.1 200 199 99.50 79.571 \n", " -14.2 200 200 100.00 82.799 \n", " -14.3 200 200 100.00 85.502 \n", " -13.9 200 166 83.00 82.014 \n", " -13.8 200 137 68.50 79.516 \n", " -13.7 200 86 43.00 78.345 \n", " -13.6 200 34 17.00 78.748 \n", " -13.5 200 8 4.00 82.770 \n", " -13.4 200 1 0.50 83.424 \n", " -13.3 200 0 0.00 81.942 \n", " -13.2 200 0 0.00 79.204 \n" ] } ], "source": [ "numSlots = 200\n", "snrScheduler = SnrScheduler(-12, 0.1, fastStep=1) # Start at -12 dB, use increments of 0.1 dB\n", "\n", "bwp = BandwidthPart(numRbs=24, spacing=30) # Create the BandwidthPart object\n", "\n", "# Create a PDSCH object\n", "pdsch = PDSCH(bwp, numLayers=2, modulation=\"16QAM\")\n", "pdsch.setDMRS(additionalPos=1)\n", "\n", "# Create an LDPC codec\n", "ldpc = pdsch.getLdpcCodec(coderates=490/1024)\n", "\n", "results = {}\n", "for numIter in [3, 5, 10, 20]:\n", " results[numIter] = {}\n", " ldpc.cwCodecs[0].numIter = numIter\n", " print(f\"\\nSimulating end-to-end with numIter = {numIter}\")\n", " print(\"SNR(dB) Total Blocks Block Errors BLER(%) Time(Sec.)\")\n", " print(\"--------- ------------ ------------ ------- ----------\")\n", " snrScheduler.reset()\n", " for snrDb in snrScheduler:\n", " random.setSeed(123) # Make the results reproducible for each SNR\n", " t0 = time.monotonic() # Start time for each SNR\n", " bwp.slotNo = 0\n", "\n", " # Create a CdlChannel object\n", " channel = CdlChannel(bwp, 'C', delaySpread=300, carrierFreq=4e9, dopplerShift=5,\n", " txAntenna = AntennaPanel([2,4], polarization=\"x\"), # 16 TX antenna elements\n", " rxAntenna = AntennaPanel([1,2], polarization=\"x\")) # 4 RX antenna elements\n", "\n", " blockErrors = 0\n", " totalBlocks = 0\n", " for slotNo in range(numSlots):\n", " pdsch.initGrid() # Create and initialize the PDSCH grid\n", " txBlock = random.bits(ldpc.txBlockSizes[0]) # Random transport block\n", " numBits = pdsch.getBitCapacity() # Bit capacity of the PDSCH grid\n", "\n", " rateMatchedCodeBlocks = ldpc.encode(txBlock, numBits[0]) # LDPC rate-matching and encoding\n", " pdsch.setPdschData(rateMatchedCodeBlocks) # Map/modulate encoded code blocks\n", "\n", " channelMatrix = channel.getChannelMatrix() # Get the channel matrix\n", " precoder = pdsch.getPrecodingMatrix(channelMatrix) # Precoder matrix\n", "\n", " txGrid = bwp.createGrid(len(channel.txAntenna)) # Create a transmitted grid\n", " pdsch.precodeTo(txGrid, precoder) # Precode data into txGrid\n", " \n", " rxGrid = txGrid.applyChannel(channelMatrix) # Apply the channel\n", " rxGrid = rxGrid.addNoise(snrDb=snrDb) # Add noise\n", " \n", " estChannelMatrix = channel.getEffChannel(channelMatrix, precoder) # Get effective channel\n", " \n", " eqGrid, llrScales = pdsch.equalize(rxGrid, estChannelMatrix) # Equalization\n", " llrs = pdsch.getLLRs(eqGrid, llrScales) # Demodulation (to LLRs)\n", " decodedTxBlock, crcMatch = ldpc.decode(llrs) # LDPC rate-recovery and decoding\n", " blockErrors += 0 if crcMatch[0][0] else 1 # Update transport block errors\n", " totalBlocks += 1 # Update number of transport blocks\n", " bler = blockErrors*100/totalBlocks # BLER in percent\n", "\n", " print(f\"\\r{snrDb:^9.1f} {totalBlocks:^12d} {blockErrors:^12d} \" \n", " f\"{bler:^7.2f} {time.monotonic()-t0:^10.3f}\", end='')\n", " channel.goNext()\n", "\n", " snrScheduler.setData(bler)\n", " print(\"\")\n", " results[numIter] = snrScheduler.getSnrsAndData()" ] }, { "cell_type": "code", "execution_count": 3, "id": "8f3a9a54", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAHGCAYAAABw7lF4AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvctoD+AAAAAlwSFlzAAAPYQAAD2EBqD+naQAAjiZJREFUeJztnQWYG1X3xt8k6+5Wd3ehUCpAC7RIcfdixSkO3x+HwofDhxQrWtxLgZZSodTd3bfb9a775v+cm52Q3e5us9tkZ5K8v+eZJ8lkMnNzx94559xzTFar1QpCCCGEEC/GrHcDCCGEEELcDQUPIYQQQrweCh5CCCGEeD0UPIQQQgjxeih4CCGEEOL1UPAQQgghxOuh4CGEEEKI10PBQwghhBCvx0/vBhD9mTdvHrZs2YLS0lJcf/31CAsLg1H466+/sH37dtx0001HfDd//nzV7pKSEnu7i4uL8eeff2Lv3r2Ijo7GFVdcoUu7fRHJYfraa6/huOOOw/HHHw9v4fDhw5gzZw5SU1ORkpKCCy64QO8mkQb45JNP1Hl/1lln2ee99dZb6NWrF0aNGsV+awLe2G8UPM3kn3/+wfLly+2fTSYTEhIS0LNnT/Tr16/B5a+99lpERkY6tc66TJgwAR06dKh3WX9/fyQlJWHkyJGIj493+n+cf/75WLRokVp3UFAQqqqq4C4c2yz9JduTi5P0mUxm85EGx6+//hrffvvtEYLn4osvxoIFC2q1Oy8vDwMHDkRUVBSGDx+OVq1awci8/vrrGDBgAEaMGOHU8h988AEKCgrUfxsyZEit7+S/T5s2DSeccAKGDh0KPZB9cPfdd+ORRx7xGsEjwln6s3Pnzhg8eHC9x6jj/hHRLcfm0fahIOuS5eW8leMgOTn5qL+R8yY4OBjdunXDiSeeCIvFUq/w3LBhA9asWYPCwkIl0rp27YoePXoc9f82p31G4tlnn0X37t1rCZ77779fPRDpdeOu77ho6rnvLl5vpB1695tbkNISpOk88MADUpLDes0111jvvPNO6+23324999xzrQEBAdYxY8ZYc3Jy6l1++/btTq+z7rRx48YGl73hhhus3bt3V9t/4403nPoPa9asUev47rvvWuQQqNvmW265RfVZYmKitXXr1tZXX33VWlVVVes3X3/9tfWRRx6pNW/Dhg31tlt+b7FYrHl5eVZPQNp6zz33OL18q1at1P/u0qWLtaKiotZ3clzJd0899ZRVL6RN0oa6+8uTuffee62RkZHW8vJyp/bPcccdd9RlkpKS7Of0xIkTraNHj7YGBgZaR4wYYV2yZMlRf3PRRRdZQ0JC1HGwefPmWssuWLDA2qdPH2tUVJT1vPPOs06aNMl61llnWYOCgqyDBg2yrlixwuXtMxLdunWzTpgwoda8+++/3/r999/r1qb6joumnvvuwtJIO/TuN3dAC88xIk+z8vSnMXfuXJx88snqSeOFF15wyTqdXbayshKnn3467rzzTowdO1Y9BTbGjh071Gv79u3RktT9fxUVFepJQ6wDq1atwscff2z/7sILL1STI9u2bau33TI/JiYGERER8FbEOiguvqlTp+LWW2/Vuzlej5wjYiERC6qraNeuHV599dVa89LS0nD11Vcrq83PP/+McePGNfobseAMGjRIWYwXL16s5s2aNQtnnHEGzjvvPCxcuLDWeZCenq6e1levXq1+5+r2GZnnn39e7yZ4JM97Yb9R8LiY0aNHq4ujxJa0NH5+fipmReINRHg1Jng+//xz/P777+r9F198odxDHTt2xNlnn21fZsWKFcosLiZycRXVvVD+9ttv6kJ43XXXYd++fWqb4l5qzKRfH9Jf99xzj3IfvPHGG7j88stx6qmn1hvDU1+7NcRdJnFI2sX6pJNOquVe3Llzp3KrFRUVoUuXLup7R5fA0f5PdXW1upFs3rxZtVlcS459XDeGRZaVG1Pr1q2VEJX9I4ib4f3331fLi8DT2lu3/+tD3CrCE088gauuugrh4eENLpufn48PP/wQp5xyCvr06VPru48++ki5PuUGWV/b5b9Lv/fv37+Wi0yLmxLBKuttDFnH1q1blTAdM2aM/f870pw+Xb9+vXLdaftW9qmI3YCAANVeiTtwBon3kuNL9rW4VuV4EPeNkJ2djU8//VT9V4nh0fbR+PHjlXvI1Yi76IcfflDumBtvvFEdq/J/GqJ3796qr6SPZT8HBgYq8SPHtbS77m8TExPx448/Yvfu3W5p39H2o+NyItA2bdqE0NBQtR/rPrg0tl8cycrKwh9//KHOeXHly393JhbF2fPUkczMTCUoHbdVX7zQ0XD23D/W80LObzluBfk/0n+jR49GXFyc0+1oKIbnaPunOf3b3HO4qXCUlotZt26dsli4a4cd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urqIHQoe9hmPNePCc5T9xmNNPxqz7GgwaJkQQgghXg8FDyGEEEK8HgoegxMYGIjHHntMvRL2GY8148FzlP3GY80zYNAyIYQQQrweWngIIYQQ4vVQ8BBCCCHE66HgIYQQQojXQ8HjAezYsQMLFy5EVVVVo8tJ4kRZLiMjA76OJKJatWoV1qxZ0+AyJSUl6vs9e/YcNSW5r1BaWopFixapPmmI1NRUrFu3DoWFhS3aNiMj55yce7m5uce0jK+xfft21SeS+LUhtm7dqs7l8vLyFm2bpyB9t3v3btVHUoaINIJkWibG5JdffrGOGjXKGh0dLXdja25uboPLFhQUWLt3766WmzZtmtWXefnll61du3a1RkVFWfv161dvX912223WmJgY68CBA63x8fHWHj16WFeuXGn1VTIzM62TJ0+2JicnW4ODg6333HPPEcvMmDHD2rdvX2urVq2sffr0sYaEhFgfeeQRqy+zdu1a6yWXXGJNTExU556cs81Zxtf46aefrCNGjLBf2+ScrMuBAwesAwYMUOdphw4drHFxcdY//vhDl/YaFblm9ezZU523ck5GRkZaP/nkE72bZVho4TEwGzduVEPSP/nkk6Mue8stt2DChAnwdcQKtm/fPvz888+YOHFivctkZ2dj0KBBSE9Px8qVK5XFokePHrjqqqvgq+zdu1elZV+/fj26du1a7zLyFPn555/jwIEDysIza9YsvPDCC5g+fTp8+Rw9++yzVX8cyzK+hvTJU089hQ8//LDBZa655hqEhYUpy/WuXbtw00034aKLLkJOTk6LttXIlp3zzjsPAwYMUNc8Ob6+//57dd2T/iX1oLfiIkdHnggbs/CIohdLRXl5OS08DoiVoj4LT0NWIbEIEavqs/osPPUxePBg66RJk3y+2+TcPJr1xpllfI0ffvihXgvPvn371HyxKmrk5eVZAwMDre+9954OLTUe27ZtU320YMGCWvPF4nP33Xfr1i4jw1paXuADv/feezF//nz4+/vr3RyPQp6CxNojffjyyy+rJ07iPHl5earvLr30UnYbcSmrV69Wr2KJdaxV1q1bN/t3vk5MTIx6FQu1hsQ5ZWZmKss1ORIKnhZEAmQbC/S0WCw4/vjjnV6fHNyXXHIJnnjiCXTv3h3e6qJavHjxUU/8nj17Nnnd06ZNUwGTctPu168fxo0bB29BhNzm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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Compare the results in a plot\n", "for i,numIter in enumerate([3, 5, 10, 20]):\n", " plt.plot(results[numIter][0], results[numIter][1], label=f\"numIter={numIter}\")\n", "plt.legend()\n", "plt.title(\"BLER for Different Numbers of LDPC Decoding Iterations\")\n", "plt.grid()\n", "plt.xlabel(\"SNR (dB)\")\n", "plt.ylabel(\"BLER (%)\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "8164a671-de22-4350-ad75-1afd9aed3cdd", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "0367faf4-c409-4992-8f3d-9cf04c3accb3", "metadata": {}, "outputs": [], "source": [] } ], "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.12.10" } }, "nbformat": 4, "nbformat_minor": 5 }