mikrocontroller.net

Forum: FPGA, VHDL & Co. physikalische Realisation des falling_edge Konstrukts


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Oli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In VHDL kann man bekanntlich auch auf die fallende Flanke eines Signals 
triggern - in der Simulation sowieso und auch in der Synthese geht es. 
Meine Frage dazu ist, wie das physikalisch realisiert wird?

Ich denke nicht, dass die flankengesteuerten FFs zwei Eingänge haben 
oder überall DDR-Zellen herumliegen. Eher schon kann ich mir vorstellen, 
dass Clock-Regionen partiell mit einem invertierten Takt versorgt werden 
und die dann invertiert funktionieren.

Die sich anschliessende Frage ist, ob ein solches Design überhaupt 
zweckmässig ist und ob man nicht gleich auf der doppelten Frequenz 
arbeitet. Da Taktnetze aber auch ohne grosse FF-Belastung schon ziemlich 
Strom ziehen, kann ich mir vorstellen, dass man strommässig hierbei 
schlechter fährt - während es für das design und die Synthese einfacher 
werden sollte.

Mal generell gesprochen sollte es für sowas ja wenige Anwendungen geben, 
für die es dann wiederum erlaubt sein könnte, einen kleinen Teil des 
Design zu auf falling zu bauen.

Beim Schreiben fällt mir jetzt gerade ein, dass ich früher mal gelernt 
habe, dass die CLK-Verdrahtung baumartig gespreizt erfolgt und alle 
halbe Nase lang eine Taktauffrischung erfolgen muss. Der Takttreiber 
würde ja im einfachsten Fall invertieren. Damit läge dann der negierte 
Takt doch überall rum. (?)

Autor: Strickwettbewerbgewinner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Taktflanke, auf die die FF's triggern, ist halt programmierbar, wohl 
durch einen "dedicated" Inverter am Takteingang.

Autor: Oli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den sehe ich aber nirgends in den Logikbeschreibungen von den 
Herstellern.

Autor: Georg A. (georga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht sehen, lesen ;)

zB. Xilinx Spartan3E beim SLICEM-Bildchen:

"Options to invert signal polarity as well as other options that enable 
lines for various functions are not shown."

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oli schrieb:
> Meine Frage dazu ist, wie das physikalisch realisiert wird?
Man muss nur den Takt invertieren. Ein Inverter mit passendem 
Multiplexer könnte das, oder ein XOR, oder eine trickreiche interne 
Beschaltung des Flipflops. Du wirst den exakten Aufbau, die genauen 
Hintergründe, Spartricks und Optimierungen (ein Transistor weniger pro 
FF sind ein paar tausend Transistoren pro FPGA) nicht so ohne weiteres 
erfahren...

> Die sich anschliessende Frage ist, ob ein solches Design überhaupt
> zweckmässig ist und ob man nicht gleich auf der doppelten Frequenz
> arbeitet.
Den Schuh tut sich keiner an! Denn wenn es so wäre, dann könnte ich mir 
noch einige bisher nicht realisierbare Schaltungstricks vorstellen, oder 
das gesamte Design gleich doppelt so schnell takten...

Autor: Vanilla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Georg A. schrieb:
> Nicht sehen, lesen ;)
>
> zB. Xilinx Spartan3E beim SLICEM-Bildchen:
>
> "Options to invert signal polarity as well as other options that enable
> lines for various functions are not shown."

Hallo Georg,

eine Eigenart des Spartan3 (ich weiss jetzt nicht inwieweit das ach auf 
den 3E trifft, war dass er nicht wie andere Familien neben statische "0" 
auch "1" bereitstellte.

Das hatte dann zur Folge das Du in Spartan3 Designs ein "1" Netz mit 
einem riesigen Fanout vorfindest, welches die ISE Synthese nutzt um ale 
SLICE / BRAM und DSP Sliceanschlüsse versorgt welche mit einem logischen 
"1" Pegel versorgt werden wollen.

Ich habe in keinem Fall gesehen, dass ISE dann die Eingangspolarität 
selbst umgedreht hätte um eben nicht dieses unsägliche "1" Netz 
anzuschliessen, sondern das an fast allen Stellen verfügbare "0" Netz.

Lange Rede kurzer Sinn, die Polarity Optionen mögen da sein, ob die 
Synthesetools dies von sich aus nutzen steht auf einem ganz anderen 
Blatt...

Autor: Vanilla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oli schrieb:
> Die sich anschliessende Frage ist, ob ein solches Design überhaupt
> zweckmässig ist und ob man nicht gleich auf der doppelten Frequenz
> arbeitet.

Doppelte Taktfrequenz bedeutet aber auch, dass Du deinem Synthesetool da 
Leben deutlich erschwerst oder gar unmögklich machst, da sich die 
durchlaufzeiten durch Slices, Multiplexer und Verdrahtung konstant 
bleiben...

Autor: Bobbi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vanilla schrieb:
> Doppelte Taktfrequenz bedeutet aber auch, dass Du deinem Synthesetool da
> Leben deutlich erschwerst
tut man das nicht auch schon dadurch, dass man mit doppelten Takten 
baut? Auch dann hat man ja weniger, als die halbe Zeit.

Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls man sich anschauen möchte, wie es bei Xilinx ie gelöst wird:
Einfach das Design mit dem FPGA-Editor anschauen. Im Slice wird
z.B. beim Takt ganz am Anfang ein MUX mit Clk/!CLK als angezeigt,
das gleiche bei BRAMs und bei IOs.
Allerdings ist das auch nur eine logische Sicht, über die physikalische
Sicht wird man keine Infos finden (jedenfalls nicht von den 
Herstellern).

Autor: K. L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sigi schrieb:
> Allerdings ist das auch nur eine logische Sicht, über die physikalische
> Sicht wird man keine Infos finden (jedenfalls nicht von den
> Herstellern).

Genau die würde mich interessieren!
Beitrag "was baut die Synthese bei "falling_edge()""

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.