# Bandwidth analysis for photodiode TIA using matlab

The schematic below show a photodiode TIA circuit, and i tested by using an led as a light source, and by connecting the PCB to the osscilloscope using the bnc connector to see the response of the circuit to the light, i imported this data in matlab to make some analysis on it.

simulate this circuit – Schematic created using CircuitLab

the figure below shows the output i got, which shows the falling edge and i would like to analyse this data to obtain the rise time(maybe by mirroring the output signal) and fall time also the bandwidth, and until now i have no idea how this can be done using matlab, so if anyone can help me with that, it will be great.

I was able to construct the whole pulse from the data i have and you can see it in the figure what i would like to get is the bode plot so i can determine the 3dB frequency using matlab, so if anyone can help with that i will appreciate it

• Label your axis, give some more information what exactly you measured with the oscilloscope, and how you measured it (measurement setup, ...). – Joren Vaes Apr 10 '17 at 14:50
• It's going to be hard to derive rise time from a falling edge... – uint128_t Apr 10 '17 at 14:52
• i will write more information on the question itself, so it will be more clear for everyone else. – Hamzeh Abu Tabanjah Apr 10 '17 at 15:01
• From the step response you can get a time constant. (voltage changes by 1/e.. I usually just pick the time where the amplitude has dropped to 1/3.) From the time constant you can get the frequency. I don't think you need matlab, unless you want to see how "good" the exponential decay is. – George Herold Apr 10 '17 at 15:18

Rise time $t_r$ is defined as the time required for the signal to go from 10% to 90% of its final value. The fall time $t_f$ is defined in a similar fashion: as the time required for the signal to go from 90% to 10% of its initial value.

So in your MATLAB code you should look up at which time instants do these conditions happen and then compute the differences to find $t_r$ and $t_f$.

Then, assuming a behaviour similar to that of an RC network, the bandwidth can be shown to be as follows:

$$BW = \frac{0.35}{t_r}$$

If $t_r$ and $t_f$ happen to be very different, then use $\max(t_r,t_f)$ instead of $t_r$ for the calculation of the bandwith, because the slowest transition will always be the bandwidth-limiting one.

Note below:

For a full discussion about how the $BW$ formula is derived, take a look at this article.

• Thank you for your help, i know this BW equation, but my supervisor told me that it is not so accurate and that i need to find another way to calculate the BW, for the rise time and fall time it is correct, but maybe not for the BW. One last question, how can i get the frequency response from the response i have,what i want to get is the AC transfer function so i can find the 3dB bandwidth but i still do not know how to do that in matlab or if it is possible. – Hamzeh Abu Tabanjah Apr 11 '17 at 9:03
• Ah academia. In that case you need a model for your TIA. If it's equivalent to a first order filter then 0.35/tr will be at least 99% accurate. Otherwise you need to try some other models and see if you can use regression to fit to your data. The model that best fits your data can then be used to calculate the -3dB points and therefore the bandwidth. Bit of a an effort to explain via comment though. – Heath Raftery Dec 12 '17 at 11:04