Wat is Flipflop?

Basiselement van een sequentiële schakeling dat 1 bit informatie opslaat. Een D-flipflop neemt de ingang over op de flank van de klok.

Japanse benaming: フリップフロップ

“Flipflop” komt voor in 13 oefenvragen uit 2 onderwerpen, bijv. Hardwarebeschrijvingstalen en verificatie, LSI-ontwerpflow en EDA.

Vakgebied: Logische schakelingen

Hoe een D-flipflop werkt

Een D-flipflop bemonstert zijn D-ingang op de actieve klokflank en houdt die waarde op Q vast tot de volgende flank; veranderingen tussen de flanken worden genegeerd. Intern bestaat hij meestal uit twee latches die in tegenfase worden geklokt, in een master-slave-opstelling. Een latch is daarentegen niveaugevoelig: zolang hij is vrijgegeven, is hij transparant en geeft hij de ingang direct door aan de uitgang. Flankgestuurd werken maakt de timing veel eenvoudiger te analyseren, en daarom vormen flipflops in synchrone ontwerpen de CPU-registers, de grenzen tussen pipelinetrappen, state machines en tellers.

Setuptijd, holdtijd en maximale frequentie

Data moet een setuptijd vóór de flank en een holdtijd na de flank stabiel zijn. Op een pad van register naar register moet de klokperiode de clock-to-output-vertraging, de logicavertraging en de setuptijd omvatten: met 0,15 + 2,2 + 0,15 ns is de minimale periode 2,5 ns, ofwel 400 MHz. Setupschendingen kunnen worden opgelost door de klok te vertragen, maar holdschendingen niet, omdat die controle data vergelijkt die op dezelfde flank wordt gelanceerd en gevangen; ontwerpers voegen in plaats daarvan vertragingsbuffers toe. Clock skew die de capture-klok vertraagt, helpt voor setup maar is nadelig voor hold.

Metastabiliteit en synchronizers

Als data verandert binnen het setup-hold-venster, zoals gebeurt bij signalen van een niet-gerelateerde klok, kan de flipflop metastabiel worden, waarbij de uitgang tussen 0 en 1 blijft hangen. De kans dat deze toestand onopgelost blijft, daalt exponentieel met de tijd maar wordt nooit nul. Een synchronizer van twee of meer flipflops in serie geeft de eerste trap een volledige klokperiode om tot rust te komen, waardoor de gemiddelde tijd tussen fouten oploopt tot duizenden jaren of meer. Waarden van meerdere bits gaan via asynchrone FIFO's of handshakes van het ene klokdomein naar het andere, en verificatietools voor CDC (clock domain crossing) controleren of deze structuren aanwezig zijn.

Andere typen en toepassingen

Een JK-flipflop wordt geset met J = 1, gereset met K = 1, houdt zijn waarde vast als beide 0 zijn en toggelt als beide 1 zijn, waarmee de verboden ingangscombinatie van een SR-flipflop een betekenis krijgt. Door de ingangen hoog te leggen ontstaat een T-flipflop die op elke flank toggelt en de klokfrequentie door twee deelt met een duty cycle van 50 procent; ketens daarvan vormen ripple counters en frequentiedelers. Moderne logica gebruikt vrijwel uitsluitend D-flipflops. Voor het testen voegt scan design een multiplexer toe aan de ingang van elke flipflop, zodat de flipflops tot schuifregisters kunnen worden geschakeld om interne toestanden in te laden en uit te lezen.

Nu oefenen: vragen over Flipflop

Welke timingovertreding bij statische timinganalyse treedt op wanneer het signaal direct na de klokflank te snel verandert, zodat de flipflop de vorige gegevens niet meer correct kan vasthouden?

  1. ASetupovertreding
  2. BHoldovertreding
  3. CDRC-overtreding
Antwoord en toelichting tonen

Antwoord: B. Holdovertreding

Een holdovertreding is een overtreding waarbij het gegevenspad te kort is, de gegevens na de klokflank niet voor de vereiste tijd worden vastgehouden en nieuwe gegevens bij dezelfde flank worden opgenomen. De holdvoorwaarde vergelijkt dezelfde flanken en bevat de periode niet, dus ze wordt niet opgelost door de klokfrequentie te verlagen; ze wordt gecorrigeerd door vertragingsbuffers in te voegen. Een pad dat te lang is en niet op tijd aankomt, is een setupovertreding, en een DRC-overtreding is een overtreding van een layoutregel.

