Hallo zusammen,
ich möchte gerne in einem Testbench ein analoges Sinussignal für ein mir
gegebenes ADC Modell mit Datentyp REAL generieren.
1 | use ieee.math_real.all;
|
2 | ...
|
3 | input_gen : process
|
4 | variable v_grad : real := 0;
|
5 | begin
|
6 | v_grad := v_grad + 0.001;
|
7 | if v_grad_multi = 360 then
|
8 | v_grad_multi = 0;
|
9 | end if;
|
10 | adc_in <= (1.5 * sin(math_pi * v_grad / 180.0));
|
11 | end process;
|
Damit wollte ich mir ein Sinussignal mit Amplitude 1,5V (Vref des ADC)
erzeugen, das sich der ADC dann absamplen kann, je nachdem wann der
Start Befehl kommt.
Nun bin ich soweit und wollte anfangen zu simulieren. da fällt mir auf,
dass ich ja noch rein gar keine Zeitbasis habe. In getakteten Systemen
gibt die Zeitbasis die Taktperiode vor. Aber hier in diesem Prozess habe
ich keinen Takt und auch noch keine Angabe, wie schnell und oft die
Grad-Variable hochgezählt wird und mir damit meine Frequenz vorgibt.
Ich versuche zum ersten Mal auf diese Art und Weise zu simulieren, so
dass mir die Grundbegriffe für diese sehr weit von der Hardware
entfernte Simulation fehlen.
Ich wäre für Hinweise sehr dankbar!
Vielen Dank!
Holger
PS: Der nächste Schritt wäre dann den Sinus so weit parametrierbar zu
machen, dass ich Amplitude, Frequenz usw. in einer Datei ablege und die
vhdl-Testbench diese Datei dann ausliest und die Signalerzeugung
entsprechend parametriert. So kann ich mir ein ständiges neues
kompilieren des Projektes sparen und brauch nur die Datei ändern. Aber
das ist erst der nächste Schritt....