source: ResearchApps/PHY/MIMO_OFDM/SG10/ofdm_tx_supermimo_init.m

Last change on this file was 1820, checked in by murphpo, 12 years ago
File size: 17.8 KB
Line 
1
2warning off;
3fixScopes;
4
5%-----------------------------------------------------------------------------------------------
6% FEC settings, Yang
7% Header is always 1/2 coded unless the entire FEC coding is turned off, i.e. fec_coding_en = 0
8% The code rate for data payload can be 1/2, 2/3, 3/4, or 1 (no coding)
9%-----------------------------------------------------------------------------------------------
10fec_coding_en = 1 ;
11fec_soft_dec = 1 ;
12fec_zero_tail = 0 ;
13fec_qpsk_scl = 6 ;
14fec_16qam_scl = 16 ;
15fec_code_rate = 1 ;  % valid values are [0, 1, 2, 3] meaning rate 1/2, rate 2/3, rate 3/4, and rate 1 (no coding)
16FEC_Config = fec_coding_en*1 + fec_soft_dec*2 + fec_qpsk_scl*2^4 + fec_16qam_scl*2^8 ;
17
18%Choose the modulation schemes to use for the base-rate and full-rate symbols
19%Valid values are [0,1,2,4,6,8], meaning 0, BPSK, QPSK, 16/64/256 QAM symbols per subcarrier
20mod_baseRate = 2 ;
21modMask_antA = 4 ;
22modMask_antB = 4 ; %AntB is ignored in SISO mode, so it's safe to leave this field non-zero all the time
23
24%Calculate the number of bytes in the packet, based on the number of OFDM symbols specified above
25% In hardware, the user code will provide this value per-packet
26%pkt_numPayloadBytes = (1412); %X OFDM symbols worth of payload, plus header and checksum
27pkt_numPayloadBytes = (100); %X OFDM symbols worth of payload, plus header and checksum
28%pkt_numPayloadBytes = 0;     % Test Header only packet
29
30%Set the transceiver mode - SISO and Alamouti must not both be 1!
31tx_SISO_Mode = 1 ;
32tx_Alamouti_Mode = 0 ;
33
34if (tx_SISO_Mode)
35  channel_h = [1 0; 0 0] * 0.65 ;
36elseif (tx_Alamouti_Mode == 0)
37  channel_h = [1 0; 0 1] * 0.5 ;
38else
39  channel_h = [1 0; 1 0] * 0.3 ;
40end
41
42
43
44set(0, 'DefaultLineLineWidth', 1.5);
45
46%Compile-time maximum values; used to set precision of control logic values
47max_OFDM_symbols = 1023; %511;%2047;
48max_num_subcarriers = 64;
49max_CP_length = 16;
50max_num_baseRateSymbols = 31;
51max_num_trainingSymbols = 15;
52max_numBytes = 16384;
53
54%Hard-coded OFDM parameters for now; these might be dynamic some day
55numSubcarriers = 64;
56CPLength = 16;
57
58%Cyclic Redundancy Check parameters
59CRCPolynomial32 = hex2dec('04c11db7'); %CRC-32
60CRCPolynomial16 = hex2dec('1021'); %CRC-CCIT
61CRC_Table32 = CRC_table_gen(CRCPolynomial32, 32);
62CRC_Table16 = CRC_table_gen(CRCPolynomial16, 16);
63
64%Define the preamble which is pre-pended to each packet
65%These long and short symbols are borrowed from the 802.11a PHY standard
66shortSymbol_freq = [0 0 0 0 0 0 0 0 1+i 0 0 0 -1+i 0 0 0 -1-i 0 0 0 1-i 0 0 0 -1-i 0 0 0 1-i 0 0 0 0 0 0 0 1-i 0 0 0 -1-i 0 0 0 1-i 0 0 0 -1-i 0 0 0 -1+i 0 0 0 1+i 0 0 0 0 0 0 0].';
67shortSymbol_time = ifft(fftshift(shortSymbol_freq));
68shortSymbol_time = shortSymbol_time(1:16).';
69
70longSymbol_freq_bot = [0 0 0 0 0 0 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1]';
71longSymbol_freq_top = [1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 0 0 0 0 0]';
72longSymbol_freq = [longSymbol_freq_bot ; 0 ; longSymbol_freq_top];
73longSymbol_time = ifft(fftshift(longSymbol_freq)).';
74
75%Concatenate 10 short symbols together
76%shortsyms_10 = linspace(0,0.4-2^-13,160);
77shortsyms_10 = repmat(shortSymbol_time,1,10);
78
79%Concatenate and cyclicly extend two long symbols
80%longsyms_2 = [longSymbol_time(33:64) repmat(longSymbol_time,1,2)];
81%longSymbol_time = linspace(-1/6, 1/6, 64);
82%longsyms_2 = [repmat(longSymbol_time,1,2) longSymbol_time(1:32)];%complex(linspace(-1,0.98,160), linspace(0.98,-1,160));%
83%longsyms_2 = [longSymbol_time(33:64) repmat(longSymbol_time,1,2)];%complex(linspace(-1,0.98,160), linspace(0.98,-1,160));%
84longsyms_2 = [longSymbol_time(49:64) repmat(longSymbol_time,1,2) longSymbol_time(1:16)];
85%longsyms_2 = linspace(0.6,1-2^-13,160);%0.5*ones(1,160);%
86
87%Scale the resulting time-domain preamble to fit [-1,1]
88preamble_scale = 6;
89preamble = preamble_scale*[shortsyms_10 longsyms_2];
90preamble_I = real(preamble);
91preamble_Q = imag(preamble);
92
93%The preamble stored in memory is slightly different- it contains cyclic extensions of each half (STS/LTS)
94% to make addressing easier for two antennas sending cyclicaly shifted preambles
95%The preamble consists of 320 actual samples: [10xSTS] [2.5xLTS]
96% Each half is padded with 8 samples before/after when stored in memory
97preamble_ext = preamble_scale*[...
98    shortSymbol_time(end-7:end) repmat(shortSymbol_time,1,10) shortSymbol_time(1:8) ...
99    longSymbol_time(41:48) longSymbol_time(49:64) repmat(longSymbol_time,1,2) longSymbol_time(1:16) longSymbol_time(17:24)];
100
101preamble_I_ROM = round(2^13*real(preamble_ext));
102ii = find(preamble_I_ROM < 0);
103preamble_I_ROM(ii) = 2^16 + preamble_I_ROM(ii);
104
105preamble_Q_ROM = round(2^13*imag(preamble_ext));
106ii = find(preamble_Q_ROM < 0);
107preamble_Q_ROM(ii) = 2^16 + preamble_Q_ROM(ii);
108
109preamble_ROM = preamble_I_ROM + preamble_Q_ROM*2^16;
110
111%Configure the pilot tone registers
112%pilot_indicies = 7 + ( (64-7) * 2^8) + (21 * 2^16) + ( (64-21) * 2^24);
113pilot_indicies = 7 + ( (64-21) * 2^8) + ( (64-7) * 2^16) + (21 * 2^24);
114
115%Values from hardware (~.7, like QPSK, to avoid saturation)
116pilotValues = hex2dec('A57D') + (2^16 * hex2dec('5A82'));
117
118%Actual BPSK (+/- 1)
119%pilotValues = hex2dec('8000') + (2^16 * hex2dec('7FFF'));
120
121%Training sequence, borrowed from 802.11a
122train = [0 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1];
123
124%Match the training sequence to the pilot tone signs
125train(8)  = 1;
126train(22) = -1;
127train(44) = 1;
128train(58) = 1;
129
130%train=zeros(1,length(train));
131
132%MIMO training; use the same sequence for both antennas
133train = [train train];
134
135%Maximum number of bytes per packet
136%RAM_init_size = 4096;
137BER_RAM_init_size = 2048; %only support BER tests up to 2048 bytes/packet
138RAM_init_size = max_numBytes;
139
140%Standard 48-active subcarriers
141subcarrier_masks = ones(1,numSubcarriers);
142subcarrier_masks(1)=0;  %DC tone at Xk=0
143subcarrier_masks(8)=0; %pilot tone at Xk=7
144subcarrier_masks(22)=0; %pilot tone at Xk=21
145subcarrier_masks(44)=0; %pilot tone at Xk=43
146subcarrier_masks(58)=0; %pilot tone at Xk=57
147subcarrier_masks([28:32])=0; %zeros at higher frequencies
148subcarrier_masks([33:38])=0; %zeros at higher frequencies
149
150modulation_antA = modMask_antA*subcarrier_masks;
151modulation_antB = modMask_antB*subcarrier_masks;
152
153modulation_antA = 15*subcarrier_masks;
154modulation_antB = 15*subcarrier_masks;
155
156modulation_baseRate = mod_baseRate*subcarrier_masks;
157
158%Final vector must be: [AntennaA AntennaB BaseRate]
159%AntA = AntB = BaseRate = 48 non-zero subcarriers -> 12 bytes/OFDM symbol with QPSK
160subcarrier_QAM_Values = [modulation_antA modulation_antB modulation_baseRate];
161numBytes_BaseRateOFDMSymbol = sum(modulation_baseRate)/8;
162
163numBytes_AFullRateOFDMSymbol = sum(bitand(modMask_antA,modulation_antA))/8;
164numBytes_BFullRateOFDMSymbol = sum(bitand(modMask_antB,modulation_antB))/8;
165
166%numBytes_FullRateOFDMSymbol = sum(modulation_antA)/8;
167numBytes_FullRateOFDMSymbol = numBytes_AFullRateOFDMSymbol;
168if(tx_SISO_Mode == 1)
169    numBytes_FullRateOFDMSymbol = numBytes_AFullRateOFDMSymbol;
170else
171    numBytes_FullRateOFDMSymbol = (numBytes_AFullRateOFDMSymbol + numBytes_BFullRateOFDMSymbol)/2;
172end
173
174%Example of how modulation data gets formatted as bytes in the packet's header; useed for simulation
175subcarrier_QAM_Values_bytes = reshape([modulation_antA modulation_antB], 2, numSubcarriers);
176subcarrier_QAM_Values_bytes = sum(subcarrier_QAM_Values_bytes .* [ones(1,64).*2^4; ones(1,64)]);
177
178%Setup the packet length for simulation
179numHeaderBytes = 24;
180numTrainingSymbols = 2;
181numBaseRateSymbols = ceil(numHeaderBytes / numBytes_BaseRateOFDMSymbol);
182
183% Header is always 1/2 coded, double the base rate symbol, Yang
184if(fec_coding_en)
185    numBaseRateSymbols = numBaseRateSymbols *2 ;
186end
187
188
189%Setup the packet contents
190rand('state',1); %Get the same packet each time for BER testing
191
192%Calculate the number of full rate OFDM symbols
193% This number is actually the number of FFT frames which are calculated
194% In SISO mode, it is double the number of actual OFDM symbols transmitted
195% As a result, this value must be even, in any mode
196if(tx_SISO_Mode == 1 || tx_Alamouti_Mode == 1)
197    numFullRateSymbols = 2*ceil((4+pkt_numPayloadBytes)/numBytes_FullRateOFDMSymbol);%124;
198else
199    numFullRateSymbols = ceil((4+pkt_numPayloadBytes)/numBytes_FullRateOFDMSymbol);%124;
200end
201numFullRateSymbols = numFullRateSymbols + mod(numFullRateSymbols, 2);
202
203%Define the indicies (zero-indexed, like C) of some important bytes in the header
204byteIndex_numPayloadBytes = [3 2];
205byteIndex_simpleDynModMasks = 0;
206
207%Total number of bytes to process (header + payload + 32-bit payload checksum)
208if(pkt_numPayloadBytes > 0)
209    pkt_totalBytes = numHeaderBytes + pkt_numPayloadBytes + 4;
210else
211    pkt_totalBytes = numHeaderBytes;
212end
213
214%Construct the packet header
215% The PHY only cares about 3 bytess (length_lsb, length_msb and modMasks)
216% In hardware, the MAC will use the rest of the header for MAC-ish stuff
217packetHeader = [...
218    (modMask_antA + modMask_antB*2^4) ... %byte 0 mod masks
219    fec_code_rate ... %byte 1 code rate
220    floor((pkt_totalBytes/256))... %byte 2 pkt size
221    mod(pkt_totalBytes,256)... %byte 3 pkt size
222    0 ... %src addr msb
223    0 ... %src addr lsb
224    0 ... %dst addr msb
225    1 ... %dst addr lsb
226    0 ... %relay addr msb
227    0 ... %relay addr lsb
228    0 ... %byte 10 pkt type
229    zeros(1,13) ...
230];
231
232%Assemble the rest of the packet, using some filler bytes for the full-rate payload
233%packet = [packetHeader 1:(pkt_numPayloadBytes)];
234packet = [packetHeader zeros(1,pkt_numPayloadBytes)];
235
236%Make sure each element is really just one byte
237packet = mod(packet,256);
238
239%Add the 32-bit checksum to the end of the payload (sim-only)
240% In hardware, the checksum automatically over-writes the last four bytes of the payload
241packet = [packet calcCRC32(packet)];
242
243%Zero-pad the vector to fill a multiple of 8 bytes
244packet = [packet zeros(1,8-mod(length(packet),8))];
245
246%Endian-flip at 64-bit boundaries to mimic the PLB packet buffer interface in hardware
247% [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...] becomes [8 7 6 5 4 3 2 1 16 15 14 13 12 11 10 9 ...]
248packet = reshape(flipud(reshape(packet,8,length(packet)/8)),1,length(packet));
249
250%This value allows the simulated transmitter to start new packets
251% leaving a few hundred cycles of idle time between each packet
252simOnly_numSamples = length(preamble)+( (numSubcarriers+CPLength)*(numTrainingSymbols + numBaseRateSymbols + numFullRateSymbols/2) );
253simOnly_simLength = 1000 + 2 * (4 * (simOnly_numSamples + 500));
254
255%Default value for the Tx symbol counts register
256txReg_symbolCounts = (2^8 *numBaseRateSymbols ) + numTrainingSymbols;
257
258%Parameters to initialize the packet buffers
259% The default packet is loaded at configuration, allowing real-time BER tests
260% This packet will be overwritten in hardware when user-code loads packets
261packet_length = length(packet)-1;
262RAM_init_values = [packet, zeros(1,RAM_init_size-1-packet_length)];
263
264BER_RAM_init_values = RAM_init_values(1:BER_RAM_init_size);
265BER_RAM_init_values = reshape(flipud(reshape(BER_RAM_init_values, 8, BER_RAM_init_size/8)), 1, BER_RAM_init_size);
266
267%LSFR parameters, used for random payload mode
268txLSFR_numBits = 13;
269txLSFR_polynomials = {'21' '35' '0B' '1D' '35' '0B' '3D' '2B'};
270txLSFR_initValues = {'3F' '1B' '03' '35' '17' '0A' '74' '39'};
271
272%Precision for the constants which store the modulation values
273modConstellation_prec = 8;
274modConstellation_bp = 7;
275
276%Defintion of the various constellations
277%Gray coded bit-symbol mappings
278%Borrowed from the IEEE 802.16 specification
279% IEEE Std 802.16-2004 Tables 153-155 (pg. 329)
280
281%QPSK constellation
282%2 bits per symbol, 1 bit per I/Q
283% I = MSB, Q = LSB
284%modConstellation_qpsk = [1 -1];
285modConstellation_qpsk = [1 -1]./sqrt(2);
286%modConstellation_qpsk = (1-2^-modConstellation_bp).*modConstellation_qpsk./(max(abs(modConstellation_qpsk)));
287
288%16-QAM constellation
289%4 bits per symbol, 2 bits per I/Q
290% I = 2MSB, Q = 2LSB
291modConstellation_qam16 = .75*[1 3 -1 -3]./3;
292%modConstellation_qam16 = [1 3 -1 -3];
293%modConstellation_qam16 = [1 3 -1 -3]./sqrt(10);
294%modConstellation_qam16 = (1-2^-modConstellation_bp).*modConstellation_qam16./(max(abs(modConstellation_qam16)));
295
296%FIXME: 64/256QAM constellations exceed +/-1, which won't fit in the current data types!
297%64-QAM constellation
298%6 bits per symbol, 3 bits per I/Q
299% I = 3MSB, Q = 3LSB
300modConstellation_qam64 = 0.875*[3 1 5 7 -3 -1 -5 -7]./7;
301%modConstellation_qam64 = [3 1 5 7 -3 -1 -5 -7];
302%modConstellation_qam64 = [3 1 5 7 -3 -1 -5 -7]./(7*3/sqrt(10));%sqrt(42);
303%modConstellation_qam64 = (1-2^-modConstellation_bp).*modConstellation_qam64./(max(abs(modConstellation_qam64)));
304
305%256-QAM constellation
306%8 bits per symbol, 4 bits per I/Q
307% I = 4MSB, Q = 4LSB
308modConstellation_qam256 = 0.9375*[3 1 5 7 11 9 13 15 -3 -1 -5 -7 -11 -9 -13 -15]./15;
309%modConstellation_qam256 = [3 1 5 7 11 9 13 15 -3 -1 -5 -7 -11 -9 -13 -15];
310%1/(modnorm(qammod(0:255,256),'avpow',1))^2
311%modConstellation_qam256 = [3 1 5 7 11 9 13 15 -3 -1 -5 -7 -11 -9 -13 -15]./sqrt(170);
312%modConstellation_qam256 = (1-2^-modConstellation_bp).*modConstellation_qam256./(max(abs(modConstellation_qam256)));
313
314antB_preambleShift = 3;
315
316%Fill in the TxControlBits register; each bit has a different purpose
317%0x1: 1 SISO Mode
318%0x2: 2 Alamouti Mode
319%0x4: 4 Disable AntB preamble
320%0x8: 8 Enable Pilot Scrambling (2^3)
321%0xF0: Preamble shift
322%0x100: 256 Random payload
323%0x200: 512 Swap Tx antennas
324%0x400: 1024 Start Tx using software write
325%0x800: 2048 Enable ExtTxEn port
326%0x1000: Always use preSpin (instead of requring auto responder)
327%0x2000: Capture random payloads
328%0x4000: Enable AutoTwoTx
329%0x8000: Enable TxRunning_d0 output
330%0x10000: Enable TxRunning_d1 output
331%0x20000: Tx int filt sel (0=intfilt, 1=firpm)
332%0x3F0_0000: Tx post IFFT cyclic shift (0 = use only cyclic prefix)
333tx_controlBits = (antB_preambleShift * 2^4) + (2^1 * tx_Alamouti_Mode) + ...
334    (2^0 * tx_SISO_Mode) + 4*0 + 8*1 + 0*256 + 512*0 + 1024*0 + ...
335    0*hex2dec('1000') + 0*hex2dec('2000') + 0*hex2dec('4000') + ...
336    1*hex2dec('8000') + 1*hex2dec('10000') + hex2dec('20000') + ...
337    0*hex2dec('100000');
338
339%0x0000_00FF: External TxEn delay
340%0x0000_0F00: Extra Tx/rx-Tx delay
341%0x000F_F000: TxRunning_d output delay
342tx_delays = (50*2^0) + (0*2^8) + (30*2^12);
343
344%tx_scaling = (2480) + (9792 * 2^16);
345%tx_scaling = (4365) + (14267 * 2^16);
346tx_scaling = (3072) + (12288 * 2^16);
347
348%12-bit value: bits[5:0]=TxFFTScaling, bits[11:6]=RxFFTScaling
349%TxRx_FFTScaling = bin2dec('010111') + (bin2dec('000101') * 2^6);
350% TxRx_FFTScaling = ...
351%   (3 * 2^0) + ... %Tx stage3
352%   (1 * 2^2) + ... %Tx stage2
353%   (1 * 2^4) + ... %Tx stage1
354%   (1 * 2^6) + ... %Rx stage3
355%   (1 * 2^8) + ... %Rx stage2
356%   (0 * 2^10); %Rx stage1
357
358TxRx_FFTScaling = ...
359    (3 * 2^0) + ... %Tx stage3
360    (2 * 2^2) + ... %Tx stage2
361    (1 * 2^4) + ... %Tx stage1
362    (1 * 2^6) + ... %Rx stage3
363    (1 * 2^8) + ... %Rx stage2
364    (0 * 2^10); %Rx stage1
365
366%DataScrambling_Seq = zeros(1,32);
367TxDataScrambling_Seq = [40 198 78 63 82 173 102 245 48 111 172 115 147 230 216 93 72 65 62 2 205 242 122 90 128 83 105 97 73 10 5 252];
368RxDataScrambling_Seq = [40 198 78 63 82 173 102 245 48 111 172 115 147 230 216 93 72 65 62 2 205 242 122 90 128 83 105 97 73 10 5 252];
369
370
371%AutoReply params
372ActionID_Disabled = 0;
373ActionID_SetFlagA = 62;
374ActionID_SetFlagB = 61;
375ActionID_AFTransmit = 31;
376
377PHY_AUTORESPONSE_MATCH_LENGTH_OFFSET = 5;
378PHY_AUTORESPONSE_MATCH_VALUE_OFFSET = 8;
379
380PHY_AUTORESPONSE_REQ_MATCH0 = hex2dec('001');
381PHY_AUTORESPONSE_REQ_MATCH1 = hex2dec('002');
382PHY_AUTORESPONSE_REQ_MATCH2 = hex2dec('004');
383PHY_AUTORESPONSE_REQ_MATCH3 = hex2dec('008');
384PHY_AUTORESPONSE_REQ_MATCH4 = hex2dec('010');
385PHY_AUTORESPONSE_REQ_MATCH5 = hex2dec('020');
386PHY_AUTORESPONSE_REQ_MATCH6 = hex2dec('040');
387PHY_AUTORESPONSE_REQ_MATCH7 = hex2dec('080');
388
389PHY_AUTORESPONSE_REQ_GOODHDR = hex2dec('800');
390PHY_AUTORESPONSE_REQ_BADPKT = hex2dec('1000');
391PHY_AUTORESPONSE_REQ_GOODPKT = hex2dec('2000');
392PHY_AUTORESPONSE_REQ_FLAGA = hex2dec('4000');
393PHY_AUTORESPONSE_REQ_FLAGB = hex2dec('8000');
394
395PHY_AUTORESPONSE_ACT_HDRTRANS_EN = hex2dec('10000');
396PHY_AUTORESPONSE_ACT_PRECFO_EN = hex2dec('20000');
397PHY_AUTORESPONSE_ACT_ID_OFFSET = 18;
398PHY_AUTORESPONSE_ACT_PARAM_OFFSET = 24;
399
400%14=goodPkt, 18:24=actionID
401%Action0_Config = (PHY_AUTORESPONSE_REQ_MATCH0 + PHY_AUTORESPONSE_REQ_MATCH1 + PHY_AUTORESPONSE_REQ_GOODHDR + PHY_AUTORESPONSE_REQ_GOODPKT) + (2 * 2^PHY_AUTORESPONSE_ACT_ID_OFFSET) + (100 * 2^PHY_AUTORESPONSE_ACT_PARAM_OFFSET);
402%Action0_Config = 31*2^18 + 100*2^24; %AF testing
403%Action0_Config = 2^14 + ActionID_SetFlagA*2^18 + 100*2^24; %Flag A testing
404Action0_Config = 0; %Disabled
405%Match0_Config = 0;%Disabled
406Match0_Config = 0;%10 + (1 * 2^6) + (packetHeader(11) * 2^8);
407
408
409%Testing: Config for Node 0:
410Action0_Config = 0* 31*2^18 + 0*2^24 + PHY_AUTORESPONSE_REQ_GOODHDR + PHY_AUTORESPONSE_REQ_GOODPKT + PHY_AUTORESPONSE_REQ_FLAGA;%AF
411Action1_Config = 0* 62*2^18 + PHY_AUTORESPONSE_REQ_GOODHDR + PHY_AUTORESPONSE_REQ_GOODPKT;%Set FlagA
412Action2_Config = 0;%hex2dec('41005');
413Action3_Config = 0;
414Action4_Config = 0;
415Action5_Config = 0;
416
417Match0_Config = 0;%hex2dec('246'); %Addressed to 0x0200
418Match1_Config = 0;%hex2dec('12A'); %pktType 1 (DATA)
419Match2_Config = 0;%hex2dec('22A'); %pktType 2 (NACK)
420Match3_Config = 0;
421Match4_Config = 0;
422Match5_Config = 0;
423Match6_Config = 0;
424Match7_Config = 0;
425
426%Testing: Config for Node 1:
427%Action0_Config = hex2dec('0');
428%Action1_Config = hex2dec('e5003'); %MATCH0|MATCH1|GOODPKT -> Send from 3
429%Action2_Config = hex2dec('41005'); %MATCH0|MATCH2|? -> Send from 1
430%Action3_Config = 0;
431%Action4_Config = 0;
432%Action5_Config = 0;
433
434%Match0_Config = hex2dec('10346'); %Addressed to 0x0301
435%Match1_Config = hex2dec('12A'); %pktType 1 (DATA)
436%Match2_Config = hex2dec('22A'); %pktType 2 (NACK)
437%Match3_Config = 0;
438%Match4_Config = 0;
439%Match5_Config = 0;
440
441       
Note: See TracBrowser for help on using the repository browser.