haben fpgas eigene clk Generatoren?
oder gibt man einfach bei vivado über
1
create_clock-period123[get_portspinname]
eine vom pinnamen abgeleitete Frequenz an?
hea?
das sind doch eigentlich die generated clocks
also woher kommt die create_clock?
Habe gerade das hier gefunden in einem anderen thema:
>Die>internen Frequenzen werden normalerweise von einem einzigen angelegten>Takt erzeugt. Den erzeugten Takt kann man auch auf ein Pin geben und so>extern verfügbar machen
Create-clock sagt dem Tool nur das über den Pin eine entsprechende
Clock kommt und er die bitte ordentlich über das Clocknetz routen soll
und die entsprechenden Timings korrekt generiert und checkt. Die Clock
wird nicht im Tool generiert sondern kommt von irgendwo extern vom PCB
zum Chip (Die kann man zwar intern auch "umwandeln", aber dafür braucht
man erstmal grundsätzlich eine).
Cle schrieb:> Create-clock sagt dem Tool nur das über den Pin eine entsprechende> Clock kommt und er die bitte ordentlich über das Clocknetz routen soll> und die entsprechenden Timings korrekt generiert und checkt.
warum muss man dann dort ne periode angeben, wenn die doch sowieso von
außen bestimmt wird?
Zitty Z. schrieb:> haben fpgas eigene clk Generatoren?
Wenige. Mir ist den der MachXO2 von Lattice bekannt, wobei der
Taktgenerator nicht besonders genau und stabil ist.
> oder gibt man einfach bei vivado übercreate_clock -period 123 [get_ports> pinname]>> eine vom pinnamen abgeleitete Frequenz an?
Nein. Der Name ist völlig hupe. Man legt ein Taktsignal (mit den für die
entsprechende FPGA-Bank gültigen Pegeln) an und sagt dem Designtool,
welchen Frequenz dieses Signal hat.
Da Tool kann dann prüfen ob das Design mit diesem Takt läuft.
>>Die>>internen Frequenzen werden normalerweise von einem einzigen angelegten>>Takt erzeugt. Den erzeugten Takt kann man auch auf ein Pin geben und so>>extern verfügbar machen
Das geht natürlich trotzdem, z.B. um zu prüfen, ob die generierten Takte
auch die richtige Frequenz haben.
Duke
* hea was passiert eigentlich wenn man T = 1000 anlegt oder T = 1 und
man hat das falsche dort eingetragen
* und woher weiß man was man anlegen sollte: min / max?
* kann man dann einfach wenn zb max f= 100 hz "erlaubt" sind schreiben
f=50 hz und auch 50 hz anlegen und dann geht das?
* Steht das einfach im Datenblatt?
Zitty Z. schrieb:> warum muss man dann dort ne periode angeben, wenn die doch sowieso von> außen bestimmt wird?
Das ist wie z.B. beim AVR, wo du im Sourcecode einen Takt angeben musst,
damit die Toolchain mit den richtigen Zahlen rechnet.
Zitty Z. schrieb:> hea was passiert eigentlich wenn man T = 1000 anlegt oder T = 1 und man> hat das falsche dort eingetragen
Probiers doch einfach aus. Bei 1 wird alles grün leuchten, weil das
leicht zu schaffen ist. Und bei 1000 wirst du Fehler bekommen, weil die
Toolchain das Design nicht so schnell hinbekommt.
> und woher weiß man was man anlegen sollte: min / max?
DU bist doch der Designer, der die Anforderungen an das System kennen
und umsetzen muss. Wenn du einen Datenstrom mit 2Mio Datenworten pro
Sekunde verarbeiten willst, dann tust du gut daran, das Design schneller
als mit 2MHz zu takten.
> kann man dann einfach wenn zb max f= 100 hz "erlaubt" sind schreiben> f=50 hz und auch 50 hz anlegen und dann geht das?
Jein. Einerseits ist das, wie wenn du mit einem Auto, das 200 fahren
könnte, nur 20 fährst: es ist noch viel sicherer. Andererseits können
aber Teile des FPGAs eine minimale Taktfrequenz brauchen (z.B. DCM) und
dann ist es, wie wenn du mit dem Fahrrad hinter einer Schnecke
herfährst: unheimlich wackelig und instabil.
> Steht das einfach im Datenblatt?
Es steht im Datenblatt.
Die Frage, ob es für dich "einfach" ist, die nötigen Werte zu finden
und zu interpretieren, würde ich derzeit mit "Nein" beantworten. Aber
mach einfach mal los, du lernst ja noch dazu.
Lothar M. schrieb:>> Steht das einfach im Datenblatt?> Es steht im Datenblatt.> Die Frage, ob es für dich "einfach" ist, die nötigen Werte zu finden> und zu interpretieren, würde ich derzeit mit "Nein" beantworten. Aber> mach einfach mal los, du lernst ja noch dazu.
Als Anfänger sollte man nicht zu viel auf diese hohen Werte geben denn
sie beziehen sich auf einzelne Elemente und lassen sich nur mit
hochoptimiertem Design erreichen. In einem Wald-und-Wiesen-Design
befinden sich viel zu viele Logikstufen und Routing zwischen den
Flipflops und reduzieren die maximale Frequenz. Das ist nicht so
dramatisch wie es sich anhört denn in den meisten Designs geht es darum
eine bestimmte Aufgabe in einer bestimmten Zeit zu erfüllen und nicht
eine maximale Leistung zu erzielen.
Zitty Z. schrieb:> angelegte Frequenz T = 10 f = 0,1>> 1set_property PACKGE_PIN E123 [get_ports {clk}]> 2create_clock -name egal -period 10 [get_ports clk]
Damit sagst du der Synthese das eine bestimmte Frequenz anliegt und sie
das berücksichtigen soll. Du musst allerdings selber dafür sorgen dass
diese Frequenz tatsächlich anliegt.
Zitty Z. schrieb:> woher kommt die create_clock?
aus dem Code eines heute pensionierten, uralten Programmierers bei der
firma SYNOPSIS, der vor ungefähr 38 Jahren eine HDL entwickelt hat, mit
der man am Computer hardware simulieren können sollte. Das ist so
ähnlich wie bei SPICE. Dieser Takt instanziierte ein kleines C-Modul aus
einer Library, das anhand der Parameter vor sich hin taktete. Ähnlich
sind auch die constraints zu lesen: Ein "add delay" fügt dem zu
compilierenden Code einen Zeitverzögerer hinzu, der alles, was vorne
reinkommt, etwas versetzt weitergibt.
Dann kam vor fast 27 Jahren einer auf die Idee, eine Software zu
schreiben, die den Simulations-Code durchguckt und eine
Hardware-Struktur daraus erzeugt. Der Typ hat dann bei Lattice
angefangen und ist angeblich später zu Xilinx. Die haben dann später
sogar das "wait until clock" in eine pre-FF-Struktur überführt, weshalb
man heute so takten kann.
Uns ist davon eine HW-Beschreibungssprache geblieben, die nach wie vor
nach Software aussieht, immer noch simulierbar ist und praktisch ein all
around Sript ist, dass Verfahrens- und Strukturanweisungen enthält.
Und weil VHDL, Verilog und andere sich parallel zu den ASIC-scripten
entwickelt haben, sind viele Instanziierungen und Konstrukte heute
sowohl in VHDL als auch in TCL und SDC anzugeben und einander ähnlich.
Duke Scarring schrieb:> Wenige. Mir ist den der MachXO2 von Lattice bekannt,
Wenn mans genau nimmt haben sogar recht viele einen einfachen
(ungenauen) Taktgenerator intern - fürs Konfigurieren. Bei manchen kann
man den auch als Taktquelle im Design nutzen.
Messtechnikprofi schrieb:> Zitty Z. schrieb:>> woher kommt die create_clock?>> aus dem Code eines heute pensionierten, uralten Programmierers bei der> firma SYNOPSIS, der vor ungefähr 38 Jahren eine HDL entwickelt hat, mit> der man am Computer hardware simulieren können sollte. Das ist so> ähnlich wie bei SPICE.
Woher weißt du das alles?!
Cle schrieb:> Create-clock sagt dem Tool nur das über den Pin eine entsprechende> Clock kommt und er die bitte ordentlich über das Clocknetz routen soll> und die entsprechenden Timings korrekt generiert und checktBlechbieger schrieb:> Damit sagst du der Synthese das eine bestimmte Frequenz anliegt und sie> das berücksichtigen soll. Du musst allerdings selber dafür sorgen dass> diese Frequenz tatsächlich anliegt.
Danke :)
Blechbieger schrieb:> icht zu viel auf diese hohen Werte geben denn> sie beziehen sich auf einzelne Elemente und lassen sich nur mit> hochoptimiertem Design erreichen
ja ok aber das ist schon einen Schritt weiter :)
Ich meine selbstverständlich muss das Design korrekt funktionieren!
Wollte nur wissen was für die Takteingänge möglich ist.
Z.b. 50 Hz wäre möglich
(werde aber jetzt noch ein bisschen nach "Hz" im Datenblatt schauen..)
Aber wann wird es nicht mehr möglich?
Ab wann sagt der Hersteller, dass es nicht gut ist weil die Eingänge das
nicht verarbeiten können?
Oder ist das gar nicht so eng zu sehen?
Also wenn z.B. 300 MHz bei dem FPGA funktioniert, dann nehme ich auch
einfach bei dem anderen FPGA mal 300 MHz und schaue ob alles läuft.
User32 schrieb:> Wenn mans genau nimmt haben sogar recht viele einen einfachen> (ungenauen) Taktgenerator intern - fürs Konfigurieren. Bei manchen kann> man den auch als Taktquelle im Design nutzen.
Braucht der/ ein FPGA eigentlich grundlegend einen externen Takt?
Oder läuft der auch so?
Zitty Z. schrieb:> Wollte nur wissen was für die Takteingänge möglich ist.> Z.b. 50 Hz wäre möglich> (werde aber jetzt noch ein bisschen nach "Hz" im Datenblatt schauen..)
Ich habe mal schnell das Datenblatt des Cyclone 10 LP, dem neuesten
Low-End FPGA von Intel, angeschaut. Für LVDS-Clockeingänge scheinen
selbst im langsamsten Speedgrade 320 MHz möglich zu sein. Aber die
Speicherblöcke im selben Speedgrade schaffen nur 200 MHz. Die 125 MHz
eines Gigabit-Ethernet Designs wird man sicher nicht mit einfachem
drauflosprogrammieren erreichen. 50 MHz für eigene Designs sollten sich
aber recht einfach erreichen lassen.
Blechbieger schrieb:> Die 125 MHz> eines Gigabit-Ethernet Designs wird man sicher nicht mit einfachem> drauflosprogrammieren erreichen.
Warum? Sind 125 so schlimm?
Blechbieger schrieb:> Aber die> Speicherblöcke im selben Speedgrade schaffen nur 200 MHz.
ok aber wenn man die Speicherblöcke nicht benötigt, dann wäre es egal
oder?
also angenommen mein Design ist so futuristisch konzipiert dass es mit
10 GHZ laufen würde.
Kann ich dann einfach 10 GHz anschließen und es würde gehen?
Dazu schaue ich mir gleich mal die Eingänge an, wie die aufgebaut sind
:D
Zitty Z. schrieb:> (werde aber jetzt noch ein bisschen nach "Hz" im Datenblatt schauen..)
Mein Geheimtipp: sieh dir den Rest ruhig auch noch an. Suche auch nach
"ns", denn meist wird nicht die Frequenz, sondern ihr Kehrwert
angegeben.
Zitty Z. schrieb:> Kann ich dann einfach 10 GHz anschließen und es würde gehen?
Nein, garantiert nicht.
Aber wie gesagt: probiers doch einfach mal aus. Versuch macht kluch. Ich
würde sowieso keinem glauben, der im Internetz irgendwas erzählt. Ich
würde das selber untersuchen.
Zitty Z. schrieb:> Z.b. 50 Hz> 10 GHZ> Sind 125 so schlimm?
Du gehst da offensichtlich mit dem einem rüstigen Maß Naivität dran.
Mach einfach mal drauf los, dann wirst du sehen, dass 125MHz je nach
FPGA durchaus eine Hausnummer sind, die man erst mal erreichen muss.