Forsta VXI / VME Interrupt og Signal Acknowledge Cycle.

Forsta VXI / VME Interrupt og Signal Acknowledge Cycle.

VME-buss-spesifikasjonen definerer Priority Interrupt Bus slik at en VME-enhet kan asynkront be om service fra en kontroller. Dette gir en VME / VXI-enhet en mate a fa kontrolleren sin oppmerksomhet til enhver tid.

Et VXI / VME bussystem har syv avbruddslinjer som er fysisk koblet til alle spor i chassiset. Dette dokumentet adresserer avbrudd pa bade VME og VXI-systemer.

Avbryt linje 7 har hoyeste prioritet, og avbryt linje 1 har lavest prioritet. I tillegg til de faktiske avbruddslinjene bestar Priority Interrupt Bus ogsa av et daisy-chained interrupt acknowledge signal og deler av dataoverforingsbussen (datalinjene, datakjennomforingslinjen og de nedre tre adresselinjene). Tabellen nedenfor oppsummerer hvert signal som brukes i Priority Interrupt Bus og oppsummerer funksjonen til hvert signal. En enhet som ber om service ved a hevde en av avbruddslinjene, kalles en interrupter. En funksjonell enhet kjent som en avbruddshandteringstjeneste avbryter. Det kan v re flere enn en avbruddshandterer i et VXI / VMEbus-system. Innebygde styreelementer fra Nasjonal Instrument og eksterne MXI-buskontrollere lar deg konfigurere flere avbruddshandlere (fra en til syv).

Tabell I. Prioriterte interruptbussignaler.

En interrupter bruker dette signalet for a indikere at det ber om service.

En avbruddshandterer bruker dette signalet for a indikere at den har mottatt en avbrudd og er klar til a motta en status / ID som vil fortelle handtereren hvordan man fortsetter a betjene avbrudd.

En modul mottar IACK * pa IACKIN *. Den plasserer en status / ID pa bussen hvis avbruddsnivaet som blir betjent, stemmer overens med modulens avbruddsniva og hvis enheten avbrytes. Ellers sender modulen signalet ved bruk av IACKOUT *.

Avbruddshandleren hevder disse linjene med verdien som tilsvarer.

Avbruddsnivaet blir betjent.

Interrupteren som blir betjent, plasserer status / ID pa disse linjene nar IACK * er mottatt.

Avbryteren bruker dette signalet for a indikere at status / ID er pafort pa datalinjene.

En n rmere beskrivelse av hva som skjer i avbruddssyklusen er beskrevet nedenfor.

En enhet som ber om service ved a hevde en av avbruddslinjene, kalles en interrupter. En funksjonell enhet kjent som en avbruddshandteringstjeneste avbryter. Det kan v re mer enn en avbruddshandterer i et VXI / VME bussystem. Det kan imidlertid bare v re en avbruddshandterer per avbruddsniva i systemet. Innebygde styreelementer fra Nasjonal Instrument og eksterne MXI-buskontrollere lar deg konfigurere flere avbruddshandlere (fra en til syv).

Derfor er to typer avbruddshandteringssystemer mulige:

Et enkelthandteringssystem Et distribuert system.

I et enkelthandteringssystem tjener en avbryterhandteringsenhet alle avbruddslinjer. I et distribuert system er det to eller flere handlere, hver som betjener en eksklusiv delmengde av de syv avbruddslinjene. De fleste systemer er single-handlersystemer, hvor systemkontroller handterer alle avbruddslinjer i chassiset. Det er mulig for VXI-enheter a fungere som programmerbare avbruddshandlere, men dette er ikke sa vanlig. Ressursbehandleren oppdager programmerbare VXI-avbryterhandterere og bruker informasjon lagret i enhetens konfigurasjonsregister for a tilordne avbruddsnivaene som skal handteres av VXI-enheten. V r oppmerksom pa at VME-enheter ikke definerer et standard sett med konfigureringsregister – du ma bruke Test og maleutforsker eller VXI Edit / vxitedit for a angi hvilken konfigurasjonsinformasjon som er knyttet til VME-enheten.

Det er to typer avbrytere:

Utgivelse pa ACKnowledge (ROAK) Utgivelse pa registertilgang (RORA)

