Artix7: Ausgang getrieben von FF / Kombinatorik: Infos über Glitches

Gast #7434454
Lesenswert?

Guten Tag, ich habe eine FPGA spezifische Frage zur Artix7 Reihe.

Ich habe ein Design, das unter anderem Ausgänge an einen externen analogen Schaltungsteil weitergibt. Die Ausgänge hierhin sind "besonders" kritisch und sollten nicht glitchen etc. Deshalb werden alle diese Ausgänge aus Flops getrieben. Die Instantiierung dieser Flops erfolgt aktuell implizit im RTL (VHDL). Also quasi wie hier:

1
...
2
entity my_dummy_top is
3
   port (
4
    ...
5
    critical_signal : out std_logic);
6
end entity my_dummy_top;
7
architecture RTL of my_dummy top is
8
begin
9
...
10
...
11
flop_proc : process(clk, rst_n) is
12
begin
13
    if rst_n = '0' then
14
        critical_signal <= '0';
15
    elsif rising_edge(clk) then
16
        critical_signal <= combinational_stuff;
17
    end if;
18
end process flop_proc;
19
end architecture RTL;

Meine Frage ist nun: Wenn sich "combinational_stuff" nicht ändert und somit zu jeder Flanke derselbe Wert gelatcht wird, ist dann garantiert, dass das Flop in seiner "Clock-to-output" Zeit keinen Mist auf dem Ausgang macht? Je nach Flop Topologie im Silizium gibt es da nämlich schon so Schaltungskandidaten, wo da mal was sein kann. Ich habe keine Spezifikation dazu gefunden. Eventuell werden irgendwelche "minimalen" Glitches eh in der Ausgangsstufe des Pin-Treibers abgefangen... Aber das ist alles nur Mutmaßung. Kann mir hier jemand weiterhelfen?

Persönliche Seite #7434543
Lesenswert?

M. H. schrieb:

Je nach Flop Topologie im Silizium gibt es da nämlich schon so Schaltungskandidaten, wo da mal was sein kann.

Das würde mich aber nun stark interessieren, was für eine Flop-Topologie (interessantes Wort) das ist, bei der sich ein Flip-Flop-Ausgang beim Takt ändert, während sich an dessen Eingang nichts getan hat.

Du denkst hoffentlich nicht darüber nach, dass sich die Vorwärtswirkung des Taktes auf den Ausgang auswirkt, oder?

Wenn, wirst du da eher das Rauschen auf deiner Resetleitung messen können.

#7434768
Lesenswert?

Echte Glitches sind das nicht. Aber wenn du ein getaktetes Design hast, dann wird das periodisch mit dem Takt unterschiedlich viel Strom ziehen. Eben zur Taktflanke viel um Kapazitäten umzuladen und zwischen den Flanken eher wenig. Je nachdem wie gut die Versorgung gebaut ist resultieren daraus dann auch Spannungseinbrüche immer zur Taktflanke. Sollte kaum sichtbar sein und bei Digitaltechnik nicht stören. Die Ausgänge können doch sowieso nur 0 und 1 was soll eine Analogschaltung damit schon anfangen? Sonst könntest du damit extern noch auf einen Buffer gehen der unabhängig versorgt wird.

Gast #7434917
Lesenswert?

M. H. schrieb:

Kann mir hier jemand weiterhelfen?

