www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Pinning vom XC9572


Autor: Gargamel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

weiß jemand, wieso die Pins vom XC9572 nicht einfach I/O genannt werden, 
sondern explizit die Information verfügent an welchem "Function-Block" 
und welcher "Macro Zelle" die Pins hängen?

Ist es da nicht egal wie man wo seine Leitungen anschließt und darauf 
vertraut, dass das Synthesetool alles richtig macht?

gruß
Gargamel

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Gargamel

>weiß jemand, wieso die Pins vom XC9572 nicht einfach I/O genannt werden,
>sondern explizit die Information verfügent an welchem "Function-Block"
>und welcher "Macro Zelle" die Pins hängen?

Ganz einfach, weil eben trotz des hohen Freihitsgrades eben doch nicht 
alle Logik beliebig verteilt werden kann. Wenn zusammgehörige Logik auf 
verschiedene Funktion-Bloks verteilt wird, wird sie unter Umständen 
langsamer, braucht mehr Verdrahtungsrssourcen und Produkttereme. Im 
schlimmsten Fall passt das Design nicht in den CPLD, obwohl es bei 
geordneter Verteilung gepasst hätte.

>Ist es da nicht egal wie man wo seine Leitungen anschließt und darauf
>vertraut, dass das Synthesetool alles richtig macht?

"Vertrauen ist gut, Kontrolle ist besser."
  W.I.L.

;-)
Falk

Autor: Gargamel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Falk:

Danke schonmal. Das heißt also ich sollte darauf achten, dass ich 
ähnliche Leitungen zusammenfasse - wie z.B. 8Bit Datenleitungen usw - 
und an ein Function-Block anschließe. Okay das sollte möglich sein. Ich 
hab bisher nur mit FPGAs gearbeitet und da ging es halt immer irgendwie 
:-)

gruß
gargamel

Autor: Gargamel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Äääh ...

Ich hab da noch eine Frage :-(

Hab einen kleinen taktsynchronen Adress-Dekoder mit einem gemultiplexten 
8Bit Adress/Datenbus und jeweils 8 Ein- und Ausgänge synthetisiert. Dazu 
hab ich ISE9.1 verwendet.

Kann mir jemand sagen, ob es bei den CPLDs auch Timing-Informationen 
gibt? Woher weiß ich wie schnell mein Takt sein darf?

gruß
Gargamel

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das heißt also ich sollte darauf achten, dass ich
> ähnliche Leitungen zusammenfasse - wie z.B. 8Bit Datenleitungen usw -
> und an ein Function-Block anschließe.

Eher würde ich nicht zu viele Datenleitungen in einen Funktionblock 
legen, aber das hängt auch von der Anwendung ab.
Angenommen Du hast 8 interne 8-Bit Register und Du möchtest diese über 
den Datenbus lesen. Für jedes Bus-Signal gehen dann 8 Signale in den 
Function Block hinein, also insgesamt 64. Dazu kommen mindesten 3 
Signale für den Selektor, ergibt 67.
Der Function Block hat aber nicht so viele Eingänge, ich glaube 54 beim 
XC9500XL und 36 beim CoolRunner -> Problem !


Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus Falser

>Eher würde ich nicht zu viele Datenleitungen in einen Funktionblock
>legen, aber das hängt auch von der Anwendung ab.
>Angenommen Du hast 8 interne 8-Bit Register und Du möchtest diese über

Das klappt so oder so nicht. Ein Function-Block hat bestenfalls 18 
Macrozellen, das wird eng mit 64 FlipFlops . . .

Generell ist anzuraten, bei sehr ausgelasteten CPLDs das Design 
möglichst vor dem Layout der Leitperplatte komplett zu synthetisieren 
und dem Compiler das Pinning aussuchen lassen. Sonst könnte es passieren 
dass es mit dem festgelegten Pinning nicht passt.

MFG
Falk

Autor: Gargamel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Falk:
Ja das hab ich dann auch gemacht. Erst synthetisiert, dann nach und nach 
die Pins gelockt und es geht noch einwandfrei.

Sind auch nur um die 35% belegt - also noch genug Resourcen übrig und es 
kommt im Normalfall auch nichts mehr dazu.

gruß
Gargamel

Autor: Joerg Wolfram (joergwolfram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eventuell ist es noch ratsam, den Fitter-Report nach hohen 
"Konzentrationen" an Produkttermen zu checken. Wenn man die Tools die 
Pins vergeben lässt (und nach Speed optimiert), liegen manchmal sehr 
produkttermlastige Signale eng nebeneinander. Wenn die Pins so gelockt 
sind und dann doch noch etwas geändert werden muss, kann es dann 
Probleme geben. Wenn das CPLD recht voll ist, kann dann das Design 
möglicherweise nicht mehr gefittet werden oder das Timing wird 
schlechter, da "Zwischensignale" gebildet werden müssen. Ich hatte schon 
Designs, die bei 65% Ressourcenverbrauch sorgfältige manuelle 
Optimierung der Pins gebraucht haben damit der Fitter nicht abbricht.

Gruß Jörg

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Eher würde ich nicht zu viele Datenleitungen in einen Funktionblock
>>legen, aber das hängt auch von der Anwendung ab.
>>Angenommen Du hast 8 interne 8-Bit Register und Du möchtest diese über

>Das klappt so oder so nicht. Ein Function-Block hat bestenfalls 18
>Macrozellen, das wird eng mit 64 FlipFlops . . .

Die 8 internen Register sind natürlich in anderen Function Blocks! Aber 
die Multiplexer, welche zwischen den Register-Ausgängen umschalten sind 
aus Produkttermen des FB aufgebaut, und stehlen Produktterme von der 
benachbarten Macrozelle (beim XC9500). Deshalb sollte man bei 
Datenbussen immer ein Pin, zw. Macrozelle zwischen den Signalen 
freilassen.
Klaus

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus Falser

>benachbarten Macrozelle (beim XC9500). Deshalb sollte man bei
>Datenbussen immer ein Pin, zw. Macrozelle zwischen den Signalen
>freilassen.

Nöö.
Man muss die Register bzw. Datenleitungen bitweise sortiert in 
Function-Blocks mappen.
Wahrscheinlich macht das der Compiler automatisch, wenn man ihm freie 
Hand lässt.

MfG
Falk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.