De fleste VXI- og VME-instrumenter faller under kategorien ROAK, og rekkefolgen av hendelser som er beskrevet nedenfor, gjelder bare for ROAK-enheter.

Sekvensen av hendelser under en interrupt (IACK *) syklus.

Etter at en enhet hevder et avbrudd, venter det pa svar fra avbruddshandleren. Nar avbruddshandterer oppdager at en avbruddslinje er blitt pakalt, hevder avbryterhandtereren signalet IACK * (interrupt acknowledge). Det setter ogsa de nedre tre adresselinjene A01 – A03 for a indikere hvilken avbrytingslinje den prover a bekrefte med IACK * -signalet. IACK * -linjen som handteringsstasjonen er koblet til IACKIN * -platen i spor 0 i chassiset (Slot 1 i VME-bussystem). Hvis modulen i den forste sporet ikke hevder at avbrytingslinjen blir kvittert, ma modulen overfore IACK * -signalet til sin IACKOUT * -stift, som er koblet til neste sporets IACKIN * -stift. Utbredelsen av IACK * -signalet fra sporet til sporet fortsetter til IACK * -signalet nar den forste modulen som avbryter pa linjen som blir bekreftet. Nar avbryteren ser IACK *, plasserer den sin status / ID pa data / buss.

Avbruddshandleren leser status / ID. Fordi avbruddslinjene er apne kollektorlinjer, kan flere enn en enhet pavise samme avbruddslinje samtidig. Derfor sprer modulen som angir forstyrrelsen ikke IACK * -signalet. Denne handlingen forhindrer andre enheter som avbryter pa samme linje fra a fa IACK * -signalet og forsoker a svare samtidig. Etter avbruddshandteringsenheten avbryter avbryteren linjen. Hvis andre enheter avbryter pa samme linje, begynner handtereren en annen avbrytingsbekreftelsesyklus for a betjene neste bryter pa den linjen. Folgende figur illustrerer interrupt acknowledge daisy-kjeden.

Figur 1. Avbryt Bekreft Daisy-Chain.

Merk: RORA-enheter krever at du leser / skriver et enhetsspesifikt register for a fullfore avbrytingsbekreftelsesyklusen.

I denne figuren har enheten i spor 4 pastatt en avbrudd. Figuren viser at hvis mer enn en enhet pastar samme avbruddslinje, har enheten n rmest sporet 0 (spalte 1 i VME) hoyeste prioritet for avbruddstjeneste fordi den mottar IACK * -signalet forst. Den neste n rmeste enheten har neste hoyeste prioritet, og sa videre. Det er viktig a huske at IACK-daisy-kjeden ma kobles over ubebodde backplane-spor, ellers vil avbryter som kommer fra enheter til hoyre for det tomme sporet ikke bli anerkjent. De fleste chassisene har jumperlose backplaner hvor denne kj rlighets-kjedekoblingen skjer automatisk. Men pa eldre bakplaner som er jumpered, ma jumpers brukes til a koble IACK-kjedekjeden over ubebodde spor. Pa hoppede bakplaner, bor du ogsa trekke hopperne fra de okkuperte sporene, slik at IACK-kjempekjeden ikke feilaktig tilkobles gjennom sporet som inneholder bryteren.

Status / ID i de fleste VME-systemer er en 8-biters verdi. I VXI-systemer er status / ID enten en 16-bit eller 32-bit status / ID-verdi. Meldingbaserte enheter som har interrupterfunksjon ma returnere minst en 16-biters status / ID med en valgfri 32-biters verdi. For tiden er 32-biters status / ID-er uvanlig. I VME-systemer er status / ID vanligvis en vektor. Prosessoren bruker denne vektoren til a beregne en adresse til en posisjon i et avbryt hoppetabell. Oppforingen i tabellen er adressen til starten pa avbruddsrutinen.

Derfor, nar prosessoren handterer avbrudd og mottar status / ID, hopper den direkte til begynnelsen av avbruddsrutinen og utforer rutekoden for avbruddstjenesten. Systemintegratoren installerer avbruddstjenesterutinen pa minnestedet som hoppetabellen spesifiserer.

