source: ResearchApps/PHY/WARPLAB/WARPLab7/Sysgen_Reference/w3/warplab_agc_v3/w3_warplab_agc_init.m

Last change on this file was 4798, checked in by welsh, 8 years ago

Version 3.01.c - Fixed naming.

File size: 3.5 KB
Line 
1% Load data from capture
2%
3% xlLoadChipScopeData('../wlan_phy_rx/cs_capt/wlan_cs_capt_5.prn'); cs_interp = 1; cs_start = 1;
4% payload_vec = [zeros(25,1); complex(ADC_I(cs_start:cs_interp:end), ADC_Q(cs_start:cs_interp:end));];
5
6% Sinusoid test vector
7%
8% ts_tx       = 1 / 40e6;
9% t           = [0:ts_tx:(10000 * ts_tx)].';                    % Create time vector (Sample Frequency is ts_tx (Hz))
10% sinusoid    = 0.2 * exp(j*2*pi * 5e6 * t);                    % Create  5 MHz sinusoid
11% payload_vec = [sinusoid];
12
13% No test vector
14%
15payload_vec = 0;
16
17raw_rx_I.time = [];
18raw_rx_Q.time = [];
19
20DCO_I = 0.05;
21DCO_Q = 0;
22G_I = 2;
23G_Q = 2;
24
25raw_rx_I.signals.values = DCO_I + G_I*real(payload_vec);
26raw_rx_Q.signals.values = DCO_Q + G_Q*imag(payload_vec);
27
28
29PHY_CONFIG_PKT_DET_CORR_THRESH   = 90;
30PHY_CONFIG_PKT_DET_ENERGY_THRESH = 14;
31PHY_CONFIG_PKT_DET_MIN_DURR      = 4;
32
33%% Register Init
34
35% Timing registers
36AGC_TIMING_CAPT_RSSI_1       = 1;
37AGC_TIMING_CAPT_RSSI_2       = 30;
38AGC_TIMING_CAPT_V_DB         = 90;
39AGC_TIMING_DONE              = 96;
40
41AGC_TIMING_START_DCO         = 100;
42AGC_TIMING_EN_IIR_FILT       = 100 + 34;
43
44AGC_TIMING_RESET_RXHP        = 4;
45AGC_TIMING_RESET_G_RF        = 250;
46AGC_TIMING_RESET_G_BB        = 250;
47
48% Config register
49AGC_G_RF_THRESH_32           = 256 - 56;         % Reinterpret Fix8_0 to UFix8_0
50AGC_G_RF_THRESH_21           = 256 - 37;         % Reinterpret Fix8_0 to UFix8_0
51AGC_RSSI_AVG_LEN_SEL         = 2;
52AGC_V_DB_ADJ                 = 4;                % Reinterpret Fix6_0 to UFix6_0
53AGC_INIT_G_BB                = 24;
54
55% Target register
56AGC_TARGET_PWR               = 64 - 16;          % Reinterpret Fix6_0 to UFix6_0
57
58% IIR filt coefficients
59DCO_IIR_Coef_A1              = -0.996863331833438;
60DCO_IIR_Coef_B0              =  0.99843166591671906;
61
62% Rx Power - RSSI calib register (-power values in dBm)
63RSSI_MIN_PWR_G_RF_3          = 100;
64RSSI_MIN_PWR_G_RF_2          = 85;
65RSSI_MIN_PWR_G_RF_1          = 70;
66
67% Register initial values
68REG_ACG_OVERRIDE             = hex2dec('00000000');
69REG_AGC_RESET_MODE           = hex2dec('00000001');
70REG_AGC_RX_LENGTH            = hex2dec('FFFFFFFF');
71
72REG_AGC_Timing_AGC = ...
73    2^0  * AGC_TIMING_CAPT_RSSI_1 + ...          % UFix8_0
74    2^8  * AGC_TIMING_CAPT_RSSI_2 + ...          % UFix8_0
75    2^16 * AGC_TIMING_CAPT_V_DB   + ...          % UFix8_0
76    2^24 * AGC_TIMING_DONE;                      % UFix8_0
77
78REG_AGC_Timing_DCO = ...
79    2^0 * AGC_TIMING_START_DCO   + ...           % UFix8_0
80    2^8 * AGC_TIMING_EN_IIR_FILT + ...           % UFix8_0
81    0;
82
83REG_AGC_Timing_Reset = ...
84    2^0  * AGC_TIMING_RESET_RXHP + ...           % UFix8_0
85    2^8  * AGC_TIMING_RESET_G_RF + ...           % UFix8_0
86    2^16 * AGC_TIMING_RESET_G_BB + ...           % UFix8_0
87    0;
88
89REG_AGC_Config = ...
90    2^0  * AGC_G_RF_THRESH_32   + ...            % Fix8_0
91    2^8  * AGC_G_RF_THRESH_21   + ...            % Fix8_0
92    2^16 * AGC_RSSI_AVG_LEN_SEL + ...            % UFix2_0
93    2^18 * AGC_V_DB_ADJ         + ...            % Fix6_0
94    2^24 * AGC_INIT_G_BB        + ...            % UFix5_0
95    0;
96
97REG_AGC_Target               = AGC_TARGET_PWR;
98
99REG_AGC_IIR_Coef_A1          = DCO_IIR_Coef_A1;
100REG_AGC_IIR_Coef_B0          = DCO_IIR_Coef_B0;
101
102REG_AGC_RSSI_RX_PWR_CALIB = ...
103    2^0  * RSSI_MIN_PWR_G_RF_3 + ...             % UFix8_0
104    2^8  * RSSI_MIN_PWR_G_RF_2 + ...             % UFix8_0
105    2^16 * RSSI_MIN_PWR_G_RF_1 + ...             % UFix8_0
106    0;
107
108   
Note: See TracBrowser for help on using the repository browser.