NETWORK INTERFACE CONTROLLER

Abstract: An improved network interface controller systems and associated methods are comprised of an enhanced media controller system. The enhanced media access controller system comprises a clock coordinating circuitry, which comprises active clock edge switch circuitry to switch the clock output(s) from a first edge to a second edge to enable data changes on the output(s) to remain approximately centered at a mid-bit time location. The active clock edge switch circuitry comprises circuitry that provides additional single cycle suppression. The active clock edge switch circuitry comprises cycle suppression circuitry to switch the clock output(s) from a first edge to a second edge within one cycle and preferably comprises a multiplexor with a plurality of inputs and an output, and a strobe input. The plurality of inputs is coupled to the clock coordinating circuitry to receive a clock input and an inverted clock input. The strobe input is coupled to a select clock input. The output is coupled to the transmitter and receiver.

Description: NETWORK INTERFACE CONTROLLER PARTIAL WAIVER OF COPYRIGHT PURSUANT TO 1077 O.G. 22(3/20/87) (C) Copyright, National Semiconductor Corporation 1993. All of the material in this patent application is subject to copyright protection under the copyright laws of the United States and of other countries. As of the first effective filing date of the present application, this material is protected as unpublished material . Portions of the material in the specification and drawings of this patent application are also subject to protection under the maskwork registration laws of the United States and of other countries . However, permission to copy this material is hereby granted to the extent that the owner of the copyright and maskwork rights has no objection to the facsimile reproduction by anyone of the patent document or patent disclosure, as it appears in the United States Patent and Trademark Office patent file or records, but otherwise reserves all copyright and maskwork rights whatsoever. CROSS-REFERENCE TO RELATED APPLICATIONS This application hereby incorporates by reference the following coassigned issued patents and patent applications: Patent Number/ Issue Date/ NSC-# Serial Number Filing Date Title NS1550 07/459,439 01/02/90 Media Access Controller NS1784 07/775,741 10/15/91 Receiver Circuit with Smart Squelch NS1784CIP 07/905,757 06/29/92 Receiver Circuit with Smart Squelch NS1645 5, 121,284 06/09/92 Driver Circuit with Feedback for Limiting Undershoot/Overs hoot and Method NS1260 4,873, 671 10/10/89 Sequential Read Access of Serial Memories with a User Defined Starting Address NS1914 07/950,914 09/24/93 Method and Apparatus for Automatically Configuring a Computer Peripheral NS0901 4, 615, 039 09/30/86 Data Network Driver NS1783F C 08/112, 653 08/26/93 Receiver Squelch Circuit with Adjustable Threshold FIELD OF INVENTION The present invention relates generally to network interface controller systems and methods and, more particularly, but not by way of limitation, relates to active clock edge switch with single cycle suppression. SUMMARY OF THE INVENTIONS The present invention generally provides improved network interface controller systems and methods and, more particularly, discloses an enhanced media controller system. The enhanced media access controller system comprises at least one input, at least one output, clock coordinating circuitry with at least one clock input and at least one clock output, and cyclic redundancy check circuitry, receive circuitry and transmit circuitry. The clock coordinating circuitry comprises active clock edge switch circuitry to switch the clock output(s) from a first edge to a second edge to enable data changes on the output(s) to remain approximately centered at a mid-bit time location. The cyclic redundancy check circuitry receives the clock output(s) from the clock coordinating circuitry. The receive circuitry receives at least one data input signal from the input(s) . The receive circuitry is coupled to the cyclic redundancy check circuitry and to the clock coordinating circuitry. The receive circuitry works in conjunction with the cyclic redundancy check circuitry to check the data input signal(s) for errors. The transmit circuitry transmits at least one data output signal on the output(s) . The transmit circuitry is coupled to the cyclic redundancy check circuitry and to the clock coordinating circuitry which works in conjunction with the cyclic redundancy check circuitry to check the data output signal(s) for errors. The first edge is preferably a rising edge and the second edge is a falling edge, although this is subject to design alterations. The active clock edge switch circuitry comprises circuitry that provides additional single cycle suppression. In addition, the media access controller further comprises tally circuitry to tabulate errors found in the data output signal(s) and the data input signal(s). The active clock edge switch circuitry comprises cycle suppression circuitry to switch the clock output(s) from a first edge to a second edge within one cycle and preferably comprises a multiplexor with a plurality of inputs and an output, and a strobe input. The plurality of inputs is coupled to the clock coordinating circuitry to receive a clock input and an inverted clock input. The strobe input is coupled to a select clock input. The output is coupled to the transmitter and receiver. More particularly, the cycle suppression circuitry comprises an OR gate, a first AND gate, a first flip flop, a second flip flop, an invertor, and a second AND gate. The OR gate has a first and second input and an output, the second input of an OR gate is coupled to a switch input. The first AND gate has a first and second input and an output. The first input of the first AND gate is electrically coupled to a reset input. The first flip flop having an input, an output, an inverted output, a clear input, and a clock input. The input of the first flip flop is coupled to the output of the OR gate. The output of the first flip flop is coupled to the first input of the OR gate. The clock input of the first flip flop is coupled to a first clock input, and the clear input of the first flip flop is coupled to the output of the first AND gate. The second flip flop has an input, an output, an inverted output, a clear input, and a clock input. The clock input is coupled to a second clock input that is delayed (via invertors) . The inverted output of the second flip flop is coupled to the second input of first AND gate. The clear signal of the second flip flop is coupled to a reset input. The input is coupled to the input of invertor. The invertor with an input and an output. The second AND gate has a first and second input and an output. The first input is connected to the output of the multiplexor. The second input is coupled to the output of the invertor. The input of the invertor coupled to the output of the first flip flop and to the input of the second flip flop. In addition, a delay line may also be coupled between the output of the first flip flop and the input of the invertor. The media access controller, the clock coordinating circuitry, and the active clock edge switch are integrated circuits that are preferably integrated on a single semiconductor substrate (e.g., silicon). Preferred system embodiments have numerous features and advantages. The system is compatible with IEEE 802.3 CSMA/CD standard and has an efficient 8/16 bit interface. It also has software to perform some functions that are compatible with DP8390D. The disclosed methods and systems offer enhanced system performance with 2.7V-5.5V operating ranges, significantly reduced clock cycles for DMA operations, 40 MHz bus clock @ 4.5V SLOW, and 20 MHz bus clock @ 2.7V SLOW. In addition, the system provides enhanced operating modes with deterministic burst times at end of received packet, FIFO empty/full modes, programmable memory wait state to allow maximum flexibility in system configuration, and compatibility mode select register added to register file to allow access to enhanced modes. Moreover, the system provides additional customization features. In particular, the system can be implemented in synthesizable Verilog HDL and it is compatible with NSC Verilog Coding Standards. The disclosed systems methods are compatible with Synopsys Design Compiler V3.0. Cell instantiations for clock tree and drive buffering are also isolated to separate hierarchial blocks for easy cell substitution. Synchronous, single clock state machine design methodology enhances future customization. BRIEF DESCRIPTION OF THE DRAWINGS Further features and advantages will become apparent from the following and more particular description of the various embodiments of the invention, as illustrated in the accompanying drawings, wherein: FIGURE IA is a block diagram of a preferred embodiment of the overall system of enhanced network interface controller standard cell core; FIGURE IB is a block diagram of a preferred embodiment of the Media Access Controller (MAC) ; FIGURE 1C is a circuit diagram of the active clock edge switch with single cycle suppression; FIGURE ID is a timing diagram of the circuit shown in Figure 1C; FIGURE 2 shows the typical format of these packets of information; FIGURE 3 is a block diagram of a preferred configuration of local DMA module 8 (in FIGURE IA) and remote DMA module 20 (in FIGURE IA) ; FIGURE 4A is the receive buffer ring for preferred system embodiments; FIGURE 4B is the receive buffer ring at initialization for preferred system embodiments; FIGURE 4C is a diagram showing the received packet entering the buffer ring; FIGURE 4D is a diagram showing the linking of receive buffer pages; FIGURE 4E is a diagram showing the aborting of a received packet when it hits a boundary pointer; FIGURE 4F is a diagram showing the termination of received packet-packet accepted; FIGURE 4G is a diagram showing the termination of received packet—packet rejected; FIGURE 4H is a diagram showing the first received packet removed by remote DMA; FIGURE 5 is diagram showing a general transmit packet format; FIGURE 6A is timing diagrams that show the end of packet processing according to 8390D Compatible Mode; FIGURE 6B is timing diagrams that show the end of packet processing exact burst mode; FIGURE 6C is timing diagram for Transmit Prefetch Timing; FIGURE 6D is a diagram that illustrates Remote DMA Autoinitialization from Buffer Ring; FIGURE 7A shows register address mapping; FIGURE 7B shows DMA registers; FIGURE 7C is a diagram showing the operation of the multicast address registers, which provide filtering of multicast addresses hashed by the CRC logic; FIGURE 8 is a diagram showing the network management functions of preferred system embodiments; FIGURE 9A is a timing diagram that shows the local DMA Cycle, 16-Bit Address, 0 Wait State; FIGURE 9B is a timing diagram that shows FIFO Burst Control; FIGURE 9C is a timing diagram that shows AD_MUX_H, AD_MUX_L Waveforms; FIGURE 9D is a timing diagram that shows Bus Handshake Signals for Remote DMA Transfers; FIGURE 9E is a timing diagram that shows Remote DMA Read Cycle; FIGURE 9F is a timing diagram that shows Remote DMA Write Cycle; FIGURE 9G is a timing diagram that shows Slave Mode Timing; FIGURE 10 is a timing diagram showing register read operations; FIGURE 11 is a timing diagram showing register write operations; FIGURE 12 is a timing diagram showing Local DMA Read Cycle operations; FIGURE 13 is a timing diagram showing Local DMA Write Cycle; FIGURE 14A is a timing diagram showing host write cycle recovery time; FIGURE 14B is a timing diagram showing host read cycle recovery time; FIGURE 15 is a timing diagram showing Remote DMA operations (Read, Send Command) ; FIGURE 16 is a timing diagram showing Remote DMA (Write Cycle) operations; FIGURE 17 is a timing diagram showing Wait State Insertion operations; FIGURE 18A is a timing diagram showing Serial Timing- Receive (Beginning of Frame) ; FIGURE 18B is a serial timing diagra —receive (End of Frame) ; FIGURE 19A is a serial timing diagram—transmit (Beginning of Frame) ; and FIGURE 19B is a serial timing diagram—transmit (End of Frame, CD Heartbeat) . DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS FIGURE IA is a block diagram of a preferred embodiment of the overall system of enhanced network interface controller standard cell. It is preferably a CMOS standard cell functional core designed to be software and network compatible to the DP8390D Network Interface Controller. The DP8390D Network Interface Controller has become an industry standard for Ethernet connectivity in personal computers. There is a tremendous value added in software cost to design the enhanced network controller to be software compatible to the DP8390D. The preferred embodiment implements all media access control ("MAC") layer functions for transmission and reception of packets of information in accordance with IEEE 802.3 CSMA/CD standard for ethernet local area networks. In general, synchronizer module 4 has Mac_rd_z and Mac_wr_z input lines from MAC module 2, a Tx/Rx data line from FIFO module 6 and a MAC status line from MAC module 2. Synchronizer module 4 also has BRQ, Back, PRQ, ACK_Z output lines and READY_Z and Rack_Z, and Wack_Z input lines. MAC 2 has COL, RXC, RXD, CRS, TXC, and Backoff_Clock inputs and TXE, TXD, and LBK outputs. Synchronizer module 4 is coupled to FIFO module 6 via Tx/Rx data line as well as with MAC_rd_z_sync and MAC_wr_z_syn lines. Other connections are shown in FIGURE IA. Local_dma module 8 is coupled to FIFO module 6 via a single L-dma_rd_z, L-dma_wr_z line. Local_dma module 8 is also coupled to bus_cycle_generator module 16 via L-bus_cycle_reguest line. Local_dma module 8 is also coupled to address_counter module 12 via Clda, Tbcr, Ac, Be lines and to host module 10 and to synchronizer module 4. Local_dma module 8 also has LOCAL_DMA_STATE_OUT and L_DMA_ACTIVE_OUT outputs and H_req input from host module 10. Host module 10 has Cs_Z, SRD_Z, SWR_Z outputs, TEST_Register output, and Page_Zero output and INT output. Synchronizer module 4 is coupled remote_dma module 20. Remote_dma module 8 has 4-bit output R_DMA_State_Out and is coupled to local_dma module 8 and synchronizer module 4. DMA_cells module 14 has Reset_Z and BSCK inputs and internal reset and internal clock tree outputs. Bus_cycle_generator module 16 has outputs ADSO, ADSO_EN, MRD_Z, MWR_Z, PRD_Z, PWR_Z, AD_MUX_H/L and DATA_H/L_EN_OUT and 3-bit Bus_Cycle State_0ut outputs. Synchronizer module 4, fifo module 6, local_dma module 8, host module 10, remote_dma module 20 are coupled to status bus 28. MAC module 2, FIFO module 6, local_dma module 8, host module 10, remote_dma module 20 are coupled to 8-bit bus 24 for Ra_lat, Cr_psl/0, H_rd_z, H_wr_z lines and 16-bit bus 26 for data_t. Significant operational features and characteristics of modules shown in FIGURE IA will be described in more detail in the corresponding text. Other significant detail is shown in FIGURE IA itself. In addition, the following table defines the acronyms used to describe numerous connections in FIGURE IA, which should enable one skilled in the art to fully understand the preferred system embodiment shown in FIGURE IA. Labels used in FIGURES IA and IB are defined in TABLE 1. mac ethernet media access controller fifo 16-byte FIFO and control logic local dma local DMA state machine and registers remote dma remote DMA state machine and registers host host access asynchronous control and registers synchronizer synchronizes signals for use in acenic core dma cells instantiated cells (clock tree, reset, buffers) bus cycle gen generates buffer memory access cycles for local and remote dma operations bus io data bus i/o buffer and latch address counter local and remote dma address counter and byte counter with boundary check logic DATA_I 16-bit data bus input from toplevel chip RA 4-bit register address DATA_H_EN_IN tristate control for DATA O T[15:7] output bus DATA_L_EN_IN tristate control for DATA O_T[7:0] output bus BSCK bus clock; normal application 20MHz; range 0-40MHz READY_Z local bus wait state, control; high inserts waits; sampled at the trailing edge of BSCK RESET Z core reset; async to BSCK BACK arbitration acknowledge after BREQ is asserted; async to BSCK RACK_Z remote DMA read acknowledge; async to BSCK WACK_Z remote DMA write acknowledge; async to BSCK CS_Z chip select for slave read/write cycles; async to BSCK SRD_Z slave (host controlled) read control; async to BSCK SWR_Z slave (host controlled) write control; async to BSCK COL network collision detect; from endec RXC network receive clock; from endec RXD network serial receive data; sync to RXC; from endec TXC network transmit clock; from endec BACKOFF_CLOCK backoff clock from toplevel circuit; required for 'mac' block DATA_0_T 16-bit data output bus; tristateable; byte controlled ADD 16-bit address bus for local memory ACK_Z slave access acknowledged from the nic; sync to BSCK DATA_H_EN_OUT tristate control for data bus; used by external circuit to enable core and external drivers for high/low data DATA L EN OUT INT interrupt; level control; async to BSCK BREQ bus request arbitration signal; sync to BSCK MRD_Z local memory read control; sync to BSCK MWR_Z local memory write control; sync to BSCK PRD_Z remote DMA port read control; sync to BSCK PWR_Z remote DMA port write control; sync to BSCK PRQ remote DMA port request; sync to BSCK TXD network serial transmit data; sync to TXC; to endec TXE network transmit enable; to endec LBK network external (to core) loopback test control; to endec L DMA ACTIVE OUT local or remote DMA indicator ADSO Address strobe 0 for muxed AD bus ADSO EN ADSO output enable AD MUX H Address data mux control, upper byte AD MUX L Address data mux control, lower byte PAGE_ZER0 Combinational nor of bits 7 and 6 (PS1, PSO) of the Command register Mac_rd_z/Mac_wr_z read and write strobes from the mac to the fifo Tx/Rx data 8 bit unidirectional buses to transfer data between the mac and fifo via the Mac rd z/Mac wr z strobes Mac rd z sync/Mac_wr_z synchronized versions of the above sync signals Ra lat latched register address Cr_psl/0 Command register page select bits 0 & 1 H rd z host read (active low) H wr z host write (active low) L_dma_rd_z, L_dma_wr_z read/write strobes from the local DMA channel to the fifo data_t 16-bit TRISTATE data bus for moving data between blocks and on/off chip L-breq Local bus request; used by the local DMA to gain access to data t and external data bus H_req Host bus request R breq Remote bus request Cida 16-bit current local DMA Address Tber 16-bit transmit byte count register Ac 16-bit Address count Be 16-bit Byte count L_bux_cycle_request Local DMA channel request for a 4- state bus cycle for a local memory access R bus_cycle_request Remote DMA channel request for a 4- state bux cycle for a local memory to remote port access Back_sync Synchronized Bus request acknowledge Rsar 16-bit Remote start address register Rber 16-bit Remote byte count register mux rxd multiplexed receive data: mux'd with transmit data for loopback mux rxc multiplexed receive clock: mux'd with transmit clock for loopback buf txc buffered transmit clock buf txd local buffered transmit data crc data inverted most significant bit of cyclic redundancy check register; used as data during transmission of frame check sequence crc err crc error indicator for current packet reception mc_hit multicast address table hit; upper six bits of crc hashed to a location with a one set during destination address processing crc [31:26] upper six bits of crc (32-bit register) Cr-txp Command register transmit packet bit RA Register Address Cr psO, psl Command register page select bits 0 & 1 H rd z Host read (active low) H-wr z Host write (active ' low) TABLE 1 FIGURE IB is a block diagram of a preferred embodiment of the MAC module 2 in FIGURE IA, which the following text and additional figures will explain in more detail. In particular, FIGURE 1C is a circuit diagram of the active clock edge switch circuitry 120 with single cycle suppression and FIGURE ID is a timing diagram of the circuit shown in FIGURE 1C, which illustrates the glitch-free operation and single cycle suppression features. The enhanced media access controller system 2 comprises at least one input, at least one output, clock coordinating circuitry 120 with at least one clock input and at least one clock output, which is located in clock module 3 in FIGURE IB, and cyclic redundancy check circuitry, receive circuitry and transmit circuitry. The clock coordinating circuitry 120 comprises active clock edge switch circuitry 120 to switch the clock output(s) from a first edge to a second edge to enable data changes on the outpu (s) to remain approximately centered at a mid-bit time location. The cyclic redundancy check circuitry 5 (in FIGURE IB) receives the clock output(s) from the clock coordinating circuitry 120. The receive circuitry 7 (in FIGURE IB) receives at least one data input signal from the input(s). The receive circuitry 7 is coupled to the cyclic redundancy check circuitry and to the clock coordinating circuitry 120. The receive circuitry 7 works in conjunction with the cyclic redundancy check circuitry 5 (in FIGURE IB) to check the data input signal (s) for errors. The transmit circuitry transmits at least one data output signal on the output(s) . The transmit circuitry 9 (in FIGURE IB) is coupled to the cyclic redundancy check circuitry 5 and to the clock coordinating circuitry 120 which works in conjunction with the cyclic redundancy check circuitry 5 to check the data output signal(s) for errors. The first edge is preferably a rising edge and the second edge is a falling edge, although this is subject to design alterations. The active clock edge switch circuitry 120 comprises circuitry that provides additional single cycle suppression. In addition, the media access controller further comprises tally circuitry to tabulate errors found in the data output signal(s) and the data input signal(s). The active clock edge switch circuitry 120 comprises cycle suppression circuitry to switch the clock output(s) from a first edge to a second edge within one cycle and preferably comprises a multiplexor 102 with a plurality of inputs and an output, and a strobe input. The plurality of inputs is coupled to the clock coordinating circuitry 120 to receive a clock input and an inverted clock input 100. The strobe input is coupled to a select clock input. The output is coupled to the transmitter and receiver. More particularly, the cycle suppression circuitry 101 comprises an OR gate 116, a first AND gate 114, a first flip flop 110, a second flip flop 108, an invertor 106, and a second AND gate 104. All flip flops are preferably D_type, positive edge triggered with asynchronous active low clear inputs. The OR gate 116 has a first and second input (A and B) and an output (Y) , the second input of an OR gate 116 is coupled to a switch input. The first AND gate 114 has a first and second input (A and B) and an output (Y) . The first input (A) of the first AND gate 114 is electrically coupled to a reset input. The first flip flop 110 having an input (D) , an output (Q) , an inverted output (QZ) , a clear input (CLRZ) , and a clock input (CLK) . The input of the first flip flop 110 is coupled to the output of the OR gate 116. The output of the first flip flop 110 is coupled to the first input of the OR gate 116. The clock input of the first flip flop 110 is coupled to a first clock input, and the clear input of the first flip flop is coupled to the output of the first AND gate 114. The second flip flop 108 has an input, an output, an inverted output, a clear input, and a clock input. The clock input is coupled to a second clock input that is delayed (via invertors 112 and 118) . The inverted output of the second flip flop 108 is coupled to the second input of first AND gate 114. The clear signal of the second flip flop 108 is coupled to a reset input. The input is coupled to the input of invertor 106. The invertor 106 has an input and an output. The second AND gate 104 has a first and second input (A and B) and an output (Y) . The first input is connected to the output of the multiplexor 102. The second input is coupled to the output of the invertor 106. The input of the invertor 106 is coupled to the output of the first flip flop 110 and to the input of the second flip flop 108. In addition, a delay line 107 may also be coupled between the output of the first flip flop 110 and the input of the invertor 106. The delay line 107 (the ID cell) represents a controlled delay buffer used to move the output of the glitch kill flip flop out of the skew danger zone (>5ns) between TXC and txc_z. The media access controller 2, the clock coordinating circuitry 120, and the active clock edge switch circuitry 120 are integrated circuits that are preferably integrated on a single piece of silicon. TRANSMIT/RECEIVE PACKET ENCAPSUL TION/DECAPSULATION FIGURE 2A shows the typical format of standard IEEE 802.2 packets of information that generally are comprised of the following fields: preamble 21, Start of Frame Delimiter ("SFD") 23, destination address 25, source address 27, length 29, data 31, and Frame Check Sequence ("FCS") 33. The packets are Manchester encoded and decoded by an external endec and transferred serially to preferred system embodiments using NRZ data with a clock. All fields are preferably fixed in length, except for data field 31. Preferred system embodiments generates and appends the preamble 21, SFD 23, and FCS 33 field during are transmission. The Preamble and SFD fields 21 and 23 are stripped during reception (The CRC is passed through to buffer memory during reception.). Preamble 21 and Start of Frame Delimiter 23 The Manchester encoded alternating 1, 0 preamble field is used by the external serial network interface ("SNI") to acquire bit synchronization with an incoming packet. When transmitted, each packet contains 62 bits of alternating 1, 0 preamble. Some of this preamble 21 will be lost as the packet travels through the network. Preferred system embodiments strip the preamble field. Byte alignment is performed with SFD pattern which consists of two consecutive l's. Preferred system embodiments, such as that shown in FIGURE IA, do not treat the SFD 23 pattern as a byte, it detects only the two bit pattern. This allows any preceding preamble 21 within the SFD 23 to be used for phase locking. Destination Address 25 Destination address 25 indicates the destination of the packet on the network and is used to filter unwanted packets from reaching a node. There are three types of address formats supported by the preferred system embodiments: physical, multicast, and broadcast. The physical address is a unique address that corresponds only to a single node. All physical addresses have a LSB of "0". These addresses are compared to the internally stored physical address registers. Each bit in the destination address must match in order for preferred system embodiments to accept the packet. Multicast addresses begin with have a LSB of "1". Preferred system embodiments filters multicast addresses using a standard hashing algorithm that maps all multicast addresses into a 6- bit value. This 6-bit value indexes a 64-bit array that filters that value. If the address consists of all l , s, it is a broadcast address, indicating that the packet is intended for all nodes. A promiscuous mode permits the reception of all packets of information. The destination address, however, is not required to match any filters. Physical, broadcast, multicast, and promiscuous address modes can be selected. Source Address 27 Source address 27 is the physical address of the node that sent the packet without processing by preferred system embodiments. This field is typically passed to buffer memory. Length Field 29 The 2-byte length field 29 indicates the number of bytes that are contained in the data field of the packet. This field is not interpreted by preferred system embodiments. Data Field 31 Data field 31 consists of anywhere from 46 to 1500 bytes. Messages longer that 1500 bytes need to be broken into multiple packets. Messages shorter than 46 bytes will require appending a pad to bring the data field to the minimum length of 46 bytes. If the data field is padded, the number of valid data bytes is indicated in the length. Preferred system embodiments do not strip or append pad bytes for short packets, or check for oversize packets. Frame Check Sequence Field 33 FCS 33 is a 32-bit CRC field calculated and appended to a packet during transmission to allow detection of errors when a packet is received. During reception, error free packets result in a specific pattern in the CRC generator. Packets with improper CRC will be rejected. The AUTODIN II (X 32 + X 26 + X 23 X 22 + X 16 + X 12 + X 11 + X 10 + X 8 + X 7 + X 5 + X 4 + X 2 + X 1 + 1) polynomial is used for the CRC calculations. Direct host access is supported for initialization and status gathering and a dual DMA channel configuration allows efficient storage of received packets to local memory. Preferred system embodiment offers significant performance enhancements over the original NIC through both architectural changes and bus clock speed improvements. Preferred system embodiments also integrate with additional core functions on a multifunction VLSI device and for customization to meet specific customer requirements in a short time with minimal risk. DIRECT MEMORY ACCESS CONTROL DMA capabilities of preferred system embodiments greatly simplify use of preferred system embodiments in various system configurations. The local DMA module 8 (in FIGURE IA) channel transfers data between the FIFO module 6 (in FIGURE IA) and memory (which is generally not on the identical piece of silicon) . On transmission, the packet, such as that shown in FIGURE 2, is DMA'd from memory to FIFO module 6 in bursts. If a collision occurs (up to 15 times) , the packet is retransmitted with no processor intervention. On reception, packets transfer through local DMA module 8 from FIFO module 6 to the receive buffer ring, which is explained in more detail below. A remote DMA channel is provided on preferred system embodiments to accomplish transfers between a buffer memory and system memory. Please note that 32-bit DMA function of the DP8390 is not preferably implemented. Dual DMA Configuration FIGURE 3 is a block diagram of a preferred implementation of local DMA module 8 (in FIGURE IA) and remote DMA module 20 (in FIGURE IA) . This preferred configuration uses both the channels provided by local DMA module 8 (in FIGURE IA) and remote DMA module 20 (in FIGURE IA) . Network activity is isolated on a local bus 44, where preferred system embodiment's local DMA channel performs burst transfers between the buffer memory 32 and FIFO module 6 in FIGURE IA. Remote DMA module 20 transfers data between buffer memory 32 and host memory via a bidirectional I/O port. Remote DMA module 20 provides local addressing capability and is used as a slave DMA by host module 10. Host side addressing must be provided by a host DMA or CPU. The host DMA or CPU statement is to convey the fact that host side addressing must be performed by an external (to the Network Interface Controller ("NIC")) source. Preferred system embodiments allow operations of Local and Remote DMA modules 8 and 20 to be interleaved. PACKET RECEPTION As shown in FIGURES 4A, 4B, 4C, 4D, 4E, 4F, 4G, 4H, and 41, the receive channel of local DMA module 8 uses a Buffer Ring Structure comprised of a series of contiguous fixed length 256 byte (128 word) buffers for storage of received packets. The location of the Receive Buffer Ring is programmed in two registers: a Page Start Register 50 and a Page Stop Register 52 (in FIGURE 4B) . Ethernet packets generally consist of a distribution of shorter link control packets and longer data packets. The 256 byte buffer length provides a good compromise between short packets and longer packets in order to provide the most efficient use of memory. In addition, these buffers provide memory resources for storage of back-to-back packets in loaded networks. The assignment of buffers for storing packets is controlled by Buffer Management Logic in preferred system embodiments. Buffer Management Logic provides three basic functions: linking receive buffers for long packets, recovery of buffers when a packet is rejected, and recirculation of buffer pages that have been read by host module 10. As shown in FIGURES 4A and 4B, at initialization, a portion of the 64k byte (or 32k word) address space is reserved for the receive buffer ring. Two eight bit registers, Page Start Address Register (PSTART) 52 and the Page Stop Address Register (PSTOP) 50 define the physical boundaries of where the buffers reside. Preferred system embodiments treat the list of buffers as a logical ring; whenever the DMA address reaches the Page Stop Address 53, the DMA is reset to the Page Start Address 51. Please note that Page Start 51 should not be set equal to Page Stop 53 since this will cause a ring buffer overflow on the first received packet. Initialization of the Buffer Ring As shown in FIGURE 4B, two static registers and two working registers control the operation of the Buffer Ring 58. These are the Page Start Register 52 (as described previously) , Page Stop Register 50 (as described previously) , Current Page Register 54 and Boundary Pointer Register 56. Current Page Register 54 points to the first buffer used to store a packet and is used to restore local DMA module 8 for writing status to Buffer Ring 58 or for restoring DMA address in the event of a Runt packet, or a CRC or Frame Alignment error. A Runt packet is defined as a packet containing fewer than the required 46 data bytes. Boundary Pointer Register 56 points to the first packet in the Ring not yet read by the host. If the local DMA address ever reaches the Boundary register, the reception of incoming packets of information are aborted. Boundary Register Pointer 56 initializes Remote DMA module 20 (in FIGURE IA) for removing a packet and is advanced when a packet is removed. In short, Current Page Register 54 acts as a Write Pointer and the Boundary Pointer Register acts as a Read Pointer. At initialization, the value of Page Start Register 52 should be loaded into both Current Page Register 54 and the Boundary Pointer Register 56. Beginning of Reception As shown in FIGURE 4C, when the first packet begins arriving, preferred system embodiments begins storing the packet at the location pointed to by Current Page Register 54. An initial offset of 4 bytes is used to allow room for storing receive status corresponding to this packet. Linking Receive Buffer Pages As shown in FIGURE 4D, if the length of the packet exhausts the first 256 byte buffer, local DMA module 8 performs a forward link to the next buffer to store the remainder of the packet. For packets of maximal length, the buffer logic will link six buffers to store the entire packet. Buffers cannot be skipped when linking, a packet will always be stored in contiguous buffers. Before the next buffer can be linked, Buffer Management Logic performs two comparisons. The first comparison tests for equality between the DMA address of the next buffer and the contents of the Page Stop Register 50. If the buffer address equals the Page Stop Register 50, buffer management logic will restore the DMA to the first buffer in the Receive Buffer Ring 58 value programmed in the Page Start Address Register 52. The second comparison tests for equality between the DMA address of the next buffer address and the contents of the Boundary Pointer Register 56. If the two values are equal, the reception is aborted. The buffer linking and comparison processes do not take extra bus clock cycles. Boundary Pointer Register 56 can be used to protect against overwriting any area in the receiver buffer ring that has not yet been read. When linking buffers, buffer management will never cross this pointer, effectively avoiding any overwrites. If the buffer address does not match either the Boundary Pointer 56 or Page Stop Address 52, the link to the next buffer is performed. Buffer Ring Overflow As shown in FIGURE 4E, if Buffer Ring 58 has been filled and local DMA module 8 reaches Boundary Pointer Address 56, the reception of the incoming packets will be aborted by preferred system embodiments. Thus, the packets previously received and still contained in Buffer Ring 58 will not be destroyed. In the heavily loaded network environment, local DMA module 8 may be disabled due to the overflow of buffer ring 58 buffer ring overflow, preventing preferred system embodiments from buffering packets from the network. To recover from this situation, one or more packets should be unloaded from the buffer ring. Remote DMA is still functional while the OVW bit is set. After removing packets, restart the preferred system embodiments by setting the STA bit to 1 and STP bit to 0. End of Packet Operations As shown in FIGURES 4F and 4G, at the end of the packet, preferred system embodiments determine whether the received packet is to be accepted or rejected. It either branches to a routine to store the Buffer Header or to another routine that recovers the buffers used to store the packet. Successful Reception As shown in Figure 4F, if the information packet is successfully received, local DMA module 8 is restored to the first buffer used to store the packet (pointer to by Current Page Register 54) . The local DMA module 8 then stores a four byte packet header consisting of the Receive Status Register, a pointer to where the next packet will be stored (Buffer 4) and the number of received bytes. Note that the remaining bytes in the last buffer are discarded and reception of the next packet begins on the next empty 256-byte buffer boundary. Current Page Register 54 is then set to the next available buffer in Buffer Ring 58. The received CRC is always stored in buffer memory after the last byte of received data for the packet. Buffer Recovery for Rejected Packets As shown in FIGURE 4G, if the packet is a runt packet or contains CRC or Frame alignment errors 60, it is rejected. Buffer management logic resets the DMA back to the first buffer page used to store the packet (pointed to by CURR) , recovering all buffers that had been used to store the rejected packet. This operation will not be performed if preferred system embodiments are programmed to accept either runt packets or packets with CRC or Frame Alignment errors 60. Removing Packets from the Ring As shown in FIGURE 4H, packets are removed from the ring using the Remote DMA module 20 or an external device. When using the Remote DMA module 20 the Send Packet command can be used. This programs Remote DMA module 20 to automatically remove the received packet pointed to by the Boundary Pointer 56. At the end of the transfer, preferred system embodiments moves Boundary Pointer 56, freeing additional buffers for reception. Boundary Pointer 56 can also be moved manually by programming the Boundary Pointer Register. Storage Format for Received Packets TABLES 2, 3, and 4 describe the format for how received packets are placed into memory by local DMA channel via module 8 (in FIGURE IA and specifically described in FIGURE 3) . These modes are selected in the Data Configuration Register. Storage Format This format used with Series 32000 and 808X type processors. AD15 AD8 AD7 ADO Next Packet Receive Pointer Status Receive Receive Byte Count 1 Byte Count 0 Byte 2 Byte 1 BOS=0, WTS=1 in Data Configuration Register TABLE 2 This format used with 68000 type processors. AD15 AD 8 AD7 ADO Next Packet Receive Pointer Status Receive Receive Byte Count 0 Byte Count 1 Byte 1 Byte 2 BOS=l , WTS=1 in Data Configuration Register TABLE 3 This format used with general 8 bit CPUs . AD7 ADO Receive Status Next Packet Pointer Receive Byte Count 0 Receive Byte Count 1 Byte 1 Byte 2 BOS=X, WTS=0 in Data Configuration Register TABLE 4 PACKET TRANSMISSION Local DMA module 8 is also used during transmission of a packet. Three registers control the DMA transfer during transmission: a Transmit Page Start Address Register (TPSR) and the Transmit Byte Count Registers (TBCRO, 1) . When preferred system embodiment receive a command to transmit the packet pointed to by these registers, buffer memory data will be moved into the FIFO module 6 as required during transmission. Preferred system embodiments will generate and append the preamble, synch and CRC fields. Transmit Packet Assembly Preferred system embodiments require a contiguous assembled packet with the format shown in FIGURE 5. The transmit byte count includes the Destination Address, Source Address, Length Field and Data. It does not include preamble and CRC. When transmitting packets smaller than 64 bytes, the total packet size should be padded to a minimum size of 64 bytes. The programmer is responsible for adding and stripping pad bytes. This will keep packets within the minimum packet specification set in IEEE 802.3. Transmission Prior to the transmission, the TPSR (Transmit Page Start Register) and TBCRO, TBCR1 (Transmit Byte Count Registers) must be initialized. To initiate transmission of the packet the TXP bit in the Command Register is set. The Transmit Status Register (TSR) is cleared and preferred system embodiments begins to pre-fetch transmit data from memory (unless preferred system embodiments is currently receiving) . If the interframe gap has timed out, preferred system embodiments will begin transmission. Conditions Required to Begin Transmission In order to transmit a packet, the following three conditions must be met: 1. The Interframe Gap Timer had timed out the first 9.6 μs of the Interframe Gap 2. At least one byte has entered FIFO module 6. (This indicates that the burst transfer has been started) 3. If preferred system embodiments have collided, the backoff timer has expired. Please note that if the carrier sense is asserted before preamble begins, preferred system embodiments will become a receiver. Collision Recovery During transmission, Buffer Management logic monitors the transmit status to determine if a collision has occurred. If a collision is detected, Buffer Management logic will reset FIFO module 6 and restore the Transmit DMA pointers for retransmission of the packet. The COL bit will be set in the TSR and the NCR (Number of Collisions Register) will be incremented. If more than 15 collisions are detected, the transmission will be aborted and the ABT bit in the TSR will be set. Please note NCR reads as zeros if excessive collisions are encountered. Transmit Packet Assembly Format The following diagrams describe the format for how packets must be assembled prior to transmission for different byte ordering schemes. The various formats are selected in the Data Configuration Register. This format used with Series 32000 and 808X type processors. TABLES 5, 6, AND 7 detail the preferred format. This format used with Series 32000 and 808X type processors. D15 D8 D7 DO DAI DA0 DA3 DA2 DA5 DA4 SA1 SAO SA3 SA2 SA5 SA4 T/L 1 T/L 0 DATA 1 DATA 0 BOS=0 , WTS=1 in Data Configuration Register TABLE 5 This format used with 6800 type processors. D15 D8 D7 DO DAO DAI DA2 DA3 DA4 DA5 SAO SA1 SA2 SA3 SA4 SA5 T/L 0 T/L 1 DATA 0 DATA 1 BOS=l , WTS=1 in Data Conf iguration Register TABLE 6 This format used with general 8 bit CPUs . D7 DO DAO DAI DA2 DA3 DA4 DA5 SAO SA1 SA2 SA3 B0S=X, WTS=0 in Data Conf guration Register Note: All examples above will result in a transmission of a packet in order to DAO, DAI, DA2, DA3 . . . bits within each byte will be transmitted least significant bit first. DA=Destination Address SA=Source Address T/L=Type/Length Field TABLE 7 REMOTE DMA MODULE 20 The channel provided by Remote DMA module 20 is used to both assemble packets for transmission, and to remove received packets from the Receive Buffer Ring. It may also be used as a general purpose slave DMA channel for moving blocks of data or commands between host memory and local buffer memory. There are three modes of operation: Remote Write, Remote Read or Send Packet. Two register pairs are used to control the Remote DMA module 20, a Remote Start Address (RSARO, RSARl) and a Remote Byte Count (RBCRO, RBCRl) register pair. The Start Address Register pair points to the beginning of the block to be moved. It also serves as the current address pointer when Remote DMA module 20 is in progress. The Byte Count Register pair is used to indicate the number of bytes to be transferred. Full handshake logic is provided to move data between local buffer memory and a bidirectional I/O port. Remote Write The Remote Write transfer is used to move a block of data from the host into local buffer memory. The channel provided by Remote DMA module 20 will read data from the I/O port and sequentially write it to local buffer memory beginning at the Remote Start Address. The DMA Address will be incremented and the Byte Counter will be decremented after each transfer. The DMA is terminated when the Remote Byte Count Register reaches a count of zero. Remote Read A Remote Read transfer is used to move a block of data from local buffer memory to the host. Remote DMA module 20 will sequentially read data from the local buffer memory, beginning at the Remote Start Address, and write data to the I/O port. The DMA Address will be incremented and the Byte Counter will be decremented after each transfer. The DMA is terminated when the Remote Byte Count Register reaches zero. In 32-bit address mode, LAS set in DCR, operations by remote DMA module 20 are disabled. Fifo and Bus Operations Overview To accommodate the different rates at which data comes from (or goes to) the network and goes to (or comes from) the system memory, preferred system embodiments contain a 16-byte FIFO for buffering data between the bus and the media. The FIFO threshold is selectable, allowing filling (or emptying) the FIFO at different rates. When FIFO module 6 has filled to its programmed threshold, the local DMA channel transfers these bytes (or words) into local memory. It is crucial that the local DMA is given access to the bus within a minimum bus latency time; otherwise a FIFO underrun (or overrun) occurs. To understand FIFO underruns or overruns, there are two causes which produce this condition: 1. The bus latency is so long that the FIFO has filled (or emptied from the network before the local DMA has serviced the FIFO. 2. The bus latency or bus data rate has slowed the throughput of the local DMA to the point where it is slower than the network data rate (10 Mb/s) . The second condition is also dependent upon bus clock and word width (byte wide or word wide) . The worst case condition ultimately limits the overall bus latency which preferred system embodiments can tolerate. FIFO Operation at the End of Receive: 8390D Compatible Mode As shown in FIGURE 6A, when Carrier Sense goes low, preferred system embodiments enter its end of packet processing sequence, emptying its FIFO and writing the status information at the beginning of the packet. Preferred system embodiments hold onto the bus for the entire sequence. The longest time BREQ may be extended occurs when a packet ends just as preferred system embodiments perform its last FIFO burst. In this case, preferred system embodiments perform a programmed burst transfer followed by flushing the remaining bytes in FIFO module 6 and completes by writing the header information to memory. This sequence is generally comprised of the following steps: 1. Preferred system embodiments issue BREQ because the FIFO threshold has been reached. 2. During the burst, packet ends, resulting in BREQ extended. 3. Preferred system embodiments flushes remaining byte from the FIFO. 4. Preferred system embodiments perform internal processing to prepare for writing the header. 5. Preferred system embodiments write 4-byte (2-word) header. 6. Preferred system embodiments deasserts BREQ. FIFO Operation at the End of Receive: Exact Burst Mode When the Compatibility Select Mode Register is programmed for Exact Burst Mode, preferred system embodiments will finish the current local DMA burst and release the bus. Preferred system embodiments will reissue a request and, after receiving BACK, it will empty the FIFO, calculate the next page location, and will write the packet header. This mode eliminates a problem in the DP8390 which causes the 8390 to maintain control of the bus for an exceptionally long time at the end of a packet reception. Threshold Detection (Bus Latency) Allowable bus latency is the maximum delay between BREQ and BACK at which no FIFO overruns or underruns occur. FIFO underruns occur during packet transmission when preferred system embodiments read an empty FIFO. FIFO overruns occur during packet receptions when preferred system embodiments write to a full FIFO. The FIFO requests servicing from the local DMA whenever it's programmable threshold is reached. During packet reception the threshold indication is given when the amount of data in the FIFO is equal to or exceeds the programmed threshold. During packet transmission, the threshold indication is given when the number of empty location in the FIFO is equal to or exceeds the programmed threshold. Thus with a smaller programmed threshold, the FIFO will request servicing sooner, allowing for greater bus latencies. FIFO at the Beginning of Transmit Referring to FIGURE 6C, the preferred system embodiments will not trigger a direct memory access the first burst of transmit data until the TXE output goes high, indicating that preferred system embodiments have begun transmission of the preamble. This allows preferred system embodiments to respond to an incoming message any time prior to actual transmission across the physical media. The result of this implementation is that the initial memory latency requirement for preferred system embodiments is 6xs regardless of the FIFO threshold setting. Send Packet Command The channel provided by Remote DMA module 20 can be automatically initialized to transfer a single packet from the Receive Buffer Ring. The CPU begins this transfer by issuing a "Send Packet" Command. Local DMA module 20 will be initialized to the value contained in Boundary Pointer Register 56 and the Remote Byte Count Register pair (RBCRO, RBCRl) will be initialized to the value of the Receive Byte Count fields found in the Buffer Header of the packet pointed to by BNRY. After the data is transferred, the Boundary Pointer 56 is advanced to allow the buffers to be used for new receive packets. The Remote Read will terminate when the Byte Count equals zero. The Remote DMA module 20 is then prepared to read the next packet from the Receive Buffer Ring 58. If the DMA pointer crosses the Page Stop Register, it is reset to the Page Start Address. This allows the Remote DMA module 20 to remove packets that have wrapped around to the top of the Receive Buffer Ring 58. INTERNAL REGISTERS Overview All user registers are 8 bits wide and mapped into three pages which are selected in the Command Register (PSO, PS1) . Pins RA0-RA3 are used to address registers within each page. Page 0 registers are those registers which are commonly addressed during the operation of preferred system embodiments, while page 1 registers are used primarily for initialization. The registers are partitioned to avoid having to perform two write/read cycles to access commonly used registers. Page 3 registers are special purpose test registers which should never be accessed by the user. Setting PSO, PS1 to point to page 3 will not have an adverse affect on preferred system embodiments, but I/O reads and writes are strictly prohibited while the preferred system is in operation. Register Descriptions TABLES 8, 9, and 10 show the corresponding register map for preferred system embodiments. Page 0 Address Assignments (PS1=0, PS0=0) RA0-RA3 RD WR 00H CR Command CR Command 01H CLDAO Current Local DMA Address 0 PSTART Page Start Register 02H CLDA1 Current Local DMA Address 1 PSTOP Page Stop Register 03H BNRY Boundary Pointer BNRY Boundary Pointer 04H TSR Transmit Status Register TPSR Transmit Page Start Address 05H NCR Number of Collisions Register TBCRO Transmit Byte Count Register 0 06H FIFO FIFO TBCR1 Transmit Byte Count Register 1 07H ISR Interrupt Status Register ISR Interrupt Status Register 08H CRDAO Current Remote DMA Address 0 RSARO Remote Start Address Register 0 09H CRDA1 Current Remote DMA Address 1 RSARl Remote Start Address Register 1 OAH Reserved RBCRO Remote Byte Count Register 0 OBH Reserved RBCRl Remote Byte Count Register 1 OCH RSR Receive Status Register RCR Receive Configuration Register ODH CNTRO Tally Counter 0 (Frame TCR Transmit Configuration Register Alignment Errors) OEH CNTR1 Tally Counter 1 (CRC Errors) DCR Data Configuration Register OFH CNTR2 Tally Counter 2 (Missed Packet IMR Interrupt Mask Register Errors) TABLE 8 Page 1 Address Assignments (PS 1 =0, PS0= 1) RA0-RA3 RD WR OOH CR Command CR Command 01H PARO Physical Address Register 0 PARO Physical Address Register 0 02H PAR1 Physical Address Register 1 PAR1 Physical Address Register 1 03H PAR2 Physical Address Register 2 PAR2 Physical Address Register 2 04H PAR3 Physical Address Register 3 PAR3 Physical Address Register 3 05H PAR4 Physical Address Register 4 PAR4 Physical Address Register 4 06H PAR5 Physical Address Register 5 PAR5 Physical Address Register 5 07H CURR Current Page Register CURR Current Page Register 08H MARO Multicast Address Register 0 MARO Multicast Address Register 0 09H MAR1 Multicast Address Register 1 MAR1 Multicast Address Register 1 OAH MAR2 Multicast Address Register 2 MAR2 Multicast Address Register 2 OBH MAR3 Multicast Address Register 3 MAR3 Multicast Address Register 3 OCH MAR4 Multicast Address Register 4 MAR4 Multicast Address Register 4 ODH MAR5 Multicast Address Register 5 MAR5 Multicast Address Register 5 OEH MAR6 Multicast Address Register 6 MAR6 Multicast Address Register 6 OFH MAR7 Multicast Address Register 7 MAR7 Multicast Address Register 7 TABLE 9 Page 2 Address Assignments (PS1 = 1, PS0 = 0) RA0-RA3 RD WR OOH CR Command CR Command 01H PSTART Page Start Register CLDAO Current Local DMA Address 0 02H PSTOP Page Stop Register CLDA1 ■Current Local DMA Address 1 03H RNPP Remote Next Packet Pointer RNPP Remote Next Packet Pointer 04H TPSR Transmit Page Start Address Reserved 05H LNPP Local Next Packet Pointer LNPP Local Next Packet Pointer 06H AC1 Upper Address Counter AC1 Upper Address Counter 07H ACO Lower Address Counter ACO Lower Address Counter 08H CMSR Compatibility Mode Select CMSR Compatbility Mode Select Register Register 09H Reserved Reserved OAH Reserved Reserved OBH Reserved Reserved OCH RCR Receive Configuration Register Reserved ODH TCR Transmit Configuration Register Reserved OEH DCR Data Configuration Register Reserved OFH IMR Interrupt Mask Register Reserved TABLE 10 Register Descriptions Command Register (CR) TABLE 11 is a diagram showing the command register (CR) . PS1 PSO RD2 RD1 RDO TXP STA STP TABLE 11 The Command Register is used to initiate transmissions, enable or disable operations by Remote DMA module 20 and to select register pages. To issue a command the microprocessor sets the corresponding bit(s) (RD2, RD1, RDO, TXP). Further commands may be overlapped, but with the following rules: 1. If a transmit command overlaps with a operation by remote DMA module 20, bits RDO, RD1, and RD2 must be maintained for the remote DMA command when setting the TXP bit. Note that if a remote DMA command is reissued when giving the transmit command, the DMA will complete immediately if the remote byte count register has not been reinitialized. 2. If a the operation of remote DMA module 20 overlaps a transmission, RDO, RD1 and RD2 may be written with the desired values and a "0" written to the TXP bit. Writing a "0" to this bit has no effect. 3. A remote write DMA may not overlap remote read operation or vice versa. Either of these operations must either complete or be aborted before the other operation may start. Bits PS1, PSO, RD2 and STP may be set any time. DO STP - Stop: MAC offline command: Takes the ethernet Media Access Controller module 2 off-line. Receive packets in progress will be aborted and buffer resources reclaimed. Transmit packets currently transmitting (TXE high) will continue until normal completion. Transmit packets currently deferred (TXP = 1, TXE low) will be aborted with the TXP bit remaining set. Remote DMA functions remain active when STP is high. STP POWERS UP HIGH. If preferred system embodiments have previously been in start mode and the STP is set, both the STP and STA bits will remain set. Dl STA - Start: This bit is used to activate preferred system embodiments after either power up, or when preferred system embodiments have been placed in reset mode by setting STP = 1 or error. STA POWERS UP LOW. D2 TXP - Transmit Packet: This bit must be set to initiate transmission of a packet. TXP is internally reset after the transmission is completed or aborted. This bit should be set only after the Transmit Byte Count and Transmit Page Start registers have been programmed. D3-D5 RD0-RD2 - Remote DMA Command: These three encoded bits control operation of the channel of Remote DMA module 20. RD2 can be set to abort any Remote DMA command in progress. The Remote Byte Count Registers should be cleared when a Remote DMA has been aborted. The Remote Start Addresses are not restored to the starting address if the Remote DMA is aborted. TABLE 12 summarizes the relationship of RD2, RDl, and RDO. RD2 RDl RDO 0 0 0 Not Allowed 0 0 1 Remote Read 0 1 0 Remote Write 0 1 1 Send Packet 1 X X Abort/Complete Remote DMA TABLE 12 D6, D7 PSO, PS1 - Page Select: These two encoded bits select which register page is to be accessed with addressed RAO-3. TABLE 13 summarizes the relationship of PS1 and PSO. PS1 PSO 0 0 Register Page 0 0 1 Register Page 1 1 0 Register Page 2 1 1 Page 3 Test Registers (This page should not be accessed in normal operation) TABLE 13 Interrupt Status Register (ISR) TABLE 14 shows interrupt status register (ISR) ; RST RDC CNT OVW TXE RXE PTX PRX TABLE 14 This register is accessed by the host processor to determine the cause of an interrupt. Any interrupt can be masked in the Interrupt Mask Register (IMR) . Individual interrupt bits are cleared by writing a "1" into the corresponding bit of the ISR. The INT signal is active as long as any unmasked signal is set, and will not go low until all unmasked bits in this register have been cleared. The ISR must be cleared after power up by writing it with all l's. DO PRX - Packet Received: Indicates packet received with no errors. Dl PTX - Packet Transmitted: Indicates packet transmitted with no errors. D2 RXE - Receive Error: Indicates that a packet was receiver with one or more of the following errors: CRC Error, Frame Alignment Error, FIFO Overrun, and/or Missed Packet. D3 TXE - Transmit Error: Set when packet transmitted with one or more of the following errors: Excessive Collisions and/or FIFO Underrun. D4 OVW - Overwrite Warning: Set when receive buffer ring storage resources have been exhausted (Local DMA has reached Boundary Pointer) . D5 CNT - Counter Overflow: Set when MSB of one or more of the Network Tally Counters has been set. D6 RDC - Remote DMA Complete: Set when Remote DMA operation has been completed. D7 RST - Reset Status: Set when preferred system embodiments enter reset state and cleared when a State Command is issued to the CR. Writing to this bit has no effect. This bit does not generate an interrupt, it is merely a status indicator. Interrupt Mask Register (IMR) TABLE 15 shows interrupt mask register (IMR) ; 7 6 5 4 3 2 1 0 RDCE CNTE OVWE TXEE RXEE PTXE PRXE TABLE 15 DO PRXE - Packet Received Interrupt Enable 0: Interrupt disabled. 1: Enables interrupt when packet received. Dl PTXE - Packet Transmitted Interrupt Enable 0: Interrupt disabled. 1: Enables interrupt when packet is transmitted. D2 RXEE - Receive Error Interrupt Enable 0: Interrupt disabled. 1: Enables interrupt when packet received with error. D3 TXEE - Transmit Error Interrupt Enable 0: Interrupt disabled. 1: Enables interrupt when packet transmission results in error. D4 OVWE - Overwrite Warning Interrupt Enable 0: Interrupt disabled. 1: Enables interrupt when Buffer Management Logic lacks sufficient buffers to store incoming packet. D5 CNTE - Counter Overflow Interrupt Enable 0: Interrupt disabled. 1: Enables Interrupt when MSB of one or more of the Network Statistics counters has been set. D6 RDCE - DMA Complete Interrupt Enable 0: Interrupt disabled. 1: Enables Interrupt when Remote DMA transfer has been completed. D7 reserved: reserved. Powers up high. Data Configuration Register (DCR) TABLE 16 shows data configuration register (DCR) . 7 6 5 4 3 2 1 0 FT1 FT0 AR BOX WTS TABLE 16 This register is used to program preferred system embodiments for 8 or 16-bit memory interface, select byte ordering in 16-bit applications, and to establish FIFO thresholds. The DCR must be initialized prior to loading the Remote Byte Count Registers. LAS IS SET ON POWER UP. DO WTS - Word Transfer Select 0: Selects byte-wide DMA transfers. 1: Selects word-wide DMA transfers. WTS establishes byte or word transfers for both Remote and Local DMA transfers. Please note that when word-wide mode is selected, up to 32k words are addressable. A0 remains low. Dl BOS - Byte Order Select 0: MS byte placed on AD15-AD8 and LS byte on AD7-AD8 (32000, 8086) 1: MS byte placed on AD7-AD0 and LS byte on AD15 - AD8 (68000) . Ignored when WTS is low. D2 Unused Setting 1 or 0 has no effect on the preferred system embodiments. D3 Unused Setting 1 or 0 has no effect on the preferred system embodiments. D4 AR - Autoinitialize Remote 0: Send Command not executed. All packets removed from Buffer Ring under program control. 1: Send Command executed. Remote DMA autoinitialized to remove packets from Buffer Ring. D5, D6 FT0, FT1 - FIFO Threshold Select Encoded FIFO threshold. Establishes point at which bus requested when filling or emptying the FIFO. During reception, the FIFO threshold indicates the number of bytes (or words) the FIFO has filled serially from the network before bus request (BREQ) is asserted. Please note that FIFO threshold setting determines the DMA burst length. During transmission, the FIFO threshold indicates the number of bytes (or words) the FIFO have been removed by the MAC before BREQ is asserted. Thus, the transmission threshold is 16 bytes less than the receive threshold. TABLE 17 details the operation of receive thresholds; RECEIVE THRESHOLDS FT1 F 0 Word Wide Byte Wide 0 0 1 Word 2 Bytes 0 1 2 Words 4 Bytes 1 0 4 Words 8 Bytes 1 1 6 Words 12 Bytes TABLE 17 D7 Reserved - 0 Transmit Configuration Register (TCR) TABLE 18 shows transmit configuration register (TCR) ODH (Write) . 7 6 5 4 3 2 1 0 OFST ATD LB1 LBO CRC TABLE 18 The Transmit Configuration Register establishes the actions of the transmitter section of preferred system embodiments during transmission of a packet on the network. LB1 and LBO, WHICH SELECT LOOPBACK MODE, POWER UP AS 0. DO CRC - Inhibit CRC 0: CRC appended by transmitter. 1: CRC inhibited by transmitter. In loopback mode CRC can be enabled or disabled to test the CRC logic Dl, D2 LBO, LB1 - Encoded Loopback Control: These encoded configuration bits set the type of loopback that is to be performed. Note that loopback in mode 2 sets the LPBK pin high. This places the SNI in loopback mode and D3 of the DCR must be set to zero for loopback operation. TABLE 19 is a diagram summarizing encoded loopback control; LB1 LBO Mode 0 0 0 Normal Operation (LPBK=0) Mode 1 0 1 Internal Loopback (LPBK=0) Mode 2 1 0 External Loopback (LPBK=1) Mode 3 1 1 External Loopback (LPBK=0) TABLE 19 D3 ATD - Auto Transmit Disable: This bit allows another station to disable the transmitter of preferred system embodiments by transmission of a particular multicast packet. The transmitter can be re-enabled by resetting this bit or by reception of a second particular multicast packet. 0: Normal operation. 1: Reception of multicast address hashing to bit 62 disables the transmitter. Reception of multicast address hashing to bit 63 enables the transmitter. D4 OFST - Collision Offset Enable: This bit modifies the backoff algorithm to allow prioritization of nodes. 0: Backoff Logic implements normal algorithm. 1: Forces Backoff algorithm modification to 0 to 2 m_-(-+n,ιo) slot t i mes for first three collisions, then follows standard backoff. (For first three collisions, the station has higher average backoff delay making a low priority mode) . D5 Unused Setting 1 or 0 has no affect on preferred system embodiments. D6 reserved: 0 D7 reserved: 1 Transmit Status Register (TSR) TABLE 20 shows transmit status register (TSR) ODH (Read) . 7 6 5 4 3 2 1 0 owe CDH FU CRC ABT COL DFR PTX TABLE 20 This register records events that occur on the media during transmission of a packet. It is cleared when the next transmission is initiated by the host. All bits remain low unless the event that corresponds to a particular bit occurs during transmission. Each transmission should be followed by a read of this register. The contents of this register are not specified until after the first transmission. DO PTX - Packet Transmitted: Indicates transmission without error (No Excessive collisions or FIFO underrun) (ABT = "0", FU = "0".) Dl DFR - Defer to Network: Indicates that the network was active when a transmit command was issued. Preferred system embodiments have to defer to the network prior to transmission. D2 COL - Transmit Collided: Indicates that the transmission collided at least once with another station on the network. The number of collisions is recorded in the Number of Collisions Registers (NCR) . D3 ABT - Transmit Aborted: Indicates preferred system embodiments aborted transmission because of excessive collisions. (Total number of transmissions including original transmission attempt equals 16) . D4 CRS - Carrier Sense Lost: This bit is set when carrier is lost during transmission of the packet. Carrier Sense is monitored from the end of Preamble/Synch until TXEN is dropped. Transmission of the packet will not be aborted. D5 FU - FIFO Underrun: If preferred system embodiments cannot gain access of the bus before the FIFO empties, this bit is set. Transmission of the packet will be aborted. D6 CDH - CD Heartbeat: Failure of the transceiver to transit a collision signal after transmission of a packet will set this bit. The Collision Detect (CD) heartbeat signal must commence during the first 6.4 με of the Interframe Gap following a transmission. In certain collisions, the CD Heartbeat bit will be set even though the transceiver is not performing the CD heartbeat test. D7 OWC - Out of Window Collision: Indicates that a collision occurred after a slot time (51.2 με) . Transmission rescheduled as in normal collisions. Receive Configuration Register (RCR) TABLE 21 shows the receive configuration register (RCR) OCH (Write) . MON PRO AM AB AR SEP TABLE 21 DO SEP - Save Errored Packets 0: Packets with receive errors are rejected. 1: Packets with receive errors are accepted. Receive errors are CRC and Frame Alignment errors. Dl AR - Accept Runt Packets: This bit allows the receiver to accept packets that are smaller than 64 bytes. The packet must be at least 8 bytes long to be accepted as a runt. 0: Packets with fewer than 64 bytes rejected. 1: Packets with fewer than 64 bytes accepted. D2 AB - Accept Broadcast: Enables the receiver to accept a packet with an all l's destination address. 0: Packets with broadcast destination address rejected. 1: Packets with broadcast destination address accepted. D3 AM - Accept Multicast: Enables the receiver to accept a packet with a multicast address. All multicast addresses must pass the hashing array. 0: Packets with multicast destination address not checked. 1: Packets with multicast destination address checked. D4 PRO - Promiscuous Physical: Enables the receiver to accept all packets with a physical address. 0: Physical address of node must match the station address programmed in PAE0-PAR5. 1: All packets with physical addresses accepted. D5 MON - Monitor Mode: Enables the receiver to check addresses and CRC on incoming packets without buffering to memory. The Missed Packet Tally counter will be incremented for each recognized packet. 0: Packets buffered to memory. 1: Packets checked for address match, good CRC and Frame Alignment, but not buffered to memory. D6 reserved: 0 D7 reserved: 1 D2 and D3 are "OR'd" together, i.e. if D2 and D3 are set, preferred system embodiments will accept broadcast and multicast addresses are well as its own physical address. To establish full promiscuous mode, bits D2, D3 and D4 should be set. In addition, the multicast hashing array must be set to all l's in order to accept all multicast addresses. Receive Status Register (RSR) TABLE 22 shows the receive status register (RSR) OCH (Read) . DFR DIS PHY MPA FO FAE CRC PRX TABLE 22 This register records the status of the received packet, including information on errors and the type of address match, either physical or multicast. The contents of this register are written to buffer memory by the DMA after reception of a good packet. If packets with errors are to be saved, the receive status is written to memory at the head of the erroneous packet. If packets with errors are to be rejected, the RSR will not be written to memory. The contents will be cleared when the next packet arrives. CRC errors, Frame Alignment errors, and missed packets are counted internationally by preferred system embodiments which relinquishes the Host from reading the RSR in real time to record errors for Network Management Functions. The contents of this register are not specified until after the first reception. DO PRX - Packet Received Intact: Indicates packet received without error. (Bits CRC, FAE, FO and MPA are zero for the received packet.) Dl CRC - CRC Error: Indicates packet received with CRC error. Increments Tally Counter (CNTR1) . This bit will also be set for Frame Alignment errors. D2 FAE - Frame Alignment Error: Indicates that the incoming packet did not end on a byte boundary and the CRC did not match at the last byte boundary. Increments Tally Counter (TCNTRO) . D3 FO - FIFO Overrun: This bit is set when the FIFO is not serviced, causing overflow during reception. Reception of the packet will be absorbed. D4 MPA - Missed Packet: Set when packet intended for node cannot be accepted by preferred system embodiments because of a lack of receive buffers or if the controller is in monitor mode and did not buffer the packet to memory. Increments Tally Counter (CNTR2) . D5 PHY - Physical/Multicast Address: Indicates whether received packet had a physical or multicast address type. 0: Physical Address Match. 1: Multicast/Broadcast Address Match. D6 DIS - Receiver Disabled: Set when receiver disabled by entering Monitor mode. Reset when receiver is re- enabled when existing Monitor mode. D7 DFR - Deferring: Set when CRS or COL inputs are active. If the transceiver has asserted the CD line as a result of the jabber, this bit will stay set indicating the jabber condition. Note: The following encoding applies to CRC and FAE bits: FAE CRC Type of Error 0 0 0 0 No error (Good CRC and < 6 Dribble Bits) 0 1 CRC Error 1 0 Illegal, will not occur 1 1 Frame Alignment Error and CRC Error Page 2 Compatibility Mode Select Register (CMSR) TABLE 23 shows the Page 2 compatibility Mode Select Register (CMSR) 08H (Read/Write) ; 7 6 5 4 3 2 1 0 WT1 WTO E/F EXBst TABLE 23 Power up condition = OOh, 8390D fully compatible mode. This register should be written only if the DMA controllers are not active. This register should be programmed only during initialization or after issuance and completion of the Stop command. DO EXBst - Exact Burst Mode 0: compatible; hold BREQ on last received packet until all post packet processing is complete. 1: exact burst mode; release BREQ after normal burst, regain bus to empty FIFO, calculate next page location and write packet header. Dl E/F - FIFO Empty/Full Mode 0: compatible; only threshold sized bursts to and from the FIFO will be used for receive/transmit operations. 1: FIFO empty/full mode; each DMA burst will empty (receive) or fill (transmit) the FIFO; allows variable sized local memory bursts. D2,3 Reserved D3 Reserved D4,5 Walt State Selection for Local DMA Memory Access Timing TABLE 24 shows the relationship of Wait State Selection for Local DMA Memory WT1=0 wτo=o 0 wait states; MWRZ/MRDZ 2 BSCK cycles WT1=0 WT0=1 1 wait state; MWRZ/MRDZ 3 BSCK cycles WT1=1 wτo=o 2 wait states; MWRZ/MRDZ 4 BSCK cycles WT1=1 WT0=1 3 wait states; MWRZ/MRDZ 5 BSCK cycles TABLE 24 D6,7 Reserved DMA Registers The DMA Registers are partitioned into three groups: Transmit, Receive and Remote DMA Registers. The Transmit Registers are used to initialize the Local DMA Channel for transmission of packets while the Receive Registers are used to initialize the Local DMA Channel for packet reception. The Page Stop, Page Start, Current and Boundary Registers are used by the Buffer Management Logic to supervise the Receive Buffer Ring. The Remote DMA Registers are used to initialize the Remote DMA. FIGURE 7B shows registers as 8 or 16 bits wide. Although some registers are 16-bit internal registers, all registers are accessed as 8-bit registers. Thus the 16-bit Transmit Byte Count Register is broken into two 8-bit registers, TBCRO and TBCR1. Also, TPSR, PSTART, PSTOP, CURR and BNDRY only check or control the upper 8 bits of address information on the bus. Thus they are shifted to positions 15-8 in the figure. Transmit DMA Registers TABLE 25 shows the Transmit Page Start Register (TPSR) . Bit Assignment 7 6 5 TPSR A15 A14 A13 A12 All A10 A9 A8 (A7-A0 always to zero) TABLE 25 This register points to the assembled packet to be transmitted. Only the upper eight bits of the address can be specified, hence all transmit packets must be assembled on 256-byte page boundaries. The bit assignment is shown above. The values placed in bits D7-D0 will be used to initialize the higher order address (A8-A15) of the Local DMA for transmission. The lower order bits (A7-A0) are initialized to zero. TABLE 26 shows the Transmit Byte Count Register (TBCRO, 1) . 7 6 5 4 3 2 1 0 TBCR1 L15 L14 L13 L12 Lll L10 L9 L8 7 6 5 4 3 2 1 0 TBCRO L7 L6 L5 L4 L3 L2 LI LO TABLE 26 These two registers indicate the length of the packet to be transmitted in bytes. The count must include the number of bytes in the source, destination, length and data fields. The maximum number of transmit bytes allowed is 64k bytes. Preferred system embodiments will not truncate transmissions longer than 1500 bytes. The bit assignment is shown above. Local DMA Receive Registers TABLE 27 shows Page Start, Stop Registers (PSTART, PSTOP) . PSTART, A15 A14 A13 A12 All A10 A9 A8 PSTOP TABLE 27 The Page Start and Page Stop Registers program the starting and stopping address of the Receive Buffer Ring. Since preferred system embodiments use fixed 256-byte buffers aligned on page boundaries, only the upper eight bits of the start and stop address are specified. TABLE 28 shows Current Page Register (CURR) . 7 6 5 4 3 2 1 0 CURR A15 A14 A13 A12 All A10 A9 A8 TABLE 28 This register is used internally by the Buffer Management Logic as a backup register for reception. CURR contains the address of the first buffer to be used for a packet reception and is used to restore DMA pointers in the event of receive errors. This register is initialized to the same value as PSTART and should not be written to again unless the Controller is Reset. TABLE 29 shows Boundary Register (BNDRY) . BNDRY A15 A14 A13 A12 All A10 A9 A8 TABLE 29 This register is used to prevent overflow of the Receive Buffer Ring. Buffer management compares the contents of this register to the next buffer address when linking buffers together. If the contents of this register match and next buffer address, the Local DMA operation is aborted. TABLE 30 shows Current Local DMA Register 0,1 (CLDAO,1). These two registers can be accessed to determine the current Local DMA Address. CLDA1 A15 A14 A13 A12 All A10 A9 A8 7 6 5 4 3 2 1 0 CLDAO A7 A6_ A5 A4 A3 A2 Al AO TABLE 30 Remote DMA Registers TABLE 31 shows Remote Start Address Registers (RSARO,1) RSARl A15 A14 A13 A12 All A10 A9 A8 7 6 5 4 3 2 1 0 RSARO A7 A6_ A5 A4 A3 A2 Al AO TABLE 31 Remote DMA operations are programmed via the Remote Start Address (RSARO, 1) and Remote Byte Count (RBCRO,1) registers. The Remote Start Address is used to point to the start of the block of data to be transferred and the Remote Byte Count is used to indicate the length of the block (in bytes) . TABLE 32 shows Remote Byte Count Registers (RBCRO, 1). RBCRl B15 B14 B13 B12 Bll BIO B9 B8 7 6 5 4 3 2 1 0 RBCRO B7 B6 B5 B4 B3 B2 Bl BO Note: RSARO programs the start address bits A0-A7. RSARl programs the start address bits A8-A15. The address is incremented by two for word transfers, and by one for byte transfers. Byte count is decremented by two for word transfers, and by one for byte transfers. RBCRO programs LSB byte count. RBCRl programs MSB byte count. TABLE 32 RSARO programs the start address bits A0-A7. RSARl programs the start address bits A8-A15. The address is incremented by two for word transfers, and by one for byte transfers. Byte Count is decremented by two for word transfers, and by one for byte transfers. RBCRO programs LSB byte count. RBCRl programs MSB byte count. TABLE 33 Current Remote DMA Address (CRDAO, 1). CRDA1 A15 A14 A13 A12 All A10 A9 A8 7 6 5 4 3 2 1 0 CRDAO A7 A6_ A5 A4 A3 A2 Al AO TABLE 33 The Current Remote DMA Registers contain the current address of the Remote DMA. The bit assignment is shown above. Note that RSARO and CRDAO are physically the same register. So are RSARl and CRDA1. Physical Address Registers As shown in TABLE 34, the physical address registers are used to compare the destination address of incoming packets for rejecting or accepting packets. The bit assignment shown below relates the sequence in PAR0-PAR5 to the bit sequence of the receive packet. PARO DA7 DA6 DA5 DA4 DA3 DA2 DAI DAO PAR1 DA15 DAM DA13 DA12 DA11 DA10 DA9 DA8 PAR2 DA23 DA22 DA21 DA20 DA19 DA18 DA17 DA16 PAR3 DA31 DA30 DA29 DA28 DA27 DA26 DA25 DA24 DA39 DA38 DA37 DA36 DA35 DA34 DA33 DA32 PAR4 DA47 DA46 DA45 DA44 DA43 DA42 DA41 DA40 PAR5 Des tination Address Source P/S = Preamble/Synch DAO = Physical/Multicast Bit TABLE 34 Multicast Address Registers (MAR0-MAR7) FIGURE 7C is a diagram showing the operation of the multicast address registers, which provide filtering of multicast addresses hashed by the CRC logic. All destination addresses are fed through the CRC logic and as the last bit of the destination address enters the CRC, the 6 most significant bits of the CRC generator are latched. These 6 bits are then decoded by a 1 of 64 decode to index a unique filter bit (FB0-63) in the multicast address registers. If the filter bit selected is set the multicast packet is accepted. The system designer would use a program to determine which filter bits to set in the multicast registers. All multicast filter bits that correspond to multicast addresses accepted by the node are then set to one. To accept all multicast packets all of the registers are set to all ones. Please note that although the hashing algorithm does not guarantee perfect filtering of multicast addresses, it will perfectly filter up to 64 multicast addresses if these addresses are chosen to map into unique locations in the multicast filter. As shown in TABLE 35, if address Y is found to hash to the value of 32 (2OH) , then FB32 in MAR4 should be initialized to "1". This will cause preferred system embodiments to accept any multicast packet with the address Y. Network Tally Counters Three 8-bit counters are provided for monitoring the number of CRC errors, Frame Alignment Errors and Missed Packets. The maximum count reached by any counter is 192 (COH) . These registers will be cleared when read by the CPU. The count is recorded in binary in CT0-CT7 of each Tally Register. These registers initialize the FEh. TABLE 36 shows the register tabulating Frame Alignment Error Tally (CNTRO) . 7 6 5 4 3 2 1 0 CNTRO CT7 CT6 CT5 CT4 CT3 CT2 CT1 CTO TABLE 36 This counter is incremented every time a packet is received with a Frame Alignment Error. The packet must have been recognized by the address recognition logic. The counter is cleared after it is read by the processor. TABLE 37 shows the register tabulating CRC Error Tally (CNTR1) . 7 6 5 4 3 2 1 0 CNTR1 CT7 CT6 CT5 CT4 CT3 CT2 CT1 CTO TABLE 37 This counter is incremented every time a packet is received with a CRC Error. The packet must first be recognized by the address recognition logic. The counter is cleared after it is read by the processor. TABLE 38 shows the Frames Lost Tally Register (CNTR2) CNTR2 CT7 CT6 CT5 CT4 CT3 CT2 CT1 CTO TABLE 38 This counter is incremented if a packet cannot be received due to a lack of buffer resources. In monitor mode, this counter will count the number of packets that pass the address recognition logic. FIFO Register (FIFO) TABLE 39 show the FIFO register. 7 6 5 4 3 2 1 0 FIFO DB7 DB6 DB5 DB4 DB3 DB2 DB1 DBO TABLE 39 This is an eight bit register that allows the CPU to examine the contents of the FIFO after loopback. The FIFO will contain the last 8 data bytes transmitted in the loopback packet. Sequential reads from the FIFO will advance a pointer in the FIFO and allow reading of all 8 bytes. Please note that reads of the FIFO register when preferred system embodiments are not in loopback will be ignored and the data bus shall remain in TRI-STATE. Number of Collisions Register (NCR) TABLE 40 show the NCR register. 7 6 5 4 3 2 1 0 NCR NC3 NC2 NCI NC0 TABLE 40 This register contains the number of collisions a node experiences when attempting to transmit a packet. If no collisions are experienced during a transmission attempt, the COL bit of the TSR will not be set and the contents of NCR will be zero. If there are excessive collisions, the ABT bit in the TSR will be set and the contents of NCR will be zero. The NCR is cleared after the TXP bit in the CR is set. Initialization Procedures Preferred system embodiments must be initialized prior to transmission or reception of packets from the network. Power on reset is applied to the reset pin of preferred system embodiments. This clear/sets the following bits shown in TABLE 41: Register Reset Bits Set Bits Command Register (CR) PSl, PSO, RD2, STP RDl, RDO, TXP, STA Interrupt Status RST (ISR) Interrupt Mask (IMR) All Bits Data Control (DCR) BOS, WTS FT1, FTO, AR Transmit Config. LB1, LBO (TCR) Compatibility All Bits Reg (CMSR) TABLE 41 Preferred system embodiments remain in its offline state until a Start Command is issued. This guarantees that no packets are transmitted or received and that preferred embodiment remains a bus slave until all appropriate internal registers have been programmed. After initialization the STP bit of the command register is reset and the STA bit is set, and packets may be received and transmitted. Initialization Sequence The following initialization procedure is mandatory: 1. Program Command Register for Page 0 (Command Register = 21H) . Initialize Data Configuration Register (DCR) . Initialize Receive Configuration Register (RCR) . Place the preferred embodiment in LOOPBACK mode 1 or 2 (Transmit Configuration Register = 02H or 04H0) . 5. Initialize Receive Buffer Ring: Boundary Pointer (BNDRY) , Page Start (PSTART) , and Page Stop (PSTOP) . 6. Clear Interrupt Status Register (ISR) by writing OFFh to it. 7. Initialize Interrupt Mask Register (IMR). 8. Program Command Register for page 1 (Command Register = 61H) . a. Initialize Physical Address Registers (PAR0-5) b. Initialize Multicast Address Registers (MAR0-7) c. Initialize CURRent pointer. 9. Put the preferred system embodiment in START mode (Command Register = 22H) . The local receive DMA is still not active since the preferred embodiment is in LOOPBACK. 10. Initialize the Transmit Configuration for the intended value. Preferred embodiment is now ready for transmission and reception. Before receiving packets, the user must specify the location of the Receive Buffer Ring. This is programmed in the Page Start and Page Stop Registers. In addition, the Boundary and Current Page Registers must be initialized to the value of the Page Start Register. These registers will be modified during reception of packets. LOOPBACK DIAGNOSTICS Three forms of local loopback are provided on preferred system embodiments. The user has the ability to loopback through the deserializer on preferred system embodiments, through the SNI, and to the coax to check the link through the transceiver circuitry. Because of the half duplex architecture of the preferred embodiment, loopback testing is a special mode of operation with the following restrictions: Restrictions During Loopback The FIFO is split into two halves, one used for transmission and the other for reception. Only 8-bit fields can be fetched from memory so two tests are required for 16- bit systems to verify integrity of the entire data path. During loopback the maximum latency from the assertion of BREQ to BACK is 2.0 με. Systems that wish to use the loopback test yet do not meet this latency, can limit the loopback packet to 7 bytes without experiencing underflow. Only the last 8 bytes of the loopback packet are retained in the FIFO. The last 8 bytes can be read through the FIFO register, which will advance through the FIFO to allow reading the receive packet sequentially. TABLE 42 shows this operation in more detail. DESTINATION ADDRESS = ( 6 bytes ) Station Physical Address SOURCE ADDRESS 2 bytes LENGTH = 46 to 1500 bytes DATA Appended by Preferred if CRC ="0* CRC in TCR TABLE 42 Referring to TABLE 43, when in word-wide mode with Byte Order Select set, the loopback packet must be assembled in the even byte locations as shown below. (The loopback only operates with byte wide transfers.) LS BYTE (AD8-15) MS BYTE (ADO-7) DESTINATION SOURCE LENGTH DATA CRC TABLE 43 When in word-wide mode with Byte Order Select low, the following format must be used for the loopback packet: MS BYTE (ADO-7) DESTINATION SOURCE LENGTH DATA CRC TABLE 44 Please note when using loopback in word mode 2n bytes must be programmed in TBCRO, 1 where n = actual number of bytes assembled in even or odd location. To initiate a loopback the user first assembles the loopback packet, then selects the type of loopback using the Transmit Configuration Register bits LBO, LB1. The Transmit Configuration Register must also be set to enable or disable CRC generation during transmission. The user then issues a normal transmit command to send the packet. During loopback the receiver checks for an address match and if the CRC bit in the TCR is set, the receiver will also check the CRC. The last 8 bytes of the loopback packet are buffered and can be read out of the FIFO using the FIFO read port. Loopback Modes MODE 1: Loopback Through the Controller (LB1 = 0, LBO = 1) . If the loopback is through the preferred system embodiment, then the serializer is simply linked to the deserializer and the receive clock is derived from the transmit clock. MODE 2: Loopback Through the SNI (LB1 - 1, LBO = 0) . If the loopback is to be performed through the SNI, the preferred system embodiments provides a control (LPBK) that forces the SNI to loopback all signals. MODE 3: Loopback to Coax (LB1 = 1, LBO = 1). Packets can be transmitted to the coax in loopback mode to check all of the transmit and receive paths and the coax itself. Please note in MODE 1, CRS and COL lines are not indicated in any status register, but preferred embodiment will still defer if these lines are active. In MODE 2, COL is masked, and in MODE 3 CRS and COL are not masked. Reading the Loopback Packet The last eight bytes of a received packet can be examined by 8 consecutive reads of the FIFO register. The FIFO pointer is incremented after the rising edge of the CPU's read strobe. Alignment of the Received Packet in the FIFO Reception of the packet in the FIFO begins at location zero. When the FIFO pointer reaches the last location in the FIFO, the pointer wraps to the top of the FIFO, overwriting the previously received data. This process continues until the last byte is received. Preferred system embodiments then appends the received count in the next two locations of the FIFO. The contents of the Upper Byte Count are also copied to the next FIFO location. The number of bytes used in the loopback packet determines the alignment of the packet in the FIFO since the read pointer remains at location 0. The alignment for a 64-byte packet is shown below in TABLE 45: FIFO FIFO LOCATION CONTENTS 0 LOWER BYTE COUNT -first Byte Read 1 UPPER BYTE COUNT Second Byte Read 2 UPPER BYTE COUNT ■ 3 LAST BYTE ■ 4 CRC1 ■ 5 CRC2 ■ 6 CRC3 →Last Byte Read 7 CRC4 TABLE 45 Referring to TABLE 46, For the following alignment in the FIFO the packet length should be (N x 8) + 5 bytes. Note that if the CRC bit in the TCR is set, CRC will not be appended by the transmitter. If the CRC is appended by the transmitter, the last four bytes, N-3 to N, correspond to the CRC. FIFO FIFO LOCATION CONTENTS 0 BYTE N-4 -First Byte Read 1 BYTE N-3 (CRC1) Second Byte Read 2 BYTE N-2 (CRC2) 3 BYTE N-l (CRC3) 4 BYTE N (CRC4) 5 LOWER BYTE COUNT 6 UPPER BYTE COUNT ►Last Byte Read 7 UPPER BYTE COUNT TABLE 46 Loopback Tests Loopback capabilities are provided to allow certain test to be performed to validate operation of preferred system embodiment prior to transmitting and receiving packets on a live network. Typically these test may be performed during power up of a node. The diagnostic provides support to verify the following: 1. Verify integrity of data path. Received path is checked against transmitted data. 2. Verify CRC logic's capability to generate good CRC on transmit. Verify CRC on receive (good or bad CRC) . 3. Verify that the Address Recognition Logic can a. recognize address match packets b. reject packets that fail to match an address Loopback Operation in the Preferred Embodiment Loopback is a modified form of transmission using only half of the FIFO. This places certain restrictions on the use of loopback testing. When loopback mode is selected in the TCR, the FIFO is split. A packet should be assembled in memory, and the TPSR and TBCRO, TBCRl registers should be programmed for packet transmission. When the transmit command is issued the following operations occur: Transmitter Actions 1. Data is transferred from memory by the DMA until the FIFO is filled. For each transfer, TBCRO and TBCRl are decremented. (Subsequent burst transfers are initiated when the number of bytes in the FIFO drops below the programmed threshold) . 2. The preferred embodiment generates 62 bits of preamble followed by a 2-bit synch pattern. 3. Data transferred from FIFO to serializer. 4. If CRC = 1 in the TCR, no CRC calculated by preferred system embodiments, the last byte transmitted is the last byte from the FIFO (allows software CRC to be appended) . If CRC = 0, preferred system embodiments calculates and appends four bytes of the CRC. 5. At end of Transmission PTX bit set in ISR. Receiver Actions 1. Wait for synch, all preamble stripped. 2. Store packet in FIFO, increment the receive byte count for each incoming byte. 3. If CRC = 1 in the TCR, the receiver checks the incoming packet for CRC errors. If CRC = 0 in the TCR, the receiver does not check CRC errors. 4. At the end of the receive, the receive byte count is written into the FIFO and the receive status register is updated. Examples The following examples show what results can be expected from a- properly operated the preferred embodiment during loopback. The restrictions and results of each type of loopback are listed for reference. The loopback tests are divided into two sets of tests. One verifies the data path, CRC generation and byte count through all three paths. The second set of tests uses internal loopback to verify the receiver's CRC checking and address recognition. For all of the tests the DCR was programmed to 4Oh. TABLE 47 summarizes these circumstances. PATH TCR RCR TSR RSR ISR Internal 02 00 53(1) 02(2) 02(3) TABLE 47 Please note that since carrier sense and collision detect inputs are blocked during internal loopback, carrier and CD heartbeat are not seen and the CRS and CDH bits are set. Please also note that CRC errors are always indicated by receiver if CRC is appended by the transmitter. In addition, please note that only the PTX bit in the ISR is set. The PRX bit is only set if status is written to memory. In loopback, this action does not occur and the PRX bit remains 0 for all loopback modes and that all values are hex. TABLE 48 summarizes these circumstances. PATH TCR RCR TSR RSR ISR External 04 00 43(1) 02 02 TABLE 48 Please note that CDH is set and CRS is not set since it is generated by the external encoder/decoder. TABLE 49 summarizes these circumstances. PATH TCR RCR TSR RSR ISR External 06 00 03(1) 02 02(2) TABLE 49 Please note CDH and CRS should not be set. The TSR, however, could also contain Olh, 03h, 07h and a variety of other values, depending on whether collisions were encountered or the packet was deferred. Please note that these registers will contain 08h if packet is not transmittable. During external loopback preferred system embodiments are now exposed to network traffic. If is therefore possible for the contents of both the Receive portion of the FIFO and the RSR to be corrupted by any other packet on the network. Thus, in a live network the contents of the FIFO and RSR should not be depended upon. Preferred system embodiments still abide by the standard CSMA/CD protocol in external loopback mode (i.e. the network will not be disturbed by the loopback packet) . All values are hex. CRC and Address Recognition The next three tests exercise the address recognition logic and CRC. These test should be performed using internal loopback only so that the preferred embodiment is isolated from interference from the network. These tests also require the capability to generate CRC in software. The CRC and FAE bits in the RSR are only set if the address of the packet matches the address filters. The following sequence of packets will test the address recognition logic. The DCR should be set to 4Oh and the TCR should be set to 03h with a software generated CRC. TABLE 50 outlines the relationship between Packet Contents and Results. Packet Contents Results Test Address CRC RSR Test A Matching Good 01(2) Test B Matching Bad 02(2) Test C Non-Matching Bad 01 Test D Non-Matching Good 01 TABLE 50 Please note that status will read 21h if multicast address used and that status will read 22h if multicast address used. In test A, the RSR is set up. In test B, the address is found to match since the CRC is flagged as bad. Test C provides that the address recognition logic can distinguish a bad address and does not notify the RSR of the bad CRC. The receiving CRC is proven to work in test A and test B. Finally, note that all values are hex. Network Management Functions Network management capabilities are required for maintenance and planning of a local area network. Preferred system embodiments support the minimum requirements for network management in hardware. The remaining requirements can be met with software counts. There are three events that software alone cannot track during reception of packets: CRC errors, Frame Alignment errors, and Missed Packets. Since errored packets can be rejected, the status associated with these packets is lost unless the CPU can access the Receive Status Register before the next packet arrives. In situations where another packet arrives very quickly, the CPU may have opportunity to do this. Preferred system embodiments count the number of packets with CRC errors and Frame Alignment errors. 8-bit counters have been selected to reduce overhead. The counters will generate interrupts whenever their MSBs are set so that a software routine can accumulate the network statistics and reset the counters before overflow occurs. The counters are sticky so that when they reach a counter is provided to count the number of packets preferred system embodiments misses because of buffer overflow or being in the monitor state. FIGURE 8 is a diagram showing the network management functions of preferred system embodiments. Additional information required for network management is available in the Receive Status and Transmit Status registers. Transmit status is available after each transmission for information regarding events during transmission. Typically, the following statistics might be gathered in software: Traffic: Frames Sent OK Frames Received OK Multicast Frames Received Packets Lost due to Lack of Resources Retries/Packet Errors: CRC Errors Alignment Errors Excessive Collisions Packet with Length Errors Heartbeat Failure BUS ARBITRATION TIMING After receiving a Hardware Reset, preferred system embodiments comes up as a slave in the Offline State. The receiver and transmitter are both disabled in this state. The offline state can be reentered under three conditions; soft reset (Stop Command) , hard reset (RESET input) , or an error that shuts down the receiver or transmitter (FIFO underflow or overflow) . After initialization of registers, preferred system embodiments is issued a Start command and preferred system embodiments enters the idle state. Until the DMA is required preferred system embodiments remains in an idle state. The idle state is exited by a request from the FIFO in the case of receive or transmit, or from the Remote DMA in the case of Remote DMA operation. After acquiring the bus in a BREQ/BACK handshake, the Remote or Local DMA transfer is completed and preferred system embodiments reenters the idle state. DMA Transfers Timing The DMA can be programmed for the following types of transfers: 16-Bit Address, 8-bit Data Transfer 16-Bit Address, 16-bit Data Transfer All DMA transfers use BSCK for timing. 16-Bit Address modes require 4 BSCK cycles as shown in FIGURE 10A. FIFO Burst Control All Local DMA transfers are burst transfers. Once the DMA requests the bus and the bus is acknowledged, the DMA will transfer an exact burst of bytes programmed in the Data Configuration Register (DCR) , then relinquish the bus. If there are remaining bytes in the FIFO the next burst will not be initiated until the FIFO threshold is exceeded. If desired, the DMA can empty/fill the FIFO when it acquires the bus. Even if BACK is removed during the transfer, the burst transfer will not be aborted. Multiplexed Address Data Bus Control Preferred system embodiments provides two control signals to facilitate multiplexing of the address and data bus. The AD_MUX_H and AD_MUX_L signals select either the address or data to be driven out. When it is a "1", the address is to be driven out. FIGURE 9C shows the waveforms of these two signals in different modes. Remote DMA-Bidirectional Port Control FIGURE 9D is a timing diagram that shows Bus Handshake Signals for Remote DMA Transfers. The Remote DMA transfers data between the local buffer memory and a bidirectional port (memory to I/O transfer) . This transfer is arbiter on a byte by byte (or word by word) basis versus the burst transfer used for Local DMA transfers. This bidirectional port is also read/written by the host. All transfers through this port are asynchronous. At any time, transfers are limited to one direction, either from the port to local buffer memory (Remote Write) , or from local buffer memory to the port (Remote Read) . Remote Read Timing FIGURE 9E is a timing diagram that shows Remote DMA Read Cycle. The steps are as follows: 1. The DMA read byte/word from local buffer memory and writes byte/word into latch, increments the DMA address and decrements the byte count (RBCRO, 1) . 2. A Request Line (PRQ) is asserted to inform the system that a data is available. 3. The system reads the port, the read strobe (RACKJ.S used as an acknowledge by the Remote DMA, and it goes back to step 1. Steps 1-3 are repeated until the remote DMA is complete. Note that in order for the Remote DMA to transfer a byte from memory to the latch, it must arbitrate access to the local bus via a BREQ, BACK handshake. After each byte or word is transferred to the latch, BREQ is dropped. If a Local DMA is in progress, the Remote DMA is held off until the local DMA is complete. Remote Write Timing FIGURE 9F is a timing diagram showing remote DMA Write Cycles. A Remote Write operation transfers data from the I/O port to the local buffer RAM. Preferred system embodiments initiate a transfer by requesting a byte/word via the PRQ. The system transfers a byte/word to the latch via IOW. This write strobe is detected by preferred system embodiments and PRQ is removed. By removing the PRQ, the Remote DMA holds off further transfers into the latch until the current byte/word has been transferred from the latch. PRQ is reasserted and the next transfer can begin. 1. Preferred system embodiments asserts PRQ. System writes byte/word into latch. Preferred system embodiments removes PRQ. 2. Remote DMA reads contents of port and write byte/word to local buffer memory, increments address and decrements byte count (RBCRO, 1) . 3. Go back to step 1. Steps 1-3 are repeated until the remote DMA is complete. Slave Mode Timing When CS is low preferred system embodiments become a bus slave. The CPU can then read or write any internal registers. All register access is byte wide. The timing for register access is shown in Figure 10-7. The host CPU accesses internal registers with four address lines, RA0-RA3 , SRD-Z, SWR-Z, and CSZ strobes. Since preferred system embodiments may be a local bus master when the host CPU attempts to read or write to the controller, an ACK line is used to hold off the CPU until the preferred systems leave master mode and to allow internal synchronization in the case of back to back host accesses. Register Read (Non Latched, ADS0=1) Symbol Parameter Min Max Unit 'ACKDV ACK Low to Valid Date 63 ns • RACKH Read Strobe to ACK High 7 ns 'RACKL Read Strobe to ACK Low (n+o.5)bcyc+l2 ns 'RDH Read Strobe to Data 12 ns • Invalid l RSRH « Register Select Hold from 10 ns Read 'RSRS Register Select to Read 10 ns Setup TABLE 51 Register Write (Non Latched, ADS0=1) Symbol Parameter Min Max Uni t l RSWH Register Select Hold from 10 ns Write l RSWS Register Select to Write 10 ns Setup 'RWDH Register Write Data Hold 10 ns 'RWDS Register Write Data Setup 10 ns •WACKH Write High to ACK High 7 ns *WACKL Write Low to ACK Low (n+0.5)bcyc+12.3 ns l WW Write Width from ACK 20 ns TABLE 52 Local DMA Read Cycle Symbol Parameter Min Max Unit 'AD Address Delay 19 ns l ADS0D ADSO Delay 13 ns 'ADSOEND ADSO EN Delay 16 ns 'RDD Memory Read Strobe Delay 15 ns l RDHKH Read Data Hold Time 0 ns l RDS Read Data Setup Time 38 ns TABLE 53 Local DMA Write Cycle Symbol Parameter Min Max Unit l AD Address Delay 19 ns l ADS0D ADSO Delay 13 ns 'ADSOEND ADSO EN Delay 16 ns T.END DATA EN OUT Delay 29 ns l WDH Write Data Hold Time 32 ns l WDS Write Data Setup Time 80 ns 'WRD Memory Write Strobe Delay 18 ns TABLE 54 Host Recovery Times Symbol. Parameter Min Max Unit l RRCV Host Read Recovery Time 2 bcyc+12 ns t WRCV Host Write Recovery Time 5 bcyc+12 ns l RWH Minimum Read/Write 20 ns Strobes High Time TABLE 55 Remote DMA (Read, Send Command) Symbol Parameter Min Max Unit 'PRQH Port Request High Delay 21 ns l PRQL Port Request Low Delay 2 bcyc+20 ns _?WRD Bus Clock to Port Write 19 ns Low l RAKW Remote Acknowledge Read 20 ns Strobe Pulse Width l RDH (Note 1) Send Command Data Hold 0 ns Time 'RDS (Note 1) Send Command Data Setup 38 ns Time TABLE 56 Remote DMA (Write Cycle) Symbol Parameter Min Max Unit l PRDD Port Request High Delay 11 ns 'PRQH Port Request High Delay 21 ns 'PRQL Port Request Low Delay 2 bcyc+20 ns l WACKW WACKPulse Width 20 ns TABLE 57 Wait State Insertion Symbol Parameter Min Max Unit l EWR External Wait Release Time 0 ns 'EWS External Wait Setup to T3 I Clock 0 ns TABLE 58 Serial Timing - Receive Symbol Parameter Min Max Unit Serial Timing - Receive (Beginning of Frame) 'RCH Receive Clock High Time 40 21 ns 'RCL Receive Clock Low Time 40 ns 'RCYC Receive Clock Cycle Time 90 ns 'RDH Receive Data Hold Time from Receive Clock 20 ns High •RDS Receive Data Setup Time to Receive Clock 20 ns High *PTS First Preamble Bit to Synch 8 rcyc cycles 11.9.2 Serial Timing - Receive (End of Frame) 'RXRCK Minimum Number of Receive Clocks after 5 rcyc cycles CRS Low TCRSL Receive Clock to Carrier Sense Low 0 1 rcyc cycles TDRB Maximum of Allowed Dribbe Bits/Clocks 3 rcyc cycles T1FG Receive Recovery Time 40 rcyc cycles TABLE 59 AC Specifications are detailed in TABLE 60. FIGURE 19A is a serial timing diagra —transmit (Beginning of Frame) and FIGURE 19B is a serial timing diagram—transmit (End of Frame, CD Heartbeat) . Serial Timing - Transmit Symbol Parameter Min Max Units Serial Timing - Transmit (Beginning of Frame) TXCENH Transmit Clock Low to Transmit Enable High 8 ns TXCH Trasnmit Clock High Time 40 ns TXCL Transmit Clock Low Time 40 ns TXCSDH Serial Data Hold Time from Transmit Clock 11 ns Low TXCSDV Transmit Clock to Serial Data Valid 1 1 ns TXCYC Transmit Clock Cycle Time 90 ns Serial Timing - Receive (End of Frame, CD Heartbeat) •CDHW Collision Detect Width 2 txcyc cycles TCDL Transmit Clock Low to Data Low 11 ns TCENL Transmit Clock Low to TXEN Low 8 ns TDCDH TXEN Low to Start of Collision Detect 64 txcyc cycles Heartbeat TABLE 60 Appendix A contains detailed design information in numerous tables and flowcharts that has been described above. FURTHER MODIFICATION Although particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that various changes and modifications may be made in many ways while retaining one or more of the features of the invention without departing from the spirit and scope of the invention. For example, it is foreseeable that one skilled in the art may design software configurations that emulate the functionality of components described above.

