Hi! Gibt es etwas wie #define/#ifdef in vhdl ? Ich habe mir nämlich zwei Komponenten geschrieben die unterschiedliche Kameras ansteuern. Die ports sind bei beiden identisch. Jetzt möchte ich etwas wie #define CAM_TYPE CAM_MICRON #if CAM_TYPE = CAM_MICRON cam : cam_micron PORT MAP( ...) ; #else cam : cam_firma2 PORT MAP(...); #endif machen. Also per "define" entscheiden welche vhdl komponente eingebunden wird. Der Code für die andere soll keinerlei beachtung finden. (Ich arbeite mit Xilinx WebPack auf einem Spartan3) Oder gibt es eine andere geschickte möglichkeit wie ich per "configfile" sachen sagen kann wie kamera = xy ?
leider nein, auch wenn es viele gerne hätten. In VHDL musst Du mit Konstanten arbeiten und dann ifdef/else das gewünschte "herausarbeiten". Der Compiler zur Synthese schmeisst alles überflüssige dann raus. Viele Grüße Olaf
ifdef/else ist 'türlich quatsch: if/else meinte ich. Eine weitere Möglichkeit wäre generate:
1 | cam1: if CAM_TYPE = CAM_MICRON generate |
2 | cam_i: cam_micron PORT MAP( ...) ; |
3 | end generate; |
4 | |
5 | cam2: if CAM_TYPE = CAM_FIRMA2 generate |
6 | cam_i: cam_firma2 PORT MAP(...); |
7 | end generate; |
Viele Grüße Olaf
Hi! Das mit dem generate gefällt mir sehr gut :D Vielen Dank! Erspart mir jedes mal 20 zeilen auszukommentieren und einzukomentieren g
eine weitere Möglichkeit ist die "configuration". So kann man verschiedene architectures zu einer entity programmieren und diese dann auswählen. configuration <Name der configuration> of <Name aufrufende entity> is for <Name aufrufende architecture> for all: <Name aufgerufene component> use entity work.<Name aufgerufene component>(<architecture der component>); end for; end for; end configuration <Name der configuration>; Das ganze muss dann im aufrunfenden VHDL-File stehen, und zwar HINTER der architecture. ich hoffe es ist nicht zu verwirrend beschrieben. VG m.mue
>Gibt es etwas wie #define/#ifdef in vhdl ?
Du kannst auch einen C-Präprozessor für so etwas benutzen.
Z.B. den GNU Cpp (mit -P aufrufen)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.