Waarom wordt in een schakeling met asynchrone reset het loslaten van de reset (verandering van 0 naar 1) met een flipflop van twee trappen op de klok gesynchroniseerd voordat het over de schakelingen wordt verdeeld?

  1. AOm het toepassen van de reset met 2 klokken te vertragen en veilig te maken
  2. BOm het resetsignaal twee keer zo snel te maken
  3. COmdat bij loslaten dicht bij de klokflank het loslaat-cyclus per flipflop kan verschuiven of instabiel kan worden, zodat het loslaten op de klok wordt uitgelijnd
Antwoord en toelichting tonen

Antwoord: C. Omdat bij loslaten dicht bij de klokflank het loslaat-cyclus per flipflop kan verschuiven of instabiel kan worden, zodat het loslaten op de klok wordt uitgelijnd

Als het loslaten van een asynchrone reset vlak vóór of vlak na de klokflank plaatsvindt, wordt niet aan de tijdvoorwaarden voor het loslaten voldaan en kan het zijn dat de ene flipflop in de huidige cyclus begint te werken en een andere in de volgende. Dit veroorzaakt dat toestandsmachines in een ongeldige toestand starten. Een reset-synchronisatieschakeling past de reset direct toe, maar lijnt alleen het loslaten met een tweetraps-flipflop uit op de klok en verdeelt het dan over het geheel.

Veelgestelde vragen

Wat is het verschil tussen een latch en een flipflop?

Een latch is niveaugevoelig en geeft zijn ingang door aan de uitgang zolang hij is vrijgegeven, terwijl een flipflop flankgestuurd is en zijn ingang alleen op de klokflank bemonstert. Een typische D-flipflop is opgebouwd uit twee latches die op tegengestelde klokfasen worden vrijgegeven.

Waarom los je een holdschending niet op door de klokfrequentie te verlagen?

De holdcontrole vergelijkt data die op dezelfde klokflank wordt gelanceerd en gevangen, dus de klokperiode speelt er geen rol in. De oplossing is vertraging toevoegen aan het korte pad, meestal met buffers.

Hoe bereken je de maximale klokfrequentie van een flipfloppad?

Tel de clock-to-output-vertraging, de worst-case combinatorische vertraging en de setuptijd bij elkaar op, gecorrigeerd voor clock skew, om de minimale periode te krijgen; de maximale frequentie is daarvan het omgekeerde. Het traagste pad van dit soort op de chip, het kritieke pad, bepaalt de limiet van de chip.

“Flipflop” in de toelichting

Vragen met “Flipflop” (13)

  1. Welke timingovertreding bij statische timinganalyse treedt op wanneer het signaal direct na de klokflank te snel verandert, zodat de flipflop de vorige gegevens niet meer correct kan vasthouden?
  2. Waarom wordt in een schakeling met asynchrone reset het loslaten van de reset (verandering van 0 naar 1) met een flipflop van twee trappen op de klok gesynchroniseerd voordat het over de schakelingen wordt verdeeld?
  3. Hoe heet de vorm uit de bovenstaande beschrijving waarin de uitgang van een combinatorische schakeling zonder flipflop naar de eigen ingang terugkeert, en waarom moet die worden vermeden?
  4. Wat is het belangrijkste doel van klokboomsynthese (CTS) in de place-and-routefase?
  5. Hoe heet de verificatie waarbij met een speciale tool wordt gecontroleerd of op de plaatsen waar signalen worden doorgegeven tussen schakelingen met verschillende klokken, synchronisatieschakelingen correct zijn aangebracht?
  6. Welke uitspraak over het verschil tussen het wire-type en het reg-type in Verilog is juist?
  7. Welke uitspraak over de schakeling die door logische synthese uit de bovenstaande Verilog-beschrijving ontstaat, is juist?
  8. Welke uitspraak over het verschil tussen synchrone en asynchrone reset is juist?
  9. Welke uitspraak over de kenmerken van een toestandsmachine van het Mealy-type is juist?
  10. Welke uitspraak over de kenmerken van one-hot-codering bij het coderen van toestanden van een toestandsmachine is juist?
  11. Welke combinatie van het aantal flipflops dat nodig is om de toestand te onthouden bij een toestandsmachine met drie toestanden is juist (binaire codering/one-hot-codering)?
  12. In de simulatie was de waarde van een register zonder reset eerst X. Wat wordt aangenomen dat er in een echte chip gebeurt?
  13. Welk voordeel van het gebruik van always_ff en always_comb van SystemVerilog in plaats van always van Verilog is juist?

Vergelijkingen met deze term

Verwante termen

Combinatorische schakeling Verilog STA (statische timinganalyse) Numerieke apertuur (NA) DRC (design rule check) Asynchrone reset SystemVerilog One-hot-codering Metastabiliteit Asynchrone FIFO

Naar de woordenlijst