Claims: CLAIMS I claim 1. A media access controller system, comprising (a) at least one input; (b) at least one output; (c) clock coordinating circuitry with at least one clock input and at least one clock output, said clock coordinating circuitry comprising active clock edge switch circuitry to switch said clock output(s) from a first edge to a second edge to enable data changes on said output(s) to remain approximately centered at a mid-bit time location; (d) cyclic redundancy check circuitry receives said clock output(s) from said clock coordinating circuitry; (e) receive circuitry to receive at least one data input signal from said input(s), said receive coupled to said cyclic redundancy check circuitry and to said clock coordinating circuitry, said receive circuitry works in conjunction with said cyclic redundancy check circuitry to check said data input signal(s) for errors; and (f) transmit circuitry to transmit at least one data output signal on said output(s), said transmit circuitry coupled to said cyclic redundancy check circuitry and to said clock coordinating circuitry works in conjunction with said cyclic redundancy check circuitry to check said data output signal(s) for errors. 2. The media access controller of claim 1, wherein said first edge is a rising edge and said second edge is a falling edge. 3. The media access controller of claim 1, wherein said active clock edge switch circuitry comprises circuitry that provides additional single cycle suppression. 4. The media access controller of claim 1, further comprising tally circuitry to tabulate errors found in said data output signal(s) and said data input signal(s) . 5. The media access controller of claim 1, wherein said active clock edge switch circuitry comprises cycle suppression circuitry to switch said clock output(s) from a first edge to a second edge within one cycle. 6. The media access controller of claim 1, wherein said active clock edge switch circuitry comprises a multiplexor with a plurality of inputs and an output, and a strobe input, said plurality of inputs coupled to said clock coordinating circuitry to receive a clock input and an inverted clock input, said strobe input coupled to a select clock input said output coupled to said transmitter and said receiver. 7. The media access controller of claim 6, wherein said active clock edge switch circuitry comprises cycle suppression circuitry to switch said clock output(s) from a first edge to a second edge within one cycle. 8. The media access controller of claim 7, wherein said cycle suppression circuitry comprises (cl) an OR gate with a first and second input and an output, said second input of said OR gate coupled to a switch input; (c2) a first AND gate with a first and second input and an output, said first input of said first AND gate electrically coupled to a reset input; (c3) a first flip flop having an input, an output, an inverted output, a clear input, and a clock input, said input of said first flip flop coupled to said output of said OR gate, said output of said first flip flop coupled to said first input of said OR gate, said clock input of said first flip flop coupled to a first clock input, and said clear input of said first flip flop coupled to said output of said first AND gate; (c4) a second flip flop having an input, an output, an inverted output, a clear input, and a clock input, said clock input coupled to a second clock input that is delayed said first clock input of said second flip flop, said inverted output of said second flip flop of said second flip flop coupled to said second input of said first AND gate, said clear signal of said second flip flop coupled to a reset input; and (c5) an invertor with an input and an output; and (c6) a second AND gate having a first and second input and an output, said first input connected to said output of said multiplexor, said second input coupled said output of said invertor, said input of said invertor coupled to said output of said first flip flop and to said input of said second flip flop. 9. The media access controller of claim 7, wherein a delay line is coupled between said output of said first flip flop and said input of said invertor. 10. The active clock edge switch of claim 10, wherein said active clock edge switch is an integrated circuit that is integrated on a single piece of silicon. 11. A clock coordinating circuit, comprising (a) at least one clock input; (b) at least one clock output; and (c) active clock edge switch circuitry coupled between said clock inputs(s) and said clock output(s) to switch said clock output(s) from a first edge to a second edge to enable data changes on said output(s) to remain approximately centered at a mid-bit time location. 12. The clock coordinating circuit of claim 11, wherein said active clock edge switch circuitry comprises cycle suppression circuitry to switch said clock output(s) from a first edge to a second edge within one cycle. 13. The clock coordinating circuit of claim 11, wherein said active clock edge switch circuitry comprises a multiplexor with a plurality of inputs and an output, and a strobe input, said plurality of inputs coupled to said input(s) to receive a clock input and an inverted clock input, said strobe input coupled to a select clock input said output of said multiplexor coupled to said clock outputs. 14. The clock coordinating circuit of claim 11, wherein said active clock edge switch circuitry comprises cycle suppression circuitry to switch said clock output(s) from a first edge to a second edge within one cycle. 15. The clock coordinating circuit of claim 11, wherein said cycle suppression circuitry comprises (a) an OR gate with a first and second input and an output, said second input coupled to a switch input; (b) a first AND gate with a first and second input and an output, said first input electrically coupled to a reset input; (c) a first flip flop having an input, an output, an inverted output, a clear input, and a clock input, said input coupled to said output of said OR gate, said output coupled to said first input of said OR gate, said clock input coupled to a first clock input, and said clear input coupled to said output of said first AND gate; (d) a second flip flop having an input, an output, an inverted output, a clear input, and a clock input, said clock input coupled to a second clock input that is delayed said first clock input, said inverted output coupled to said second input of said first AND gate, said clear signal coupled to a reset input; and (e) an invertor with an input and an output; and (f) a second AND gate having a first and second input and an output, said first input connected to said output of said multiplexor, said second input coupled to said output of said invertor, said input of said invertor coupled to said output of said first flip flop and to said input of said second flip flop. 16. The clock coordinating circuit of claim 15, wherein a delay line is coupled between said output of said first flip flop and said input of said invertor. 17. The clock coordinating circuit of Claim 11, wherein said active clock edge switch is an integrated circuit that is integrated on a single piece of silicon. 18. The active clock edge switch circuit comprises (a) a multiplexor with a plurality of inputs and an output, said plurality of inputs of said multiplexor coupled to receive a clock input and an inverted clock input and said output of said multiplexor coupled to output desired clock output; and (b) cycle suppression circuitry to switch said clock output(s) from a first edge to a second edge within one cycle. 19. The active clock edge switch circuit of claim 18, wherein said cycle suppression circuitry comprises (a) an OR gate with a first and second input and an output, said second input of said OR gate coupled to a switch input; (b) a first AND gate with a first and second input and an output, said first input of said first AND gate electrically coupled to a reset input; (c) a first flip flop having an input, an output, an inverted output, a clear input, and a clock input, said input of said first flip flop coupled to said output of said OR gate, said output of said first flip flop coupled to said first input of said OR gate, said clock input of said first flip flop coupled to a first clock input, and said clear input of said first flip flop coupled to said output of said first AND gate; (d) a second flip flop having an input, an output, an inverted output, a clear input, and a clock input, said clock input coupled to a second clock input that is delayed said first clock input of said second flip flop, said inverted output of said second flip flop of said second flip flop coupled to said second input of said first AND gate, said clear signal of said second flip flop coupled to a reset input; and (e) an invertor with an input and an output; and (f) a second AND gate having a first and second input and an output, said first input connected to said output of said multiplexor, said second input coupled said output of said invertor, said input of said invertor coupled to said output of said first flip flop and to said input of said second flip flop. 20. The media access controller of claim 19, wherein a delay line is coupled between said output of said first flip flop and said input of said invertor. 21. The active clock edge switch of claim 19, wherein said active clock edge switch is an integrated circuit that is integrated on a single piece of silicon.

Inventors: JOHNSON J SCOTT, JOHNSON, J., SCOTT
Applicants: NAT SEMICONDUCTOR CORP, NATIONAL SEMICONDUCTOR CORPORATION
Application year: 1994
Main classification: H04L29
IPC codes: H04L7, H04L25, H04L29