Das ist doch ein stinknormales Delay-FlipFlop mit asynchronem clear, da glitched nix. Bezüglich Dokumentation schaut man in den Library guide (https://www.yumpu.com/en/document/view/4965533/xilinx-vivado-design-suite-7-series-fpga-libraries-guide-ug953) und dort auf die Wahrheitstabelle.

IMHO kommt die Angst vor Glitches von den Erklärungsblockbildern der FF, die da gerne rückkoppelte Gatter zeichnen. In Echt sind das aber keine Gatter sondern Transistorschaltungen. Um deren Zeitverhalten nachzustellen muss man die Schaltung in die einzelne Elemente aufdröseln, was aber heute nicht gemacht wird um den Informatiker, der nur programmieren kennt, nicht mit der praktischen Realität zu verwirren.

Man muß dann schon tief in den Grundlagen hinabsteigen um beim "bistabilen Multivibrator" für den Aufbau mit bipos Erklärungsmodelle zu finden: http://www.dieelektronikerseite.de/Lections/Bistabiler%20Multivibrator%20-%20Es%20kann%20nur%20Einen%20geben.htm

Angehängte Dateien:
#7435564
Lesenswert?

M. H. schrieb:

Wenn sich "combinational_stuff" nicht ändert und somit zu jeder Flanke derselbe Wert gelatcht wird, ist dann garantiert, dass das Flop in seiner "Clock-to-output" Zeit keinen Mist auf dem Ausgang macht? Je nach Flop Topologie im Silizium gibt es da nämlich schon so Schaltungskandidaten, wo da mal was sein kann. Ich habe keine Spezifikation dazu gefunden.

Meinst du wirklich gelatcht oder doch eher registriert? Ein Latch wäre taktpegel-, ein Register (FF) taktflankengesteuert. Ein Flop ist übrigens ein Misserfolg. In FPGAs gibt es keine Latches mehr. Ein Latch hätte aber schon die Eigenschaft, im so genannten Kippinterval das Eingangssignal durchzuschalten (Transparenz). Bei beiden Speichertypen gäbe es dann noch Metastabilität aus analoger Sicht.

Gast #7435601
Lesenswert?

Die Ausgänge hierhin sind "besonders" kritisch und sollten nicht glitchen etc.

Meine Frage ist nun: Wenn sich "combinational_stuff" nicht ändert und somit zu jeder Flanke derselbe Wert gelatcht wird, ist dann garantiert, dass das Flop in seiner "Clock-to-output" Zeit keinen Mist auf dem Ausgang macht?

IMHO solltest Du das ganze Szenario dringenst mit einem erfahrenen Elektrotechniker/Hardwerker besprechen statt zu versuchen dieses Physische Problem durch uninspiriertes VHDL-Getippse lösen zu wollen.

(1) Die Formulierung "besonders kritisch" ist für den Systementwurf nicht sonderlich brauchbar, das muss man in messbare Begriffe umformulieren wie "unempfindlich gegen Störungen".

(2) Davon ist zweierlei abzuleiten - (2a) Wie teste ich die geforderte Eigenschaft (2b) wie wie konstruiere ich eine störunempfindliche Schaltung

Im FPGA-Datenblatt wird man eher wenig/garnichts finden, aber man weiss aus dem Studium/Praxis das bspw differentiale Signalstandard unempfindlich ist (Der Klassiker RS485 versus RS232), kennt verschiedene Möglichkeiten der Stör-einkopplung (Übersprechen zw. benachbarten Leitungen, schlecht entkoppelte Stromversorgungen) und benutzt deshalb elektrische (Schirmung, beachtung der SSO-Regeln (Simulteanous Switching Outputs), Optimierung Treiberstärken (Strength- constraint, Terminierungen) und logische Gegenmassnahmen (FM statt AM; Prüfziffer; Gray-Encoding, ...).

Und hat man (2b) erfüllt, braucht man wegen irgendwelcher (scheinbarer) "Garantien" nicht in den Specs fühlen - man Stress-tested eben die Konstruktion und weist so nach, das sie gegen Störungen immun ist und das kritische Signal nicht verfälscht wird. Natürlich sollte man auch die log-files/Netzlisten durchgehen (per script prüfen), um sicherzustellen, das das gewünschte Stück Silizium-Treiber konfiguriert wurde. Aber letztes Garantie/Kriterium für die Wahrheit ist immer noch die Praxis. Es gibt genug fehlerhafte Software, von der bewiesen wurde, das sie entweder:

  • nicht anders als korrekt funktionieren kann (Achtung, Sarkasmus) oder
  • das man für die Funktion der Software nicht verantwortlich sei, sondern nur für deren Erstellung nach Vorgabe (Achtung, Sarkasmus).
#7436386
Lesenswert?

J. S. schrieb:

Kay-Uwe R. schrieb:

In FPGAs gibt es keine Latches mehr.

Na aber sicher gibt es die. Die kannst du jederzeit aus Kombinatorik hinzimmern. Viele zimmern sogar, ohne es zu wollen. :-)

Kann man, nennt sich dann aber nicht mehr Kombinatorik. Sowie es Rückkopplungspfade gibt, entstehen Speicherelemente. So unterscheiden sich halt S- von C-Zellen. Sind dann ja auch keine Zellen mehr. Vom Timing bei dem Gebastel noch ganz abgesehen. Wer sowas macht, frisst auch kleine Kinder.

Persönliche Seite #7436683
Lesenswert?

Kay-Uwe R. schrieb:

Kann man, nennt sich dann aber nicht mehr Kombinatorik. Sowie es Rückkopplungspfade gibt, entstehen Speicherelemente.

ja, wobei ein Latch für mich noch keinen Rückkopplungspfad enthalten muss. Ich dachte da nun wirklich an kombinatorisch gegatete Signale.

Kay-Uwe R. schrieb:

Vom Timing bei dem Gebastel noch ganz abgesehen.

Das Gebastel eben, das wir in den 90ern machen mussten, um schnelle PLDs zu haben, weil alles was getaktet lief, furchtbar langsam war.

Wer sowas macht, frisst auch kleine Kinder.

:D

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