Hallo,
hab ein kleines Problem
Ich habe einen PID Regler in VHDL implementiert, ich möchte dass die P I
D Anteile, die ich selbst festlege, auch gebrochenrationale Zahlen sein
können. Ich habe dazu jeweils ein Register das eine Wortbreite von 28
bit hat, dabei entsprechen die ersten 10 bit vor dem Komma und die
letzten 18 bits nach dem komma. Die Auflösung des ADC DAC beträgt 14
bit. Das heißt wenn meine Regeldifferenz entsteht will ich sie dann auf
die interne Wortbreite erweitern(28 bit), um dann mit den eizelnen
Anteilen zu multiplizieren.
Bsp.:
Meine PID Anteile sehen wiefolgt aus:
1 | intern_data_width : integer := 28;
|
2 |
|
3 | k_p: in std_logic_vector(intern_data_width-1 downto 0);
|
4 | k_i: in std_logic_vector(intern_data_width-1 downto 0);
|
5 | k_d: in std_logic_vector(intern_data_width-1 downto 0);
|
6 |
|
7 |
|
8 | k_p => "0000000001110000000000000000",
|
9 | k_i => "0000000000000000000000100000",
|
10 | k_d => "0000000000000000001000000000",
|
11 |
|
12 | --Regeldifferenz
|
13 |
|
14 | e => 000000100000000
|
15 |
|
16 | --z.B e_mult_kp
|
also muss ich erst e auf die interne Wortbreite erweitern um dann mit
den Anteilen multiplizeiren zu können. kann mir einer erklären wie man
das erweitert, was man dabei berücksichtigen muss. Wäre für jede Hilfe
Dankbar.
Danke.
MfG
A.