Hello, Guest!
 
 

 
 
  Objects Tiiips Categories
LANCE
"Descrizione"
by RS232 (2002 pt)
2026-Jan-29 16:05

LANCE (Local Area Network Controller for Ethernet)

Definizione

 LANCE, è un controller MAC Ethernet 10 Mb/s progettato per collegare un sistema (CPU + RAM) a una rete IEEE 802.3/Ethernet delegando al chip le funzioni “ripetitive e time-critical” del livello 2: gestione del CSMA/CD, incapsulamento dei frame, calcolo/verifica CRC, gestione collisioni/retry, filtraggio indirizzi, e soprattutto trasferimenti dati tramite DMA usando ring di descrittori in memoria.

È importante distinguere il perimetro funzionale: ad esempio, l’Am7990 è un MAC/controller e, nella configurazione classica, richiede componenti esterni per la parte fisica (codifica Manchester/AUI o transceiver), tipicamente tramite un “companion” come un Serial Interface Adapter (SIA) e relativa interfaccia di linea.

Funzione

In una scheda Ethernet “vintage”, senza un controller come LANCE la CPU dovrebbe copiare i dati, costruire frame, gestire collisioni e temporizzazioni. Con LANCE il modello diventa:

  • La CPU prepara strutture (buffer e descrittori) in RAM.

  • L’Am7990 trasferisce i dati con DMA, aggiorna gli stati in RAM e genera interrupt.

  • La CPU si limita a orchestrarne il flusso (inizializzazione, refill dei buffer RX, coda TX, gestione eventi).

Architettura logica: tre “oggetti” in memoria

Il funzionamento ruota attorno a tre strutture principali in RAM:

  1. Initialization block: configurazione (indirizzo MAC, modalità, puntatori ai ring, ecc.).

  2. Receive descriptor ring: descrittori RX che puntano a buffer pronti a essere riempiti dal chip.

  3. Transmit descriptor ring: descrittori TX che puntano ai buffer da trasmettere.

Ogni descrittore include un concetto fondamentale: un bit di ownership (spesso indicato come OWN) che stabilisce se il buffer/descrittore è “di proprietà” del controller (che può scriverci/leggerci) o dell’host (che può riutilizzarlo o modificarlo).

Flusso di ricezione (RX)

  • Il driver alloca N buffer RX e prepara N descrittori nel ring RX, impostando OWN=1 (controller).

  • Quando arriva un frame valido, il LANCE lo deposita via DMA nel/i buffer puntati dai descrittori, aggiorna lunghezza e flag (errori, CRC, framing, overflow, ecc.), poi restituisce la proprietà (OWN=0) e, se abilitato, genera interrupt.

  • Il driver legge i descrittori completati, consegna il pacchetto allo stack, ripristina il descrittore (nuovo buffer o stesso buffer “riciclato”) e rimette OWN=1.

Flusso di trasmissione (TX)

  • Il driver prepara un descrittore TX con puntatore al buffer contenente l’intero frame (o una catena di buffer), imposta i flag “start/end of packet” (tipicamente STP/ENP) e cede la proprietà al controller (OWN=1).

  • Il LANCE preleva i dati via DMA, trasmette sul mezzo secondo CSMA/CD, aggiorna gli stati (successo, collisioni, retry, underrun, ecc.), poi restituisce OWN=0 e segnala completamento.

Filtri, modalità e diagnostica

Funzioni tipiche della classe LANCE includono:

  • Filtro su indirizzo fisico (MAC) e gestione multicast (con meccanismi di filtro dipendenti dalla configurazione).

  • Contatori/statistiche e flag di errore in descrittori e registri di stato.

  • Funzioni di test/diagnostica come TDR (time-domain reflectometer) per individuare discontinuità sul cavo in alcune configurazioni.

Schizzo dei collegamenti più importanti

┌──────────────────────────────┐ │ CPU / host │ │ driver + gestione buffer │ └──────────────┬───────────────┘ │ bus host (I/O o memory-mapped) │ + IRQ + reset ▼ ┌─────────────────┐ │ AMD Am7990 │ │ LANCE (MAC) │ │ DMA + ring desc │ └──────┬──────────┘ │ DMA verso RAM ▼ ┌──────────────────────────────┐ │ RAM condivisa │ │ - initialization block │ │ - RX descriptor ring + buf │ │ - TX descriptor ring + buf │ └──────────────────────────────┘ │ ▼ ┌───────────────────────────────┐ │ SIA / ENDEC + transceiver │ │ (codifica Manchester + linea) │ └──────────────┬────────────────┘ ▼ Ethernet (AUI/10Mb)

Tabella 1 – Identificazione e caratteristiche principali (bilingue)

Parametro (IT)Valore indicativo (IT)English (EN)
DispositivoAMD Am7990 “LANCE”Device: AMD Am7990 “LANCE”
RuoloController MAC Ethernet 10 Mb/s con DMARole: 10 Mb/s Ethernet MAC controller with DMA
Strutture chiave in RAMInitialization block + ring RX + ring TXKey RAM objects: init block + RX ring + TX ring
Gestione bufferDescrittori con ownership (OWN)Buffer mgmt: descriptors with ownership (OWN)
Interfaccia fisicaRichiede componenti esterni (SIA/ENDEC + transceiver)PHY side: requires external SIA/ENDEC + transceiver
Notifica eventiInterrupt su RX/TX/erroriEventing: interrupts for RX/TX/errors

Tabella 2 – Strutture in memoria e campi tipici (bilingue)

Struttura (IT)Scopo operativo (IT)Operational purpose (EN)
Initialization blockParametri iniziali: MAC, modalità, puntatori ai ringStartup parameters: MAC, modes, ring pointers
RX descriptor (RMD)Puntatore buffer RX + flag (OWN, STP/ENP) + stato/erroriRX buffer pointer + flags (OWN, STP/ENP) + status/errors
TX descriptor (TMD)Puntatore buffer TX + flag (OWN, STP/ENP) + esito invioTX buffer pointer + flags (OWN, STP/ENP) + completion result
Ring managementAvanzamento circolare con indici/ptr, refill buffer lato hostCircular walk with indices/pointers, host refills buffers
Status/interruptBit di stato in RAM/registri per completamento ed erroriStatus bits in RAM/registers for completion and errors


Evaluate