{ "cells": [ { "cell_type": "markdown", "id": "8136f6c4", "metadata": {}, "source": [ "# An end-to-end PDSCH Simulation with Trajectory-based Channel Model\n", "This notebook shows how to create an end-to-end PDSCH communication and calculate the bit error rate while the user is moving on a trajectory." ] }, { "cell_type": "code", "execution_count": 1, "id": "0d0aaa42", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import scipy.io\n", "import time\n", "import matplotlib.pyplot as plt\n", "\n", "from neoradium import DeepMimoData, TrjChannel, Carrier, PDSCH, AntennaPanel, Grid, random\n" ] }, { "cell_type": "code", "execution_count": 2, "id": "05aeedf9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "DeepMimoData Properties:\n", " Scenario: asu_campus_3p5\n", " Version: 4.0.0a3\n", " UE Grid: rx_grid\n", " Grid Size: 411 x 321\n", " Base Station: BS (at [166. 104. 22.])\n", " Total Grid Points: 131,931\n", " UE Spacing: [1. 1.]\n", " UE bounds (xyMin, xyMax) [-225.55 -160.17], [184.45 159.83]\n", " UE Height: 1.50\n", " Carrier Frequency: 3.5 GHz\n", " Num. paths (Min, Avg, Max): 0, 6.21, 10\n", " Num. total blockage: 46774\n", " LOS percentage: 19.71%\n", "\n" ] } ], "source": [ "# Replace this with the folder on your computer where you store DeepMIMO scenarios\n", "dataFolder = \"/data/RayTracing/DeepMIMO/Scenarios/V4/\"\n", "DeepMimoData.setScenariosPath(dataFolder)\n", "\n", "# Create a DeepMimoData object\n", "deepMimoData = DeepMimoData(\"asu_campus_3p5\")\n", "deepMimoData.print()" ] }, { "cell_type": "code", "execution_count": 3, "id": "4818ffc5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Trajectory Properties:\n", " start (x,y,z): (-209.55, 69.83, 1.50)\n", " No. of points: 15333\n", " curIdx: 0 (0.00%)\n", " curSpeed: [ 9.9 -9.9 0. ]\n", " Total distance: 107.30 meters\n", " Total time: 7.666 seconds\n", " Average Speed: 13.996 mps\n", " Carrier Frequency: 3.5 GHz\n", " Paths (Min, Avg, Max): 6, 8.99, 10\n", " Totally blocked: 0\n", " LOS percentage: 29.09%\n", "\n" ] }, { "data": { "text/plain": [ "(
,\n", " )" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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pk0huf/cuXPLl19+aZr+n3rqKVMl1Wb7q6++Wk6ePCmRjhAaI9w8uhNAZOHvCHDRddddJy1atJBBgwYFfBvt03nkyBHZvXt3kuvOnDkjW7duNdt4u/TSS+X++++Xt956S37++Wf55ZdfZObMmRLpCKFRjuCJSMf7F4Cb6VRNOoBo+fLlAW2vI92zZs0qL774YpLrJk+eLCdOnJD27dsne3ttltcpnXS7SMfoeAAAgHTS/podOnSQl19+Ocl169evN3N72nTu0Bo1apgR9f369TNTPd13330mlH722WcyePBgc7mOjFfDhg0zze4333yzlC1b1sw7qo+jA5tuuOEGiXSE0CgUF6bHyUg/MafnmaRPGwC4kC6hqSsYOb1ikj5uBowYMcJv87g21yceVX/u3DkzPVOFChVk7NixMmHCBDl//ryZhP61116TLl26eLbXyexfeeUV6dixo+zbt08KFiwotWrVknnz5kkVXVkqwsVZlsXncRocPXrUjGrT/hz58uX794qEVRLcIFx74pYQGgje9Clzz7s58t5bkfrec9vz5FrD3LuuvVteb3+xIvFn5+nTp2X79u1Svnx5Uw30wdrxES3F1zYRKqFwDB9yiJbABiCENBASCmMCIRRBQ8hERlgx9HsSK8cKACkhhCImpRSYCQgAAIQeUzQBAADAcYRQAAAAOI4QCgAAAMfRJxSAKwaX+Xts+ucCQPQihAIxhBkMAABuQQgFAACusfPITvn7pHOT1RfJVUTK5Gde0nAghAIAANcE0CqTqsjpc84t25kjSw7Z8vAWgmgYMDAJAAC4glZAnQygSh8vLZXXzp07S+vWrf1ed+rUKRk6dKhUrlxZsmfPLkWKFJF27drJxo0bfbY7efKkDBo0SC699FKztGXRokXNOvGfffaZxBIqoQAAABkUHx8vzZs3l507d8qLL74o9erVk3379smoUaPMzwsWLJD69eubbXv06CErVqyQiRMnSrVq1eTgwYOybNky838sIYQiJjHqGgAQTOPHj5fly5fL6tWrpUaNGuaysmXLyscff2xCaLdu3WTDhg0SFxcns2fPlgkTJsjNN99stitXrpzUqVNHYg3N8QAAABn0/vvvyw033OAJoLZMmTLJY489Jr/88ousXbvWXFaiRAmZM2eOHDt2TGIZIRQAACCDfv31V6latarf6+zLdRv1xhtv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/34CUaxEiRKekzbfa/XTPr9582bJmzevWYqzTp06kj17dlmyZIls3bpVWrVqJcWLFzch9aqrrpIFCxYkaY7v06dPwPsxb94885hjxoyRyy+/XC699FITSt98800TSBcvXixdunQx3RsSV2n/97//Sd26dc2+6n3ce++9sn//fs996211e+/jePfdd2X48OGydu1az/1ppTWjCKFRZNfRi31Efz0oUr7gxYpo+eBV4n10rinybluR4nlEcmUVKZDj4s+l84t0qyUyu71IzlDU2TMlVDs1eOoXs04i8noIHgcAgHQYOHCgjB49WjZt2iRXXnmlHD9+XG6++WZZuHChrF692oTF2267zazJnl4aHrUq+913CSOVE2nYsKHpX5ovXz6znZ4ef/xxc93Zs2dN078GylmzZskff/whnTt3TvE4brjhBunXr59Ur17dc3933323ZBTN8VFGByX5DFZKaJrXQUzBonOTvnHbxZ9f+0nk+SUi2bOIbHk9YfL36SI3XipysoGI6HZpHeRYW0SeFZGiCe9Q71NuEdE5UrXLUAcR+TB4xwWAqifSyN/7RRcAiWEjRowwoc27qb1GjRqe8xoAP/30U5k9e7YZEJUe7dq1k6+//lquv/56E0jr168vzZo1k44dO5rgmS1bNp9KrbeuXXUQxUUVKlQwzflandWw7N2dIPFx6HXatSDx/WUEITQK7Tl+sY/ooo4Xp2+y+4hqU32GP5weSgiWarxIz8dEenpvtEFE9orIVyLSNOF/XRYz0DlMrxeRz0UkbwrbnNa+ACIyK/3HAsAX4TOG8doHlTZ1e9Nwp03hX375pakg6kCoU6dOZagSmjlzZpk6dao8++yzsmjRIlmxYoWMHDlSnn/+eVm5cqVccknCijZ+rFq1yuyPVkIPHTokFy5cMJfr/lSrVi3Z4wgFQmiU0onrNXgu7ChSvdi/84hqU70/1YuKbDieUGHcnzBXZuJttbvKSwk/vyAi/ZN58GUicqOIzBWR60Tk64Spk44m2q6jiGi1NJvXspq3JiyzuVBEXtR2g4R9sk96foeI/J3RZwgAwRMIvty5tcnuX9oMPn/+fBk7dqxUrFjR9Nm88847PaPYM+I///mP3HfffeakFdbKlSvL5MmTTf9Nf06cOCEtWrQwp/fee0+KFi1qwqeeT7w/iY8jFAihUUyX8tQguqiTyOXF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XCFz5syRcHvuueekYcOGkitXLilQoIDfbXRVqsSnGTNm+GyzePFiqV27thklWrFiRZk2bZpEwrHt3LlTbrnlFrNNsWLF5IknnpBz5865/tj8KVeuXJLXafTo0Wl+n7rVK6+8Yo5R971evXqycuVKiSTDhg1L8vro3wPb6dOn5aGHHpLChQtLnjx55I477pB9+/aJG3333Xdy2223mZV39DhmzZrlc72OtR0yZIhccskl5u9m8+bN5bfffvPZ5p9//pEOHTqYSd7191P/zh4/flwi4fg6d+6c5LVs2bJlxBwf4I0Q6mKbN282y4S+/vrrsnHjRnnppZdk8uTJMnjwYJ+l22688UYpW7asrFq1Sl544QXzgfPGG294tlm2bJm0b9/e/CFavXq1tG7d2pw2bNgg4aRhul27dtKzZ88Ut5s6dars2bPHc9J9t23fvt0EuSZNmsiaNWukT58+cv/998vXX38tbj628+fPm/3W7fT1mT59ugmY+uHp9mNLzogRI3xep0ceeSRN71O3mjlzpvTt29d8Afz555+lRo0a0qJFC9m/f79EkurVq/u8PkuWLPFc99hjj8nnn39uvqx+++23Zmnitm3bihudOHHCvAb6xcAf/XLz8ssvm7+VK1askNy5c5vXS4O2TQOa/k2dP3++fPHFFyb4PfDAAxIJx6c0dHq/lh988IHP9W4+PsCHTtGEyDFmzBirfPnynvOvvvqqVbBgQSs+Pt5z2YABA6wqVap4zt91113WLbfc4nM/9erVsx588EHLDaZOnWrlz5/f73X6Fv3000+TvW3//v2t6tWr+1x29913Wy1atLDcfGxz5syxMmXKZO3du9dz2WuvvWbly5fP81q6/di8lS1b1nrppZeSvT6Q96lbXX311dZDDz3kOX/+/HmrZMmS1qhRo6xIMXToUKtGjRp+rzt8+LCVNWtW66OPPvJctmnTJvO7t3z5csvNEv99uHDhglWiRAnrhRde8Dm+7NmzWx988IE5/8svv5jb/fjjj55tvvrqKysuLs7666+/LDfx9/evU6dOVqtWrZK9TSQdH0AlNMIcOXJEChUq5Dm/fPlyue666yRbtmyey/Rb/5YtW+TQoUOebbRJyptuo5dHAm0mLFKkiFx99dUyZcoU09xmi9Rj0/3TbhHFixf32W+tGGoFIxKPTZvftTm3Vq1aptLp3bUg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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "random.setSeed(123) # Make results reproducible\n", "\n", "# Create the carrier:\n", "carrier = Carrier(startRb=0, numRbs=25, spacing=30) # Carrier with 25 Resource Blocks, 15KHz subcarrier spacing\n", "bwp = carrier.curBwp # The only bandwidth part in the carrier\n", "\n", "# Create a random trajectory at waking speed.\n", "trajectory = deepMimoData.getRandomTrajectory(xyBounds=np.array([[-210, 40], [-120, 100]]), # Traj. bounds\n", " segLen=2, # Num grid points on shortest segment\n", " bwp=bwp, # The bandwidth part\n", " trajLen=100, # Number of grid points on trajectory\n", " speedMps=14, # Speed in mps\n", " trajDir=\"+X\") # Trajectory direction\n", "\n", "trajectory.print() # Print the trajectory information\n", "deepMimoData.drawMap(\"LOS-NLOS\", trajectory) # Draw the Map with the trajectory" ] }, { "cell_type": "code", "execution_count": 4, "id": "4f8ef45b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Simulating end-to-end with \"16QAM\", and \"Perfect\" channel estimation, in time domain.\n", "SNR(dB) Total Bits Bit Errors BER(%) Point time(Sec.)\n", "------- ---------- ---------- ------ ----- ----------\n", " 5 62400000 11082525 17.76 2000 152.50\n", " 10 62400000 7576802 12.14 2000 151.49\n", " 15 62400000 3814882 6.11 2000 150.95\n", " 20 62400000 884722 1.42 2000 151.50\n", " 25 62400000 27923 0.04 2000 145.01\n", " 30 62400000 18 0.00 2000 144.67\n", "\n", "Simulating end-to-end with \"16QAM\", and \"LS\" channel estimation, in time domain.\n", "SNR(dB) Total Bits Bit Errors BER(%) Point time(Sec.)\n", "------- ---------- ---------- ------ ----- ----------\n", " 5 62400000 12443206 19.94 2000 149.89\n", " 10 62400000 9061276 14.52 2000 147.95\n", " 15 62400000 5317476 8.52 2000 148.31\n", " 20 62400000 2233990 3.58 2000 150.11\n", " 25 62400000 592511 0.95 2000 150.69\n", " 30 62400000 159383 0.26 2000 148.94\n" ] }, { "data": { "image/png": "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YQBERERENocBEBEREdkcBkBERERkcxgAEZHFu3fvHgYPHqyG3HdxcVFTcsg0HP/++696vkCBArCzs8PevXuTvE6mSqlXr17i/TFjxqj1ZJHpavz9/dWs4MHBwSb/TESUuTgXGBFZPJmHTGaWnjNnjpqJXmaUlkkWZUJWA1dXV3z44YfYvn37M7dVunRpbN68GfHx8Thz5gz69euH0NBQLF682ASfhIhMhQEQEVm0kJAQ7Ny5U02yWLduXfWYTDxcrVq1JOtJSc7UqVOxdu1aNcllahwdHVUJksibNy86duyIWbNmZfKnICJTYxUYEVk0Dw8PtaxatQrR0dGprlewYEEMGjRIzVCdkJCQpm1fvXpVzVzt7OycgSkmInPAAIiILJqU2MyePVtVf2XLlg21a9fGxx9/jOPHjz+17qeffoorV65g/vz5qW7vxIkTKqDKkiWLCppOnTqlqs6IyLowACIiq2gDdOvWLfz5559o1qyZqg6rVKmSCoyM5cyZE++//z5Gjx6t2gylpHjx4jh69CgOHDigAh9pTD106FATfRIiMhUGQERkFaSRc+PGjTFq1Cjs3r0bffr0wWefffbUesOHD8fjx48xefLkFLcj1V1FihRBmTJl8PXXX6veYGPHjjXBJyAiU2IARERWqVSpUoiIiHjqcanekiDpyy+/xKNHj567Hak2mzBhgiphIiLrwQCIiCyadHVv0KAB5s2bp9r9SBufpUuX4ttvv0Xr1q1TfI30CPPy8sKCBQueu/2aNWuiXLly+OqrrzIh9USkFQZARGTRpESnevXq+PHHH/Hqq6+qqisp4Rk4cCAmTpyY4mucnJzwxRdfICoqKk3v8e6772L69Om4fv16BqeeiLRip9PpdJq9OxEREZEGWAJERERENocBEBEREdkcBkBERERkcxgAERERkc1hAEREREQ2hwEQERER2RwGQERERGRzGAARERGRzWEARERERDaHARARERHZHAZAREREZHMYABEREZHN+T/p7X9lZngqAwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "numFrames = 100 # Number of time-domain frames (The first second on the trajectory)\n", "snrDbs = [5,10,15,20,25,30] # SNR values (in dB) for which we want to evaluate the model\n", "freqDomain = False # Set to True to apply channel in frequency domain\n", "\n", "modulation = \"16QAM\" # Modulation Scheme\n", "\n", "# Create a PDSCH object\n", "pdsch = PDSCH(bwp, interleavingBundleSize=0, numLayers=2, nID=carrier.cellId, modulation=modulation)\n", "pdsch.setDMRS(prgSize=0, configType=2, additionalPos=2) # Specify the DMRS configuration\n", "\n", "numSlots = bwp.slotsPerFrame*numFrames # Total number of slots\n", "results = {} # Dictionary to save the results\n", "\n", "# Creating a trajectory-based channel model:\n", "channel = TrjChannel(bwp, trajectory, \n", " txAntenna = AntennaPanel([2,4]), # 8 TX antenna\n", " txOrientation = [180,0,0], # Make the BS antenna face to the left.\n", " rxAntenna = AntennaPanel([1,2]), # 2 RX antenna\n", " seed = 123) \n", "\n", "minMse, maxMse = 100, 0\n", "for chanEstMethod in [\"Perfect\", \"LS\"]: # Two different channel estimation methods\n", " results[chanEstMethod] = {}\n", " print(f\"\\nSimulating end-to-end with \\\"{modulation}\\\", and \\\"{chanEstMethod}\\\" channel estimation, \" +\n", " f\"in {'frequency' if freqDomain else 'time'} domain.\")\n", " print(\"SNR(dB) Total Bits Bit Errors BER(%) Point time(Sec.)\")\n", " print(\"------- ---------- ---------- ------ ----- ----------\")\n", " for snrDb in snrDbs:\n", " random.setSeed(123) # Making the results reproducible.\n", " t0 = time.time()\n", " channel.restart()\n", "\n", " bitErrors = 0\n", " totalBits = 0\n", "\n", " for slotNo in range(numSlots):\n", " grid = pdsch.getGrid() # Create a resource grid already populated with DMRS \n", " numBits = pdsch.getBitSizes(grid)[0] # Actual number of bits available in the resource grid\n", " txBits = random.bits(numBits) # Create random binary data\n", "\n", " # Now populate the resource grid with coded data. This includes QAM modulation and resource mapping.\n", " pdsch.populateGrid(grid, txBits)\n", "\n", " # Store the indexes of the PDSCH data in pdschIndexes to be used later.\n", " pdschIndexes = pdsch.getReIndexes(grid, \"PDSCH\") \n", "\n", " # Getting the Precoding Matrix, and precoding the resource grid\n", " channelMatrix = channel.getChannelMatrix() # Get the channel matrix\n", " precoder = pdsch.getPrecodingMatrix(channelMatrix) # Get the precoder matrix from PDSCH object\n", " precodedGrid = grid.precode(precoder) # Perform the precoding\n", "\n", " if freqDomain:\n", " rxGrid = precodedGrid.applyChannel(channelMatrix) # Apply the channel in frequency domain\n", " rxGrid = rxGrid.addNoise(snrDb=snrDb) # Add noise\n", " else:\n", " txWaveform = precodedGrid.ofdmModulate() # OFDM Modulation\n", " maxDelay = channel.getMaxDelay() # Get the max. channel delay\n", " txWaveform = txWaveform.pad(maxDelay) # Pad with zeros\n", " rxWaveform = channel.applyToSignal(txWaveform) # Apply channel in time domain\n", " noisyRxWaveform = rxWaveform.addNoise(snrDb=snrDb, nFFT=bwp.nFFT) # Add noise\n", " offset = channel.getTimingOffset() # Get timing info for synchronization\n", " syncedWaveform = noisyRxWaveform.sync(offset) # Synchronization\n", " rxGrid = syncedWaveform.ofdmDemodulate(bwp) # OFDM demodulation\n", "\n", " if chanEstMethod == \"Perfect\": # Perfect Channel Estimation\n", " estChannelMatrix = channelMatrix @ precoder[None,...]\n", " else: # LS + Interpolation Channel Estimation\n", " estChannelMatrix, noiseEst = rxGrid.estimateChannelLS(pdsch.dmrs, polarInt=False, \n", " kernel='linear')\n", " act = channelMatrix @ precoder[None,...]\n", " mse1 = np.square(np.abs(estChannelMatrix - act)).mean()\n", " fEst = np.stack([estChannelMatrix.real, estChannelMatrix.imag], axis=4)\n", " fAct = np.stack([act.real, act.imag], axis=4)\n", " mse2 = np.square(fEst - fAct).mean()\n", " if minMse>mse2: minMse=mse2\n", " if maxMse