Forum: FPGA, VHDL & Co. haben fpgas eigene clk Generatoren?


von Zitty Z. (Firma: ZATT) (zitierer)


Lesenswert?

haben fpgas eigene clk Generatoren?
oder gibt man einfach bei vivado über
1
create_clock -period 123 [get_ports pinname]

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

von Cle (Gast)


Lesenswert?

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).

von Zitty Z. (Firma: ZATT) (zitierer)


Lesenswert?

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?

von Duke Scarring (Gast)


Lesenswert?

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

von Zitty Z. (Firma: ZATT) (zitierer)


Lesenswert?

angelegte Frequenz T = 10 f = 0,1

1
set_property PACKGE_PIN E123 [get_ports {clk}] 
2
create_clock -name egal -period 10 [get_ports clk]

dann im synthesierbaren design:
1
entity test is
2
 port( 
3
  in clk:std_logic
4
 );
5
end test;


* 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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

: Bearbeitet durch Moderator
von Blechbieger (Gast)


Lesenswert?

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.

von Messtechnikprofi (Gast)


Lesenswert?

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.

von User32 (Gast)


Lesenswert?

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.

von Zitty Z. (Firma: ZATT) (zitierer)


Lesenswert?

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?!

von Zitty Z. (Firma: ZATT) (zitierer)


Lesenswert?

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
Blechbieger 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?

von Blechbieger (Gast)


Lesenswert?

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.

von Zitty Z. (Firma: ZATT) (zitierer)


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Zitty Z. (Firma: ZATT) (zitierer)


Lesenswert?

ja muss ich testen.
Aber einige wichtige Infos habe ich ja erhalten :D

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
Noch kein Account? Hier anmelden.