;---------------------- ; ; pro mvn_lpw_instrument_constants ; ;---------------------- ; ; This allowes the different constants to be located in one place ; to keep the history of how they are changed ; Also allow the different boards to have different calibration numbers ; ;---------------------- ; contains routines/procedures: ; mvn_lpw_instrument_constants ;---------------------- ;example ; to run ; mvn_lpw_instrument_constants,'EM1' ;---------------------- ; history: ; last change: 2011 october 5 by:LA ;---------------------- ; ;******************************************************************* pro mvn_lpw_instrument_constants,board,lpw_const2=lpw_const2 common data_info,output,expected,lpw_const ;--------------------- print,'(mvn_lpw_instrument_constants) Selected Board: ',board ;--------------- Board Unique Variables ----------------------- case board of 'EM1': BEGIN ; constants associated with DAC ;const_DAC_volt = 130./2048. ;20110916 EM1 & EM2 DAC conversion factor const_lp_bias1_DAC= -1.0*(130./2048.) const_w_bias1_DAC= -1.0*(50./2048.) const_lp_guard1_DAC= -1.0*(10./2048.) const_w_guard1_DAC= -1.0*(10./2048.) const_lp_stub1_DAC= -1.0*(10./2048.) const_w_stub1_DAC= -1.0*(10./2048.) const_lp_bias2_DAC= -1.0*(130./2048.) const_w_bias2_DAC= -1.0*(50./2048.) const_lp_guard2_DAC= -1.0*(10./2048.) const_w_guard2_DAC= -1.0*(10./2048.) const_lp_stub2_DAC= -1.0*(10./2048.) const_w_stub2_DAC= -1.0*(10./2048.) ; Constants associated with Boom 1 const_I1_readback= 2.E-10 ;20110916 EM1 & EM2 no change ;const_V2_readback=2.5/2d^15 * 50 const_V1_readback= 2.5/2d^15 * 238. ;20110916 EM1 & EM2 From Bryans calculated and measured gain const_bias1_readback= 2.5/2d^15 *50. const_guard1_readback= 2.5/2d^15 *50. const_stub1_readback= 2.5/2d^15 *50. ; data.y(*,0)=output.adr_w_bias1*const_bias1_readback ; data.y(*,1)=output.adr_w_guard1*const_guard1_readback ; data.y(*,2)=output.adr_w_stub1*const_stub1_readback ; data.y(*,3)=output.adr_w_v1*const_V1_readback ; data.y(*,4)=output.adr_lp_guard1*const_guard1_readback ; data.y(*,5)=output.adr_lp_stub1*const_stub1_readback ;data.y = output.adr_lp_bias1*const_bias1_readback ; Constants associated with Sweep/boom 2 const_I2_readback= 2.E-10 ;20110916 EM1 & EM2 no change ;const_V1_readback=2.5/2d^15 * 50 ;old const_V2_readback= 2.5/2d^15 * 238. ;20110916 EM1 & EM2 From Bryans calculated and measured gain const_bias2_readback= 2.5/2d^15 *50. const_guard2_readback= 2.5/2d^15 *50. const_stub2_readback= 2.5/2d^15 *50. ; Constants associated with Pass, Active and HSBM const_E12_LF = 2.5 / 2d^15 ;20110921 EM1 & EM2 From David M (used in PAS_AVG, ACT_AVG and LF_HSBM) const_E12_MF = 2.5 / 2d^15 ;20110921 EM1 & EM2 From David M (used in MF_HSBM) const_E12_HF = 6.25 / 2d^15 ;20110921 EM1 & EM2 From David M (used in HF_HSBM) ; data.y(i,0)=output.ATR_W_BIAS1(i) ; data.y(i,1)=output.ATR_W_GUARD1(i) ; data.y(i,2)=output.ATR_W_STUB1(i) ; data.y(i,3)=output.ATR_LP_BIAS1(i) ; data.y(i,4)=output.ATR_LP_GUARD1(i) ; data.y(i,5)=output.ATR_LP_STUB1(i) ; ; data.y(i,6)=output.ATR_W_BIAS2(i) ; data.y(i,7)=output.ATR_W_GUARD2(i) ; data.y(i,8)=output.ATR_W_STUB2(i) ; data.y(i,9)=output.ATR_LP_BIAS2(i) ; data.y(i,10)=output.ATR_LP_GUARD2(i) ; data.y(i,11)=output.ATR_LP_STUB2(i) END 'EM2': BEGIN print,'(mvn_lpw_instrument_constants) EM2 not activated yet below from EM1 on october 5' ; constants associated with DAC ;20110916 EM1 & EM2 DAC conversion factor const_lp_bias1_DAC= -1.0*(130./2048.) const_w_bias1_DAC= -1.0*(50./2048.) ; const_lp_bias1_DAC= -1.0*(180./2048.) ; const_w_bias1_DAC= -1.0*(85./2048.) const_lp_guard1_DAC= -1.0*(10./2048.) const_w_guard1_DAC= -1.0*(10./2048.) const_lp_stub1_DAC= -1.0*(10./2048.) const_w_stub1_DAC= -1.0*(10./2048.) const_lp_bias2_DAC= -1.0*(130./2048.) const_w_bias2_DAC= -1.0*(50./2048.) ; const_lp_bias2_DAC= -1.0*(80./2048.) ; const_w_bias2_DAC= -1.0*(85./2048.) const_lp_guard2_DAC= -1.0*(10./2048.) const_w_guard2_DAC= -1.0*(10./2048.) const_lp_stub2_DAC= -1.0*(10./2048.) const_w_stub2_DAC= -1.0*(10./2048.) ; Constants associated with Boom 1 const_I1_readback= 2.E-10 ;20110916 EM1 & EM2 no change const_V1_readback= 2.5/2d^15 * 238. ;20110916 EM1 & EM2 From Bryans calculated and measured gain const_bias1_readback= 2.5/2d^15 *50. const_guard1_readback= 2.5/2d^15 *50. const_stub1_readback= 2.5/2d^15 *50. ; Constants associated with Sweep/boom 2 const_I2_readback= 2.E-10 ;20110916 EM1 & EM2 no change ;old const_V2_readback= 2.5/2d^15 * 238. ;20110916 EM1 & EM2 From Bryans calculated and measured gain const_bias2_readback= 2.5/2d^15 *50. const_guard2_readback= 2.5/2d^15 *50. const_stub2_readback= 2.5/2d^15 *50. ; Constants associated with Pass, Active and HSBM const_E12_LF = 2.5 / 2d^15 ;20110921 EM1 & EM2 From David M (used in PAS_AVG, ACT_AVG and LF_HSBM) const_E12_MF = 2.5 / 2d^15 ;20110921 EM1 & EM2 From David M (used in MF_HSBM) const_E12_HF = 6.25 / 2d^15 ;20110921 EM1 & EM2 From David M (used in HF_HSBM) END 'EM3': BEGIN print,'(mvn_lpw_instrument_constants) EM3 not activated yet below from EM1 on october 5' ; constants associated with DAC ;20110916 EM1 & EM2 DAC conversion factor const_lp_bias1_DAC= -1.0*(50./2048.) const_w_bias1_DAC= -1.0*(85./2048.) const_lp_guard1_DAC= -1.0*(10./2048.) const_w_guard1_DAC= -1.0*(12./2048.) const_lp_stub1_DAC= -1.0*(10./2048.) const_w_stub1_DAC= -1.0*(12./2048.) const_lp_bias2_DAC= -1.0*(50./2048.) const_w_bias2_DAC= -1.0*(85./2048.) const_lp_guard2_DAC= -1.0*(10./2048.) const_w_guard2_DAC= -1.0*(12./2048.) const_lp_stub2_DAC= -1.0*(10./2048.) const_w_stub2_DAC= -1.0*(12./2048.) ; Constants associated with Boom 1 const_I1_readback= 2.E-10 ;amps/count ;20110916 EM1 & EM2 no change const_V1_readback= 2.5/2d^15 * 50. ;20110916 EM1 & EM2 From Bryans calculated and measured gain const_bias1_readback= 2.5/2d^15 *50. const_guard1_readback= 2.5/2d^15 *50. const_stub1_readback= 2.5/2d^15 *50. ; Constants associated with Sweep/boom 2 const_I2_readback= 2.E-10 ;20110916 EM1 & EM2 no change ;old const_V2_readback= 2.5/2d^15 * 50. ;20110916 EM1 & EM2 From Bryans calculated and measured gain const_bias2_readback= 2.5/2d^15 *50. const_guard2_readback= 2.5/2d^15 *50. const_stub2_readback= 2.5/2d^15 *50. ; Constants associated with Pass, Active and HSBM const_E12_LF = 2.22 * 2.5 / 2d^15 ;20110921 EM1 & EM2 From David M (used in PAS_AVG, ACT_AVG and LF_HSBM) const_E12_MF = 2.5 / 2d^15 ;20110921 EM1 & EM2 From David M (used in MF_HSBM) const_E12_HF = 1.667 * 2.0 / 2d^13 ;20110921 EM1 & EM2 From David M (used in HF_HSBM) const_E12_HF_HG = 0.333 * 2.0 / 2d^13 END 'FM': BEGIN print,'(mvn_lpw_instrument_constants) FM not activated yet below from EM1 on october 5' ; constants associated with DAC ;20110916 EM1 & EM2 DAC conversion factor const_lp_bias1_DAC= -1.0*(50./2048.) const_w_bias1_DAC= -1.0*(60./2048.) const_lp_guard1_DAC= -1.0*(10./2048.) const_w_guard1_DAC= -1.0*(12./2048.) const_lp_stub1_DAC= -1.0*(10./2048.) const_w_stub1_DAC= -1.0*(12./2048.) const_lp_bias2_DAC= -1.0*(50./2048.) const_w_bias2_DAC= -1.0*(60./2048.) const_lp_guard2_DAC= -1.0*(10./2048.) const_w_guard2_DAC= -1.0*(12./2048.) const_lp_stub2_DAC= -1.0*(10./2048.) const_w_stub2_DAC= -1.0*(12./2048.) ; Constants associated with Boom 1 const_I1_readback= 2.E-10 ;20110916 EM1 & EM2 no change const_V1_readback= 2.5/2d^15 * 50. ;20110916 EM1 & EM2 From Bryans calculated and measured gain const_bias1_readback= 2.5/2d^15 *50. const_guard1_readback= 2.5/2d^15 *50. const_stub1_readback= 2.5/2d^15 *50. ; Constants associated with Sweep/boom 2 const_I2_readback= 2.E-10 ;20110916 EM1 & EM2 no change ;old const_V2_readback= 2.5/2d^15 * 50. ;20110916 EM1 & EM2 From Bryans calculated and measured gain const_bias2_readback= 2.5/2d^15 *50. const_guard2_readback= 2.5/2d^15 *50. const_stub2_readback= 2.5/2d^15 *50. ; Constants associated with Pass, Active and HSBM const_E12_LF = 2.22 * 2.5 / 2d^15 ;20110921 EM1 & EM2 From David M (used in PAS_AVG, ACT_AVG and LF_HSBM) const_E12_MF = 2.5 / 2d^15 ;20110921 EM1 & EM2 From David M (used in MF_HSBM) const_E12_HF = 1.667 * 2.0 / 2d^13 ;20110921 EM1 & EM2 From David M (used in HF_HSBM) const_E12_HF_HG = 0.333 * 2.0 / 2d^13 ; const_E12_LF = 0.9*2.22 * 2.5 / 2d^15 ;20120413 Laila's attempt to correct the above ; const_E12_MF = 0.94*2.5 / 2d^15 ;20120413 Laila's attempt to correct the above ; const_E12_HF = 0.9*1.667 * 2.0 / 2d^13 ;20120413 Laila's attempt to correct the above ; const_E12_HF_HG = 0.333 * 2.0 / 2d^13 END ENDCASE ;--------------- LPW Variables Independend of Board ----------------------- t_epoch=time_double('2001-01-01/00:00:00') ; the GSE epoch time ;t_epoch_expected=t_epoch +6.*60.*60. ;summer the GSE epoch time seems to be UT vs local time difference t_epoch_expected=t_epoch +7.*60.*60. ;winter the GSE epoch time seems to be UT vs local time difference const_sign = 2048 ; to convert value to a sign value subcycle_length=[4.,8.,16.,32., 64.,128,256.]/4. ; table from ICD 7.12.3 and a subcycle is a quarter of the time nn_modes=16 ; assumption, number of modes..... nn_dac=12 ; number of predefined DAC points pre mode , note there are 16 slots, 4 are reserve therefore is the number 12 sample_aver=[16,32,64,128,256,512,1024,2048] ; table from ICD 7.12.3 ;pas/act specific nn_pa = 64 ; number of sampels per subcycle ;I cannot find this used yet, not yet included in lpw_const new_name_lf=[1,2,4,8,16,32,64,128] ;pas_spec number of 1024 FFT's to ave together on E12_LF channel ; table from ICD 7.12.3 new_name_mf=[1,2,4,8,16,32,64,128] ;pas_spec number of 1024 FFT's to ave together on E12_MF channel reserve ; table from ICD 7.12.3 new_name_hf=[1,2,4,8,16,32,64,128] ;pas_spec number of 1024 FFT's to ave together on E12_HF channel reserve ; table from ICD 7.12.3 ;swp specific (this is the number of table element in the sweep hance also adr specific) nn_swp =128 ; number of sampels per subcycle -for the potential in sweep cycle nn_swp_steps=127 ; for the sweep wait the first point to settle then sample nn_active_steps=126 ; the last point is omitted, do not contain important information ;hsbm sepcific nn_hsbm_lf=1024L nn_hsbm_mf=4096L nn_hsbm_hf=4096L nn_bin_lf=56 f_bin_lf=intarr(nn_bin_lf) ;64ks/s channel f_bin_lf( 0:15)=1 f_bin_lf(16:23)=2 f_bin_lf(24:31)=4 f_bin_lf(32:39)=8 f_bin_lf(40:47)=16 f_bin_lf(48:55)=32 nn_bin_mf=56 f_bin_mf=intarr(nn_bin_mf) ;64ks/s channel f_bin_mf( 0:15)=1 f_bin_mf(16:23)=2 f_bin_mf(24:31)=4 f_bin_mf(32:39)=8 f_bin_mf(40:47)=16 f_bin_mf(48:55)=32 nn_bin_hf=128 f_bin_hf=intarr(nn_bin_hf) ;4Ms/s channel f_bin_hf( 0:47)=1 f_bin_hf(48:71)=2 f_bin_hf(72:95)=4 f_bin_hf(96:119)=8 f_bin_hf(120:127)=16 ;mf and hf is the same dt_hsbm_lf=1./(2.^10) ;1024 samples /sec dt_hsbm_mf=1./(2.^16) ;~64k samples /sec dt_hsbm_hf=1./(2.^22) ;~4M samples /sec ;spectra specific nn_fft_size = 1024d ;number of points the fft in the FPGA work with, fix nn_fft_lf = 1d ;n_bins_spec: 1 ks/S = 56 nn_fft_mf = 64d ;n_bins_spec: 64 ks/S = 56 nn_fft_hf = 4096d ;n_bins_spec: 4 Ms/S = 128 power_scale_hf=1./16 ;dt_hsbm_lf ;^2 ;yscale smallest value ->1 count level power_scale_mf=1./16 ;dt_hsbm_mf ;^2 ;yscale smallest value ->1 count level power_scale_lf=1./16 ;dt_hsbm_hf ;^2 ;yscale smallest value ->1 count level ; pre-define spectra frequency ranges in the fpga: center_freq_lf = 1.0*[.25,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16.5,18.5,20.5,22.5,24.5,26.5,28.5,30.5,$ 33.5,37.5,41.5,45.5,49.5,53.5,57.5,61.5,67.5,75.5,83.5,91.5,99.5,107.5,115.5,123.5,$ 135.5,151.5,167.5,183.5,199.5,215.5,231.5,247.4,271.5,303.5,335.5,367.5,399.5,431.5,$ 463.5,495.5] f_low_mf=1.0*[10,32,96,160,224,288,352,416,480,544,608,672,736,800,864,928,992,1120,1248,1376,1504,1632, $ 1760,1888,2016,2272,2528,2784,3040,3296,3552,3808,4064,4576,5088,5600,6112,6624,7136,7648,8160, $ 9184,10208,11232,12256,13280,14304,15328,16352,18400,20448,22496,24544,26592,28640,30688] center_freq_mf=1.0*[16,64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1056,1184,1312,1440,1568, $ 1696,1824,1952,2144,2400,2656,2912,3168,3424,3680,3936,4320,4832,5344,5856,6368,6880,7392,7904, $ 8672,9696,10720,11744,12768,13792,14816,15840,17376,19424,21472,23520,25568,27616,29664,31712] center_freq_hf = 1.0*[1,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,$ 112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,194,202,210,$ 218,226,234,242,250,258,266,274,282,290,298,306,314,322,330,338,346,354,362,370,378,390,406,422,438,$ 454,470,486,502,518,534,550,566,582,598,614,630,646,662,678,694,710,726,742,758,782,814,846,878,$ 910,942,974,1006,1038,1070,1102,1134,1166,1198,1230,1262,1294,1326,1358,1390,1422,1454,1486,1518,$ 1566,1630,1694,1758,1822,1886,1950,2014]*nn_fft_size print,'(mvn_lpw_spectra ) is it correct to take table value * fft_size ???' f_zero_freq=1./1. ; is the FPGA code corrected such that all power is not dumped in the zero bin? ;print,'(mvn_lpw_spectra ) Check with Max what and if we need to correct the first bin!!!' ;------------------------- EUV--------------------------------------------- ;euv specific nn_euv=16 ;number of samples in one package (constant, not associated with the subcycle period) nn_euv_diodes=4 ;number of diodes ;print,'(mvn_lpw_euv) Warning, what is the sampling rate? 1 sec or 0.125 seconds? OR?********' dt_euv=1.0 ;sampling rate [sec] euv_diod_A=1.0 ; conversion number to be identified euv_diod_B=1.0 ; conversion number to be identified euv_diod_C=1.0 ; conversion number to be identified euv_diod_D=1.0 ; conversion number to be identified ;euv_temp=1.0 ; conversion number to be identified ;from David Summers 2012 July ;If you take the 20 bit temperature data and divide it by 16 to get 16 bit numbers, the numbers should follow the following conversion: ;Temp_in_DN(16 bit) = 41.412 x Temp_in_deg_C - 8160.7 euv_temp=[1.0/16 , 8160.7, 41.412] ; (measured * euv_temp(0) + euv_temp(1)) /euv_temp(2) = Temp_in_deg_C ;-------------------------END: EUV--------------------------------------------- ;------------- Put the information into a string LPW_const------------- lpw_const=create_struct( $ ;To export the data in workable form 't_epoch', t_epoch, $ 't_epoch_expected', t_epoch_expected,$ 'sign', const_sign, $ 'sc_lngth', subcycle_length,$ 'sample_aver', sample_aver,$ 'nn_modes', nn_modes ,$ 'nn_dac', nn_dac,$ 'nn_pa', nn_pa,$ 'nn_swp', nn_swp,$ 'nn_swp_steps', nn_swp_steps,$ 'nn_active_steps', nn_active_steps,$ 'nn_hsbm_lf', nn_hsbm_lf,$ 'nn_hsbm_mf', nn_hsbm_mf, $ 'nn_hsbm_hf', nn_hsbm_hf, $ 'nn_bin_lf', nn_bin_lf, $ 'nn_bin_mf', nn_bin_mf, $ 'nn_bin_hf', nn_bin_hf, $ 'nn_fft_size', nn_fft_size,$ 'nn_fft_lf', nn_fft_lf,$ 'nn_fft_mf', nn_fft_mf,$ 'nn_fft_hf', nn_fft_hf,$ 'nn_euv', nn_euv, $ 'nn_euv_diodes', nn_euv_diodes, $ 'lp_bias1_DAC', const_lp_bias1_DAC, $ 'w_bias1_DAC', const_w_bias1_DAC, $ 'lp_guard1_DAC', const_lp_guard1_DAC, $ 'w_guard1_DAC', const_w_guard1_DAC, $ 'lp_stub1_DAC', const_lp_stub1_DAC, $ 'w_stub1_DAC', const_w_stub1_DAC, $ 'lp_bias2_DAC', const_lp_bias2_DAC, $ 'w_bias2_DAC', const_w_bias2_DAC, $ 'lp_guard2_DAC', const_lp_guard2_DAC, $ 'w_guard2_DAC', const_w_guard2_DAC, $ 'lp_stub2_DAC', const_lp_stub2_DAC, $ 'w_stub2_DAC', const_w_stub2_DAC, $ 'I1_readback', const_I1_readback, $ 'V1_readback', const_V1_readback, $ 'bias1_readback', const_bias1_readback, $ 'guard1_readback', const_guard1_readback, $ 'stub1_readback', const_stub1_readback, $ 'I2_readback', const_I2_readback, $ 'V2_readback', const_V2_readback, $ 'bias2_readback', const_bias2_readback, $ 'guard2_readback', const_guard2_readback, $ 'stub2_readback', const_stub2_readback, $ 'E12_lf', const_E12_lf, $ 'E12_mf', const_E12_mf, $ 'E12_hf', const_E12_hf, $ 'E12_hf_hg', const_E12_HF_HG,$ 'f_bin_lf', f_bin_lf,$ 'f_bin_mf', f_bin_mf, $ 'f_bin_hf', f_bin_hf, $ 'f_zero_freq' , f_zero_freq, $ 'power_scale_lf', power_scale_lf,$ 'power_scale_mf', power_scale_mf,$ 'power_scale_hf', power_scale_hf,$ 'center_freq_lf', center_freq_lf,$ 'center_freq_mf', center_freq_mf ,$ 'center_freq_hf', center_freq_hf,$ 'dt_hsbm_lf', dt_hsbm_lf ,$ 'dt_hsbm_mf', dt_hsbm_mf ,$ 'dt_hsbm_hf', dt_hsbm_hf ,$ 'dt_euv', dt_euv, $ 'euv_diod_A', euv_diod_A, $ 'euv_diod_B', euv_diod_B, $ 'euv_diod_C', euv_diod_C, $ 'euv_diod_D', euv_diod_D, $ 'euv_temp', euv_temp ) lpw_const2=lpw_const end ;*********************************************************************************