I VXI-systemer (og alle National Instruments VXI / VME Controllers) er status / ID ikke lenger en vektor. Den er koblet fra prosessoroperasjonen. Etter at avbruddshandleren mottar status / ID, styrer styringsprogramvaren den riktige serviceunderrutinen og sender status / ID-verdien til underrutinen.

Det generelle formatet for status / ID for en registerbasert VXI-enhet er vist i folgende tabell.

Tabell II. Generell status / ID-format for VXI-bussenheter.

For Message-Based VXI-enheter er det en ytterligere definisjon av status / ID-format. Status / ID kan ta pa enten et responsformat eller et hendelseformat. Under hendelsesformatet ma bit 15 av status / ID settes. Verdiene av status / ID-biter 8 til 14 definerer hendelsesbetingelsen. VXI-buss-spesifikasjonen definerer for oyeblikket disse brikkene for tre spesifikke hendelser. Den definerer ogsa en syntaks for a definere dine egne hendelser. Hendelsene definert i VXI-buss-spesifikasjonen og deres tilsvarende verdier for status / ID-biter 8 til og med 15 er oppfort nedenfor.

Ingen arsak gis (0xFF) – Denne hendelsen sendes av en registerbasert enhet som bare har en grunn til a signalisere kommandoen. Vanligvis blir denne hendelsen utstedt nar en operasjon fullfores.

Foresporsel sann (0xFD) – Denne hendelsen sendes av en enhet nar enheten krever service.

Be om falsk (0xFC) – Denne hendelsen sendes av enheten nar enheten ikke lenger trenger service. VXI-buss-spesifikasjonen definerer ogsa en syntaks for a sende brukerdefinerte hendelser. Dette formatet angir at bit 15 ma v re 1 og bit 14 ma v re 0. Bit 8 – 13 kan da brukes til a spesifisere en brukerdefinert hendelse, som vist i folgende tabell.

Tabell III. Meldingsbasert enhetsstatus / ID «-avtale for brukerdefinert hendelse.

Bortsett fra a definere de nedre 8 bitene av status / ID-verdien for a v re interruptors logiske adresse, definerer VXI-buss-spesifikasjonen bare noen fa spesifikke verdier for status / ID. Vanligvis, nar du jobber med en enhet som er i stand til a produsere avbrudd, ma du referere til dokumentasjonen som folger med enheten for a se hvilken mening, om noen, de andre bitene av status / ID har. Ofte styrer du vilkarene for forstyrrelsen, og den faktiske statusen / ID-en er ikke viktig fordi du pa forhand vil vite hvorfor enheten sender avbrudd.

I stedet for a hevde en avbruddslinje, kan enkelte enheter be om service ved a produsere et signal. «Signal» i denne sammenheng er ikke et elektrisk signal (for eksempel backplane signaler diskutert tidligere i kurset), men snarere en skriv av en 16-bits verdi til signalregisteret til en annen enhet. Signalregisteret er ganske enkelt et VXI-konfigurasjonsregister som har en verdi skrevet til den av en annen enhet som er i stand til a ta kontroll over bussen. Ikke alle enheter implementerer et signalregister. Termen signal stammer fra dets bruk i UNIX, der et signal er et middel for interprosess kommunikasjon. For a bruke signaler ma folgende to betingelser gjelde:

Signalinnretningen ma kunne ta kontroll over VXI-bussen. Apparatet signalet sendes til, ma gjennomfore et signalregister.

Signalinnretningen bruker dataoverforingsbussen til a skrive en 16-biters verdi til signalregisteret, som er plassert i forskyvning 8 i konfigureringsregisterene for enheten som signaleres. 16-bitsverdien har noyaktig samme format som 16-biters status / ID.

Prosedyren for a handtere et signal via programvare er det samme som for en avbrudd. Prosessene beskrevet ovenfor for signaler og avbruddssyklusen skjer helt pa maskinvareniva. Disse prosessene er gjennomsiktige for en brukers applikasjon. Nar en kontroller oppdager en avbrudd eller ser at dets signalregister er skrevet til, genererer kontrolleren en lokal prosessoravbrudd som lar programvaren vite at hendelsen har skjedd.