Betraktninger for å legge til tilbakestillingskapasitet til en FPGA-design

MNKOM-lunsj: Forskeren og journalisten (Juni 2019).

$config[ads_text] not found
Anonim

Betraktninger for å legge til tilbakestillingskapasitet til en FPGA-design


Denne artikkelen vil se på noen av konsekvensene ved å legge til en resetinngang til en FPGA-design.

Denne artikkelen vil gjennomgå noen grunnleggende hensyn til koding av en gitt funksjonalitet med tilbakestillingsinngang. Konsekvensene av å bruke en tilbakestillingsinngang kan overses av designeren, men en feilaktig tilbakestillingsstrategi kan lett pålegge store straffer. Nullstillingsevne kan påvirke hastigheten, arealet og strømforbruket til en FPGA-design negativt.

Før vi fortsetter med diskusjonen, er det verdt å legge vekt på ett grunnprinsipp: FPGA er programmerbare enheter, men dette betyr ikke at vi kan programmere alle funksjoner i en FPGA. Dette grunnleggende prinsippet vil bli nærmere avklart i resten av artikkelen.

Les nøye gjennom detaljene før du legger til en nullstillingsinngang

Figur 1 viser en D-type flip-flop (DFF) som er tilgjengelig i Xilinx 7-serien FPGA.

Figur 1. FDRE D-type flip-flop av Xilinx 7-serien FPGA. Bilde høflighet av Xilinx.

Denne spesielle DFF, som har en synkron reset (R) og en klokke aktivering (CE) -inngang, kalles en FDRE (Flip-flop, type D, synkron tilbakestilling, med klokke aktivering) i Xilinx Library Guide. Logikkbordet til dette elementet er vist i figur 2.

Figur 2. Logikkbordet for FDRE D-type flip-flop av Xilinx 7-serien FPGA. Bilde høflighet av Xilinx.

Her er R, CE, D og C inngangene til DFF og står for tilbakestilling, klokkeaktivering, datainngang og klokke, henholdsvis. X representerer en "don't-care" og ↑ angir klokken økende kanten. Tilbakestillingen er synkron fordi den kan nullstille utgangen bare ved den økende kanten av klokken.

Dette DFF er et designelement som kan brukes som en byggeblokk av større design. Vi kan bruke den til å registrere et ønsket signal. Og vi er fri til å bruke tilbakestillings- og klokkeaktiveringsinngangene til FDRE som vi vil.

Vi kan velge om vi vil bruke en tilgjengelig funksjon i en byggestein eller ikke. Vi kan imidlertid ikke legge til en ikke-støttet funksjon i en gitt byggeblokk. For eksempel, vurder FDRE-elementet som er diskutert ovenfor. Dette designelementet støtter bare en synkron tilbakestilling. Hvis vi trenger både asynkron og synkron tilbakestilling, kan vi ikke bruke FDRE-flippen. I dette tilfellet må synteseverktøyet bruke en annen ressurs, eller det kan til og med ty til bruk av en kombinasjon av tilgjengelige byggeklosser for å realisere ønsket design. Som du kan se, er lavnivåfunksjonene til FPGAene løst, men når disse designelementene er konfigurert, kobler vi dem sammen slik vi ønsker og bygger en større design.

Som et mer subtelt eksempel på hvordan FPGA-granulariteten kan påvirke implementeringen, merk at i henhold til det ovennevnte logikkbordet, har reset (R) -inngangen til FDRE en høyere prioritet i forhold til klokkeaktiverings (CE) -inngangen (varsel på den første linjen i tabellen at når R er 1, er CE irrelevant). Anta nå at vår HDL-kode bruker en DFF med både tilbakestillings- og klokkeaktiveringsinnganger. Og HDL-beskrivelsen gir høyere prioritet til CE-inngangen enn R-inngangen. Igjen i dette tilfellet må synteseverktøyet bruke en annen ressurs enn FDRE, eller den må bruke en kombinasjon av de tilgjengelige byggeblokkene for å realisere ønsket funksjonalitet. For mer informasjon om dette eksemplet, se dette Xilinx-hvitt papiret.

Ovennevnte diskusjon viser at for å ha en effektiv design, må vi nøye studere detaljene i FPGA-designelementene akkurat som vi studerer dataarket for en diskret komponent før du bruker den. I resten av artikkelen ser du noen andre eksempler på dette prinsippet.

Skiftregisteroppslagstabell (SRL16)

Xilinx-synteseverktøyet kan realisere LUT-baserte skiftregister som er mye mer kompakte og raskere enn strukturen som er oppnådd ved ganske enkelt å kaste inn noen DFFs. Disse effektive skiftregisterene, kalt SRL, støtter ikke en tilbakestillingsinngang. Derfor, hvis skiftregisteret ikke trenger en tilbakestilling, bør du unngå det slik at synteseverktøyet får lov til å utlede en effektiv SRL-basert realisering for skiftregisteret. Hvis koden beskriver et skiftregister med tilbakestilling, vil XST implementere designet ved hjelp av DFFs, eller det vil bruke noen ekstra logikk rundt SRL for å tillate tilbakestillingsfunksjonalitet. SRL kan utledes fra enkle sammenkoblingsoperatører (Se side 154 i XST brukerhåndboken).

Blokker RAM-er

I likhet med tilfeller av SRLer, kan vi ikke tilbakestille innholdet i en blokk-RAM ved hjelp av en eksplisitt tilbakestilling. Derfor bør vi ikke bruke en tilbakestilling når du kartlegger et design i blokkeringsrammer. Du finner flere detaljer her.

