Overvejelser for tilføjelse af nulstillingsevne til en FPGA-design

15 DIY Organization Projects for Small Size Bedrooms (Juni 2019).

$config[ads_text] not found
Anonim

Overvejelser for tilføjelse af nulstillingsevne til en FPGA-design


Denne artikel vil se på nogle af konsekvenserne af at tilføje en nulstillingsindgang til et FPGA-design.

Denne artikel vil gennemgå nogle grundlæggende overvejelser for kodning af en given funktionalitet med en nulstillingsindgang. Konsekvenserne af at bruge en nulstillingsindgang kan overses af designeren, men en ukorrekt nulstillingsstrategi kan nemt pålægge store straffe. Nulstilfunktionen kan påvirke hastigheden, området og strømforbruget af et FPGA-design negativt.

Før vi fortsætter med vores diskussion, er det vigtigt at understrege et grundlæggende princip: FPGA'er er programmerbare enheder, men det betyder ikke, at vi kan programmere alle funktioner i en FPGA. Dette grundlæggende princip vil blive yderligere afklaret i resten af ​​artiklen.

Læs omhyggeligt detaljerne, inden du tilføjer en nulstillingsindgang

Figur 1 viser en D-type flip-flop (DFF), som er tilgængelig i Xilinx 7-serien FPGA'er.

Figur 1. FDRE D-type flip-flop af Xilinx 7-serien FPGA'er. Billede høflighed af Xilinx.

Denne særlige DFF, som har en synkron nulstilling (R) og en uraktiveringsindgang (CE), kaldes en FDRE (Flip-flop, type D, synkron nulstilling, med uraktivering) i Xilinx Library Guide. Logikbordet for dette element er vist i figur 2.

Figur 2. Logikbordet for FDRE D-type flip-flop af Xilinx 7-serien FPGA'er. Billede høflighed af Xilinx.

Her er R, CE, D og C indgangene til DFF'en og stand til nulstilling, uraktivering, dataindgang og ur. X repræsenterer en "don't-care" og ↑ angiver uret stigende kant. Nulstillingen er synkron, fordi den kun kan nulstille udgangen kun ved den stigende kant af uret.

Dette DFF er et designelement, der kan bruges som en byggeklod med et større design. Vi kan bruge det til at registrere et ønsket signal. Og vi er fri til at bruge indstillingerne til nulstilling og uraktivering af FDRE som vi ønsker.

Vi kan vælge, om vi vil bruge en tilgængelig funktion i en byggesten eller ej. Vi kan dog ikke tilføje en ikke-understøttet funktion til en given byggesten. F.eks. Overveje FDRE-elementet, der er diskuteret ovenfor. Dette designelement understøtter kun en synkron nulstilling. Hvis vi har brug for både asynkron og synkron nulstilling, kan vi ikke bruge FDRE-flip-flop. I dette tilfælde skal synteseværktøjet bruge en anden ressource, eller det kan endda tyde på at bruge en kombination af de tilgængelige byggesten til at realisere det ønskede design. Som du kan se, er FPGA'ernes lavniveaufunktioner rettet, men når disse designelementer er konfigureret, forbinder vi dem sammen som vi ønsker og bygger et større design.

Som et mere subtilt eksempel på, hvordan FPGA-granulariteten kan påvirke implementeringen, bemærkes, at FDRE-reset (R) -indgangen i FDRE ifølge ovenstående logisk tabel har en højere prioritet i forhold til klokkeaktiveringsindgangen (meddelelse om den første linje i tabellen, at når R er 1, er CE irrelevant). Antag nu, at vores HDL-kode bruger en DFF med både nulstil og uraktiveringsindgange. Og HDL-beskrivelsen giver højere prioritet til CE-input end R-input. Igen i dette tilfælde skal synteseværktøjet bruge en anden ressource end FDRE, eller den skal bruge en kombination af de tilgængelige byggesten til at realisere den ønskede funktionalitet. Se mere om dette eksempel i dette Xilinx-hvidbog.

Ovennævnte diskussion viser, at for at have et effektivt design, skal vi omhyggeligt studere detaljerne i FPGA designelementerne, ligesom vi studerer dataarket for en diskret komponent, inden vi bruger den. I resten af ​​artiklen vil du se nogle andre eksempler på dette princip.

Skift Register opslagstabel (SRL16)

Xilinx-synteseværktøjet kan realisere LUT-baserede skiftregistre, som er meget mere kompakte og hurtigere end strukturen opnået ved blot at cascade nogle DFF'er. Disse effektive skiftregister, kaldet SRL'er, understøtter ikke en nulstillingsindgang. Derfor, hvis dit skiftregister ikke behøver en nulstilling, bør du undgå det, så synteseværktøjet får lov til at udlede en effektiv SRL-baseret realisering for skiftregisteret. Hvis din kode beskriver et skiftregister med reset, vil XST implementere designet ved hjælp af DFF'er, eller det vil bruge yderligere logik omkring SRL for at muliggøre en nulstillingsfunktionalitet. SRL'er kan udledes af simple sammenkoblingsoperatører (Se side 154 i XST Brugervejledning).

Bloker RAM'er

Som det er tilfældet med SRL'er, kan vi ikke nulstille indholdet af en blok RAM ved hjælp af en eksplicit reset. Derfor skal vi ikke bruge en nulstilling, når vi kortlægger et design i blok-RAM'er. Du kan finde flere detaljer her.

Multiplikatorer

I modsætning til en SRL eller en blok RAM, der ikke understøtter en nulstilling, har nogle moduler, såsom multiplikatorer, begrænsninger for typen af ​​nulstilling. Disse moduler understøtter kun en synkron nulstilling. For en given multiplikator kan udskiftning af en asynkron reset med en synkron strategi øge frekvensen af ​​drift med en faktor på to eller flere.

For at opsummere forhindrer en ukorrekt nulstillingsstrategi, at synteseværktøjet effektivt udnytter de optimerede moduler, der er tilgængelige i FPGA. Dette kan påvirke område, strøm og hastighed af et design negativt. Lad os se nogle eksempler, hvor syntesesoftwaren bruger nulstillingsporten til DFF'erne til at udføre nogle optimeringer.

Brug af Set / Reset indgange til optimering af implementeringen

Det anbefales normalt at undgå brug af indstillede og nulstillede indgange så meget som muligt. Dette hjælper synteseværktøjet til at anvende en optimering, hvor de indstillede / resetindgange af DFF'erne undersøges for at forenkle implementeringen. For at klarlægge yderligere antager vi, at vi vil implementere skematikken vist i figur 3.

Figur 3. Et særligt tilfælde, der kan optimeres af syntesesoftwaren. Billede med avanceret FPGA Design.

I figur 3, når "Signal A" er logisk højt, vil DFF-udgangen gå høj ved urkanten, uanset hvad udgangen af ​​kombinationskretsen "Comb Logic" er. Derfor kan syntesesoftwaren, som vist i figur 4, eliminere OR-porten og anvende "Signal A" til DFF's synkrone sætindgang. Nu, når "Signal A" er logisk højt, vil DFF'en blive sat til høj ved urkanten. I modsat fald bestemmes udgangen af ​​kombinationskredsløbet "Comb Logic". Det nye design giver den ønskede funktionalitet, men nu er OR-porten elimineret, og både hastighed og område af designet kan forbedres.

Figur 4. Den optimerede form af kredsløbet i Figur 3. Billede med avanceret FPGA Design.

Det er interessant at bemærke, at synteseværktøjet undertiden kan beslutte at gøre det modsatte af ovenstående optimering og implementere skematikken i figur 4 som vist i figur 3! Dette skyldes det faktum, at i 7 serier deler alle DFF'erne i et udsnit samme CK, SR (set / reset) og CE signaler. Dette betyder, at en DFF, hvis SR-indgang er forbundet til "Signal A", ikke kan være i samme skive, som har en DFF med dens SR-indgang forbundet til et andet signal end "Signal A". Hvis styresignalerne, dvs. CK, SR og CE, ikke er de samme, skal DFF'erne placeres i forskellige skiver. Dette kan føre til en ineffektiv udnyttelse af udsnit i et design, der bruger mange lav-fanout reset-signaler. Faktisk vil hvert lav-fanout reset signal bruge nogle få DFFs af et skive og de resterende DFFs af skiven vil blive spildt. I sådanne tilfælde kan synteseværktøjet implementere skematikken i figur 4 som vist i figur 3. Denne proces vil føre til DFF'er, der ikke bruger deres nulstillingsindgange. Som et resultat kan disse DFF dele de samme styresignaler og kan placeres i samme skive. Derfor vil udnyttelsen af ​​enheden blive forbedret.

I figur 3 og 4 så vi, at en ELLER-port efterfulgt af en DFF kan erstattes med en DFF, der anvender dens indgangsindgang. På samme måde kan vi erstatte en AND-port efterfulgt af en DFF med en DFF, der bruger dens nulstillingsindgang (se figur 5 nedenfor).

Figur 5. Billede høflighed af Xilinx.

I figur 5 specificerer SRVAL-attributten outputværdien af ​​DFF efter at have bekræftet SR-indgangen. Derfor, for den midterste DFF til venstre, er SR-indgangen angivet som en indstillet port. For den nederste DFF til venstre er SR-indgangen imidlertid faktisk en resetindgang. Den øverste DFF bruger ikke en nulstillingsindgang.

De tre DFF'er til venstre kan ikke placeres i samme skive, fordi de har forskellige styresignaler. Men med de omtalte konverteringer opnår vi tre DFF'er med det samme sæt styresignaler. Derfor kan vi sætte de tre DFF'er i samme skive. Bemærk, at ovennævnte konverteringer ikke er gyldige med asynkrone sæt / reset-signaler. Derfor anbefales vi normalt at bruge synkroniserede sæt / reset-signaler i stedet for asynkrone.

Referencer

  • Hvordan nulstiller jeg min FPGA? af srikanth erusalagandi, xilinx.
  • Få dine prioriteter til højre - Lav dit design op til 50% mindre af Ken Chapman, Xilinx.
  • Avanceret FPGA Design: Arkitektur, Implementering og Optimering af Steve Kilts.
  • HDL kodning praksis til at accelerere design ydeevne af Philippe Garrault, Xilinx.
  • Få Smart Om Reset: Tænk Lokal, Ikke Global af Ken Chapman, Xilinx.

For at se en komplet liste over mine artikler, besøg venligst denne side.