Gast
#4463113
Hallo ihr Experten, in einem Design habe ich im Toplevel verschiedene Busse (Adressbus / Datenbus / usw.) die im Toplevel jeweils als std_logic_vector zusammengefasst als IN oder OUT oder INOUT deklariert sind. Bei IN sowie INOUT sind diese im LPF-File (Constraint-File für Lattice Diamond) zusätzlich mit PULLUPs und einer Eingangshysterese versehen, bei OUT geht das nicht, da das FPGA diese Pins ja "immer" treibt. Soweit funktioniert dies auch einwandfrei. Im Projekt gab es nun eine Änderung, dass in einem Bus der bisher komplett INOUT war, nun eine Leitung nur noch als IN und eine nur noch als OUT verwendet wird, die restlichen Signale bleiben weiterhin INOUT. Da ich die Pinbelegungen als busxyz : INOUT std_logic_vector(20 downto 0); deklariert habe nun die Frage, wie kann ich dies dem Synthesetool am geschicktesten klar machen, dass z.B. busxyz(5) nur noch als IN und busxyz(7) nur noch als OUT betrieben werden, der Rest aber INOUT bleibt? -> Müsste ich nicht im Toplevel angeben, welcher Bereich des Busses als IN, welche als OUT und welcher als INOUT verwendet wird? Falls ja, wie muss dies genau erfolgen, denn ich habe ein paar Sachen ausprobiert - leider hatte die Synthese bzw. spätstens der Mapper immer etwas zu meckern. Hintergrund: ------------ Obwohl ich die restlichen Signale als INOUT verwende, erscheint folgende Fehlermeldung für die restlichen INOUT-Signale, obwohl alle mit einem internen PULLUP versehen sein sollten: WARNING - Invalid PULLMODE assignment of 'UP' for output PIO buffer 'busxyz_pad[0]' (for busxyz[0] port). PULLMODE cannot be assigned to output buffers and will be ignored. Wäre echt klasse, wenn mir einer von euch einen Tipp geben kann ;-)