Eingangsbuffer reduziert IOBs?

#2312902
Lesenswert?

Es gibt an einem physikalisch am FPGA vorhandenen Pin/Ball die 
Möglichkeit, das Eingangssignal entweder durch den IOB zu leiten, oder 
durch den IBUF. Mehr Anschlüsse bekommt das FPGA dadurch nicht, und die 
freiwerdenden IOBs kann man eigentlich für nix anderes nehmen. Ein IOB 
besteht aus ein paar FlipFlops, die fest dem jeweiligen FPGA-Anschluss 
zugeordnet sind. Wenn du einen IBUF nimmst, umgehst du den Eingangszweig 
des IOB und der liegt dann brach.
Bist du der gleiche wie "Di" mit dem Thema "zu viele IOBs"?
#2312944
Lesenswert?

Da musst du nix extra definieren. Jedes Signal, was nicht über einen IOB 
geht, geht automatisch über einen IBUF. Wenn du ein Signal direkt hinter 
dem Eingang in ein FlipFlop übernimmst, kann dieses FlipFlop in einen 
IOB gepackt werden. Entweder durch die Option im Sythesizer für alle, 
oder mit einem Attribut für das einzelne Signal. Aber wenn du das 
weglässt, oder das Signal zwischen dem Eingang und dem ersten FlipFlop 
irgendwie kombinatorisch verknüpst, wird es automatisch ein IBUF.
Nur, wenn du differenzielle Eingänge (LVDS) benutzen willst, musst du 
das durch die Instanziierung eines IBUFDS extra angeben.
Gast #2313045
Lesenswert?

Christian R. schrieb:
>  Entweder durch die Option im Sythesizer für alle,
> oder mit einem Attribut für das einzelne Signal. Aber wenn du das
> weglässt, oder das Signal zwischen dem Eingang und dem ersten FlipFlop
> irgendwie kombinatorisch verknüpst, wird es automatisch ein IBUF.

hi,Christian, ich hab mal probiert, aber die IOBs Zahl bleibt nach dem 
Synthese nicht verändert.
Du meintest ,es wird automatisch ein IBUF, wenn ich die Signale nicht 
mit  Attribut (in) definiere,oder?
Ich hab wie folgend einen Port definieren:
          port (
    clk        : in  STD_LOGIC;
    a          :     STD_LOGIC_VECTOR(6 downto 0);
    b          : in  STD_LOGIC_VECTOR(6 downto 0);
    a_out      : out STD_LOGIC_VECTOR(6 downto 0);
    b_out      : out STD_LOGIC_VECTOR(6 downto 0)
    );
aber die Synthese ergebnisse nicht verändert.
Vielleicht hab ich noch nicht gut verstanden. Kann vielleicht mir noch 
helfen? Danke!
#2313135
Lesenswert?

Natürlich bleibt die Anzahl der IOB gleich. Es sind ja genauso viele 
Anschlüsse die von außen kommen, wie vorher. Nicht, das Attribut in, 
sondern das Attribut IOB.
Mir scheint, du hast da ein grundsätzliches Verständnis-Problem. Dein 
Design hat genau so viele Eingänge, wie du in der Entity definierst, 
nicht mehr und nicht weniger. Da hilfts auch nichts, wenn du statt eines 
IOB einen IBUF hast. Mit dem IOB Attribut kann man Signale explizit als 
IOB ausführen, wenn man die Synthese bzw. den Mapper dazu zwingen will. 
Die IOBs, die im Synthesereport ausgegeben werden, bleiben von der 
Anzahl her gleich.
(Firma: Leckermittag.de) #2314661
Lesenswert?

> Kann man IBUF ausnutzen um IOBs zu reduzieren?

Mach dir erst einmal klar, warum du die Anzahl der IOBs reduzieren 
willst. Hat dein Design mehr Ports als das FPGA Datenpins hat? Das wird 
sich durch IBUFs nicht ändern. Da wirst du stattdessen mehrere Daten 
nacheinander auf ein und demselben Pin übertragen müssen, oder auf ein 
größeres FPGA wechseln.
Gast #2316243
Lesenswert?

Anbei ein Beispiel wie man viele Datenbits an einen FPGA anschliesst:

http://www.analog.com/static/imported-files/eval_boards/265181843HSC_ADC_EVALC.pdf

Das Evalboard besteht aus einem 8fachen 14 bit Wander AD9252 (112 Bits) 
die serial per LVDS an einen Virtex-4 gesendet werden. Die Rückgewinnung 
der 14 bit breiten Worte macht man in einem Virtex-6 anders 
(SERDES-Primitiv), aber das Prinzip würfte klar werden.

MfG,

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren