Redigerer
VHDL
(avsnitt)
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
==D-vipper== [[Flip-flop (elektronikk)|D-vipper]] sjekker et innkommende signal på stigende eller synkende klokkeflanke. D-vippen ligger til grunn for all synkron logikk. <syntaxhighlight lang="VHDL"> -- simplest DFF template (not recommended) Q <= D when rising_edge(CLK); -- recommended DFF template: process(CLK) begin -- use falling_edge(CLK) to sample at the falling edge instead if rising_edge(CLK) then Q <= D; end if; end process; -- alternative DFF template: process begin wait until rising_edge(CLK); Q <= D; end process; -- alternative template: process(CLK) begin if CLK = '1' and CLK'event then--use rising edge, use "if CLK = '0' and CLK'event" instead for falling edge Q <= D; end if; end process; </syntaxhighlight> Noen D-vipper har også «enable»-signaler og asynkrone eller synkrone «Set»- og «Reset»-signaler: <syntaxhighlight lang="VHDL"> -- template for asynchronous reset with clock enable: process(CLK, RESET) begin if RESET = '1' then -- or '0' if RESET is active low... Q <= '0'; elsif rising_edge(CLK) then if Enable = '1' then -- or '0' if Enable is active low... Q <= D; end if; end if; end process; -- template for synchronous reset with clock enable: process(CLK) begin if rising_edge(CLK) then if RESET = '1' then Q <= '0'; elsif Enable = '1' then -- or '0' if Enable is active low... Q <= D; end if; end if; end process; </syntaxhighlight> En vanlig nybegynnerfeil er å ha en «Set»- eller «Reset»-inngang, men ikke bruke den. De to følgende kodesnuttene er ikke like, den første er en enkel D-vippe, mens den andre er en D-vippe med en tilbakekoblings-MUX. <syntaxhighlight lang="VHDL"> -- simple D-type flip-flop process(CLK) begin if rising_edge(CLK) then Q <= D; end if; end process; -- BAD VHDL: this does NOT make the flip-flop a DFF without a reset!! process(CLK, RESET) begin if RESET = '1' then -- do nothing. Q is not set here... elsif rising_edge(CLK) then Q <= D; end if; end process; </syntaxhighlight> Dette er veldig likt feilen med den «transparente vippen» som ble nevnt tidligere.
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Denne siden er medlem av 4 skjulte kategorier:
Kategori:Artikler med offisielle lenker og uten kobling til Wikidata
Kategori:Artikler som trenger referanser
Kategori:Artikler uten offisielle lenker fra Wikidata
Kategori:Artikler uten referanser
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon