Forum: FPGA, VHDL & Co. Artix7: Ausgang getrieben von FF / Kombinatorik: Infos über Glitches


von M. Н. (Gast)


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?

von J. S. (engineer) Benutzerseite


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.

von Rick D. (rickdangerus)


Lesenswert?

M. H. schrieb:
> Die Ausgänge hierhin sind
> "besonders" kritisch und sollten nicht glitchen etc.
Dann würde ich mir eher Gedanken machen, was nach dem Einschalten in der 
Konfigurationsphase passiert, wo die Ausgänge i.d.R. hochohmig sind.

von Gustl B. (gustl_b)


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.

von DSGV-Violator (Gast)


Angehängte Dateien:

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

von Kay-Uwe R. (dfias)


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.

von DSGV-Violator (Gast)


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

von J. S. (engineer) Benutzerseite


Lesenswert?

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

@TE: Meine Frage von oben ist noch offen.

von Kay-Uwe R. (dfias)


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.

von J. S. (engineer) Benutzerseite


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

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.