A communication device, such as a cable modem, having a programmable media
access controller (MAC) supported by a programmable CRC engine. The CRC
engine computes CRC values for data written to it by the programmable MAC
or other software process, thereby relieving processing circuitry of these
computationally burdensome functions. The programmable nature of the CRC
engine permits compliance with a wide variety standards, including
evolving standards such as DOCSIS, without requiring expensive hardware
upgrades. In one embodiment of the invention, the CRC engine may be
initialized by the programmable MAC with an initial vector prior to CRC
computations. The programmable MAC or other software then locates the data
bytes (e.g., data frame header data) for which a CRC is to be computed.
This information is written to a data register of the CRC engine and a CRC
operation is performed. Based on the results, the programmable MAC may
determine whether the CRC operation indicates valid data. For example, the
CRC value may be compared to value communicating a frame header for
purposes of validating received data frames. The CRC engine may
advantageously utilize one or more polynomials as determined by the
programmable MAC. Further, the CRC engine of the disclosed embodiment may
receive data of varying sizes such that write processes may be optimized.
Un dispositivo di comunicazione, quale un modem di cavo, avendo mezzi programmabili accede al regolatore (MAC) sostenuto da un motore programmabile di CRC. Il motore di CRC computa i valori di CRC per i dati redatti esso tramite il MAC programmabile o l'altro processo del software, quindi alleviante procedendo i circuiti di queste funzioni informaticamente pesanti. La natura programmabile del motore di CRC consente la conformità ai campioni larghi di varietà, compreso i campioni d'evoluzione quale DOCSIS, senza richiedere gli aggiornamenti costosi dei fissaggi. In un metodo di realizzazione dell'invenzione, il motore di CRC può essere inizializzato dal MAC programmabile con un vettore iniziale prima dei calcoli di CRC. Il MAC programmabile o l'altro software allora individua i byte di dati (per esempio, i dati incorniciano i dati dell'intestazione) per cui un CRC deve essere computato. Queste informazioni sono redatte ad un registro di dati del motore di CRC e un funzionamento di CRC è realizzato. Sulla base dei risultati, il MAC programmabile può determinare se il funzionamento di CRC indichi i dati validi. Per esempio, il valore di CRC può essere confrontato a valore che comunica un'intestazione della struttura allo scopo la convalidazione delle strutture ricevute di dati. Il motore di CRC può utilizzare vantaggiosamente uno o più polinomi come determinati dal MAC programmabile. Più ulteriormente, il motore di CRC dell'incorporamento rilevato può ricevere i dati dei formati di variazione tali che scriva i processi può essere ottimizzato.