Hallo allerseits,
ich habe hier einen VHDL Block, der mir einen PWM-Counter realisieren
soll. Bisher habe ich in einem separaten Package definiert:
1 | CONSTANT PWM_SIZE : positive := 3;
|
2 | SUBTYPE PWM_COUNTER_VALUE IS unsigned(PWM_SIZE - 1 DOWNTO 0); -- Typ für den Zähler
|
3 |
|
4 | CONSTANT NUM_PWM_CHANNELS : positive := 8;
|
5 | TYPE PWM_DC_VALUES IS ARRAY (NUM_PWM_CHANNELS - 1 DOWNTO 0) OF PWM_COUNTER_VALUE; -- Typ für die Vergelichswerte
|
Ich brauche jetzt aber zwei Blöcke mit unterschiedlichen Werten für
Breite der Zähler und Anzahl Kanäle.
Meine Idee war die Verwendung von GENERICs. Dazu muss ich die Typen ja
als unconstrained arrays definieren.
Wie kann ich die Struktur PWM_DC_VALUES abbilden? Wenn ich schreibe
1 | TYPE PWM_DC_VALUES IS ARRAY (positive range <>) OF unsigned (positive range <>);
|
bekomme ich einen Compiler-Fehler. Gleiches bei
1 | TYPE PWM_DC_VALUES IS ARRAY (positive range <>) OF unsigned;
|
Wie kann ich nun diese Datenstruktur abbilden? Das einzige was ich mir
vorstellen könnte, wäre eine Wandlung (manuell) zu
1 | std_logic_vector(positive range <>, integer range <>)
|
oder eben verschiedne PWM-Blöcke verwenden (ungünstig wegen der
Wartung).
Irgendwelche anderen Lösungsvorschläge, wie ich das generisch
hinbekommen kann?
Christian