Tweedle_Dee
Newbie level 2
Hello,
I am trying to learn more about this piece of code I am using to prepare a signal for calculating settling time. As far a I can tell, it takes a curved square wave signal and "squares" it up so that the final settling value can be found and then the settling threshold calculated. I hope that makes sense. Specifically, I'd like to know what filter is being used so I can read more about it and manipulate it if needed. Hope this wasn't asking too much. Thanks for any help!
Here is the code (which is LTX Cadence):
running_average(ST_Clean_Waveform[site,i],ST_Waveform[site,i],32)
ST_Clean_Waveform[site,i] = ST_Clean_Waveform[site,i] / SeTm_Gain
--on_load code
x = 0.0
t = 0.0009
z = 0.0065
--Create an impulse
temp1 = 0.0
temp1[1] = 1.0
--Apply the time domain pole and zero
for j = 1 to 11999 do
y = ( 1.0 - z ) * temp1[j] -- zero
x = x + t * (temp1[j ] - x ) -- pole
temp1[ j ] = y + z * x
endfor
-- Scale fft for unity
temp1 = fft(temp1) * 6000.0
-- DC bin is half actual value
temp1 [ 2 ] = 0.0
temp1 [ 1 ] = temp1 [ 1 ] * 2.0
temp2 = fft(ST_Clean_Waveform [ site , i]) -- Measured waveform to frequency domain
--The vp_cmul procedure multiplies the complex vector element pairs of <array1> by the complex element pairs of <array2>
vp_cmul(temp1,1,temp2,1,temp3,1,6000) -- Apply correction
ST_Clean_Waveform [ site , i] = inverse_fft(temp3)
I am trying to learn more about this piece of code I am using to prepare a signal for calculating settling time. As far a I can tell, it takes a curved square wave signal and "squares" it up so that the final settling value can be found and then the settling threshold calculated. I hope that makes sense. Specifically, I'd like to know what filter is being used so I can read more about it and manipulate it if needed. Hope this wasn't asking too much. Thanks for any help!
Here is the code (which is LTX Cadence):
running_average(ST_Clean_Waveform[site,i],ST_Waveform[site,i],32)
ST_Clean_Waveform[site,i] = ST_Clean_Waveform[site,i] / SeTm_Gain
--on_load code
x = 0.0
t = 0.0009
z = 0.0065
--Create an impulse
temp1 = 0.0
temp1[1] = 1.0
--Apply the time domain pole and zero
for j = 1 to 11999 do
y = ( 1.0 - z ) * temp1[j] -- zero
x = x + t * (temp1[j ] - x ) -- pole
temp1[ j ] = y + z * x
endfor
-- Scale fft for unity
temp1 = fft(temp1) * 6000.0
-- DC bin is half actual value
temp1 [ 2 ] = 0.0
temp1 [ 1 ] = temp1 [ 1 ] * 2.0
temp2 = fft(ST_Clean_Waveform [ site , i]) -- Measured waveform to frequency domain
--The vp_cmul procedure multiplies the complex vector element pairs of <array1> by the complex element pairs of <array2>
vp_cmul(temp1,1,temp2,1,temp3,1,6000) -- Apply correction
ST_Clean_Waveform [ site , i] = inverse_fft(temp3)