multiplikatorer

I motsetning til en SRL eller en blokk RAM som ikke støtter en tilbakestilling, har enkelte moduler, for eksempel multiplikatorer, begrensninger for typen tilbakestilling. Disse modulene støtter bare en synkron tilbakestilling. For en gitt multiplikator kan erstatning av en asynkron tilbakestilling med en synkron strategi øke frekvensen av operasjonen med en faktor på to eller flere.

For å oppsummere forhindrer en feilaktig nullstillingsstrategi at synteseverktøyet effektivt utnytter de optimaliserte modulene som er tilgjengelige i FPGA. Dette kan påvirke område, kraft og hastighet på et design negativt. La oss se noen eksempler der syntesesoftwaren bruker nullstillingsporten til DFFs for å utføre noen optimaliseringer.

Bruk av Set / Reset Inputs for å optimalisere implementeringen

Det anbefales vanligvis å unngå bruk av innstille og tilbakestille innganger så mye som mulig. Dette hjelper synteseverktøyet til å bruke en optimalisering der innstillingene for tilbakestilling / tilbakestilling av DFFs blir undersøkt for å forenkle implementeringen. For å klargjøre mer, anta at vi vil implementere skjematisk vist i figur 3.

Figur 3. Et spesielt tilfelle som kan optimaliseres av syntesesoftwaren. Bilde med tillatelse til Avansert FPGA Design.

I figur 3, når "Signal A" er logisk høy, vil DFF-utgangen gå høyt på klokanten, uansett hva utgangen av kombinasjonskretsen "Comb Logic" er. Derfor, som vist i figur 4, kan syntesesoftwaren eliminere OR-porten og bruke "Signal A" til den synkrone settinngangen til DFF. Nå, når "Signal A" er logisk høy, vil DFF bli satt til høy ved klokanten. Ellers vil utgangen bli bestemt av kombinasjonskretsen "Comb Logic". Det nye designet gir den ønskede funksjonaliteten, men nå er OR-porten eliminert, og både fart og område av designet kan forbedres.

Figur 4. Den optimaliserte form for kretsløpet i Figur 3. Bilde med høflighet av Avansert FPGA Design.

Det er interessant å merke seg at noen ganger kan synteseverktøyet bestemme seg for å gjøre det motsatte av optimeringen ovenfor og implementere skjematikken i figur 4 som vist på figur 3! Dette skyldes det faktum at i 7 serier deler alle DFFene i et stykke samme CK, SR (set / reset) og CE signaler. Dette betyr at en DFF hvis SR-inngang er koblet til "Signal A" ikke kan være i samme stykke som har en DFF med sin SR-inngang koblet til et annet signal enn "Signal A". Hvis kontrollsignalene, dvs. CK, SR og CE, ikke er de samme, må DFFene plasseres i forskjellige skiver. Dette kan føre til ineffektiv bruk av stykker i et design som bruker mange lav-fanout reset-signaler. Faktisk vil hvert lav-fanout reset signal bruke noen få DFFs av et stykke og de resterende DFFene av skiven vil bli bortkastet. I slike tilfeller kan synteseverktøyet implementere skjematikken i figur 4 som vist på figur 3. Denne prosessen vil føre til DFFs som ikke bruker sine nullstillingsinnganger. Som et resultat kan disse DFF dele de samme kontrollsignalene og plasseres i samme stykke. Derfor vil enhetens utnyttelse bli forbedret.

På figur 3 og 4 så vi at en ELLER-gate, etterfulgt av en DFF, kan erstattes med en DFF som bruker sin inngang. På samme måte kan vi erstatte en AND-gate etterfulgt av en DFF med en DFF som bruker sin tilbakestillingsinngang (se figur 5 nedenfor).

Figur 5. Bilde høflighet av Xilinx.

I figur 5 angir SRVAL-attributtet utdataverdien til DFF etter å ha hevdet SR-inngangen. Derfor, for den midtre DFF til venstre, er SR-inngangen spesifisert som en innstilt port. Men for den nedre DFF til venstre er SR-inngangen faktisk en resetinngang. Den øvre DFF bruker ikke resetinngang.

De tre DFFene til venstre kan ikke plasseres i samme stykke fordi de har forskjellige kontrollsignaler. Men med konverteringene som er omtalt ovenfor, oppnår vi tre DFFer med samme sett med styresignaler. Derfor kan vi sette de tre DFFene i samme stykke. Vær oppmerksom på at konverteringene ovenfor ikke er gyldige med asynkrone sett / tilbakestillingssignaler. Derfor anbefales det vanligvis å bruke synkroniserte sett / tilbakestillingssignaler i stedet for asynkrone.

referanser

  • Hvordan tilbakestiller jeg FPGA? av Srikanth Erusalagandi, Xilinx.
  • Få dine prioriterte rettigheter - Gjør ditt design opptil 50% mindre av Ken Chapman, Xilinx.
  • Avansert FPGA Design: Arkitektur, Implementering og Optimalisering av Steve Kilts.
  • HDL koding praksis for å akselerere design ytelse av Philippe Garrault, Xilinx.
  • Få Smart Om Tilbakestilling: Tenk Lokal, Ikke Global Av Ken Chapman, Xilinx.

For å se en komplett liste over artiklene mine, vennligst besøk denne siden.