Compare commits
25 commits
85e61d1e3a
...
7c1a36c83b
Author | SHA1 | Date | |
---|---|---|---|
7c1a36c83b | |||
32c6179417 | |||
379ddb7a33 | |||
99bb529642 | |||
293c7274e1 | |||
88ed4c4816 | |||
a4b204d484 | |||
297acc7737 | |||
c0779f748d | |||
62eeb118cd | |||
d7b6fccad9 | |||
b6d2445480 | |||
953f514bc3 | |||
40e1d3000f | |||
2e7ecdd3ad | |||
fafd68878c | |||
bea08c6d5b | |||
ac025ab1a7 | |||
79901123df | |||
d2873d7821 | |||
3e6e4f8953 | |||
281abd02cb | |||
|
46e6239b9a | ||
|
9b0520bee8 | ||
|
d246d15360 |
10 changed files with 18111 additions and 13 deletions
3001
Images/Datavis/IMS Measurements/Spectrum_23.csv
Normal file
3001
Images/Datavis/IMS Measurements/Spectrum_23.csv
Normal file
File diff suppressed because it is too large
Load diff
3001
Images/Datavis/IMS Measurements/Spectrum_37.csv
Normal file
3001
Images/Datavis/IMS Measurements/Spectrum_37.csv
Normal file
File diff suppressed because it is too large
Load diff
3001
Images/Datavis/IMS Measurements/Spectrum_45.csv
Normal file
3001
Images/Datavis/IMS Measurements/Spectrum_45.csv
Normal file
File diff suppressed because it is too large
Load diff
3001
Images/Datavis/IMS Measurements/Spectrum_54.csv
Normal file
3001
Images/Datavis/IMS Measurements/Spectrum_54.csv
Normal file
File diff suppressed because it is too large
Load diff
3001
Images/Datavis/IMS Measurements/Spectrum_59.csv
Normal file
3001
Images/Datavis/IMS Measurements/Spectrum_59.csv
Normal file
File diff suppressed because it is too large
Load diff
3001
Images/Datavis/IMS Measurements/Spectrum_7.csv
Normal file
3001
Images/Datavis/IMS Measurements/Spectrum_7.csv
Normal file
File diff suppressed because it is too large
Load diff
|
@ -194,6 +194,9 @@ def decorate_ax(ax, plot_config):
|
||||||
row.mode= "expand"
|
row.mode= "expand"
|
||||||
row.align="right"
|
row.align="right"
|
||||||
|
|
||||||
|
if('legend_title' in plot_config):
|
||||||
|
legend.set_title(plot_config['legend_title']);
|
||||||
|
|
||||||
ax.grid(True);
|
ax.grid(True);
|
||||||
|
|
||||||
def plot_single_graph(fig, plot_config, plot_data):
|
def plot_single_graph(fig, plot_config, plot_data):
|
||||||
|
@ -207,7 +210,7 @@ def plot_single_graph(fig, plot_config, plot_data):
|
||||||
x_data = plot_data[x_key];
|
x_data = plot_data[x_key];
|
||||||
y_data = plot_data[y_key];
|
y_data = plot_data[y_key];
|
||||||
|
|
||||||
ax.plot(x_data, y_data);
|
ax.plot(x_data, y_data, linewidth=plot_config.get('linewidth'));
|
||||||
|
|
||||||
if(not 'xformatter' in plot_config):
|
if(not 'xformatter' in plot_config):
|
||||||
plot_config['xformatter'] = 'engineering';
|
plot_config['xformatter'] = 'engineering';
|
||||||
|
@ -231,16 +234,19 @@ def plot_lt_sweep(fig, plot_config, plot_data):
|
||||||
if(y_key == None):
|
if(y_key == None):
|
||||||
raise RuntimeError("No Y-Data Key (`y_key`) specified for plot!")
|
raise RuntimeError("No Y-Data Key (`y_key`) specified for plot!")
|
||||||
|
|
||||||
|
num_steps = len(plot_data['steps'])
|
||||||
|
|
||||||
|
for idx, step in enumerate(plot_data['steps']):
|
||||||
|
plot_params = dict()
|
||||||
|
plot_params['label'] = step['step']
|
||||||
|
|
||||||
if(plot_config.get('colourmap', 'coolwarm') == 'coolwarm'):
|
if(plot_config.get('colourmap', 'coolwarm') == 'coolwarm'):
|
||||||
num_steps = len(plot_data['steps'])
|
cmap = plt.cm.coolwarm
|
||||||
cmap = plt.cm.coolwarm
|
plot_params['color'] = cmap(idx/(num_steps-1))
|
||||||
|
|
||||||
|
plot_params['linewidth'] = plot_config.get('linewidth');
|
||||||
|
|
||||||
for idx, step in enumerate(plot_data['steps']):
|
ax.plot(step[x_key], step[y_key], **plot_params)
|
||||||
ax.plot(step[x_key], step[y_key], color=cmap(idx/(num_steps-1)), label=step['step']);
|
|
||||||
else:
|
|
||||||
for idx, step in enumerate(plot_data['steps']):
|
|
||||||
ax.plot(step[x_key], step[y_key], label=step['step']);
|
|
||||||
|
|
||||||
if(not 'xformatter' in plot_config):
|
if(not 'xformatter' in plot_config):
|
||||||
plot_config['xformatter'] = 'engineering';
|
plot_config['xformatter'] = 'engineering';
|
||||||
|
@ -266,9 +272,45 @@ def perform_bandwidth_normalization(plot_data, plot_config):
|
||||||
|
|
||||||
step[plot_config['y_key']] = new_y_data
|
step[plot_config['y_key']] = new_y_data
|
||||||
|
|
||||||
|
def perform_peak_normalization(plot_data, plot_config):
|
||||||
|
print("Normalizing peak height to 1")
|
||||||
|
|
||||||
|
for step in plot_data['steps']:
|
||||||
|
y_data = step[plot_config['y_key']]
|
||||||
|
new_y_data = []
|
||||||
|
|
||||||
|
y_max = max(y_data)
|
||||||
|
y_min = min(y_data)
|
||||||
|
|
||||||
|
scaling_factor = 0.1 + 0.9*(y_max if (y_max > (-y_min)) else y_min)
|
||||||
|
|
||||||
|
for datapoint in y_data:
|
||||||
|
new_y_data.append(datapoint / scaling_factor)
|
||||||
|
|
||||||
|
step[plot_config['y_key']] = new_y_data
|
||||||
|
|
||||||
|
def perform_offset_removal(plot_data, plot_config):
|
||||||
|
print("Removing offset")
|
||||||
|
|
||||||
|
for step in plot_data['steps']:
|
||||||
|
y_data = step[plot_config['y_key']]
|
||||||
|
new_y_data = []
|
||||||
|
|
||||||
|
offset_value = np.percentile(y_data, 30) * 0.8
|
||||||
|
|
||||||
|
for datapoint in y_data:
|
||||||
|
new_y_data.append(datapoint - offset_value)
|
||||||
|
|
||||||
|
step[plot_config['y_key']] = new_y_data
|
||||||
|
|
||||||
|
|
||||||
def perform_processing_step(data_process_step, plot_data, plot_config):
|
def perform_processing_step(data_process_step, plot_data, plot_config):
|
||||||
if(data_process_step == 'normalize_bandwidth'):
|
if(data_process_step == 'normalize_bandwidth'):
|
||||||
perform_bandwidth_normalization(plot_data, plot_config)
|
perform_bandwidth_normalization(plot_data, plot_config)
|
||||||
|
if(data_process_step == 'remove_offset'):
|
||||||
|
perform_offset_removal(plot_data, plot_config)
|
||||||
|
if(data_process_step == 'normalize_peak'):
|
||||||
|
perform_peak_normalization(plot_data, plot_config)
|
||||||
|
|
||||||
def generate_plot(plot_config):
|
def generate_plot(plot_config):
|
||||||
global YAML_DIR;
|
global YAML_DIR;
|
||||||
|
|
|
@ -7,6 +7,56 @@ defaults:
|
||||||
Cin: $C_{in}$
|
Cin: $C_{in}$
|
||||||
|
|
||||||
plots:
|
plots:
|
||||||
|
- loadtype: multicsv
|
||||||
|
load:
|
||||||
|
Gemitiv: IMS Measurements/Spectrum_7.csv
|
||||||
|
HighTIME: IMS Measurements/Spectrum_23.csv
|
||||||
|
|
||||||
|
load_values: ["time", "voltage"]
|
||||||
|
|
||||||
|
type: lt_sweep
|
||||||
|
|
||||||
|
data_processing_steps:
|
||||||
|
- normalize_peak
|
||||||
|
- remove_offset
|
||||||
|
- normalize_peak
|
||||||
|
|
||||||
|
y_key: voltage
|
||||||
|
x_key: time
|
||||||
|
|
||||||
|
xscale: linear
|
||||||
|
|
||||||
|
xlabel: Zeit (s)
|
||||||
|
ylabel: Normalisierter Messwert (a.u.)
|
||||||
|
|
||||||
|
linewidth: 1
|
||||||
|
|
||||||
|
ofile: IMS Measurements/averaged_compare.png
|
||||||
|
- loadtype: multicsv
|
||||||
|
load:
|
||||||
|
Gemitiv: IMS Measurements/Spectrum_59.csv
|
||||||
|
HighTIME: IMS Measurements/Spectrum_37.csv
|
||||||
|
|
||||||
|
load_values: ["time", "voltage"]
|
||||||
|
|
||||||
|
type: lt_sweep
|
||||||
|
|
||||||
|
data_processing_steps:
|
||||||
|
- normalize_peak
|
||||||
|
- remove_offset
|
||||||
|
- normalize_peak
|
||||||
|
|
||||||
|
y_key: voltage
|
||||||
|
x_key: time
|
||||||
|
|
||||||
|
xscale: linear
|
||||||
|
|
||||||
|
xlabel: Zeit (s)
|
||||||
|
ylabel: Normalisierter Messwert (a.u.)
|
||||||
|
|
||||||
|
linewidth: 0.8
|
||||||
|
|
||||||
|
ofile: IMS Measurements/raw_compare.png
|
||||||
- load: Parasitics/SingleStage_noise_example.txt
|
- load: Parasitics/SingleStage_noise_example.txt
|
||||||
loadtype: ltspice
|
loadtype: ltspice
|
||||||
type: single
|
type: single
|
||||||
|
@ -29,7 +79,6 @@ plots:
|
||||||
xscale: log
|
xscale: log
|
||||||
|
|
||||||
ofile: Parasitics/SingleStage_noise_example.png
|
ofile: Parasitics/SingleStage_noise_example.png
|
||||||
|
|
||||||
- load:
|
- load:
|
||||||
47M N.1: V1_Measurements/V1.1-a1/47M_cap/linearity_1.csv
|
47M N.1: V1_Measurements/V1.1-a1/47M_cap/linearity_1.csv
|
||||||
47M N.2: V1_Measurements/V1.1-a1/47M_cap/linearity_2.csv
|
47M N.2: V1_Measurements/V1.1-a1/47M_cap/linearity_2.csv
|
||||||
|
@ -691,6 +740,7 @@ plots:
|
||||||
y_key: V(n002) dB
|
y_key: V(n002) dB
|
||||||
|
|
||||||
title: Verstärkung bei variiertem GBWP
|
title: Verstärkung bei variiertem GBWP
|
||||||
|
legend_title: GBWP
|
||||||
ylabel: Normalisierte Verstärkung (dB)
|
ylabel: Normalisierte Verstärkung (dB)
|
||||||
|
|
||||||
- load: DesignEstimate/CompositeStage_ADA4817_StageAmpSweep_bandwidth.txt
|
- load: DesignEstimate/CompositeStage_ADA4817_StageAmpSweep_bandwidth.txt
|
||||||
|
@ -725,4 +775,4 @@ plots:
|
||||||
y_key: V(vout) dB
|
y_key: V(vout) dB
|
||||||
|
|
||||||
title: Verstärkung bei variierter Eingangskapazität
|
title: Verstärkung bei variierter Eingangskapazität
|
||||||
ylabel: Normalisierte Verstärkung (dB)
|
ylabel: Normalisierte Verstärkung (dB)
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
%\documentclass[12pt, a4paper, openany, DIV=16, BCOR=20mm, bibliography=totoc, captions=tableheading, numbers=noenddot]{scrbook}
|
%\documentclass[12pt, a4paper, openany, DIV=16, BCOR=20mm, bibliography=totoc, captions=tableheading, numbers=noenddot]{scrbook}
|
||||||
|
|
||||||
%Book - Digitalversion (doppelseitig)
|
%Book - Digitalversion (doppelseitig)
|
||||||
\documentclass[12pt, a4paper, openany, bibliography=totoc,,captions=tableheading, numbers=noenddot]{scrbook}
|
\documentclass[12pt, a4paper, openany, bibliography=totoc, captions=tableheading, numbers=noenddot]{scrreport}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -348,7 +348,7 @@ Somit wird die Verstärkung der Schaltung in $\Omega$ angegeben. Die grundlegend
|
||||||
\centering
|
\centering
|
||||||
\includegraphics[scale=0.2]{grundlagen/OpAmp_TIA.drawio.png}
|
\includegraphics[scale=0.2]{grundlagen/OpAmp_TIA.drawio.png}
|
||||||
\caption[Grundlegender Schaltkreis eines Transimpedanzverstärkers,
|
\caption[Grundlegender Schaltkreis eines Transimpedanzverstärkers,
|
||||||
eigene Darstellung nach \cite{Reinecke2018Oct} und \cite[S.S. 233]{Horowitz:1981307}]{
|
eigene Darstellung]{
|
||||||
\label{fig:example_tia_circuit}Grundlegender Schaltkreis eines Transimpedanzverstärkers,
|
\label{fig:example_tia_circuit}Grundlegender Schaltkreis eines Transimpedanzverstärkers,
|
||||||
eigene Darstellung nach \cite{Reinecke2018Oct} und \cite[S.S. 233]{Horowitz:1981307}.}
|
eigene Darstellung nach \cite{Reinecke2018Oct} und \cite[S.S. 233]{Horowitz:1981307}.}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue