source: ReferenceDesigns/w3_802.11/sysgen/wlan_phy_tx_pmd/util/tx_mcs_info_rom_init.m

Last change on this file was 5651, checked in by murphpo, 7 years ago

Latest sysgen cores - no design changes, just revup from local sims

File size: 4.1 KB
Line 
1function [mcs_rom_11ag, mcs_rom_11n] = tx_mcs_info_rom_init()
2
3%Helper function to convert each MCS info entry into a UFix32_0 ROM word
4% Requries all inputs be integers!
5% Ouptut word contents:
6%  b[    0]: Chan bandwidth
7%  b[ 2: 1]: Num spatial streams
8%  b[ 4: 3]: Mod order index
9%  b[ 6: 5]: Code rate index
10%  b[16: 7]: Coded bits per symbol per stream
11%  b[26:17]: Data bits per symbol per stream
12mcs_info_to_rom = @(x) (...
13    2^0  * x(2) + ...
14    2^1  * x(3) + ...
15    2^3  * x(4) + ...
16    2^5  * x(5) + ...
17    2^7  * x(6) + ...
18    2^17 * x(7) + ...
19    0);
20
21%Columns:
22% 1: MCS index
23% 2: Channel bandwidth (0=20, 1=40)
24% 3: Num spatial streams
25% 4: Mod order index (BPSK, QPSK, 16-QAM, 64-QAM) = (0, 1, 2, 3)
26% 5: Code rate index (1/2, 2/3, 3/4, 5/6) = (0, 1, 2, 3)
27% 6: Coded bits per OFDM symbol per spatial stream
28% 7: Data bits per OFDM symbol per spatial stream
29
30%802.11 a/g rates - IEEE 802.11-2012 Table 18-4
31% Chapter 18 doesn't use the term "MCS", but it's a convenient
32%  way to refer to these rates.
33mcs_info_11ag = [...
34    [0, 0,  1,  0,  0,   48,  24];...
35    [1, 0,  1,  0,  2,   48,  36];...
36    [2, 0,  1,  1,  0,   96,  48];...
37    [3, 0,  1,  1,  2,   96,  72];...
38    [4, 0,  1,  2,  0,  192,  96];...
39    [5, 0,  1,  2,  2,  192, 144];...
40    [6, 0,  1,  3,  1,  288, 192];...
41    [7, 0,  1,  3,  2,  288, 216];...
42];
43
44%802.11n rates - IEEE 802.11-2012 Tables 20-30 to 30-37
45% Only equal modulation MCS are included here
46% MCS 32 is omitted (it's unused, as best I can tell)
47mcs_info_11n = [...
48    [ 0,    0,  1,  0,  0,   52,    26];...
49    [ 1,    0,  1,  1,  0,  104,    52];...
50    [ 2,    0,  1,  1,  2,  104,    78];...
51    [ 3,    0,  1,  2,  0,  208,    104];...
52    [ 4,    0,  1,  2,  2,  208,    156];...
53    [ 5,    0,  1,  3,  1,  312,    208];...
54    [ 6,    0,  1,  3,  2,  312,    234];...
55    [ 7,    0,  1,  3,  3,  312,    260];...
56    [ 8,    0,  2,  0,  0,   52,    26];...
57    [ 9,    0,  2,  1,  0,  104,    52];...
58    [10,    0,  2,  1,  2,  104,    78];...
59    [11,    0,  2,  2,  0,  208,    104];...
60    [12,    0,  2,  2,  2,  208,    156];...
61    [13,    0,  2,  3,  1,  312,    208];...
62    [14,    0,  2,  3,  2,  312,    234];...
63    [15,    0,  2,  3,  3,  312,    260];...
64    [16,    0,  3,  0,  0,   52,    26];...
65    [17,    0,  3,  1,  0,  104,    52];...
66    [18,    0,  3,  1,  2,  104,    78];...
67    [19,    0,  3,  2,  0,  208,    104];...
68    [20,    0,  3,  2,  2,  208,    156];...
69    [21,    0,  3,  3,  1,  312,    208];...
70    [22,    0,  3,  3,  2,  312,    234];...
71    [23,    0,  3,  3,  3,  312,    260];...
72    [24,    0,  4,  0,  0,   52,    26];...
73    [25,    0,  4,  1,  0,  104,    52];...
74    [26,    0,  4,  1,  2,  104,    78];...
75    [27,    0,  4,  2,  0,  208,    104];...
76    [28,    0,  4,  2,  2,  208,    156];...
77    [29,    0,  4,  3,  1,  312,    208];...
78    [30,    0,  4,  3,  2,  312,    234];...
79    [31,    0,  4,  3,  3,  312,    260];...
80    [ 0,    1,  1,  0,  0,  108,    54];...
81    [ 1,    1,  1,  1,  0,  216,    108];...
82    [ 2,    1,  1,  1,  2,  216,    162];...
83    [ 3,    1,  1,  2,  0,  432,    216];...
84    [ 4,    1,  1,  2,  2,  432,    324];...
85    [ 5,    1,  1,  3,  1,  648,    432];...
86    [ 6,    1,  1,  3,  2,  648,    486];...
87    [ 7,    1,  1,  3,  3,  648,    540];...
88    [ 8,    1,  2,  0,  0,  108,    54];...
89    [ 9,    1,  2,  1,  0,  216,    108];...
90    [10,    1,  2,  1,  2,  216,    162];...
91    [11,    1,  2,  2,  0,  432,    216];...
92    [12,    1,  2,  2,  2,  432,    324];...
93    [13,    1,  2,  3,  1,  648,    432];...
94    [14,    1,  2,  3,  2,  648,    486];...
95    [15,    1,  2,  3,  3,  648,    540];...
96    [16,    1,  3,  0,  0,  108,    54];...
97    [17,    1,  3,  1,  0,  216,    108];...
98    [18,    1,  3,  1,  2,  216,    162];...
99    [19,    1,  3,  2,  0,  432,    216];...
100    [20,    1,  3,  2,  2,  432,    324];...
101    [21,    1,  3,  3,  1,  648,    432];...
102    [22,    1,  3,  3,  2,  648,    486];...
103    [23,    1,  3,  3,  3,  648,    540];...
104    [24,    1,  4,  0,  0,  108,    54];...
105    [25,    1,  4,  1,  0,  216,    108];...
106    [26,    1,  4,  1,  2,  216,    162];...
107    [27,    1,  4,  2,  0,  432,    216];...
108    [28,    1,  4,  2,  2,  432,    324];...
109    [29,    1,  4,  3,  1,  648,    432];...
110    [30,    1,  4,  3,  2,  648,    486];...
111    [31,    1,  4,  3,  3,  648,    540];...
112];
113
114%Convert each MCS info array to a vector of ROM words
115mcs_rom_11ag = zeros(1, size(mcs_info_11ag, 1));
116for nn = 1:numel(mcs_rom_11ag)
117    mcs_rom_11ag(nn) = mcs_info_to_rom(mcs_info_11ag(nn, :));
118end
119
120mcs_rom_11n = zeros(1, size(mcs_info_11n, 1));
121for nn = 1:numel(mcs_rom_11n)
122    mcs_rom_11n(nn) = mcs_info_to_rom(mcs_info_11n(nn, :));
123end
124
Note: See TracBrowser for help on using the repository browser.