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