Part Number Hot Search : 
MC681 V175LT2 GPM80A BFQ232 1N6050 10N03 PE30SN16 307C1258
Product Description
Full Text Search
 

To Download AM79C971 Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
  publication# 20550 rev: e amendment: / 0 issue date: may 2000 AM79C971 pcnet?- fast single-chip full-duplex 10/100 mbps ethernet controller for pci local bus distinctive characteristics  single-chip fast ethernet controller for the peripheral component interconnect (pci) local bus ? 32-bit glueless pci host interface ? supports pci clock frequency from dc to 33 mhz independent of network clock ? supports network operation with pci clock from 15 mhz to 33 mhz ? high performance bus mastering architecture with integrated direct memory access (dma) buffer management unit for low cpu and bus utilization ? pci specification revision 2.1 compliant ? supports pci subsystem/subvendor id/ vendor id programming through the eeprom interface ? supports both pci 5.0-v and 3.3-v signaling environments ? plug and play compatible ? supports an unlimited pci burst length ? big endian and little endian byte alignments supported  integrated 10base-t and 10base-2/5 (aui) physical layer interface ? single-chip ieee/ansi 802.3, iec/iso 8802-3 and blue book ethernet-compliant solution ? automatic twisted-pair receive polarity detection and correction ? internal 10base-t transceiver with smart squelch to twisted-pair medium ? ieee 802.3-compliant auto-negotiable 10base-t interface  supports general purpose serial interface (gpsi)  media independent interface (mii) for connecting external 10- or 100-megabit per second (mbps) transceivers ? ieee 802.3-compliant mii ? intelligent auto-poll ? external phy status monitor and interrupt ? includes intelligent on-chip network port manager that provides auto-port selection between mii, on-chip 10base-t port, and aui without software support ? supports both auto-negotiable and non auto-negotiable external phys ? supports 10base-t, 100base-tx/fx, 100base-t4, and 100base-t2 ieee 802.3- compliant mii phys at full- or half-duplex  internal/external loopback capabilities on all ports  supports patented external address detection interface (eadi) ? receive frame tagging support for inter- networking applications  dual-speed csma/cd (10 mbps and 100 mbps) media access controller (mac) compliant with ieee/ansi 802.3 and blue book ethernet standards  full-duplex operation supported in aui, 10base-t, mii, and gpsi ports with independent transmit (tx) and receive (rx) channels  flexible buffer architecture ? large independent internal tx and rx fifos ? sram-based fifo buffer extension supporting up to 128 kilobytes (kbytes) ? 1/2 gigabit per second (gbps) internal data bandwidth ? programmable fifo watermarks for both tx and rx operations ? rx frame queuing for high latency pci bus host operation ? programmable allocation of buffer space between rx and tx queues  eeprom interface supports jumperless design and provides through-chip programming ? supports full programmability of half-/full- duplex operation for external 100 mbps phys through eeprom mapping  extensive led status support
2 AM79C971  supports up to 1 megabyte (mbyte) optional boot prom and flash for diskless node application  look-ahead packet processing (lapp) data handling technique reduces system overhead by allowing protocol analysis to begin before the end of a receive frame  includes programmable inter packet gap (ipg) to address less network aggressive mac controllers  offers the modified back-off algorithm to address the ethernet capture effect  ieee 1149.1-compliant jtag boundary scan test access port interface and nand tree test mode for board-level production connectivity test  implements low-power management for critical battery powered application and green pcs ? includes two power-saving sleep modes (sleep and snooze) ? integrated magic packet ? technology support for remote power of networked pcs  software compatible with amd pcnet family and lance/c-lance register and descriptor architecture  compatible with the existing pcnet family driver/diagnostic software  available in 160-pin tqfp and 176-pin tqfp packages general description the AM79C971 controller is a single-chip 32-bit full-du- plex, 10/100-megabit per second (mbps) highly- integrated ethernet system solution, designed to address high-performance system application require- ments. it is a flexible bus mastering device that can be used in any application, including network-ready pcs and bridge/router designs. the bus master architecture provides high data throughput in the system and low cpu and system bus utilization. the AM79C971 con- troller is fabricated with amd?s advanced low-power complementary metal oxide semiconductor (cmos) process to provide low operating and standby current for power sensitive applications. the AM79C971 controller is a complete ethernet node integrated into a single vlsi device. it contains a bus interface unit, a direct memory access (dma) buffer management unit, an iso/iec 8802-3 (ieee 802.3)- compliant media access controller (mac), a large transmit fifo and a large receive fifo, sram- based fifo extension with support for up to 128k bytes of external frame buffering, an ieee 802.3u-com- pliant mii, an ieee 802.3-compliant twisted-pair trans- ceiver media attachment unit (10base-t mau), and an ieee 802.3-compliant attachment unit interface (aui). both proprietary full-duplex and ieee 802.3 compliant half-duplex operation are supported on the mii, aui, gpsi, and 10base-t mau interfaces. 10- mbps operation is supported through the mii, aui, and 10base-t mau interfaces, and 100 mbps operation is supported through the mii. the 10base-t mau inter- face includes an ieee 802.3-compliant auto-negotia- tion implementation, which will automatically negotiate between half- and full-duplex with another ieee 802.3- compliant auto-negotiation 10base-t device. the AM79C971 controller is register compatible with the lance (am7990) ethernet controller, the c- lance (am79c90) ethernet controller, and all ether- net controllers in the pcnet family except ilacc (am79c900), including the pcnet-isa controller (am79c960),pcnet-isa+ controller (am79c961), pcnet-isa ii controller (am79c961a), pcnet-32 con- troller (am79c965), pcnet-pci controller (am79c970), and pcnet-pci ii controller (am79c970a). the buffer management unit supports the lance and pcnet descriptor software models. the 32-bit multiplexed bus interface unit provides a direct interface to the pci local bus, simplifying the design of an ethernet node in a pc system. the AM79C971 controller provides the complete interface to an expansion rom or flash device allowing add-on card designs with only a single load per pci bus inter- face pin. with its built-in support for both little and big endian byte alignment, this controller also addresses non-pc applications. the AM79C971 controller?s ad- vanced cmos design allows the bus interface to be connected to either a +5-v or a +3.3-v signaling envi- ronment. a compliant ieee 1149.1 jtag test interface for board-level testing is also provided, as well as a nand tree test structure for those systems that cannot support the jtag interface. the AM79C971 controller supports auto-configuration in the pci configuration space. additional AM79C971 controller configuration parameters, including the unique ieee physical address, can be read from an ex- ternal non-volatile memory (eeprom) immediately fol- lowing system reset. the integrated manchester encoder/decoder (men- dec) eliminates the need for an external serial inter- face adapter (sia) in the system. the built-in gpsi allows the mendec to be bypassed.
AM79C971 3 in addition, the device provides programmable on-chip led drivers for transmit, receive, collision, receive po- larity, link integrity, activity, link active, address match, full-duplex, mii select, 100 mbps, or jabber status. the AM79C971 controller also provides an eadi to allow external hardware address filtering in internetworking applications and a receive frame tagging feature. for power sensitive applications where low standby current is desired, the device incorporates two sleep functions to reduce overall system power consumption, excellent for notebooks and green pcs. in conjunction with these low power modes, the pcnet- fast control- ler also has integrated functions to support magic packet technology, an inexpensive technology that al- lows remote wake up of networked pcs. the controller has the capability to automatically select either the mii, aui, or twisted-pair transceiver. only one interface is active at any one time. any of the net- work interfaces can be programmed to operate in either half-duplex or full-duplex mode (aui full-duplex only supports the 10base-f standard). the dual transmit and receive fifos optimize system overhead, providing sufficient latency tolerance at 10 mbps and for 100-mbps systems where low latencies can be guaranteed during frame transmission and reception. in highly loaded 10-mbps systems, such as servers or when using the controller in a 100-mbps environment, the additional frame buffering capability provided by a 16-bit wide sram interface provides high performance and high latency tolerance on the system bus and net- work. the AM79C971 controller can use up to 128 kbytes of sram as an extension of its dual transmit and receive fifos. when no sram is used, the AM79C971 con- troller ? s fifos are programmed to bypass the sram interface. important note: a ?no sram configuration? is only valid for 10mb mode. in 100mb mode, sram is man- datory and must always be used. iso/iec 8802-3 and ieee 802.3 will be used inter- changeably when referring to half-duplex 10 mbps net- works. ieee 802.3 or ieee 802.3u will be used interchangeably only when referring to half-duplex 100- mbps ethernet networks, since the ieee standard is not iso approved yet. full-duplex is a proprietary stan- dard and is not approved by ieee or iso.
4 AM79C971 ordering information standard products amd standard products are available in several packages and operating ranges. the order number (valid combination) is formed by a combination of the elements below. AM79C971 temperature range c = commercial (0 c to +70 c) speed option package type valid combinations list configurations planned to be supported in volume for this device. consult the local amd sales office to confirm availability of specific valid combinations and to check on newly released combinations. valid combinations device number/description not applicable k = plastic quad flat pack (pqr160) v = thin quad flat pack (pql176) AM79C971 single-chip full-duplex 10/100 mbps ethernet controller for pci local bus valid combinations AM79C971 kc\w, vc\w alternate packaging option \w = trimmed and formed in a tray \w c k\v
AM79C971 5 block diagram fifo control pci bus interface unit xtal1 xtal2 rxd[3:0] rx_er rx_clk rx_dv crs mdc mdio mii port jtag port control srdclk srd ear eadi port sf/bd txd+/- rxd+/- led3 10base-t mau do+/- di+/- ci+/- manchester encoder/ decoder (pls) & aui port 802.3 mac core led0 led1 led2 led control eecs eesk eedi eedo 93c46 eeprom interface tck tms tdo tdi buffer management unit col txd[3:0] tx_en tx_e tx_clk expansion bus interface ebua_eba[7:0] ebda[15:8] ebd[7:0] eromcs eramcs as_eboe ebwe ebclk bus rcv fifo mac rcv fifo bus xmt fifo mac xmt fifo txp+/- clk rst ad[31:00] c/be[3:0] par frame trdy irdy stop idsel devsel req gnt perr serr inta sleep txen txclk txdat rxen rxclk rxdat clsn gpsi port rxfrtge/miirxfrtge rxfrtgd/miirxfrtgd auto negotiation network port manager 20550d-1
6 AM79C971 table of contents AM79C971 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 distinctive characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 general description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 ordering information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 standard products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 block diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 related amd products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 connection diagram (pqr160) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 connection diagram (pql176) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 pin designations (pqr160) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 listed by pin number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 pin designations (pql176). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 listed by pin number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 pin designations (pqr160, pql176). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 listed by group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 pin designations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 listed by group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 pin designations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 listed by group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 listed by driver type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 pin descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 pci interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 ad[31:0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 c/be[3:0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 clk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 devsel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 gnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 idsel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 inta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 irdy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 par . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 perr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 board interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 led0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 led1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 led2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 led3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 xtal1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 xtal2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 eeprom interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 eecs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 eedi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 eedo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 eesk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 expansion bus interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 ebua_eba[7:0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 ebda[15:8] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 ebd[7:0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 eromcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 eramcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 as_eboe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 ebwe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 ebclk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 media independent interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
AM79C971 7 tx_clk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 txd[3:0]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 tx_en . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 tx_er . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 col . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 crs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 rx_clk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 rxd[3:0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 rx_dv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 rx_er . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 mdc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 mdio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 attachment unit interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 ci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 di . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 10base-t interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 rxd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 txd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 txp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 general purpose serial interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 clsn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 rxclk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 rxdat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 rxen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 txclk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 txdat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 txen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 external address detection interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 ear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 sfbd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 srd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 srdclk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 rxfrtgd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 rxfrtge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 miirxfrtgd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 miirxfrtge. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 ieee 1149.1 (1990) test access port interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 tck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 tdi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 tdo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 tms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 power supply pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 avddb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 avssb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 vdd_pll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 vss_pll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 vddb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 vssb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 vdd_pci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 vdd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 vss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 basic functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 system bus interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 software interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 network interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 detailed functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 slave bus interface unit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
8 AM79C971 slave configuration transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 slave i/o transfers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 master bus interface unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36 buffer management unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53 software interrupt timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59 media access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 transmit operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 receive operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66 loopback operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68 manchester encoder/decoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70 attachment unit interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72 twisted-pair transceiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72 general purpose serial interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 full-duplex operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 media independent interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76 auto-negotiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 automatic network port selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79 external address detection interface (eadi). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81 expansion bus interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84 eeprom interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94 led support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97 power savings modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97 ieee 1149.1 (1990) test access port interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99 the contents of the device id register is the same as the contents of csr88. . . . . . . . . . . . . .100 nand tree testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 software access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 user accessible registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 6 pci configuration registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 rap register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 control and status registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115 bus configuration registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148 initialization block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180 receive descriptors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183 transmit descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186 register summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190 pci configuration registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190 control and status registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .191 bus configuration registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195 register programming summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196 AM79C971 programmable registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196 absolute maximum ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200 operating ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200 dc characteristics over commercial operating ranges unless otherwise specified . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200 switching characteristics: bus interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203 switching characteristics: 10base-t interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 switching characteristics: attachment unit interface. . . . . . . . . . . . . . . . . . . . . .207 switching characteristics: media independent interface . . . . . . . . . . . . . . . . . . .208 switching characteristics: general-purpose serial interface . . . . . . . . . . . . .209 switching characteristics: external address detection interface . . . . . . . .210 key to switching waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211 switching test circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211 switching waveforms: system bus interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213 switching waveforms: expansion bus interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . .217 switching waveforms: 10base-t interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219 switching waveforms: attachment unit interface . . . . . . . . . . . . . . . . . . . . . . . . . .221 switching waveforms: media independent interface . . . . . . . . . . . . . . . . . . . . . . . .224
AM79C971 9 switching waveforms: general-purpose serial interface . . . . . . . . . . . . . . . . . .226 switching waveforms: external address detection interface. . . . . . . . . . . . . .227 switching waveforms: receive frame tag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228 physical dimensions* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229 pqr160 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229 pql176 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230 AM79C971 compatible media interface modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .a-1 recommendation for power and ground decoupling. . . . . . . . . . . . . . . . . . . . . . . .b-1 alternative method for initialization* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .c-1 look-ahead packet processing (lapp) concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .d-1 auto-negotiation registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e-1 AM79C971a pcnet-fast 10/100 mbps pci ethernet controller rev a.6 errata . . f-1
10 AM79C971 related amd products part no. description am79c90 cmos local area network controller for ethernet (c-lance) am7996 ieee 802.3/ethernet/cheapernet tap transceiver am79c98 twisted pair ethernet transceiver (tpex) am79c100 twisted pair ethernet transceiver plus (tpex+) am79865 100 mbps physical data transmitter (pdt) an79866a 100 mbps physical data receiver (pdr) am79c870 quad 100base-x transceiver am79c871 quad 100base-x repeater transceiver am79c940 media access controller for ethernet (mace ? ) am79c960 pcnet-isa single-chip ethernet controller (for isa bus) am79c961 pcnet-isa+ single-chip ethernet controller (with microsoft ? plug n' play support) am79c961a pcnet-isa ii single-chip full-duplex ethernet controller (with microsoft ? plug n' play support) am79c965 pcnet-32 single-chip 32-bit ethernet controller (for 486 and vl buses) am79c970a pcnet-pci ii single-chip full-duplex ethernet controller for pci local bus am79c981 integrated multiport repeater plus ? (imr+ ? ) am79c987 hardware implemented management information base ? (himib ? )
AM79C971 11 connection diagram (pqr160) pin 1 is marked for orientation. 2055a-2 160 159 158 157 156 155 154 153 152 151 150 149 148 147 146 145 144 143 142 141 140 139 138 137 136 135 134 133 131 130 129 128 127 126 125 124 123 122 121 132 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 91 90 89 88 87 86 85 84 83 82 81 92 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 78 79 80 69 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 29 sleep/ear ebd0 ebd1 ebd2 ebd3 vssb xtal2 txd+ rxd+ rxd- xtal1 vss_pll vss avddb txd- mdio mdc rxd3 rxd2 rxd1 rxd0/rxfrtgd rx_dv/rxfrtge rx_clk/rxclk rx_er/rxdat tx_er tx_clk/txclk tx_en/txen txd0/txdat txd1 txd2 txd3 col/clsn crs/rxen vddb vssb vddb txp+ txp- ebd4 avddb ad14 ad13 ad12 ad11 ad10 vdd ad9 ad8 vss c/be0 ad7 ad6 vssb idsel vdd ad23 ad22 vss ad21 ad20 vdd_pci ad19 ad18 vssb ad17 ad16 c/be2 frame irdy devsel stop vssb perr serr vdd_pci pa r c/be1 ad15 vssb trdy ad5 ad4 ad3 ad2 vdd_pci ad1 ad0 vssb vssb vssb ebua_eba0 ebua_eba1 ebua_eba2 ebua_eba3 ebua_eba4 ebua_eba5 ebua_eba6 ebua_eba7 ebda8 ebda9 ebda10 ebda11 ebda12 ebda13 ebda14 vdd ebd5 ebd6 ebd7 ebromcs eramcs as_eboe ebclk vddb ebda15 vss ebwe vddb vss vssb ad30 ad31 tdo req tms gnt vdd_pci clk rst tck inta eecs eesk/led1/sfbd eedi/led0 eedo/led3/srd/miirxfrtg d vddb vdd_pll ci- di+ avddb do- avssb vssb ad29 ad28 vdd ad27 ad26 vdd_pci ad25 ad24 c/be3 vssb tdi led2/srdclk/miirxfrtge ci+ di- do+ vss vssb pcnet ? - fast AM79C971 AM79C971 kc/w 20550d-2
12 AM79C971 connection diagram (pql176) pin 1 is marked for orientation. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 132 131 130 129 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 176 175 174 173 172 171 170 169 168 167 166 165 164 163 162 161 160 159 158 157 156 155 154 153 152 151 150 149 148 147 146 145 144 143 142 141 140 139 138 137 136 135 134 133 nc nc idsel vdd ad23 ad22 vss ad21 ad20 vdd_pci ad19 ad18 vssb ad17 ad16 c/be2 frame irdy trdy devsel stop vssb perr serr vdd_pci par c/be1 ad15 ad14 ad13 ad12 vssb ad11 ad10 vdd ad9 ad8 vss c/be0 ad7 ad6 vssb nc nc nc nc ad5 ad4 ad3 ad2 vdd_pci ad1 ad0 vssb eramcs ebromcs ebwe as_eboe ebclk vss ebua_eba0 ebua_eba1 ebua_eba2 ebua_eba3 vssb ebua_eba4 vddb ebua_eba5 ebua_eba6 ebua_eba7 vddb ebda8 ebda9 ebda10 ebda11 vssb ebda12 ebda13 vdd ebda14 ebda15 ebd7 ebd6 vssb ebd5 vss nc nc nc nc xtal2 vss_pll xtal1 avddb txd+ txp+ txd- txp- avddb rxd+ rxd- vss mdio mdc sleep/ear rxd3 rxd2 rxd1 rxd0/rxfrtgd vddb rx_dv/rxfrtge rx_clk/rxclk rx_er/rxdat vssb tx_er tx_cltxclk tx_en/txen vddb txd0/txdat txd1 txd2/rxen txd3 col/clsn crs/rxen vssb ebd0 ebd1 ebd2 ebd3 ebd4 nc nc nc nc ad24 c/be3 vssb ad25 vdd_pci ad26 ad27 ad28 ad29 ad30 vdd ad31 req gnt vssb clk vss rst inta vdd_pci tdi tdo tms tck eecs vssb eesk/led1/sfbd led2/srdclk/miirxfrtge eedi/led0 eedo/led3/srd/miirxfrtgd vddb vdd_pll ci+ ci- di+ di- avddb do+ do- avssb nc nc AM79C971 pcnet a - fast vc/w AM79C971 vc/w 20550d-3
AM79C971 13 pin designations (pqr160) listed by pin number pin no. pin name pin no. pin name pin no. pin name pin no. pin name 1 idsel 41 ad5 81 ebd4 121 avssb 2 vdd 42 ad4 82 ebd3 122 do- 3 ad23 43 ad3 83 ebd2 123 do+ 4 ad22 44 ad2 84 ebd1 124 avddb 5 vss 45 vdd_pci 85 ebd0 125 di- 6 ad21 46 ad1 86 vssb 126 di+ 7 ad20 47 ad0 87 crs/rxen 127 ci- 8 vdd_pci 48 vssb 88 col/clsn 128 ci+ 9 ad19 49 eramcs 89 txd3 129 vdd_pll 10 ad18 50 eromcs 90 txd2 130 vddb 11 vssb 51 ebwe 91 txd1 131 eedo/led3 /srd/ miirxfrtgd 12 ad17 52 as_eboe 92 txd0/txdat 132 eed1/led0 13 ad16 53 ebclk 93 vddb 133 led2 /srdclk/ miirxfrtge 14 c/be2 54 vss 94 tx_en/txen 134 eesk/led1 /sfbd 15 frame 55 ebua_eba0 95 tx_clk/txclk 135 vssb 16 irdy 56 ebua_eba1 96 tx_er 136 eecs 17 trdy 57 ebua_eba2 97 vssb 137 tck 18 devsel 58 ebua_eba3 98 rx_er/rxdat 138 tms 19 stop 59 vssb 99 rx_clk/rxclk 139 tdo 20 vssb 60 ebua_eba4 100 rx_dv/rxfrtge 140 tdi 21 perr 61 vddb 101 vddb 141 vdd_pci 22 serr 62 ebua_eba5 102 rxd0/rxfrtgd 142 inta 23 vdd_pci 63 ebua_eba6 103 rxd1 143 rst 24 pa r 64 ebua_eba7 104 rxd2 144 vss 25 c/be1 65 vddb 105 rxd3 145 clk 26 ad15 66 ebda8 106 sleep /ear 146 vssb 27 ad14 67 ebda9 107 mdc 147 gnt 28 ad13 68 ebda10 108 mdio 148 req 29 ad12 69 ebda11 109 vss 149 ad31 30 vssb 70 vssb 110 rxd- 150 vdd 31 ad11 71 ebda12 111 rxd+ 151 ad30 32 ad10 72 ebda13 112 avddb 152 ad29 33 vdd 73 vdd 113 txp- 153 ad28 34 ad9 74 ebda14 114 txd- 154 ad27 35 ad8 75 ebda15 115 txp+ 155 ad26 36 vss 76 ebd7 116 txd+ 156 vdd_pci 37 c/be0 77 ebd6 117 avddb 157 ad25 38 ad7 78 vssb 118 xtal1 158 vssb 39 ad6 79 ebd5 119 vss_pll 159 c/be3 40 vssb 80 vss 120 xtal2 160 ad24
14 AM79C971 pin designations (pql176) listed by pin number pin no. pin name pin no. pin name pin no. pin name pin no. pin name 1 nc 45 nc 89 nc 133 nc 2 nc 46 nc 90 nc 134 nc 3 idsel 47 ad5 91 ebd4 135 avssb 4 vdd 48 ad4 92 ebd3 136 do- 5 ad23 49 ad3 93 ebd2 137 do+ 6 ad22 50 ad2 94 ebd1 138 avddb 7 vss 51 vdd_pci 95 ebd0 139 di- 8 ad21 52 ad1 96 vssb 140 di+ 9 ad20 53 ad0 97 crs/rxen 141 ci- 10 vdd_pci 54 vssb 98 col/clsn 142 ci+ 11 ad19 55 eramcs 99 txd3 143 vdd_pll 12 ad18 56 eromcs 100 txd2/rxen 144 vddb 13 vssb 57 ebwe 101 txd1 145 eedo/led3 /srd/ miirxfrtgd 14 ad17 58 as_eboe 102 txd0/txdat 146 eed1/led0 15 ad16 59 ebclk 103 vddb 147 led2 /srdclk/ miirxfrtge 16 c/be2 60 vss 104 tx_en/txen 148 eesk/led1 /sfbd 17 frame 61 ebua_eba0 105 tx_clk/txclk 149 vssb 18 irdy 62 ebua_eba1 106 tx_er 150 eecs 19 trdy 63 ebua_eba2 107 vssb 151 tck 20 devsel 64 ebua_eba3 108 rx_er/rxdat 152 tms 21 stop 65 vssb 109 rx_clk/rxclk 153 tdo 22 vssb 66 ebua_eba4 110 rx_dv/rxfrtge 154 tdi 23 perr 67 vddb 111 vddb 155 vdd_pci 24 serr 68 ebua_eba5 112 rxd0/rxfrtgd 156 inta 25 vdd_pci 69 ebua_eba6 113 rxd1 157 rst 26 pa r 70 ebua_eba7 114 rxd2 158 vss 27 c/be1 71 vddb 115 rxd3 159 clk 28 ad15 72 ebda8 116 sleep /ear 160 vssb 29 ad14 73 ebda9 117 mdc 161 gnt 30 ad13 74 ebda10 118 mdio 162 req 31 ad12 75 ebda11 119 vss 163 ad31 32 vssb 76 vssb 120 rxd- 164 vdd 33 ad11 77 ebda12 121 rxd+ 165 ad30 34 ad10 78 ebda13 122 avddb 166 ad29 35 vdd 79 vdd 123 txp- 167 ad28 36 ad9 80 ebda14 124 txd- 168 ad27 37 ad8 81 ebda15 125 txp+ 169 ad26 38 vss 82 ebd7 126 txd+ 170 vdd_pci 39 c/be0 83 ebd6 127 avddb 171 ad25 40 ad7 84 vssb 128 xtal1 172 vssb 41 ad6 85 ebd5 129 vss_pll 173 c/be3 42 vssb 86 vss 130 xtal2 174 ad24 43 nc 87 nc 131 nc 175 nc 44 nc 88 nc 132 nc 176 nc
AM79C971 15 pin designations (pqr160, pql176) listed by group note: 1. not including test features pin name pin function type 1 driver no. of pins pci bus interface ad[31:0] address/data bus io ts3 32 c/be [3:0] bus command/byte enable io ts3 4 clk bus clock i na 1 devsel device select io sts6 1 frame cycle frame io sts6 1 gnt bus grant i na 1 idsel initialization device select i na 1 inta interrupt o od6 1 irdy initiator ready io sts6 1 pa r parity io ts3 1 perr parity error io sts6 1 req bus request o ts3 1 rst reset i na 1 serr system error io od6 1 stop stop io sts6 1 trdy target ready io sts6 1 board interface led0 led0 o led 1 led1 led1 o led 1 led2 led2 o led 1 led3 led3 o led 1 sleep sleep mode i na 1 xtal1 crystal input i na 1 xtal2 crystal output o xtal 1 eeprom interface eecs serial eeprom chip select o o6 1 eedi serial eeprom data in o led 1 eedo serial eeprom data out i na 1 eesk serial eeprom clock io led 1 expansion rom interface as_eboe address strobe/expansion bus output enable o o6 1 ebclk expansion bus clock i na 1 ebd[7:0] expansion bus data [7:0] io ts6 8 ebda[15:8] expansion bus data/address [15:8] io ts6 8 ebua_eba[7:0] expansion bus upper address /expansion bus address [7:0] o o6 8 ebwe expansion bus write enable o o6 1 eramcs expansion bus ram chip select o o6 1 eromcs expansion bus rom chip select o o6 1
16 AM79C971 pin designations listed by group note: 1. not including test features. pin name pin function type 1 driver no. of pins media independent interface (mii) col collision i na 1 crs carrier sense i na 1 mdc management data clock o omii2 1 mdio management data i/o io tsmii 1 rx_clk receive clock i na 1 rxd[3:0] receive data i na 4 rx_dv receive data valid i na 1 rx_er receive error i na 1 tx_clk transmit clock i na 1 txd[3:0] transmit data o omii1 4 tx_en transmit data enable o omii1 1 tx_er transmit error o omii1 1 attachment unit interface (aui) ci aui collision i na 1 di aui data in i na 1 do aui data out o do 1 10base-t interface rxd+/rxd- receive differential pair i na 2 txd+/txd- transmit differential pair o tdo 2 txp+/txp- transmit pre-distortion differential pair o tpo 2 general purpose serial interface (gpsi) clsn collision io na 1 rxclk receive clock i na 1 rxdat receive data i na 1 rxen receive enable i na 1 txclk transmit clock i na 1 txdat transmit data o o6 1 txen transmit enable o o6 1 external address detection interface (eadi) ear external address reject low i na 1 sfbd start frame byte delimiter o led 1 srd serial receive data io led 1 srdclk serial receive data clock io led 1 rxfrtgd/miirxfrtgd receive frame tag data/mii receive frame ta g d a t a i na 1 rxfrtge/miirxfrtge receive frame tag enable/mii receive frame tag enable i na 1 ieee 1149.1 test access port interface (jtag) tck te s t c l o ck i na 1 tdi test data in i na 1 tdo te s t d a t a o u t o ts6 1 tms test mode select i na 1
AM79C971 17 pin designations listed by group note: 1. not including test features. listed by driver type the following table describes the various types of out- put drivers used in the AM79C971 controller. all i ol and i oh values shown in the table apply to 5 v signaling. see the dc characteristics section for the values ap- plying to 3.3 v signaling. a sustained tri-state signal is a low active signal that is driven high for one clock period before it is left floating. do, tdo, and tpo are differential output drivers. their characteristics and the one of the xtal output are de- scribed in the dc characteristics section. pin name pin function type 1 driver no. of pins power supplies avddb analog i/o buffer power p na 3 avssb analog i/o buffer ground p na 1 vdd_pll analog pll power p na 1 vss_pll analog pll ground p na 1 vdd digital power p na 4 vss digital ground p na 6 vddb i/o buffer power p na 5 vssb i/o buffer ground p na 13 vdd_pci pci i/o buffer power p na 5 name type i ol (ma) i oh (ma) load (pf) led led 12 -0.4 50 omii1 to t e m po l e 4 -4 50 omii2 to t e m po l e 4 -4 390 o6 to t e m po l e 6 -0.4 50 od6 open drain 6 na 50 sts6 sustained tri-state 6 -2 50 ts3 tr i - s t a t e 3 -2 50 ts6 tr i - s t a t e 6 -2 50 tsmii tr i - s t a t e 4 -4 470
18 AM79C971 pin descriptions pci interface ad[31:0] address and data input/output address and data are multiplexed on the same bus in- terface pins. during the first clock of a transaction, ad[31:0] contain a physical address (32 bits). during the subsequent clocks, ad[31:0] contain data. byte or- dering is little endian by default. ad[07:0] are defined as the least significant byte (lsb) and ad[31:24] are defined as the most significant byte (msb). for fifo data transfers, the AM79C971 controller can be pro- grammed for big endian byte ordering. see csr3, bit 2 (bswp) for more details. during the address phase of the transaction, when the AM79C971 controller is a bus master, ad[31:2] will ad- dress the active double word (dword). the AM79C971 controller always drives ad[1:0] to ? 00 ? dur- ing the address phase indicating linear burst order. when the AM79C971 controller is not a bus master, the ad[31:0] lines are continuously monitored to determine if an address match exists for slave transfers. during the data phase of the transaction, ad[31:0] are driven by the AM79C971 controller when performing bus master write and slave read operations. data on ad[31:0] is latched by the AM79C971 controller when performing bus master read and slave write operations. when rst is active, ad[31:0] are inputs for nand tree testing. c/be [3:0] bus command and byte enables input/output bus command and byte enables are multiplexed on the same bus interface pins. during the address phase of the transaction, c/be [3:0] define the bus command. during the data phase, c/be [3:0] are used as byte en- ables. the byte enables define which physical byte lanes carry meaningful data. c/be 0 applies to byte 0 (ad[07:0]) and c/be 3 applies to byte 3 (ad[31:24]). the function of the byte enables is independent of the byte ordering mode (bswp, csr3, bit 2). when rst is active, c/be[ 3:0] are inputs for nand tree testing . clk clock input this clock is used to drive the system bus interface and the internal buffer management unit. all bus signals are sampled on the rising edge of clk and all parameters are defined with respect to this edge. the AM79C971 controller normally operates over a frequency range of 10 to 33 mhz on the pci bus due to networking de- mands. see the frequency demands for network op- eration section for details. the AM79C971 controller will support a clock frequency of 0 mhz after certain precautions are taken to ensure data integrity. this clock or a derivation is not used to drive any network functions. when rst is active, clk is an input for nand tree testing . devsel device select input/output the AM79C971 controller drives devsel when it de- tects a transaction that selects the device as a target. the device samples devsel to detect if a target claims a transaction that the AM79C971 controller has initiated. when rst is active, devsel is an input for nand tree testing . frame cycle frame input/output frame is driven by the AM79C971 controller when it is the bus master to indicate the beginning and duration of a transaction. frame is asserted to indicate a bus transaction is beginning. frame is asserted while data transfers continue. frame is deasserted before the final data phase of a transaction. when the AM79C971 controller is in slave mode, it samples frame to determine the address phase of a transac- tion. when rst is active, frame is an input for nand tree testing . gnt bus grant input this signal indicates that the access to the bus has been granted to the AM79C971 controller. the AM79C971 controller supports bus parking. when the pci bus is idle and the system arbiter asserts gnt without an active req from the AM79C971 controller, the device will drive the ad[31:0], c/be [3:0] and par lines. when rst is active, gnt is an input for nand tree testing . idsel initialization device select input this signal is used as a chip select for the AM79C971 controller during configuration read and write transac- tions. when rst is active, idsel is an input for nand tree testing . 1. not including test features.
AM79C971 19 inta interrupt request output an attention signal which indicates that one or more of the following status flags is set: babl, exdint, idon, jab, merr, miss, mfco, mpint, rcvcco, rint, sint, slpint, tint, txstrt, uint, mcciint, mc- cint, mpdtint, mapint, mreint, and stint. each status flag has either a mask or an enable bit which al- lows for suppression of inta assertion. table 1 shows the flag meanings. by default inta is an open-drain output. for applica- tions that need a high-active edge-sensitive interrupt signal, the inta pin can be configured for this mode by setting intlevel (bcr2, bit 7) to 1. when rst is active, inta is the output for nand tree testing . irdy initiator ready input/output irdy indicates the ability of the initiator of the transac- tion to complete the current data phase. irdy is used in conjunction with trdy . wait states are inserted until both irdy and trdy are asserted simultaneously. a data phase is completed on any clock when both irdy and trdy are asserted. when the AM79C971 controller is a bus master, it as- serts irdy during all write data phases to indicate that valid data is present on ad[31:0]. during all read data phases, the device asserts irdy to indicate that it is ready to accept the data. when the AM79C971 controller is the target of a trans- action, it checks irdy during all write data phases to determine if valid data is present on ad[31:0]. during all read data phases, the device checks irdy to deter- mine if the initiator is ready to accept the data. when rst is active, irdy is an input for nand tree testing . par parity input/output parity is even parity across ad[31:0] and c/be [3:0]. when the AM79C971 controller is a bus master, it gen- erates parity during the address and write data phases. it checks parity during read data phases. when the AM79C971 controller operates in slave mode, it checks parity during every address phase. when it is the target of a cycle, it checks parity during write data phases and it generates parity during read data phases. when rst is active, par is an input for nand tree testing . table 1. interrupt flags name description mask bit interrupt bit babl babble csr3, bit 14 csr0, bit 14 exdint excessive deferral csr5, bit 6 csr5, bit 7 idon initialization done csr3, bit 8 csr0, bit 8 jab jabber csr4, bit 0 csr4, bit 1 merr memory error csr3, bit 11 csr0, bit 11 miss missed frame csr3, bit 12 csr0, bit 12 mfco missed frame count over- flow csr4, bit 8 csr4, bit 9 mpint magic packet interrupt csr5, bit 3 csr5, bit 4 rcvcco receive collision count overflow csr4, bit 4 csr4, bit 5 rint receive interrupt csr3, bit 10 csr0, bit 10 slpint sleep interrupt csr5, bit 8 csr5, bit 9 sint system error csr5, bit 10 csr5, bit 11 tint transmit interrupt csr3, bit 9 csr0, bit 9 txstrt transmit start csr4, bit 2 csr4, bit 3 uint user interrupt csr4, bit 7 csr4, bit 6 mcciint internal mii management command complete interrupt csr7, bit 2 csr7, bit 3 mccint mii management command complete interrupt csr7, bit 4 csr7, bit 5 mpdtint mii phy detect transition interrupt csr7, bit 0 csr7, bit 1 name description mask bit interrupt bit mapint mii auto-poll interrupt csr7, bit 6 csr7, bit 7 mreint mii management frame read error interrupt csr7, bit 8 csr7, bit 9 stint software timer interrupt csr7, bit 10 csr7, bit 11 table 1. interrupt flags
20 AM79C971 perr parity error input/output during any slave write transaction and any master read transaction, the AM79C971 controller asserts perr when it detects a data parity error and reporting of the error is enabled by setting perren (pci command register, bit 6) to 1. during any master write transaction, the AM79C971 controller monitors perr to see if the target reports a data parity error. when rst is active, perr is an input for nand tree testing . req bus request input/output the AM79C971 controller asserts req pin as a signal that it wishes to become a bus master. req is driven high when the AM79C971 controller does not request the bus. during magic packet ? mode, the req pin will not be driven. when rst is active, req is an input for nand tree testing . rst reset input when rst is asserted low, then the AM79C971 con- troller performs an internal system reset of the type h_reset (hardware_reset, see section on re- set). rst must be held for a minimum of 30 clock pe- riods. while in the h_reset state, the AM79C971 controller will disable or deassert all outputs. rst may be asynchronous to clock when asserted or deas- serted. when rst is active, nand tree testing is enabled. serr system error input/output during any slave transaction, the AM79C971 controller asserts serr when it detects an address parity error, and reporting of the error is enabled by setting per- ren (pci command register, bit 6) and serren (pci command register, bit 8) to 1. by default serr is an open-drain output. for compo- nent test, it can be programmed to be an active-high totem-pole output. when rst is active, serr is an input for nand tree testing . stop stop input/output in slave mode, the AM79C971 controller drives the stop signal to inform the bus master to stop the cur- rent transaction. in bus master mode, the AM79C971 controller checks stop to determine if the target wants to disconnect the current transaction. when rst is active, stop is an input for nand tree testing . trdy target ready input/output trdy indicates the ability of the target of the transac- tion to complete the current data phase. wait states are inserted until both irdy and trdy are asserted simul- taneously. a data phase is completed on any clock when both irdy and trdy are asserted. when the AM79C971 controller is a bus master, it checks trdy during all read data phases to determine if valid data is present on ad[31:0]. during all write data phases, the device checks trdy to determine if the target is ready to accept the data. when the AM79C971 controller is the target of a trans- action, it asserts trdy during all read data phases to indicate that valid data is present on ad[31:0]. during all write data phases, the device asserts trdy to indi- cate that it is ready to accept the data. when rst is active, trdy is an input for nand tree testing . board interface note: before programming the led pins, see the description of ledpe in bcr2, bit 12 first. led0 led0 output this output is designed to directly drive an led. by de- fault, led0 indicates an active link connection on the 10base-t interface. this pin can also be programmed to indicate other network status (see bcr4). the led0 pin polarity is programmable, but by default it is active low. when the led0 pin polarity is programmed to active low, the output is an open drain driver. when the led0 pin polarity is programmed to active high, the output is a totem pole driver. note: the led0 pin is multiplexed with the eedi pin. when rst is active, led0 is an input for nand tree testing. led1 led1 output this output is designed to directly drive an led. by de- fault, led1 indicates receive activity on the network. this pin can also be programmed to indicate other net- work status (see bcr5). the led1 pin polarity is pro- grammable, but by default, it is active low. when the led1 pin polarity is programmed to active low, the output is an open drain driver. when the led1 pin po-
AM79C971 21 larity is programmed to active high, the output is a totem pole driver. note: the led1 pin is multiplexed with the eesk and sfbd pins. the led1 pin is also used during eeprom auto- detection to determine whether or not an eeprom is present at the AM79C971 controller interface. at the last rising edge of clk while rst is active low, led1 is sampled to determine the value of the eedet bit in bcr19. it is important to maintain adequate hold time around the rising edge of the clk at this time to ensure a correctly sampled value. a sampled high value means that an eeprom is present, and eedet will be set to 1. a sampled low value means that an ee- prom is not present, and eedet will be set to 0. see the eeprom auto-detection section for more details. if no led circuit is to be attached to this pin, then a pull up or pull down resistor must be attached instead in order to resolve the eedet setting. when rst is active, led1 is an input for nand tree testing . warning : the input signal level of led1 must be insured for correct eeprom detection before the deassertion of rst . led2 led2 output this output is designed to directly drive an led. by de- fault, led2 indicates correct receive polarity on the 10base-t interface. this pin can also be programmed to indicate other network status (see bcr6). the led2 pin polarity is programmable, but by default it is active low. when the led2 pin polarity is programmed to active low, the output is an open drain driver. when the led2 pin polarity is programmed to active high, the output is a totem pole driver. note: the led2 pin is multiplexed with the srdclk pin and the miirxfrtge pins. when rst is active, led2 is an input for nand tree testing . led3 led3 output this output is designed to directly drive an led. by de- fault, led3 indicates transmit activity on the network. this pin can also be programmed to indicate other net- work status (see bcr7). the led3 pin polarity is pro- grammable, but by default it is active low. when the led3 pin polarity is programmed to active low, the output is an open drain driver. when the led3 pin po- larity is programmed to active high, the output is a totem pole driver. special attention must be given to the external circuitry attached to this pin. when this pin is used to drive an led while an eeprom is used in the system, then buffering is required between the led3 pin and the led circuit. if an led circuit were directly attached to this pin, it would create an i ol requirement that could not be met by the serial eeprom attached to this pin. if no eeprom is included in the system design, then the led3 signal may be directly connected to an led without buffering. for more details regarding led con- nection, see the section on led support . note: the led3 pin is multiplexed with the eedo, srd, miirxfrtgd pins. when rst is active, led3 is an input for nand tree testing . sleep sleep input when sleep is asserted, the AM79C971 controller performs an internal system reset of the h_reset type and then proceeds into a power savings mode. all AM79C971 controller outputs will be placed in their normal reset condition. all AM79C971 controller inputs will be ignored except for the sleep pin itself. the sys- tem must refrain from starting the network operations of the AM79C971 controller for 0.5 seconds following the deassertion of the sleep pin in order to allow in- ternal analog circuits to stabilize. for effects with the magic packet ? modes, see the magic packet section. both clk and xtal1 inputs must have valid clock sig- nals present in order for the sleep command to take effect. the sleep pin should not be asserted during power supply ramp up. if it is desired that sleep be asserted at power supply ramp up, then the system must delay the assertion of sleep until three clock cycles after the completion of hardware reset. warning : the sleep pin must not be left uncon- nected. it should be tied to vdd if the power saving mode is not used. note: the sleep pin is multiplexed with the ear pin. when rst is active, sleep is an input for nand tree testing . xtal1 crystal oscillator in input the internal clock generator uses a 20-mhz crystal that is attached to the pins xtal1 and xtal2. the network data rate is one-half of the crystal frequency. xtal1 may alternatively be driven using an external 20-mhz cmos level clock signal. refer to the section on exter- nal crystal characteristics for more details. this clock is always required whether or not the internal 10base-t/aui ports are enabled. if the internal phy is
22 AM79C971 not used, 10% accuracy is sufficient for the clock source. note: when the AM79C971 controller is in coma mode, there is an internal 22 k ? resistor from xtal1 to ground. if an external source drives xtal1, some power consumption will be consumed driving this resis- tor. if xtal1 is driven low at this time, power con- sumption will be minimized. in this case, xtal1 must remain active for at least 30 cycles after the assertion of sleep and deassertion of req . xtal2 crystal oscillator out output the internal clock generator uses a 20-mhz crystal that is attached to the pins xtal1 and xtal2. the network data rate is one-half of the crystal frequency. if an ex- ternal clock source is used on xtal1, then xtal2 should be left unconnected. eeprom interface eecs eeprom chip select output this pin is designed to directly interface to a serial ee- prom that uses the 93c46 eeprom interface proto- col. eecs is connected to the eeprom ? s chip select pin. it is controlled by either the AM79C971 controller during command portions of a read of the entire ee- prom, or indirectly by the host system by writing to bcr19, bit 2. when rst is active, eecs is an input for nand tree testing . eedi eeprom data in output this pin is designed to directly interface to a serial eeprom that uses the 93c46 eeprom interface pro- tocol. eedi is connected to the eeprom ? s data input pin. it is controlled by either the AM79C971 controller during command portions of a read of the entire eeprom, or indirectly by the host system by writing to bcr19, bit 0. note: the eedi pin is multiplexed with the led0 pin. when rst is active, eedi is an input for nand tree testing . eedo eeprom data out input this pin is designed to directly interface to a serial eeprom that uses the 93c46 eeprom interface pro- tocol. eedo is connected to the eeprom ? s data out- put pin. it is controlled by either the AM79C971 controller during command portions of a read of the en- tire eeprom, or indirectly by the host system by read- ing from bcr19, bit 0. note: the eedo pin is multiplexed with the led3, miirxfrtgd, and srd pins. when rst is active, eedo is an input for nand tree testing . eesk eeprom serial clock input/output this pin is designed to directly interface to a serial eeprom that uses the 93c46 eeprom interface pro- tocol. eesk is connected to the eeprom ? s clock pin. it is controlled by either the AM79C971 controller di- rectly during a read of the entire eeprom, or indirectly by the host system by writing to bcr19, bit 1. note: the eesk pin is multiplexed with the led1 and sfbd pins. the eesk pin is also used during eeprom auto- detection to determine whether or not an eeprom is present at the AM79C971 controller interface. at the rising edge of the last clk edge while rst is asserted, eesk is sampled to determine the value of the eedet bit in bcr19. a sampled high value means that an eeprom is present, and eedet will be set to 1. a sampled low value means that an eeprom is not present, and eedet will be set to 0. see the eeprom auto-detection section for more details. if no led circuit is to be attached to this pin, then a pull up or pull down resistor must be attached instead to re- solve the eedet setting. when rst is active, eesk is an input for nand tree testing . warning : the input signal level of eesk must be valid for correct eeprom detection before the deassertion of rst . expansion bus interface ebua_eba[7:0] expansion bus upper address/ expansion bus address [7:0] output the ebua_eba[7:0] pins provide the least and most significant bytes of address on the expansion bus. the most significant address byte (address bits [15:8] dur- ing sram accesses; address bits [19:16] during boot device accesses) is valid on these pins at the beginning of an sram or boot device access, at the rising edge of as_eboe . this upper address byte must be stored externally in a d flip-flop. during subsequent cycles of an sram or boot device access, address bits [7:0] are present on these pins. all ebua_eba[7:0] outputs are forced to a constant level to conserve power while no access on the expan- sion bus is being performed.
AM79C971 23 ebda[15:8] expansion bus data/address [15:8] input/output when eramcs is asserted, ebda[15:8] contain the data bits [15:8] for sram accesses. when eromcs is asserted low, ebda[15:8] contain address bits [15:8] for boot device accesses. the ebda[15:8] signals are driven to a constant level to conserve power while no access on the expansion bus is being performed. ebd[7:0] expansion bus data [7:0] input/output the ebd[7:0] pins provide data bits [7:0] for ram/rom accesses. the ebd[7:0] signals are internally forced to a constant level to conserve power while no access on the expansion bus is being performed. eromcs expansion rom chip select output eromcs serves as the chip select for the boot device. it is asserted low during the data phases of boot device accesses. eramcs expansion ram chip select output eramcs is asserted during sram read and write op- erations on the expansion bus. as_eboe address strobe/expansion bus output enable output as_eboe functions as the address strobe for the upper address bits on the ebua_eba[7:0] pins and as the output enable for the expansion bus. as an address strobe, a rising edge on as_eboe is supplied at the beginning of sram and boot device accesses. this rising edge provides a clock edge for a ? 374 d-type edge-triggered flip-flop which must store the upper address byte during expansion bus ac- cesses for eprom/flash/sram. as_eboe is asserted active low during boot device and sram read operations on the expansion bus and is deasserted during boot device and sram write operations. ebwe expansion bus write enable output ebwe provides the write enable for write accesses to the sram devices and/or flash device. ebclk expansion bus clock input ebclk may be used as the fundamental clock to drive the expansion bus access cycles. the actual internal clock used to drive the expansion bus cycles depends on the values of the ebcs and clk_fac settings in bcr27. refer to the sram interface bandwidth re- quirements section for details on determining the re- quired ebclk frequency. if a clock source other than the ebclk pin is programmed (bcr27, bits 5:3) to be used to run the expansion bus interface, this input should be tied to vdd through a 4.7 k ? resistor. ebclk is not used to drive the bus interface, internal buffer management unit, or the network functions. media independent interface tx_clk transmit clock input tx_clk is a continuous clock input that provides the timing reference for the transfer of the tx_en, txd[3:0], and tx_er signals out of the AM79C971 device. tx_clk must provide a nibble rate clock (25% of the network data rate). hence, an mii transceiver op- erating at 10 mbps must provide a tx_clk frequency of 2.5 mhz and an mii transceiver operating at 100 mbps must provide a tx_clk frequency of 25 mhz. note: the tx_clk pin is multiplexed with the txclk pin. when rst is active, tx_clk is an input for nand tree testing . if the mii port is not selected, the tx_clk pin can be left floating. txd[3:0] transmit data output txd[3:0] is the nibble-wide mii transmit data bus. valid data is generated on txd[3:0] on every tx_clk rising edge while tx_en is asserted. while tx_en is de- asserted, txd[3:0] values are driven to a 0. txd[3:0] transitions synchronous to tx_clk rising edges. note: the txd[0] pin is multiplexed with the txdat pin. when rst is active, txd[3:0] are inputs for nand tree testing . if the mii port is not selected, the txd[3:0] pins can be left floating. tx_en transmit enable output tx_en indicates when the AM79C971 device is pre- senting valid transmit nibbles on the mii. while tx_en is asserted, the AM79C971 device generates txd[3:0] and tx_er on tx_clk rising edges. tx_en is as- serted with the first nibble of preamble and remains as- serted throughout the duration of a packet until it is deasserted prior to the first tx_clk following the final
24 AM79C971 nibble of the frame. tx_en transitions synchronous to tx_clk rising edges. note: the tx_en pin is multiplexed with the txen pin. when rst is active, tx_en is an input for nand tree testing . if the mii port is not selected, the tx_en pin can be left floating. tx_er transmit error output tx_er is an output that, if asserted while tx_en is as- serted, instructs the mii phy device connected to the AM79C971 device to transmit a code group error. tx_er is unused and is reserved for future use and will always be driven to a logical zero. when rst is active, tx_er is an input for nand tree testing . if the mii port is not selected, the tx_er pin can be left floating. col collision input col is an input that indicates that a collision has been detected on the network medium. note: the col pin is multiplexed with the clsn pin. when rst is active, col is an input for nand tree testing . if the mii port is not selected, the col pin can be left floating. crs carrier sense input crs is an input that indicates that a non-idle medium, due either to transmit or receive activity, has been de- tected. note: the crs pin is multiplexed with the rxen pin. when rst is active, crs is an input for nand tree testing . if the mii port is not selected, the crs pin can be left floating. rx_clk receive clock input rx_clk is a clock input that provides the timing refer- ence for the transfer of the rx_dv, rxd[3:0], and rx_er signals into the AM79C971 device. rx_clk must provide a nibble rate clock (25% of the network data rate). hence, an mii transceiver operating at 10 mbps must provide an rx_clk frequency of 2.5 mhz and an mii transceiver operating at 100 mbps must pro- vide an rx_clk frequency of 25 mhz. when the exter- nal phy switches the rx_clk and tx_clk, it must provide glitch-free clock pulses. note: the rx_clk pin is multiplexed with the rxclk pin. when rst is active, rx_clk is an input for nand tree testing . if the mii port is not selected, the rx_clk pin can be left floating. rxd[3:0] receive data input rxd[3:0] is the nibble-wide mii receive data bus. data on rxd[3:0] is sampled on every rising edge of rx_clk while rx_dv is asserted. rxd[3:0] is ignored while rx_dv is de-asserted. when the eadi is enabled (eadisel, bcr2, bit 3) and the receive frame tagging is enabled (rxfrtg, csr7, bit 14) and the mii is not selected, the rxd[0] pin becomes a data input pin for the receive frame tag (rxfrtgd). see the receive frame tagging sec- tion for details. note: the rxd[0] pin is multiplexed with the rxfrtgd pin. when rst is active, rxd[3:0] are inputs for nand tree testing . if the mii port is not selected, the rxs[3:0] pin can be left floating. rx_dv receive data valid input rx_dv is an input used to indicate that valid received data is being presented on the rxd[3:0] pins and rx_clk is synchronous to the receive data. in order for a frame to be fully received by the AM79C971 de- vice on the mii, rx_dv must be asserted prior to the rx_clk rising edge, when the first nibble of the start of frame delimiter is driven on rxd[3:0], and must re- main asserted until after the rising edge of rx_clk, when the last nibble of the crc is driven on rxd[3:0]. rx_dv must then be deasserted prior to the rx_clk rising edge which follows this final nibble. rx_dv tran- sitions are synchronous to rx_clk rising edges. when the eadi is enabled (eadisel, bcr2, bit 3), the receive frame tagging is enabled (rxfrtg, csr7, bit 14), and the mii is not selected, the rx_dv pin be- comes a data input enable pin for the receive frame tag (rxfrtge). see the receive frame tagging sec- tion for details. note: the rx_dv pin is multiplexed with the rxfrtge pin. when rst is active, rx_dv is an input for nand tree testing .
AM79C971 25 if the mii port is not selected, the rx_dv pin can be left floating. rx_er receive error input rx_er is an input that indicates that the mii trans- ceiver device has detected a coding error in the receive frame currently being transferred on the rxd[3:0] pins. when rx_er is asserted while rx_dv is asserted, a crc error will be indicated in the receive descriptor for the incoming receive frame. rx_er is ignored while rx_dv is deasserted. special code groups generated on rxd while rx_dv is deasserted are ignored (e.g., bad ssd in tx and idle in t4). rx_er transitions are synchronous to rx_clk rising edges. note: the rx_er pin is multiplexed with the rxdat pin. when rst is active, rx_er is an input for nand tree testing . if the mii port is not selected, the rx_er pin can be left floating. mdc management data clock output mdc is a non-continuous clock output that provides a timing reference for bits on the mdio pin. during mii management port operations, mdc runs at a nominal frequency of 2.5 mhz. when no management opera- tions are in progress, mdc is driven low. the mdc is derived from the external 20-mhz crystal. if the mii port is not selected, the mdc pin can be left floating. mdio management data i/o input/output mdio is the bidirectional mii management port data pin. mdio is an output during the header portion of the management frame transfers and during the data por- tions of write transfers. mdio is an input during the data portions of read data transfers. when an operation is not in progress on the management port, mdio is not driven. mdio transitions from the AM79C971 controller are synchronous to mdc falling edges. if the phy is attached through an mii physical connec- tor, then the mdio pin should be externally pulled down to v ss with a 10-k ? 5% resistor. if the phy is on board, then the mdio pin should be externally pulled up to v cc with a 10-k ? 5% resistor . when rst is active, mdio is an input for nand tree testing . attachment unit interface ci collision in input ci is a differential input pair signaling the AM79C971 controller that a collision has been detected on the net- work media, indicated by the ci inputs being driven with a 10-mhz pattern of sufficient amplitude and pulse width to meet iso 8802-3 (ieee/ansi 802.3) stan- dards. ci operates at pseudo ecl levels. if the ci pins are not used, they should be tied to- gether. di data in input di is a differential input pair to the AM79C971 control- ler carrying manchester encoded data from the net- work. di operates at pseudo ecl levels. if the di pins are not used, they should be tied to- gether. do data out output do is a differential output pair from the AM79C971 controller for transmitting manchester encoded data to the network. do operates at pseudo ecl levels. if the aui is not used, do should be left floating for minimum power consumption. 10base-t interface rxd 10base-t receive data input rxd are 10base-t port differential receivers. if the 10base-t interface is not used in a design, rxd+ and rxd- should be connected to each other. txd 10base-t transmit data output txd are 10base-t port differential drivers. txp 10base-t pre-distortion control output these outputs provide transmit pre-distortion control in conjunction with the 10base-t port differential drivers. general purpose serial interface clsn collision input clsn is an input that indicates a collision has occurred on the network. note: the clsn pin is multiplexed with the col pin. when rst is active, clsn is an input for nand tree testing .
26 AM79C971 rxclk receive clock input rxclk is an input. the rising edges of the rxclk sig- nal are used to sample the data on the rxdat input whenever the rxen input is high. note: the rxclk pin is multiplexed with the rx_clk pin. when rst is active, rxclk is an input for nand tree testing . rxdat receive data input rxdat is an input. the rising edges of the rxclk sig- nal are used to sample the data on the rxdat input whenever the rxen input is high. note: the rxdat pin is multiplexed with the rx_er pin. when rst is active, rxdat is an input for nand tree testing . rxen receive enable input rxen is an input. when this signal is high, it indicates to the core logic that the data on the rxdat input pin is valid. note: the rxen pin is multiplexed with the crs pin. when rst is active, rxen is an input for nand tree testing . txclk transmit clock input txclk is an input that provides a clock signal for mac activity, both transmit and receive. the rising edges of the txclk can be used to validate txdat output data. note: the txclk pin is multiplexed with the tx_clk pin. when rst is active, txclk is an input for nand tree testing . txdat transmit data output txdat is an output that provides the serial bit stream for transmission, including preamble, sfd, data, and fcs field, if applicable. note: the txdat pin is multiplexed with the txd[0] pin. when rst is active, txdat is an input for nand tree testing . txen transmit enable output txen is an output that provides an enable signal for transmission. data on the txdat pin is not valid unless the txen signal is high. note: the txen pin is multiplexed with the tx_en pin. when rst is active, txen is an input for nand tree testing . external address detection interface ear external address reject low input the incoming frame will be checked against the inter- nally active address detection mechanisms and the re- sult of this check will be or ? d with the value on the ear pin. the ear pin is defined as reject . the pin value is or ? d with the internal address detection result to de- termine if the current frame should be accepted or re- jected. the ear pin must not be left unconnected, it should be tied to vdd through a resistor. note: the ear pin is multiplexed with the sleep pin. when rst is active, ear is an input for nand tree testing . sfbd start frame-byte delimiter output for the internal phy during external address detection: an initial rising edge on the sfbd signal indicates that a start of frame delimiter has been detected. the serial bit stream will follow on the srd signal, commencing with the destination address field. sfbd will go high for 4 bit times (400 ns when operating at 10 mbps) after detecting the second ? 1 ? in the sfd (start of frame de- limiter) of a received frame. sfbd will subsequently toggle every 4 bit times (1.25 mhz frequency when op- erating at 10 mbps) with each rising edge indicating the first bit of each subsequent byte of the received serial bit stream. see the eadi rejection timing with internal phy timing diagram for details. sfbd will be active only during frame reception. for the external phy attached to the media inde- pendent interface during external address detec- tion: an initial rising edge on the sfbd signal indicates that a start of valid data is present on the rxd[3:0] pins. sfbd will go high for one nibble time (400 ns when op- erating at 10 mbps and 40 ns when operating at 100 mbps) one rx_clk period after rx_dv has been as- serted and rx_er is deasserted and the detection of
AM79C971 27 the sfd (start of frame delimiter) of a received frame. data on the rxd[3:0] will be the start of the destination address field. sfbd will subsequently toggle every nib- ble time (1.25 mhz frequency when operating at 10 mbps and 12.5 mhz frequency when operating at 100 mbps) indicating the first nibble of each subsequent byte of the received nibble stream. the rx_clk should be used in conjunction with the sfbd to latch the correct data for external address matching. sfbd will be active only during frame reception. note: the sfbd pin is multiplexed with the eesk and led1 pins. when rst is active, sfbd is an input for nand tree testing . srd serial receive data input/output srd is the decoded nrz data from the network. this signal can be used for external address detection. when the 10base-t port is selected, transitions on srd will only occur during receive activity. when the aui port is selected, transitions on srd will occur dur- ing both transmit and receive activity. when the eadi is enabled (eadisel, bcr2, bit 3) and the receive frame tagging is enabled (rxfrtg, csr7, bit 14) and the mii is selected, the srd pin be- comes a data input pin for the receive frame tag (mi- irxfrtgd). see the receive frame tagging section for details. note: when the mii port is selected, srd will not gen- erate transitions and receive data must be derived from the media independent interface rxd[3:0] pins. note also that the srd pin is multiplexed with the eedo and led3 pins . when rst is active, srd is an input for nand tree testing . srdclk serial receive data clock input/output serial receive data is synchronous with reference to srdclk. when the 10base-t port is selected, transi- tions on srdclk will only occur during receive activity. when the aui port is selected, transitions on srdclk will occur during both transmit and receive activity. when the eadi is enabled (eadisel, bcr2, bit 3), the receive frame tagging is enabled (rxfrtg, csr7, bit 14), and the mii is selected, the srdclk pin be- comes a data input enable pin for the receive frame tag (miirxfrtge). see the receive frame tagging section for details. note: when the mii port is selected, srdclk will not generate transitions and the receive clock must be de- rived from the mii rx_clk pin. note also that the srdclk pin is multiplexed with the led2 pin . when rst is active, srdclk is an input for nand tree testing . rxfrtgd receive frame tag data input when the eadi is enabled (eadisel, bcr2, bit 3), the receive frame tagging is enabled (rxfrtg, csr7, bit 14), and the mii is not selected, the rxfrtgd pin becomes a data input pin for the receive frame tag. see the receive frame tagging section for details. note: the rxfrtgd pin is multiplexed with the rxd[0] pin. when rst is active, rxfrtgd is an input for nand tree testing. rxfrtge receive frame tag enable input when the eadi is enabled (eadisel, bcr2, bit 3), the receive frame tagging is enabled (rxfrtg, csr7, bit 14), and the mii is not selected, the rxfrtge pin becomes a data input enable pin for the receive frame tag. see the receive frame tagging section for de- tails. note: the rxfrtge pin is multiplexed with the rx_dv pin. when rst is active, rxfrtge is an input for nand tree testing. miirxfrtgd mii receive frame tag enable input/output when the eadi is enabled (eadisel, bcr2, bit 3), the receive frame tagging is enabled (rxfrtg, csr7, bit 14), and the mii is selected, the miirxfrtgd pin becomes a data input pin for the receive frame tag. see the receive frame tagging section for details. note: the miirxfrtgd pin is multiplexed with the srd pin. when rst is active, miirxfrtgd is an input for nand tree testing. miirxfrtge mii receive frame tag enable input/output when the eadi is enabled (eadisel, bcr2, bit 3), the receive frame tagging is enabled (rxfrtg, csr7, bit 14), and the mii is selected, the miirxfrtge pin becomes a data input enable pin for the receive frame tag. see the receive frame tagging section for de- tails. note: the miirxfrtge pin is multiplexed with the srdclk pin.
28 AM79C971 when rst is active, miirxfrtge is an input for nand tree testing . ieee 1149.1 (1990) test access port interface tck test clock input tck is the clock input for the boundary scan test mode operation. it can operate at a frequency of up to 10 mhz. tck has an internal pull up resistor. tdi test data in input tdi is the test data input path to the AM79C971 con- troller. the pin has an internal pull up resistor. tdo test data out output tdo is the test data output path from the AM79C971 controller. the pin is tri-stated when the jtag port is in- active. tms test mode select input a serial input bit stream on the tms pin is used to de- fine the specific boundary scan test to be executed. the pin has an internal pull up resistor. power supply pins avddb analog power (3 pins) power there are three analog +5 v supply pins that provide power for the twisted pair and aui drivers. hence, they are very noisy. special attention should be paid to the printed circuit board layout to avoid excessive noise on these lines. refer to appendix b, recommendation for power and ground decoupling, for details. avssb analog ground (1 pins) power there is one analog ground pin that provides ground for the twisted pair and aui drivers. hence, it is very noisy. special attention should be paid to the printed circuit board layout to avoid excessive noise on these lines. refer to appendix b, recommendation for power and ground decoupling, for details. vdd_pll pll power (1 pin) power there is one analog pll +5 v supply pin. special at- tention should be paid to the printed circuit board layout to avoid excessive noise on this line. refer to appendix b, recommendation for power and ground decou- pling, for details. vss_pll pll ground (1 pin) power there is one analog pll ground pin. special attention should be paid to the printed circuit board layout to avoid excessive noise on this line. refer to appendix b, recommendation for power and ground decoupling, for details. vddb i/o buffer power (5 pins) power there are five power supply pins that are used by the input/output buffer drivers. all vddb pins must be con- nected to a +5 v supply. vssb i/o buffer ground (13 pins) power there are thirteen ground pins that are used by the pci bus input/output buffer drivers. vdd_pci pci i/o buffer power (5 pins) power there are five power supply pins that are used by the pci input/output buffer drivers. in a system with +5 v signaling environment, all vdd_pci pins must be con- nected to a +5 v supply. in a system with +3.3 v signal- ing environment, all vdd_pci pins must be connected to a +3.3 v supply. vdd digital power (4 pins) power there are four power supply pins that are used by the internal digital circuitry. all vdd pins must be con- nected to a +5 v supply. vss digital ground (6 pins) power there are six ground pins that are used by the internal digital circuitry.
AM79C971 29 basic functions system bus interface the AM79C971 controller is designed to operate as a bus master during normal operations. some slave i/o accesses to the AM79C971 controller are required in normal operations as well. initialization of the AM79C971 controller is achieved through a combina- tion of pci configuration space accesses, bus slave accesses, bus master accesses, and an optional read of a serial eeprom that is performed by the AM79C971 controller. the eeprom read operation is performed through the 93c46 eeprom interface. the iso 8802-3 (ieee/ansi 802.3) ethernet address may reside within the serial eeprom. some AM79C971 controller configuration registers may also be pro- grammed by the eeprom read operation. the address prom, on-chip board-configuration reg- isters, and the ethernet controller registers occupy 32 bytes of address space. i/o and memory mapped i/o accesses are supported. base address registers in the pci configuration space allow locating the address space on a wide variety of starting addresses. for diskless stations, the AM79C971 controller sup- ports a rom or flash-based (both referred to as the expansion rom throughout this specification) boot de- vice of up to 1 mbyte in size. the host can map the boot device to any memory address that aligns to a 1-mbyte boundary by modifying the expansion rom base ad- dress register in the pci configuration space. software interface the software interface to the AM79C971 controller is divided into three parts. one part is the pci configura- tion registers used to identify the AM79C971 controller and to setup the configuration of the device. the setup information includes the i/o or memory mapped i/o base address, mapping of the expansion rom, and the routing of the AM79C971 controller interrupt chan- nel. this allows for a jumperless implementation. the second portion of the software interface is the di- rect access to the i/o resources of the AM79C971 con- troller. the AM79C971 controller occupies 32 bytes of address space that must begin on a 32-byte block boundary. the address space can be mapped into i/o or memory space (memory mapped i/o). the i/o base address register in the pci configuration space con- trols the start address of the address space if it is mapped to i/o space. the memory mapped i/o base address register controls the start address of the address space if it is mapped to memory space. the 32-byte address space is used by the software to program the AM79C971 controller operating mode, to enable and disable various features, to monitor operat- ing status, and to request particular functions to be ex- ecuted by the AM79C971 controller. the third portion of the software interface is the de- scriptor and buffer areas that are shared between the software and the AM79C971 controller during normal network operations. the descriptor area boundaries are set by the software and do not change during nor- mal network operations. there is one descriptor area for receive activity and there is a separate area for transmit activity. the descriptor space contains relocat- able pointers to the network frame data, and it is used to transfer frame status from the AM79C971 controller to the software. the buffer areas are locations that hold frame data for transmission or that accept frame data that has been received. network interfaces the AM79C971 controller can be connected to an ieee 802.3 or proprietary network via one of four net- work interfaces. the media independent interface (mii) provides an ieee 802.3-compliant nibble-wide inter- face to an external 100- and/or 10-mbps transceiver device. the attachment unit interface (aui) provides an iso 8802-3 (ieee/ansi 802.3) defined differential interface. on-board mau and or off-board mau con- nection with or without an aui cable is supported. the 10base-t interface provides a twisted-pair ethernet port, which is iso 8802-3 (ieee/ansi 802.3)-compli- ant, and contains the auto-negotiation capability, which is ieee 802.3u-compliant. the general purpose serial interface (gpsi) allows bypassing the manchester encoder/decoder (mendec) and is functionally equiv- alent to the gpsi found on the lance. while in auto-selection mode, the interface in use is de- termined by the network port manager. if the quiescent state of the mii mdio pin is high, the mii is activated. if the mii mdio pin is low, the AM79C971 device checks the link status on the 10base-t port. if the 10base-t link status is good, the 10base-t port is se- lected. if there is no active link status, then the device assumes an aui connection. the 10base-t port will continue to monitor the link status while the aui is ac- tive. the software driver can override this automatic configuration at anytime by disabling the auto-selection and forcing a network port to be attached to the internal mac. the gpsi port can only be enabled by disabling the auto-selection and manually selecting the gpsi as the network port. the AM79C971 controller supports half-duplex and full-duplex operation on all four network interfaces (i.e., aui, 10base-t, gpsi, and mii).
30 AM79C971 detailed functions slave bus interface unit the slave bus interface unit (biu) controls all accesses to the pci configuration space, the control and status registers (csr), the bus configuration registers (bcr), the address prom (aprom) locations, and the expansion rom. table 2 shows the response of the AM79C971 controller to each of the pci commands in slave mode. table 2. slave commands slave configuration transfers the host can access the AM79C971 pci configuration space with a configuration read or write command. the AM79C971 controller will assert devsel during the address phase when idsel is asserted, ad[1:0] are both 0, and the access is a configuration cycle. ad[7:2] select the dword location in the configuration space. the AM79C971 controller ignores ad[10:8], because it is a single function device. ad[31:11] are don ? t care. the active bytes within a dword are determined by the byte enable signals. eight-bit, 16-bit, and 32-bit trans- fers are supported. devsel is asserted two clock cy- cles after the host has asserted frame . all configuration cycles are of fixed length. the AM79C971 controller will assert trdy on the third clock of the data phase. the AM79C971 controller does not support burst trans- fers for access to configuration space. when the host keeps frame asserted for a second data phase, the AM79C971 controller will disconnect the transfer. when the host tries to access the pci configuration space while the automatic read of the eeprom after h_reset (see section on reset) is on-going, the AM79C971 controller will terminate the access on the pci bus with a disconnect/retry response. the AM79C971 controller supports fast back-to-back transactions to different targets. this is indicated by the fast back-to-back capable bit (pci status register, bit 7), which is hardwired to 1. the AM79C971 controller is capable of detecting a configuration cycle even when its address phase immediately follows the data phase of a transaction to a different target without any idle state in-between. there will be no contention on the devsel , trdy, and stop signals, since the AM79C971 controller asserts devsel on the second clock after frame is asserted (medium timing). slave i/o transfers after the AM79C971 controller is configured as an i/o device by setting ioen (for regular i/o mode) or memen (for memory mapped i/o mode) in the pci command register, it starts monitoring the pci bus for access to its csr, bcr, or aprom locations. if con- figured for regular i/o mode, the AM79C971 controller will look for an address that falls within its 32 bytes of i/ o address space (starting from the i/o base address). the AM79C971 controller asserts devsel if it detects an address match and the access is an i/o cycle. if configured for memory mapped i/o mode, the AM79C971 controller will look for an address that falls within its 32 bytes of memory address space (starting from the memory mapped i/o base address). the AM79C971 controller asserts devsel if it detects an address match and the access is a memory cycle. devsel is asserted two clock cycles after the host has asserted frame . see figure 1 and figure 2. c[3:0] command use 0000 interrupt acknowledge not used 0001 special cycle not used 0010 i/o read read of csr, bcr, aprom, and reset registers 0011 i/o write write to csr, bcr, and aprom 0100 reserved 0101 reserved 0110 memory read memory mapped i/o read of csr, bcr, aprom, and reset registers read of the expansion bus 0111 memory write memory mapped i/o write of csr, bcr, and aprom 1000 reserved 1001 reserved 1010 configuration read read of the configuration space 1011 configuration write write to the configuration space 1100 memory read multiple aliased to memory read 1101 dual address cycle not used 1110 memory read line aliased to memory read 1111 memory write invalidate aliased to memory write ad31 ad11 ad10 ad8 ad7 ad2 ad1 ad0 don ? t care don ? t care dword index 00
AM79C971 31 figure 1. slave configuration read the AM79C971 controller will not assert devsel if it detects an address match, but the pci command is not of the correct type. in memory mapped i/o mode, the AM79C971 controller aliases all accesses to the i/o re- sources of the command types memory read multiple and memory read line to the basic memory read command. all accesses of the type memory write and invalidate are aliased to the basic memory write com- mand. eight-bit, 16-bit, and 32-bit non-burst transac- tions are supported. the AM79C971 controller decodes all 32 address lines to determine which i/o re- source is accessed. the typical number of wait states added to a slave i/o or memory mapped i/o read or write access on the part of the AM79C971 controller is six to seven clock cycles, depending upon the relative phases of the internal buffer management unit clock and the clk signal, since the internal buffer management unit clock is a di- vide-by-two version of the clk signal. the AM79C971 controller does not support burst trans- fers for access to its i/o resources. when the host keeps frame asserted for a second data phase, the AM79C971 controller will disconnect the transfer. figure 2. slave configuration write the AM79C971 controller supports fast back-to-back transactions to different targets. this is indicated by the fast back-to-back capable bit (pci status register, bit 7), which is hardwired to 1. the AM79C971 controller is capable of detecting an i/o or a memory-mapped i/o cycle even when its address phase immediately fol- lows the data phase of a transaction to a different tar- get, without any idle state in-between. there will be no contention on the devsel , trdy, and stop signals, since the AM79C971 controller asserts devsel on the second clock after frame is asserted (medium timing) see figure 3 and figure 4. frame clk ad irdy trdy c/be devsel stop idsel 1 23456 1010 par par par devsel is sampled be data addr 7 20550d-4 frame clk ad irdy trdy c/be devsel stop idsel 1 23456 1011 par par par be data addr 7 20550d-5
32 AM79C971 figure 3. slave read using i/o command figure 4. slave write using memory command frame clk ad irdy trdy c/be devsel stop par addr 0010 par 1 2345678 10 9 11 data par be 20550d-6 frame clk ad irdy trdy c/be devsel stop par addr 0011 par 1 2345678 10 9 11 data par be 20550d-7
AM79C971 33 expansion rom transfers the host must initialize the expansion rom base ad- dress register at offset 30h in the pci configuration space with a valid address before enabling the access to the device. the AM79C971 controller will not react to any access to the expansion rom until both memen (pci command register, bit 1) and romen (pci ex- pansion rom base address register, bit 0) are set to 1. after the expansion rom is enabled, the AM79C971 controller will assert devsel on all memory read ac- cesses with an address between rombase and rombase + 1m - 4. the AM79C971 controller aliases all accesses to the expansion rom of the command types memory read multiple and memory read line to the basic memory read command. eight-bit, 16-bit, and 32-bit read transfers are supported. since setting memen also enables memory mapped access to the i/o resources, attention must be given the pci memory mapped i/o base address register before enabling access to the expansion rom. the host must set the pci memory mapped i/o base ad- dress register to a value that prevents the AM79C971 controller from claiming any memory cycles not in- tended for it. the AM79C971 controller will always read four bytes for every host expansion rom read access. trdy will not be asserted until all four bytes are loaded into an in- ternal scratch register. the cycle trdy is asserted de- pends on the programming of the expansion rom interface timing. the following figure (figure 5) as- sumes that romtmg (bcr18, bits 15-12) is at its de- fault value. note: the expansion rom should be read only during pci configuration time for the pci system. when the host tries to write to the expansion rom, the AM79C971 controller will claim the cycle by asserting devsel . trdy will be asserted one clock cycle later. the write operation will have no effect. writes to the ex- pansion rom are done through the bcr30 expansion bus data port. see the section on the expansion bus interface for more details. the AM79C971 controller supports fast back-to-back transactions to different targets. this is indicated by the fast back-to-back capable bit (pci status register, bit 7), which is hardwired to 1. the AM79C971 controller is capable of detecting a memory cycle even when its address phase immediately follows the data phase of a transaction to a different target without any idle state in- between. there will be no contention on the devsel , trdy, and stop signals, since the AM79C971 con- troller asserts devsel on the second clock after frame is asserted (medium timing). see figure 5. figure 5. expansion rom read frame clk ad irdy trdy c/be devsel stop par addr cmd par 1 2345 424344 45 data pa r be devsel is sampled 20550d-8
34 AM79C971 during the boot procedure, the system will try to find an expansion rom. a pci system assumes that an ex- pansion rom is present when it reads the rom signa- ture 55h (byte 0) and aah (byte 1). a design without expansion rom can guarantee that the expansion rom detection fails by connecting two adjacent ebd pins together. slave cycle termination there are three scenarios besides normal completion of a transaction where the AM79C971controller is the target of a slave cycle and it will terminate the access. disconnect when busy the AM79C971controller cannot service any slave ac- cess while it is reading the contents of the eeprom. simultaneous access is not possible to avoid conflicts, since the eeprom is used to initialize some of the pci configuration space locations and most of the bcrs. the eeprom read operation will always happen auto- matically after the deassertion of the rst pin. in addi- tion, the host can start the read operation by setting the pread bit (bcr19, bit 14). while the eeprom read is on-going, the AM79C971controller will disconnect any slave access where it is the target by asserting stop together with devsel , while driving trdy high. stop will stay asserted until the end of the cycle. note that i/o and memory slave accesses will only be disconnected if they are enabled by setting the ioen or memen bit in the pci command register. without the enable bit set, the cycles will not be claimed at all. since h_reset clears the ioen and memen bits for the automatic eeprom read after h_reset, the dis- connect only applies to configuration cycles. a second situation where the AM79C971controller will generate a pci disconnect/retry cycle is when the host tries to access any of the i/o resources right after hav- ing read the reset register. since the access gener- ates an internal reset pulse of about 1 s in length, all further slave accesses will be deferred until the internal reset operation is completed. see figure 6. disconnect of burst transfer the AM79C971controller does not support burst ac- cess to the configuration space, the i/o resources, or to the expansion bus. the host indicates a burst transac- tion by keeping frame asserted during the data phase. when the AM79C971controller sees frame and irdy asserted in the clock cycle before it wants to assert trdy , it also asserts stop at the same time. the transfer of the first data phase is still successful, since irdy and trdy are both asserted. see figure 7. figure 6. disconnect of slave cycle when busy figure 7. disconnect of slave burst transfer - no host wait states frame clk ad irdy trdy c/be devsel stop 1 2345 cmd par par par be data addr 20550d-9 frame clk ad irdy trdy c/be devsel stop 1 2345 cmd par par par be data addr 20550d-10
AM79C971 35 if the host is not yet ready when the AM79C971 control- ler asserts trdy , the device will wait for the host to as- sert irdy . when the host asserts irdy and frame is still asserted, the AM79C971controller will finish the first data phase by deasserting trdy one clock later. at the same time, it will assert stop to signal a discon- nect to the host. stop will stay asserted until the host removes frame . see figure 8. figure 8. disconnect of slave burst transfer - host inserts wait states parity error response when the AM79C971controller is not the current bus master, it samples the ad[31:0], c/be [3:0], and the par lines during the address phase of any pci com- mand for a parity error. when it detects an address par- ity error, the controller sets perr (pci status register, bit 15) to 1. when reporting of that error is enabled by setting serren (pci command register, bit 8) and perren (pci command register, bit 6) to 1, the AM79C971controller also drives the serr signal low for one clock cycle and sets serr (pci status register, bit 14) to 1. the assertion of serr follows the address phase by two clock cycles. the AM79C971controller will not assert devsel for a pci transaction that has an address parity error when perren and serren are set to 1. see figure 9. figure 9. address parity error response during the data phase of an i/o write, memory-mapped i/o write, or configuration write command that selects the AM79C971controller as target, the device samples the ad[31:0] and c/be [3:0] lines for parity on the clock edge, and data is transferred as indicated by the asser- tion of irdy and trdy . par is sampled in the following clock cycle. if a parity error is detected and reporting of that error is enabled by setting perren (pci com- mand register, bit 6) to 1, perr is asserted one clock later. the parity error will always set perr (pci status register, bit 15) set to 1 even when perren is cleared to 0. the AM79C971controller will finish a transaction that has a data parity error in the normal way by assert- ing trdy . the corrupted data will be written to the ad- dressed location. figure 10 shows a transaction that suffered a parity error at the time data was transferred (clock 7, irdy and trdy are both asserted). perr is driven high at the beginning of the data phase and then drops low due to the parity error on clock 9, two clock cycles after the data was transferred. after perr s driven low, the AM79C971controller drives perr high for one clock cycle, since perr is a sustained tri-state signal. frame clk ad irdy trdy c/be devsel stop par 1 23456 par par data 1st data be be 20550d-11 frame clk ad serr c/be devsel 1 2345 par par addr 1st data be cmd par 20550d-12
36 AM79C971 figure 10. slave cycle data parity error response master bus interface unit the master bus interface unit (biu) controls the acqui- sition of the pci bus and all accesses to the initializa- tion block, descriptor rings, and the receive and transmit buffer memory. table 3 shows the usage of pci commands by the AM79C971controller in master mode. bus acquisition the AM79C971microcode will determine when a dma transfer should be initiated. the first step in any AM79C971bus master transfer is to acquire ownership of the bus. this task is handled by synchronous logic within the biu. bus ownership is requested with the req signal and ownership is granted by the arbiter through the gnt signal. frame clk ad irdy trdy c/be devsel par addr cmd par 1 2345678 10 9 data pa r be perr 20550d-13 table 3. master commands c[3:0] command use 0000 interrupt acknowledge not used 0001 special cycle not used 0010 i/o read not used 0011 i/o write not used 0100 reserved 0101 reserved 0110 memory read read of the initialization block and descriptor rings read of the transmit buffer in non-burst mode c[3:0] command use 0111 memory write write to the descriptor rings and to the receive buffer 1000 reserved 1001 reserved 1010 configuration read not used 1011 configuration write not used 1100 memory read multiple read of the transmit buffer in burst mode 1101 dual address cycle not used 1110 memory read line read of the transmit buffer in burst mode 1111 memory write invalidate not used table 3. master commands (continued)
AM79C971 37 figure 11 shows the AM79C971controller bus acquisi- tion. req is asserted and the arbiter returns gnt while another bus master is transferring data. the AM79C971 controller waits until the bus is idle (frame and irdy deasserted) before it starts driving ad[31:0] and c/be [3:0] on clock 5. frame is asserted at clock 5 indicating a valid address and command on ad[31:0] and c/be [3:0]. the AM79C971 controller does not use address stepping which is reflected by adstep (bit 7) in the pci command register being hardwired to 0. figure 11. bus acquisition in burst mode, the deassertion of req depends on the setting of extreq (bcr18, bit 8). if extreq is cleared to 0, req is deasserted at the same time as frame is asserted. (the AM79C971 controller never performs more than one burst transaction within a sin- gle bus mastership period.) if extreq is set to 1, the AM79C971 controller does not deassert req until it starts the last data phase of the transaction. once asserted, req remains active until gnt has be- come active and independent of subsequent setting of stop (csr0, bit 2) or spnd (csr5, bit 0). the asser- tion of h_reset or s_reset, however, will cause req to go inactive immediately. bus master dma transfers there are four primary types of dma transfers. the AM79C971 controller uses non-burst as well as burst cycles for read and write access to the main memory. basic non-burst read transfer by default, the AM79C971 controller uses non-burst cycles in all bus master read operations. all AM79C971 controller non-burst read accesses are of the pci command type memory read (type 6). note that during a non-burst read operation, all byte lanes will always be active. the AM79C971 controller will internally discard unneeded bytes. the AM79C971 controller typically performs more than one non-burst read transactions within a single bus mastership period. frame is dropped between con- secutive non-burst read cycles. req however stays as- serted until frame is asserted for the last transaction. the AM79C971 controller supports zero wait state read cycles. it asserts irdy immediately after the ad- dress phase and at the same time starts sampling devsel . figure 12 shows two non-burst read transac- tions. the first transaction has zero wait states. in the second transaction, the target extends the cycle by as- serting trdy one clock later. basic burst read transfer the AM79C971 controller supports burst mode for all bus master read operations. the burst mode must be enabled by setting breade (bcr18, bit 6). to allow burst transfers in descriptor read operations, the AM79C971 controller must also be programmed to use swstyle 3 (bcr20, bits 7-0). all burst read accesses to the initialization block and descriptor ring are of the pci command type memory read (type 6). burst read accesses to the transmit buffer typically are longer than two data phases. when memcmd (bcr18, bit 9) is cleared to 0, all burst read accesses to the transmit buffer are of the pci command type memory read line (type 14). when memcmd (bcr18, bit 9) is set to1, all burst read accesses to the transmit buffer are of the pci command type memory read multiple (type 12). ad[1:0] will both be 0 during the address phase indicat- ing a linear burst order. note that during a burst read operation, all byte lanes will always be active. the AM79C971 controller will internally discard unneeded bytes. the AM79C971 controller will always perform only a single burst read transaction per bus mastership pe- riod, where transaction is defined as one address phase and one or multiple data phases. the AM79C971 controller supports zero wait state read cy- cles. it asserts irdy immediately after the address phase and at the same time starts sampling devsel . frame is deasserted when the next to last data phase is completed. figure 13 shows a typical burst read ac- cess. the AM79C971 controller arbitrates for the bus, is granted access, reads three 32-bit words (dword) from the system memory, and then releases the bus. in the example, the memory system extends the data phase of the each access by one wait state. the exam- ple assumes that extreq (bcr18, bit 8) is cleared to 0, therefore, req is deasserted in the same cycle as frame is asserted. frame clk ad irdy c/be req gnt 1 2345 cmd addr 20550d-14
38 AM79C971 figure 12. non-burst read transfer figure 13. burst read transfer (extreq = 0, memcmd = 0) frame clk ad irdy trdy c/be devsel req gnt3 par devsel is sampled addr 0110 par 1 2345678 10 9 11 data addr data pa r pa r pa r 0000 0110 0000 20550d-15 frame clk ad irdy trdy c/be devsel req gnt par devsel is sampled addr 0000 1110 par 1 2345678 10 9 11 data data data pa r pa r pa r 20550d-16
AM79C971 39 basic non-burst write transfer by default, the AM79C971 controller uses non-burst cycles in all bus master write operations. all AM79C971 controller non-burst write accesses are of the pci command type memory write (type 7). the byte enable signals indicate the byte lanes that have valid data.the AM79C971 controller typically performs more than one non-burst write transaction within a sin- gle bus mastership period. frame is dropped be- tween consecutive non-burst write cycles. req , however, stays asserted until frame is asserted for the last transaction. the AM79C971 supports zero wait state write cycles except with descriptor write transfers. (see the section descriptor dma transfers for the only exception.) it asserts irdy immediately after the ad- dress phase. figure 14 shows two non-burst write transactions. the first transaction has two wait states. the target inserts one wait state by asserting devsel one clock late and another wait state by also asserting trdy one clock late. the second transaction shows a zero wait state write cycle. the target asserts devsel and trdy in the same cycle as the AM79C971 controller asserts irdy . basic burst write transfer the AM79C971 controller supports burst mode for all bus master write operations. the burst mode must be enabled by setting bwrite (bcr18, bit 5). to allow burst transfers in descriptor write operations, the AM79C971 controller must also be programmed to use swstyle 3 (bcr20, bits 7-0). all AM79C971 control- ler burst write transfers are of the pci command type memory write (type 7). ad[1:0] will both be 0 during the address phase indicating a linear burst order. the byte enable signals indicate the byte lanes that have valid data. the AM79C971 controller will always perform a single burst write transaction per bus mastership period, where transaction is defined as one address phase and one or multiple data phases. the AM79C971 controller supports zero wait state write cycles except with the case of descriptor write transfers. (see the section de- scriptor dma transfers for the only exception.) the de- vice asserts irdy immediately after the address phase and at the same time starts sampling devsel . frame is deasserted when the next to last data phase is completed. figure 14. non-burst write transfer frame clk ad irdy trdy c/be devsel req gnt par devsel is sampled addr 0111 par 1 2345678 10 9 data addr data pa r pa r pa r be 0111 be 20550d-17
40 AM79C971 figure 15 shows a typical burst write access. the AM79C971 controller arbitrates for the bus, is granted access, and writes four 32-bit words (dwords) to the system memory and then releases the bus. in this ex- ample, the memory system extends the data phase of the first access by one wait state. the following three data phases take one clock cycle each, which is deter- mined by the timing of trdy . the example assumes that extreq (bcr18, bit 8) is set to 1, therefore, req is not deasserted until the next to last data phase is fin- ished. target initiated termination when the AM79C971 controller is a bus master, the cy- cles it produces on the pci bus may be terminated by the target in one of three different ways. disconnect with data transfer figure 16 shows a disconnection in which one last data transfer occurs after the target asserted stop . stop is asserted on clock 4 to start the termination se- quence. data is still transferred during this cycle, since both irdy and trdy are asserted. the AM79C971 controller terminates the current transfer with the deas- sertion of frame on clock 5 and of irdy one clock later. it finally releases the bus on clock 7. the AM79C971 controller will again request the bus after two clock cycles, if it wants to transfer more data. the starting address of the new transfer will be the address of the next non-transferred data. figure 15. burst write transfer (extreq = 1) frame clk ad irdy trdy c/be evsel req gnt 12345678 addr data data data be 0111 9 par par par par par data par devsel is sampled 20550d-18
AM79C971 41 figure 16. disconnect with data transfer disconnect without data transfer figure 17 shows a target disconnect sequence during which no data is transferred. stop is asserted on clock 4 without trdy being asserted at the same time. the AM79C971 controller terminates the access with the deassertion of frame on clock 5 and of irdy one clock cycle later. it finally releases the bus on clock 7. the AM79C971 controller will again request the bus after two clock cycles to retry the last transfer. the starting address of the new transfer will be the address of the last non-transferred data. target abor t figure 18 shows a target abort sequence. the target asserts devsel for one clock. it then deasserts devsel and asserts stop on clock 4. a target can use the target abort sequence to indicate that it can- not service the data transfer and that it does not want the transaction to be retried. additionally, the AM79C971 controller cannot make any assumption about the success of the previous data transfers in the current transaction. the AM79C971 controller termi- nates the current transfer with the deassertion of frame on clock 5 and of irdy one clock cycle later. it finally releases the bus on clock 6. since data integrity is not guaranteed, the AM79C971 controller cannot recover from a target abort event. the AM79C971 controller will reset all csr locations to their stop_reset values. the bcr and pci config- uration registers will not be cleared. any on-going net- work transmission is terminated in an orderly sequence. if less than 512 bits have been transmitted onto the network, the transmission will be terminated immediately, generating a runt packet. if 512 bits or more have been transmitted, the message will have the current fcs inverted and appended at the next byte boundary to guarantee an fcs error is detected at the receiving station. frame clk ad irdy trdy c/be devsel req gnt par devsel is sampled addr i 0000 0111 par 0111 23456789 11 10 par data stop addr i +8 data 1 20550d-19
42 AM79C971 figure 17. disconnect without data transfer rtabort (pci status register, bit 12) will be set to indicate that the AM79C971 controller has received a target abort. in addition, sint (csr5, bit 11) will be set to 1. when sint is set, inta is asserted if the enable bit sinte (csr5, bit 10) is set to 1. this mechanism can be used to inform the driver of the system error. the host can read the pci status register to determine the exact cause of the interrupt. master initiated termination there are three scenarios besides normal completion of a transaction where the AM79C971 controller will terminate the cycles it produces on the pci bus. preemption during non-burst transaction when the AM79C971 controller performs multiple non- burst transactions, it keeps req asserted until the as- sertion of frame for the last transaction. when gnt is removed, the AM79C971 controller will finish the cur- rent transaction and then release the bus. if it is not the last transaction, req will remain asserted to regain bus ownership as soon as possible. see figure 19. preemption during burst transaction when the AM79C971 controller operates in burst mode, it only performs a single transaction per bus mastership period, where transaction is defined as one address phase and one or multiple data phases. the central arbiter can remove gnt at any time during the transaction. the AM79C971 controller will ignore the deassertion of gnt and continue with data transfers, as long as the pci latency timer is not expired. when the latency timer is 0 and gnt is deasserted, the AM79C971 controller will finish the current data phase, deassert frame , finish the last data phase, and re- lease the bus. if extreq (bcr18, bit 8) is cleared to 0, it will immediately assert req to regain bus owner- ship as soon as possible. if extreq is set to 1, req will stay asserted. frame clk ad irdy trdy c/be devsel req gnt par devsel is sampled stop addr i 0000 0111 par 0111 23456789 11 10 addr i data par 1 20550d-20
AM79C971 43 figure 18. target abort when the preemption occurs after the counter has counted down to 0, the AM79C971 controller will finish the current data phase, deassert frame , finish the last data phase, and release the bus. note that it is im- portant for the host to program the pci latency timer according to the bus bandwidth requirement of the AM79C971 controller. the host can determine this bus bandwidth requirement by reading the pci max_lat and min_gnt registers. figure 20 assumes that the pci latency timer has counted down to 0 on clock 7. master abort the AM79C971 controller will terminate its cycle with a master abort sequence if devsel is not asserted within 4 clocks after frame is asserted. master abort is treated as a fatal error by the AM79C971 controller. the AM79C971 controller will reset all csr locations to their stop_reset values. the bcr and pci con- figuration registers will not be cleared. any on-going network transmission is terminated in an orderly se- quence. if less than 512 bits have been transmitted onto the network, the transmission will be terminated immediately, generating a runt packet. if 512 bits or more have been transmitted, the message will have the current fcs inverted and appended at the next byte boundary to guarantee an fcs error is detected at the receiving station. rmabort (in the pci status register, bit 13) will be set to indicate that the AM79C971 controller has termi- nated its transaction with a master abort. in addition, sint (csr5, bit 11) will be set to 1. when sint is set, inta is asserted if the enable bit sinte (csr5, bit 10) is set to 1. this mechanism can be used to inform the driver of the system error. the host can read the pci status register to determine the exact cause of the in- terrupt. see figure 21. parity error response during every data phase of a dma read operation, when the target indicates that the data is valid by as- serting trdy , the AM79C971 controller samples the ad[31:0], c/be [3:0] and the par lines for a data parity error. when it detects a data parity error, the controller sets perr (pci status register, bit 15) to 1. when re- porting of that error is enabled by setting perren (pci command register, bit 6) to 1, the AM79C971 controller also drives the perr signal low and sets dataperr (pci status register, bit 8) to 1. the asser- tion of perr follows the corrupted data/byte enables by two clock cycles and par by one clock cycle. figure 22 shows a transaction that has a parity error in the data phase. the AM79C971 controller asserts perr on clock 8, two clock cycles after data is valid. the data on clock 5 is not checked for parity, since on a read access par is only required to be valid one clock after the target has asserted trdy . the AM79C971 controller then drives perr high for one clock cycle, since perr is a sustained tri-state signal. during every data phase of a dma write operation, the AM79C971 controller checks the perr input to see if the target reports a parity error. when it sees the perr input asserted, the controller sets perr (pci status register, bit 15) to 1. when perren (pci command register, bit 6) is set to 1, the AM79C971 controller also sets dataperr (pci status register, bit 8) to 1. frame clk ad irdy trdy c/be devsel req gnt par devsel is sampled 234567 addr 0000 0111 par par data stop 1 20550d-21
44 AM79C971 figure 19. preemption during non-burst transaction figure 20. preemption during burst transaction frame clk ad irdy trdy c/be devsel req gnt 1 234567 be 0111 par par devsel is sampled par data addr 20550d-22 frame clk ad irdy trdy c/be devsel par devsel is sampled addr be 0111 par 1 234 5 6 78 9 data par req data data data data par par par par gnt 20550d-23
AM79C971 45 figure 21. master abort figure 22. master cycle data parity error response frame clk ad irdy trdy c/be devsel par devsel is sampled addr 0111 par 1 234 5 6 78 9 data par req gnt 0000 20550d-24 frame clk ad irdy trdy c/be devsel par devsel is sampled addr be 0111 par 1 234 5 6 78 9 data par perr 20550d-25
46 AM79C971 whenever the AM79C971 controller is the current bus master and a data parity error occurs, sint (csr5, bit 11) will be set to 1. when sint is set, inta is asserted if the enable bit sinte (csr5, bit 10) is set to 1. this mechanism can be used to inform the driver of the sys- tem error. the host can read the pci status register to determine the exact cause of the interrupt. the setting of sint due to a data parity error is not dependent on the setting of perren (pci command register, bit 6). by default, a data parity error does not affect the state of the mac engine. the AM79C971 controller treats the data in all bus master transfers that have a parity error as if nothing has happened. all network activity contin- ues. advanced parity error handling for all dma cycles, the AM79C971 controller provides a second, more advanced level of parity error handling. this mode is enabled by setting aperren (bcr20, bit 10) to 1. when aperren is set to 1, the bpe bits (rmd1 and tmd1, bit 23) are used to indicate parity error in data transfers to the receive and transmit buff- ers. note that since the advanced parity error handling uses an additional bit in the descriptor, swstyle (bcr20, bits 7-0) must be set to 2 or 3 to program the AM79C971 controller to use 32-bit software structures. the AM79C971 controller will react in the following way when a data parity error occurs:  initialization block read: stop (csr0, bit 2) is set to 1 and causes a stop_reset of the device.  descriptor ring read: any on-going network activity is terminated in an orderly sequence and then stop (csr0, bit 2) is set to 1 to cause a stop_reset of the device.  descriptor ring write: any on-going network activity is terminated in an orderly sequence and then stop (csr0, bit 2) is set to 1 to cause a stop_reset of the device.  transmit buffer read: bpe (tmd1, bit 23) is set in the current transmit descriptor. any on-going net- work transmission is terminated in an orderly se- quence.  receive buffer write: bpe (rmd1, bit 23) is set in the last receive descriptor associated with the frame. terminating on-going network transmission in an order- ly sequence means that if less than 512 bits have been transmitted onto the network, the transmission will be terminated immediately, generating a runt packet. figure 23. initialization block read in non-burst mode frame clk ad irdy trdy c/be devsel req gnt par devsel is sampled iadd i 0000 0110 par par data data iadd i +4 0000 0110 par par 1 2345678 10 9 20550d-26
AM79C971 47 if 512 bits or more have been transmitted, the message will have the current fcs inverted and appended at the next byte boundary to guarantee an fcs error is de- tected at the receiving station. aperren does not affect the reporting of address parity errors or data parity errors that occur when the AM79C971 controller is the target of the transfer. initialization block dma transfers during execution of the AM79C971 controller bus mas- ter initialization procedure, the AM79C971 microcode will repeatedly request dma transfers from the biu. during each of these initialization block dma transfers, the biu will perform two data transfer cycles reading one dword per transfer and then it will relinquish the bus. when ssize32 (bcr20, bit 8) is set to 1 (i.e., the initialization block is organized as 32-bit software struc- tures), there are seven dwords to transfer during the bus master initialization procedure, so four bus master- ship periods are needed in order to complete the initial- ization sequence. note that the last dword transfer of the last bus mastership period of the initialization se- quence accesses an unneeded location. data from this transfer is discarded internally. when ssize32 is cleared to 0 (i.e., the initialization block is organized as 16-bit software structures), then three bus mastership periods are needed to complete the initialization se- quence. the AM79C971 supports two transfer modes for read- ing the initialization block: non-burst and burst mode, with burst mode being the preferred mode when the AM79C971 controller is used in a pci bus application. see figure 23 and figure 24. when breade is cleared to 0 (bcr18, bit 6), all initial- ization block read transfers will be executed in non- burst mode. there is a new address phase for every data phase. frame will be dropped between the two transfers. the two phases within a bus mastership pe- riod will have addresses of ascending contiguous or- der. when breade is set to 1 (bcr18, bit 6), all initializa- tion block read transfers will be executed in burst mode. ad[1:0] will be 0 during the address phase indicating a linear burst order. descriptor dma transfers AM79C971 microcode will determine when a descrip- tor access is required. a descriptor dma read will con- sist of two data transfers. a descriptor dma write will consist of one or two data transfers. the descriptor dma transfers within a single bus mastership period will always be of the same type (either all read or all write). during descriptor read accesses, the byte enable sig- nals will indicate that all byte lanes are active. should some of the bytes not be needed, then the AM79C971 controller will internally discard the extraneous informa- tion that was gathered during such a read. the settings of swstyle (bcr20, bits 7-0) and breade (bcr18, bit 6) affect the way the AM79C971 controller performs descriptor read operations. when swstyle is set to 0 or 2, all descriptor read op- erations are performed in non-burst mode. the setting of breade has no effect in this configuration. see fig- ure 25. when swstyle is set to 3, the descriptor entries are ordered to allow burst transfers. the AM79C971 con- troller will perform all descriptor read operations in burst mode, if breade is set to 1. see figure 26. table 4 shows the descriptor read sequence. during descriptor write accesses, only the byte lanes which need to be written are enabled. table 4. descriptor read sequence swstyle bcr20[7:0] breade bcr18[6] ad bus sequence 0x address = xxxx xx00h turn around cycle data = md1[31:24], md0[23:0] idle address = xxxx xx04h turn around cycle data = md2[15:0], md1[15:0] 2x address = xxxx xx04h turn around cycle data = md1[31:0] idle address = xxxx xx00h turn around cycle data = md0[31:0] 30 address = xxxx xx04h turn around cycle data = md1[31:0] idle address = xxxx xx08h turn around cycle data = md0[31:0] 31 address = xxxx xx04h turn around cycle data = md1[31:0] data = md0[31:0]
48 AM79C971 figure 24. initialization block read in burst mode figure 25. descriptor ring read in non-burst mode frame clk ad irdy trdy c/be d evsel req gnt 1 234567 0000 0110 par par par par devsel is sampled data data iadd i 20550d-27 frame clk ad irdy trdy c/be devsel req gnt par devsel is sampled md1 0000 0110 par par data data md0 0000 0110 par par 1 2345678 10 9 20550c-28
AM79C971 49 if buffer chaining is used, accesses to the descriptors of all intermediate buffers consist of only one data transfer to return ownership of the buffer to the system. when swstyle (bcr20, bits 7-0) is cleared to 0 (i.e., the descriptor entries are organized as 16-bit software structures), the descriptor access will write a single byte. when swstyle (bcr20, bits 7-0) is set to 2 or 3 (i.e., the descriptor entries are organized as 32-bit software structures), the descriptor access will write a single word. on all single buffer transmit or receive de- scriptors, as well as on the last buffer in chain, writes to the descriptor consist of two data transfers. the first data transfer writes a dword containing status information. the second data transfer writes a byte (swstyle cleared to 0), or otherwise a word contain- ing additional status and the ownership bit (i.e., md1[31]). the settings of swstyle (bcr20, bits 7-0) and bwrite (bcr18, bit 5) affect the way the AM79C971 controller performs descriptor write operations. when swstyle is set to 0 or 2, all descriptor write op- erations are performed in non-burst mode. the setting of bwrite has no effect in this configuration. when swstyle is set to 3, the descriptor entries are ordered to allow burst transfers. the AM79C971 con- troller will perform all descriptor write operations in burst mode, if bwrite is set to 1. see table 5 for the descriptor write sequence. a write transaction to the descriptor ring entries is the only case where the AM79C971 controller inserts a wait state when being the bus master. every data phase in non-burst and burst mode is extended by one clock cycle, during which irdy is deasserted. note that figure 26 assumes that the AM79C971 con- troller is programmed to use 32-bit software structures (swstyle = 2 or 3). the byte enable signals for the second data transfer would be 0111b, if the device was programmed to use 16-bit software structures (sw- style = 0). figure 26. descriptor ring read in burst mode frame clk ad irdy trdy c/be devsel req gnt 1 234567 md1 0000 0110 par par par data data par devsel is sampled 20550d-29
50 AM79C971 table 5. descriptor write sequence fifo dma transfers AM79C971 microcode will determine when a fifo dma transfer is required. this transfer mode will be used for transfers of data to and from the AM79C971 fifos. once the AM79C971 biu has been granted bus mastership, it will perform a series of consecutive transfer cycles before relinquishing the bus. all trans- fers within the master cycle will be either read or write cycles, and all transfers will be to contiguous, ascend- ing addresses. both non-burst and burst cycles are used, with burst mode being the preferred mode when the device is used in a pci bus application. non-burst fifo dma transfers in the default mode, the AM79C971 controller uses non-burst transfers to read and write data when ac- cessing the fifos. each non-burst transfer will be per- formed sequentially with the issue of an address and the transfer of the corresponding data with appropriate output signals to indicate selection of the active data bytes during the transfer. frame will be deasserted after every address phase. several factors will affect the length of the bus master- ship period. the possibilities are as follows: bus cycles will continue until the transmit fifo is filled to its high threshold (read transfers) or the receive fifo is emptied to its low threshold (write transfers). the exact number of total transfer cycles in the bus master- ship period is dependent on all of the following vari- ables: the settings of the fifo watermarks, the conditions of the fifos, the latency of the system bus to the AM79C971 controller ? s bus request, the speed of bus operation and bus preemption events. the trdy response time of the memory device will also affect the number of transfers, since the speed of the accesses will affect the state of the fifo. during accesses, the fifo may be filling or emptying on the network end. for example, on a receive operation, a slower trdy re- sponse will allow additional data to accumulate inside of the fifo. if the accesses are slow enough, a com- plete dword may become available before the end of the bus mastership period and, thereby, increase the number of transfers in that period. the general rule is that the longer the bus grant latency, the slower the bus transfer operations; the slower the clock speed, the higher the transmit watermark; or the higher the re- ceive watermark, the longer the bus mastership period will be. note: the pci latency timer is not significant during non-burst transfers. swstyle bcr20[7:0] bwrite bcr18[5] ad bus sequence 0x address = xxxx xx04h data = md2[15:0], md1[15:0] idle address = xxxx xx00h data = md1[31:24] 2x address = xxxx xx08h data = md2[31:0] idle address = xxxx xx04h data = md1[31:16] 30 address = xxxx xx00h data = md2[31:0] idle address = xxxx xx04h data = md1[31:16] 31 address = xxxx xx00h data = md2[31:0] data = md1[31:16]
AM79C971 51 figure 27. descriptor ring write in non-burst mode figure 28. descriptor ring write in burst mode frame clk ad irdy trdy c/be devsel req gnt par devsel is sampled md2 0000 0111 par md1 0011 0111 par 1 2345678 10 9 data par par data 20550d-30 gnt req devsel trdy par c/be frame clk 35 par ad irdy devsel is sampled data 1 2 4 6 7 8 0110 0000 0011 md2 par data par 20550d-31
52 AM79C971 burst fifo dma transfers bursting is only performed by the AM79C971 controller if the breade and/or bwrite bits of bcr18 are set. these bits individually enable/disable the ability of the AM79C971 controller to perform burst accesses during master read operations and master write operations, respectively. a burst transaction will start with an address phase, fol- lowed by one or more data phases. ad[1:0] will always be 0 during the address phase indicating a linear burst order. during fifo dma read operations, all byte lanes will always be active. the AM79C971 controller will inter- nally discard unused bytes. during the first and the last data phases of a fifo dma burst write operation, one or more of the byte enable signals may be inactive. all other data phases will always write a complete dword. figure 29 shows the beginning of a fifo dma write with the beginning of the buffer not aligned to a dword boundary. the AM79C971 controller starts off by writ- ing only three bytes during the first data phase. this op- eration aligns the address for all other data transfers to a 32-bit boundary so that the AM79C971 controller can continue bursting full dwords. if a receive buffer does not end on a dword boundary, the AM79C971 controller will perform a non-dword write on the last transfer to the buffer. figure 30 shows the final three fifo dma transfers to a receive buffer. since there were only nine bytes of space left in the re- ceive buffer, the AM79C971 controller bursts three data phases. the first two data phases write a full dword, the last one only writes a single byte. note that the AM79C971 controller will always perform a dword transfer as long as it owns the buffer space, even when there are less then four bytes to write. for example, if there is only one byte left for the current re- ceive frame, the AM79C971 controller will write a full dword, containing the last byte of the receive frame in the least significant byte position (bswp is cleared to 0, csr3, bit 2). the content of the other three bytes is undefined. the message byte count in the receive de- scriptor always reflects the exact length of the received frame. if the end of a receive buffer is not aligned to a dword boundary, iwait (bcr18, bit 10) must stay at its de- fault value of 0. this will result in one wait state added to every data phase in a burst write transaction. when the software ensures that all receive buffers end on a dword boundary, iwait can be set to 1. in this mode, the AM79C971 controller will only insert a wait state in the first data phase of the burst write transaction. figure 29. fifo burst write at start of unaligned buffer in a pci bus application, the AM79C971 controller should be set up to have the length of a bus mastership period be controlled only by the pci latency timer. the timer bit (csr4, bit 13) should remain at its de- fault value of 0. in this mode, the AM79C971 controller will continue transferring fifo data until the transmit fifo is filled to its high threshold (read transfers) or the receive fifo is emptied to its low threshold (write transfers), or the AM79C971 controller is preempted, and the pci latency timer is expired. the host should use the values in the pci min_gnt and max_lat reg- isters to determine the value for the pci latency timer. in applications that do not use the pci latency timer or that do not support preemption, the following rules apply to limit the time the AM79C971 controller takes on the bus: frame clk ad irdy trdy c/be devsel req gnt 1 23456 0000 0111 par par par devsel is sampled 0001 par data data data add 20550d-32
AM79C971 53 figure 30. fifo burst write at end of unaligned buffer the exact number of total transfer cycles in the bus mastership period is dependent on all of the following variables: the settings of the fifo watermarks, the conditions of the fifos, the latency of the system bus to the AM79C971 controller ? s bus request, and the speed of bus operation. the trdy response time of the memory device will also affect the number of trans- fers, since the speed of the accesses will affect the state of the fifo. during accesses, the fifo may be filling or emptying on the network end. for example, on a receive operation, a slower trdy response will allow additional data to accumulate inside of the fifo. if the accesses are slow enough, a complete dword may be- come available before the end of the bus mastership period and, thereby, increase the number of transfers in that period. the general rule is that the longer the bus grant latency, the slower the bus transfer operations; the slower the clock speed, the higher the transmit wa- termark; or the lower the receive watermark, the longer the total burst length will be. when a fifo dma burst operation is preempted, the AM79C971 controller will not relinquish bus ownership until the pci latency timer expires. buffer management unit the buffer management unit (bmu) is a microcoded state machine which implements the initialization pro- cedure and manages the descriptors and buffers. the buffer management unit operates at half the speed of the clk input. initialization AM79C971 initialization includes the reading of the ini- tialization block in memory to obtain the operating pa- rameters. the initialization block can be organized in two ways. when ssize32 (bcr20, bit 8) is at its de- fault value of 0, all initialization block entries are logi- cally 16-bits wide to be backwards compatible with the am79c90 c-lance and am79c96x pcnet-isa family. when ssize32 (bcr20, bit 8) is set to 1, all initializa- tion block entries are logically 32-bits wide. note that the AM79C971 controller always performs 32-bit bus transfers to read the initialization block entries. the ini- tialization block is read when the init bit in csr0 is set. the init bit should be set before or concurrent with the strt bit to insure correct operation. once the initial- ization block has been completely read in and internal registers have been updated, idon will be set in csr0, generating an interrupt (if iena is set). the AM79C971 controller obtains the start address of the initialization block from the contents of csr1 (least significant 16 bits of address) and csr2 (most signifi- cant 16 bits of address). the host must write csr1 and csr2 before setting the init bit. the initialization block contains the user defined conditions for AM79C971 op- eration, together with the base addresses and length information of the transmit and receive descriptor rings. there is an alternate method to initialize the AM79C971 controller. instead of initialization via the initialization block in memory, data can be written di- rectly into the appropriate registers. either method or a combination of the two may be used at the discretion of the programmer. please refer to appendix c, alterna- tive method for initialization for details on this alternate method. re-initialization the transmitter and receiver sections of the AM79C971 controller can be turned on via the initialization block (dtx, drx, csr15, bits 1-0). the states of the trans- mitter and receiver are monitored by the host through csr0 (rxon, txon bits). the AM79C971 controller should be re-initialized if the transmitter and/or the re- ceiver were not turned on during the original initializa- tion, and it was subsequently required to activate them or if either section was shut off due to the detection of an error condition (merr, uflo, tx buff error). re-initialization may be done via the initialization block or by setting the stop bit in csr0, followed by writing to csr15, and then setting the start bit in csr0. frame clk ad irdy trdy c/be devsel req gnt 1 234567 0000 0111 par par par par devsel is sampled 1110 par data data data add 20550d-33
54 AM79C971 note that this form of restart will not perform the same in the AM79C971 controller as in the c-lance device. in particular, upon restart, the AM79C971 controller re- loads the transmit and receive descriptor pointers with their respective base addresses. this means that the software must clear the descriptor own bits and reset its descriptor ring pointers before restarting the AM79C971 controller. the reload of descriptor base addresses is performed in the c-lance device only after initialization, so that a restart of the c-lance without initialization leaves the c-lance pointing at the same descriptor locations as before the restart. suspend the AM79C971 controller offers two suspend modes that allows easy updating of the csr registers without going through a full re-initialization of the device. the suspend modes also allow stopping the device with or- derly termination of all network activity. the host requests the AM79C971 controller to enter the suspend mode by setting spnd (csr5, bit 0) to 1. the host must poll spnd until it reads back 1 to deter- mine that the AM79C971 controller has entered the suspend mode. when the host sets spnd to 1, the pro- cedure taken by the AM79C971 controller to enter the suspend mode depends on the setting of the fast sus- pend enable bit (fastspnd, csr7, bit 15). when a fast suspend is requested (fastspnd is set to 1), the AM79C971 controller performs a quick entry into the suspend mode. at the time the spnd bit is set, the AM79C971 controller will continue the dma pro- cess of any transmit and/or receive packets that have already begun dma activity until the network activity has been completed. in addition, any transmit packet that had started transmission will be fully transmitted and any receive packet that had begun reception will be fully received. however, no additional packets will be transmitted or received and no additional transmit or re- ceive dma activity will begin after network activity has ceased. hence, the AM79C971 controller may enter the suspend mode with transmit and/or receive packets still in the fifos or external sram. this offers a worst case suspend time of a maximum length packet over the possibility of completely emptying the external sram. care must be exercised in this mode, because the entire memory subsystem of the AM79C971 con- troller is suspended. any changes to either the descrip- tor rings or the external sram can cause the AM79C971 controller to start up in an unknown condi- tion and could cause data corruption. when fastspnde is 0 and the spnd bit is set, the AM79C971 controller may take longer before entering the suspend mode. at the time the spnd bit is set, the AM79C971 controller will complete the dma process of a transmit packet if it had already begun and the AM79C971 controller will completely receive a receive packet if it had already begun. the AM79C971 control- ler will not receive any new packets after the comple- tion of the current reception. additionally, all transmit packets stored in the transmit fifos and the transmit buffer area in the external sram (if one is present) will be transmitted, and all receive packets stored in the re- ceive fifos and the receive buffer area in the external sram (if one is present) will be transferred into system memory. since the fifo and external sram contents are flushed, it may take much longer before the AM79C971 controller enters the suspend mode. the amount of time that it takes depends on many factors including the size of the external sram, bus latency, and network traffic level. upon completion of the described operations, the AM79C971 controller sets the read-version of spnd to 1 and enters the suspend mode. in suspend mode, all of the csr and bcr registers are accessible. as long as the AM79C971 controller is not reset while in sus- pend mode (by h_reset, s_reset, or by setting the stop bit), no re-initialization of the device is required after the device comes out of suspend mode. when spnd is set to 0, the AM79C971 controller will leave the suspend mode and will continue at the transmit and receive descriptor ring locations, where it had been when it entered the suspend mode. see the section on magic packet ? technology for de- tails on how that affects suspension of the AM79C971 controller. buffer management buffer management is accomplished through message descriptor entries organized as ring structures in mem- ory. there are two descriptor rings, one for transmit and one for receive. each descriptor describes a single buffer. a frame may occupy one or more buffers. if mul- tiple buffers are used, this is referred to as buffer chain- ing. descriptor rings each descriptor ring must occupy a contiguous area of memory. during initialization, the user-defined base address for the transmit and receive descriptor rings, as well as the number of entries contained in the de- scriptor rings are set up. the programming of the soft- ware style (swstyle, bcr20, bits 7-0) affects the way the descriptor rings and their entries are arranged. when swstyle is at its default value of 0, the de- scriptor rings are backwards compatible with the am79c90 c-lance and the am79c96x pcnet-isa family. the descriptor ring base addresses must be aligned to an 8-byte boundary and a maximum of 128 ring entries is allowed when the ring length is set through the tlen and rlen fields of the initialization block. each ring entry contains a subset of the three 32-bit transmit or receive message descriptors (tmd, rmd) that are organized as four 16-bit structures
AM79C971 55 (ssize32 (bcr20, bit 8) is set to 0). note that even though the AM79C971 controller treats the descriptor entries as 16-bit structures, it will always perform 32-bit bus transfers to access the descriptor entries. the value of csr2, bits 15-8, is used as the upper 8-bits for all memory addresses during bus master transfers. when swstyle is set to 2 or 3, the descriptor ring base addresses must be aligned to a 16-byte bound- ary, and a maximum of 512 ring entries is allowed when the ring length is set through the tlen and rlen fields of the initialization block. each ring entry is organized as three 32-bit message descriptors (ssize32 (bcr20, bit 8) is set to 1). the fourth dword is re- served. when swstyle is set to 3, the order of the message descriptors is optimized to allow read and write access in burst mode. for any software style, the ring lengths can be set be- yond this range (up to 65535) by writing the transmit and receive ring length registers (csr76, csr78) di- rectly. each ring entry contains the following information:  the address of the actual message data buffer in user or host memory  the length of the message buffer  status information indicating the condition of the buffer to permit the queuing and de-queuing of message buffers, ownership of each buffer is allocated to either the AM79C971 controller or the host. the own bit within the descriptor status information, either tmd or rmd, is used for this purpose. when own is set to 1, it signifies that the AM79C971 controller currently has ownership of this ring descrip- tor and its associated buffer. only the owner is permit- ted to relinquish ownership or to write to any field in the descriptor entry. a device that is not the current owner of a descriptor entry cannot assume ownership or change any field in the entry. a device may, however, read from a descriptor that it does not currently own. software should always read descriptor entries in se- quential order. when software finds that the current de- scriptor is owned by the AM79C971 controller, then the software must not read ahead to the next descriptor. the software should wait at a descriptor it does not own until the AM79C971 controller sets own to 0 to release ownership to the software. (when lappen (csr3, bit 5) is set to 1, this rule is modified. see the lappen de- scription. at initialization, the AM79C971 controller reads the base address of both the transmit and re- ceive descriptor rings into csrs for use by the AM79C971 controller during subsequent operations. figure 31 illustrates the relationship between the initial- ization base address, the initialization block, the re- ceive and transmit descriptor ring base addresses, the receive and transmit descriptors, and the receive and transmit data buffers, when ssize32 is cleared to 0.
56 AM79C971 figure 31. 16-bit software model note that the value of csr2, bits 15-8, is used as the upper 8-bits for all memory addresses during bus mas- ter transfers. figure 32 illustrates the relationship between the initial- ization base address, the initialization block, the re- ceive and transmit descriptor ring base addresses, the receive and transmit descriptors, and the receive and transmit data buffers, when ssize32 is set to 1. polling if there is no network channel activity and there is no pre- or post-receive or pre- or post-transmit activity being performed by the AM79C971 controller, then the AM79C971 controller will periodically poll the current receive and transmit descriptor entries in order to as- certain their ownership. if the txdpoll bit in csr4 is set, then the transmit polling function is disabled. a typical polling operation consists of the following se- quence. the AM79C971 controller will use the current receive descriptor address stored internally to vector to the appropriate receive descriptor table entry (rdte). it will then use the current transmit descriptor address (stored internally) to vector to the appropriate transmit descriptor table entry (tdte). the accesses will be made in the following order: rmd1, then rmd0 of the current rdte during one bus arbitration, and after that, tmd1, then tmd0 of the current tdte dur- ing a second bus arbitration. all information collected during polling activity will be stored internally in the ap- propriate csrs, if the own bit is set (i.e., csr18, csr19, csr20, csr21, csr40, csr42, csr50, csr52). a typical receive poll is the product of the following con- ditions: 1. AM79C971 controller does not own the current rdte and the poll time has elapsed and rxon = 1 (csr0, bit 5), or 2. AM79C971 controller does not own the next rdte and there is more than one receive descriptor in the ring and the poll time has elapsed and rxon = 1. initialization block iadr[15:0] iadr[31:16] csr1 csr2 tdra[15:0] mod padr[15:0] padr[31:16] padr[47:32] ladrf[15:0] ladrf[31:16] ladrf[47:32] ladrf[63:48] rdra[15:0] rle res rdra[23:16] tle res tdra[23:16] rcv buffers rmd rmd rmd rmd rcv descriptor ring n n n n    1st desc. 2nd desc. rmd0 xmt buffers tmd tmd tmd tmd xmt descriptor ring m m m m    1st desc. 2nd desc. tmd data buffer n data buffer 1 data buffer 2 data buffer m data buffer 1 data buffer 2 20550d-34
AM79C971 57 figure 32. 32-bit software model if rxon is cleared to 0, the AM79C971 controller will never poll rdte locations. in order to avoid missing frames, the system should have at least one rdte available. to minimize poll ac- tivity, two rdtes should be available. in this case, the poll operation will only consist of the check of the status of the current tdte. a typical transmit poll is the product of the following conditions: 1. AM79C971 controller does not own the current tdte and txdpoll = 0 (csr4, bit 12) and txon = 1 (csr0, bit 4) and the poll time has elapsed, or 2. AM79C971 controller does not own the current tdte and txdpoll = 0 and txon = 1 and a frame has just been received, or 3. AM79C971 controller does not own the current tdte and txdpoll = 0 and txon = 1 and a frame has just been transmitted. setting the tdmd bit of csr0 will cause the microcode controller to exit the poll counting code and immedi- ately perform a polling operation. if rdte ownership has not been previously established, then an rdte poll will be performed ahead of the tdte poll. if the mi- crocode is not executing the poll counting code when the tdmd bit is set, then the demanded poll of the tdte will be delayed until the microcode returns to the poll counting code. the user may change the poll time value from the de- fault of 65,536 clock periods by modifying the value in the polling interval register (csr47). transmit descriptor table entry if, after a transmit descriptor table entry (tdte) ac- cess, the AM79C971 controller finds that the own bit of that tdte is not set, the AM79C971 controller re- sumes the poll time count and re-examines the same tdte at the next expiration of the poll time count. initialization block csr1 csr2 rcv buff rmd rmd rmd rmd rcv descriptor ring n n n n    1st desc. start 2nd desc. start rmd xmt buff tmd0 tmd1 tmd2 tmd3 xmt descriptor ring m m m m    1st desc. start 2nd desc. start tmd0 data buffer n data buffer 1 data buffer 2 data buffer m data buffer 2 data buffer 1 padr[31:0] iadr[31:16] iadr[15:0] tle res rle res mode padr[47:32] res ladrf[31:0] ladrf[63:32] rdra[31:0] tdra[31:0] 20550d-35
58 AM79C971 if the own bit of the tdte is set, but the start of packet (stp) bit is not set, the AM79C971 controller will immediately request the bus in order to clear the own bit of this descriptor. (this condition would nor- mally be found following a late collision (lcol) or retry (rtry) error that occurred in the middle of a transmit frame chain of buffers.) after resetting the own bit of this descriptor, the AM79C971 controller will again im- mediately request the bus in order to access the next tdte location in the ring. if the own bit is set and the buffer length is 0, the own bit will be cleared. in the c-lance device, the buffer length of 0 is interpreted as a 4096-byte buffer. a zero length buffer is acceptable as long as it is not the last buffer in a chain (stp = 0 and enp = 1). if the own bit and stp are set, then microcode control proceeds to a routine that will enable transmit data transfers to the fifo. the AM79C971 controller will look ahead to the next transmit descriptor after it has performed at least one transmit data transfer from the first buffer. if the AM79C971 controller does not own the next tdte (i.e., the second tdte for this frame), it will com- plete transmission of the current buffer and update the status of the current (first) tdte with the buff and uflo bits being set. if dxsuflo (csr3, bit 6) is cleared to 0, the underflow error will cause the transmit- ter to be disabled (csr0, txon = 0). the AM79C971 controller will have to be re-initialized to restore the transmit function. setting dxsuflo to 1 enables the AM79C971 controller to gracefully recover from an un- derflow error. the device will scan the transmit descrip- tor ring until it finds either the start of a new frame or a tdte it does not own. to avoid an underflow situation in a chained buffer transmission, the system should al- ways set the transmit chain descriptor own bits in re- verse order. if the AM79C971 controller does own the second tdte in a chain, it will gradually empty the contents of the first buffer (as the bytes are needed by the transmit opera- tion), perform a single-cycle dma transfer to update the status of the first descriptor (clear the own bit in tmd1), and then it may perform one data dma access on the second buffer in the chain before executing an- other lookahead operation. (i.e., a lookahead to the third descriptor.) it is imperative that the host system never reads the tdte own bits out of order. the AM79C971 controller normally clears own bits in strict fifo order. however, the AM79C971 controller can queue up to two frames in the transmit fifo. when the second frame uses buffer chaining, the AM79C971 controller might return ownership out of normal fifo order. the own bit for last (and maybe only) buffer of the first frame is not cleared until transmission is completed. during the transmission the AM79C971 controller will read in buff- ers for the next frame and clear their own bits for all but the last one. the first and all intermediate buffers of the second frame can have their own bits cleared be- fore the AM79C971 controller returns ownership for the last buffer of the first frame. if an error occurs in the transmission before all of the bytes of the current buffer have been transferred, trans- mit status of the current buffer will be immediately up- dated. if the buffer does not contain the end of packet, the AM79C971 controller will skip over the rest of the frame which experienced the error. this is done by re- turning to the polling microcode where the AM79C971 controller will clear the own bit for all descriptors with own = 1 and stp = 0 and continue in like manner until a descriptor with own = 0 (no more transmit frames in the ring) or own = 1 and stp = 1 (the first buffer of a new frame) is reached. at the end of any transmit operation, whether success- ful or with errors, immediately following the completion of the descriptor updates, the AM79C971 controller will always perform another polling operation. as described earlier, this polling operation will begin with a check of the current rdte, unless the AM79C971 controller al- ready owns that descriptor. then the AM79C971 con- troller will poll the next tdte. if the transmit descriptor own bit has a 0 value, the AM79C971 controller will resume incrementing the poll time counter. if the trans- mit descriptor own bit has a value of 1, the AM79C971 controller will begin filling the fifo with transmit data and initiate a transmission. this end-of-operation poll coupled with the tdte lookahead operation allows the AM79C971 controller to avoid inserting poll time counts between successive transmit frames. by default, whenever the AM79C971 controller com- pletes a transmit frame (either with or without error) and writes the status information to the current descriptor, then the tint bit of csr0 is set to indicate the comple- tion of a transmission. this causes an interrupt signal if the iena bit of csr0 has been set and the tintm bit of csr3 is cleared. the AM79C971 controller provides two modes to reduce the number of transmit interrupts. the interrupt of a successfully transmitted frame can be suppressed by setting tintokd (csr5, bit 15) to 1. another mode, which is enabled by setting ltinten (csr5, bit 14) to 1, allows suppression of interrupts for successful transmissions for all but the last frame in a sequence. receive descriptor table entry if the AM79C971 controller does not own both the cur- rent and the next receive descriptor table entry (rdte), then the AM79C971 controller will continue to poll according to the polling sequence described above. if the receive descriptor ring length is one, then there is no next descriptor to be polled.
AM79C971 59 if a poll operation has revealed that the current and the next rdte belong to the AM79C971 controller, then additional poll accesses are not necessary. future poll operations will not include rdte accesses as long as the AM79C971 controller retains ownership of the cur- rent and the next rdte. when receive activity is present on the channel, the AM79C971 controller waits for the complete address of the message to arrive. it then decides whether to ac- cept or reject the frame based on all active addressing schemes. if the frame is accepted, the AM79C971 con- troller checks the current receive buffer status register crst (csr41) to determine the ownership of the cur- rent buffer. if ownership is lacking, the AM79C971 controller will immediately perform a final poll of the current rdte. if ownership is still denied, the AM79C971 controller has no buffer in which to store the incoming message. the miss bit will be set in csr0 and the missed frame counter (csr112) will be incremented. another poll of the current rdte will not occur until the frame has fin- ished. if the AM79C971 controller sees that the last poll (ei- ther a normal poll, or the final effort described in the above paragraph) of the current rdte shows valid ownership, it proceeds to a poll of the next rdte. fol- lowing this poll, and regardless of the outcome of this poll, transfers of receive data from the fifo may begin. regardless of ownership of the second receive de- scriptor, the AM79C971 controller will continue to per- form receive data dma transfers to the first buffer. if the frame length exceeds the length of the first buffer, and the AM79C971 controller does not own the second buffer, ownership of the current descriptor will be passed back to the system by writing a 0 to the own bit of rmd1. status will be written indicating buffer (buff = 1) and possibly overflow (oflo = 1) errors. if the frame length exceeds the length of the first (cur- rent) buffer, and the AM79C971 controller does own the second (next) buffer, ownership will be passed back to the system by writing a 0 to the own bit of rmd1 when the first buffer is full. the own bit is the only bit modified in the descriptor. receive data transfers to the second buffer may occur before the AM79C971 con- troller proceeds to look ahead to the ownership of the third buffer. such action will depend upon the state of the fifo when the own bit has been updated in the first descriptor. in any case, lookahead will be per- formed to the third buffer and the information gathered will be stored in the chip, regardless of the state of the ownership bit. this activity continues until the AM79C971 controller recognizes the completion of the frame (the last byte of this receive message has been removed from the fifo). the AM79C971 controller will subsequently up- date the current rdte status with the end of frame (enp) indication set, write the message byte count (mcnt) for the entire frame into rmd2, and overwrite the ? current ? entries in the csrs with the ? next ? entries. receive frame queuing the AM79C971 controller supports the lack of rdtes when external sram (sram size in bcr 25, bits 7-0) is present through the receive frame queuing mech- anism. when the sram size = 0, then the AM79C971 controller reverts back to the pcnet pci ii mode of op- eration. this operation is automatic and does not re- quire any programming by the host. when sram is present, the receive frame queuing mechanism allows a slow protocol to manage more frames without the high frame loss rate normally attributed to fifo based network controllers. the AM79C971 controller will store the incoming frames in the extended fifos until polling takes place; if enabled, it discovers it owns an rdte. the stored frames are not altered in any way until written out into system buffers. when the receive fifo overflows, fur- ther incoming receive frames will be missed during that time. as soon as the network receive fifo is empty, in- coming frames are processed as normal. status on a per frame basis is not kept during the overflow process. statistic counters are maintained and accurate during that time. during the time that the receive frame queuing mech- anism is in operation, the AM79C971 controller relies on the receive poll time counter (csr 48) to control the worst case access to the rdte. the receive poll time counter is programmed through the receive poll- ing interval (csr49) register. the received polling in- terval defaults to approximately 2 ms. the AM79C971 controller will also try to access the rdte during nor- mal descriptor accesses whether they are transmit or receive accesses. the host can force the AM79C971 controller to immediately access the rdte by setting the rdmd (csr 7, bit 13) to 1. its operation is similar to the transmit one. the polling process can be dis- abled by setting the rxdpoll (csr7, bit 12) bit. this will stop the automatic polling process and the host must set the rdmd bit to initiate the receive process into host memory. receive frames are still stored even when the receive polling process is disabled. software interrupt timer the AM79C971 controller is equipped with a software programmable free-running interrupt timer. the timer is constantly running and will generate an interrupt stint (csr 7, bit 11) when stinite (csr 7, bit 10) is set to 1. after generating the interrupt, the software timer will load the value stored in stval and restart. the timer value stval (bcr31, bits 15-0) is interpreted as an unsigned number with a resolution of 12.8 s. for in- stance, a value of 122 ms would be programmed with
60 AM79C971 a value of 9531 (253bh). the default value of stval is ffffh which yields the approximate maximum 838 ms timer duration. a write to stval restarts the timer with the new contents of stval. media access control the media access control (mac) engine incorporates the essential protocol requirements for operation of an ethernet/ieee 802.3-compliant node, and provides the interface between the fifo subsystem and the manchester encoder/decoder (mendec) or the mii. the mac engine has been changed from a single-bit wide engine into a 4-bit (nibble) wide engine. this was done to accommodate the nibble wide mii. this section describes operation of the mac engine when operating in half-duplex mode. when operating in half-duplex mode, the mac engine is fully compliant to section 4 of iso/iec 8802-3 (ansi/ieee standard 1990 second edition) and ansi/ieee 802.3 (1985). when operating in full-duplex mode, the mac engine behavior changes as described in the section full- duplex operation . the mac engine provides programmable enhanced features designed to minimize host supervision, bus utilization, and pre- or post-message processing. these features include the ability to disable retries after a collision, dynamic fcs generation on a frame-by- frame basis, automatic pad field insertion and deletion to enforce minimum frame size attributes, automatic re- transmission without reloading the fifo, and auto- matic deletion of collision fragments. the two primary attributes of the mac engine are:  transmit and receive message data encapsulation ? framing (frame boundary delimitation, frame synchronization) ? addressing (source and destination address handling) ? error detection (physical medium transmission errors)  media access management ? medium allocation (collision avoidance, except in full-duplex operation) ? contention resolution (collision handling, except in full-duplex operation) transmit and receive message data encapsulation the mac engine provides minimum frame size en- forcement for transmit and receive frames. when apad_xmt (csr, bit 11) is set to 1, transmit mes- sages will be padded with sufficient bytes (containing 00h) to ensure that the receiving station will observe an information field (destination address, source address, length/type, data, and fcs) of 64 bytes. when astrp_rcv (csr4, bit 10) is set to 1, the receiver will automatically strip pad bytes from the received mes- sage by observing the value in the length field and by stripping excess bytes if this value is below the mini- mum data size (46 bytes). both features can be inde- pendently over-ridden to allow illegally short (less than 64 bytes of frame data) messages to be transmitted and/or received. the use of this feature reduces bus utilization because the pad bytes are not transferred into or out of main memory. framing the mac engine will autonomously handle the con- struction of the transmit frame. once the transmit fifo has been filled to the predetermined threshold (set by xmtsp in csr80) and access to the channel is cur- rently permitted, the mac engine will commence the 7- byte preamble sequence (10101010b, where first bit transmitted is a 1). the mac engine will subsequently append the start frame delimiter (sfd) byte (10101011b) followed by the serialized data from the transmit fifo. once the data has been completed, the mac engine will append the fcs (most significant bit first) which was computed on the entire data portion of the frame. the data portion of the frame consists of destination address, source address, length/type, and frame data. the user is responsible for the correct or- dering and content in each of these fields in the frame. the mac does not use the content in the length/type field unless apad_xmt (csr4, bit 11) is set and the data portion of the frame is shorter than 60 bytes. the receive section of the mac engine will detect an in- coming preamble sequence and lock to the encoded clock. the internal mendec will decode the serial bit stream and present this to the mac engine. the mac will discard the first 8 bits of information before search- ing for the sfd sequence. once the sfd is detected, all subsequent bits are treated as part of the frame. during mii operation, the mac engine will detect the in- coming preamble sequence when the rx_dv signal is activated by the external phy. the mac will discard the preamble and begin searching for the sfd except in the case of 100base-t4. in that case, the sfd will be the first nibble across the mii interface. once the sfd is detected, all subsequent nibbles are treated as part of the frame. the mac engine will inspect the length field to ensure minimum frame size, strip unnecessary pad characters (if enabled), and pass the remaining bytes through the receive fifo to the host. if pad strip- ping is performed, the mac engine will also strip the re- ceived fcs bytes, although normal fcs computation and checking will occur. note that apart from pad strip- ping, the frame will be passed unmodified to the host. if the length field has a value of 46 or greater, all frame bytes including fcs will be passed unmodified to the receive buffer, regardless of the actual frame length. if the frame terminates or suffers a collision before 64 bytes of information (after sfd) have been received,
AM79C971 61 the mac engine will automatically delete the frame from the receive fifo, without host intervention. the AM79C971 controller has the ability to accept runt packets for diagnostic purposes and proprietary net- works. destination address handling the first 6 bytes of information after sfd will be inter- preted as the destination address field. the mac engine provides facilities for physical (unicast), logical (multi- cast), and broadcast address reception. error detection the mac engine provides several facilities which re- port and recover from errors on the medium. in addi- tion, it protects the network from gross errors due to inability of the host to keep pace with the mac engine activity. on completion of transmission, the following transmit status is available in the appropriate transmit message descriptor (tmd) and control and status register (csr) areas:  the number of transmission retry attempts (1, more, rtry, and trc).  whether the mac engine had to defer (def) due to channel activity.  excessive deferral (exdef), indicating that the transmitter experienced excessive deferral on this transmit frame, where excessive deferral is defined in the iso 8802-3 (ieee/ansi 802.3) standard.  loss of carrier (lcar), indicating that there was an interruption in the ability of the mac engine to mon- itor its own transmission. repeated lcar errors in- dicate a potentially faulty transceiver or network connection.  late collision (lcol) indicates that the transmis- sion suffered a collision after the slot time. this is in- dicative of a badly configured network. late collisions should not occur in a normal operating network.  collision error (cerr) indicates that the trans- ceiver did not respond with an sqe test message within the first 4 s after a transmission was com- pleted. this may be due to a failed transceiver, dis- connected or faulty transceiver drop cable, or because the transceiver does not support this fea- ture (or it is disabled). sqe test is only valid for 10- mbps networks. in addition to the reporting of network errors, the mac engine will also attempt to prevent the creation of any network error due to the inability of the host to service the mac engine. during transmission, if the host fails to keep the transmit fifo filled sufficiently, causing an underflow, the mac engine will guarantee the message is either sent as a runt packet (which will be deleted by the receiving station) or as an invalid fcs (which will also cause the receiver to reject the message). the status of each receive message is available in the appropriate receive message descriptor (rmd) and csr areas. all received frames are passed to the host regardless of any error. the fram error will only be re- ported if an fcs error is detected and there is a non- integral number of bytes in the message. during the reception, the fcs is generated on every nibble (including the dribbling bits) coming from the ca- ble, although the internally saved fcs value is only up- dated on the eighth bit (on each byte boundary). the mac engine will ignore up to 7 additional bits at the end of a message (dribbling bits), which can occur under normal network operating conditions. the framing error is reported to the user as follows:  if the number of dribbling bits are 1 to 7 and there is no fcs error, then there is no framing error (fram = 0).  if the number of dribbling bits are 1 to 7 and there is a fcs error, then there is also a framing error (fram = 1).  if the number of dribbling bits is 0, then there is no framing error. there may or may not be a fcs er- ror.  if the number of dribbling bits is eight, then there is no framing error. fcs error will be reported and the receive message count will indicate one extra byte. note that if the mac engine detects a received frame which has a 00b pattern in the preamble (after the first 8-bits which are ignored), the entire frame will be ig- nored. the mac engine will wait for the network to go inactive before attempting to receive additional frames. media access management the basic requirement for all stations on the network is to provide fairness of channel allocation. the ieee 802.3/ethernet protocols define a media access mech- anism which permits all stations to access the channel with equality. any node can attempt to contend for the channel by waiting for a predetermined time (inter packet gap) after the last activity, before transmitting on the media. the channel is a multidrop communica- tions media (with various topological configurations permitted), which allows a single station to transmit and all other stations to receive. if two nodes simulta- neously contend for the channel, their signals will inter- act causing loss of data, defined as a collision. it is the responsibility of the mac to attempt to avoid and recover from a collision, to guarantee data integrity for the end-to-end transmission to the receiving station.
62 AM79C971 medium allocation the ieee/ansi 802.3 standard (iso/iec 8802-3 1990) requires that the csma/cd mac monitor the medium for traffic by watching for carrier activity. when carrier is detected, the media is considered busy, and the mac should defer to the existing message. the iso 8802-3 (ieee/ansi 802.3) standard also al- lows optionally a two-part deferral after a receive mes- sage. see ansi/ieee std 802.3-1993 edition, 4.2.3.2.1: note: it is possible for the pls carrier sense indication to fail to be asserted during a collision on the media. if the deference process simply times the inter-frame gap based on this indication, it is possible for a short in- terframe gap to be generated, leading to a potential re- ception failure of a subsequent frame. to enhance system robustness, the following optional measures, as specified in 4.2.8, are recommended when inter- frame-spacingpart1 is other than 0: 1. upon completing a transmission, start timing the in- terrupted gap, as soon as transmitting and carrier sense are both false. 2. when timing an inter-frame gap following reception, reset the inter-frame gap timing if carrier sense be- comes true during the first 2/3 of the inter-frame gap timing interval. during the final 1/3 of the interval, the timer shall not be reset to ensure fair access to the medium. an initial period shorter than 2/3 of the interval is permissible including 0. the mac engine implements the optional receive two part deferral algorithm, with an interframespacing- part1 time of 6.0 s. the interframespacingpart 2 in- terval is, therefore, 3.4 s. the AM79C971 controller will perform the two-part deferral algorithm as specified in section 4.2.8 (pro- cess deference). the inter packet gap (ipg) timer will start timing the 9.6 s interframespacing after the re- ceive carrier is deasserted. during the first part deferral (interframespacingpart1 - ifs1), the AM79C971 con- troller will defer any pending transmit frame and re- spond to the receive message. the ipg counter will be cleared to 0 continuously until the carrier deasserts, at which point the ipg counter will resume the 9.6 s count once again. once the ifs1 period of 6.0 s has elapsed, the AM79C971 controller will begin timing the second part deferral (interframespacingpart2 - ifs2) of 3.4 s. once ifs1 has completed and ifs2 has com- menced, the AM79C971 controller will not defer to a re- ceive frame if a transmit frame is pending. this means that the AM79C971 controller will not attempt to receive the receive frame, since it will start to transmit and gen- erate a collision at 9.6 s. the AM79C971 controller will complete the preamble (64-bit) and jam (32-bit) se- quence before ceasing transmission and invoking the random backoff algorithm. the AM79C971 controller allows the user to program the ipg and the first part deferral (interframe- spacingpart1 - ifs1) through csr125. by changing the ipg default value of 96 bit times (60h), the user can adjust the fairness or aggressiveness of the AM79C971 mac on the network. by programming a lower number of bit times than the iso/iec 8802-3 standard requires, the AM79C971 mac engine will be- come more aggressive on the network. this aggressive nature will give rise to the AM79C971 controller possi- bly capturing the network at times by forcing other less aggressive compliant nodes to defer. by programming a larger number of bit times, the AM79C971 mac will become less aggressive on the network and may defer more often than normal. the performance of the AM79C971 controller may decrease as the ipg value is increased from the default value, but the resulting be- havior may improve network performance by reducing collisions. the AM79C971 controller uses the same ipg for back-to-back transmits and receive-to-transmit accesses. changing ifs1 will alter the period for which the AM79C971 mac engine will defer to incoming re- ceive frames. caution: care must be exercised when altering these parameters . adverse network activity could result! this transmit two-part deferral algorithm is imple- mented as an option which can be disabled using the dxmt2pd bit in csr3. the ifs1 programming will have no effect when dxmt2pd is set to 1, but the ipg programming value is still valid. two part deferral after transmission is useful for ensuring that severe ipg shrinkage cannot occur in specific circumstances, causing a transmit message to follow a receive mes- sage so closely as to make them indistinguishable. during the time period immediately after a transmission has been completed, the external transceiver (in the case of a standard aui connected device) should gen- erate the sqe test message (a nominal 10-mhz burst of 5 to 15 bit times duration) on the ci pair (within 0.6 to 1.6 s after the transmission ceases). during the time period in which the sqe test message is ex- pected, the AM79C971 controller will not respond to re- ceive carrier sense.
AM79C971 63 see ansi/ieee std 802.3-1993 edition, 7.2.4.6 (1): ? at the conclusion of the output function, the dte opens a time window during which it expects to see the signal_quality_error signal asserted on the control in circuit. the time window begins when the carrier_status becomes carrier_off. if execution of the output function does not cause carrier_on to occur, no sqe test occurs in the dte. the duration of the window shall be at least 4.0 s but no more than 8.0 s. during the time window the carrier sense function is inhibited. ? the AM79C971 controller implements a carrier sense ? blinding ? period of 4.0 s length starting from the deassertion of carrier sense after transmission. this ef- fectively means that when transmit two part deferral is enabled (dxmt2pd is cleared), the ifs1 time is from 4 s to 6 s after a transmission. however, since ipg shrinkage below 4 s will rarely be encountered on a correctly configured network, and since the fragment size will be larger than the 4 s blinding window, the ipg counter will be reset by a worst case ipg shrink- age/fragment scenario and the AM79C971 controller will defer its transmission. if carrier is detected within the 4.0 to 6.0 s ifs1 period, the AM79C971 controller will not restart the ? blinding ? period, but only restart ifs1. collision handling collision detection is performed and reported to the mac engine by the integrated manchester encoder/ decoder (mendec) and through the mii via the col input pin. both are functionally equivalent in operation. if a collision is detected before the complete preamble/ sfd sequence has been transmitted, the mac engine will complete the preamble/sfd before appending the jam sequence. if a collision is detected after the pream- ble/sfd has been completed, but prior to 512 bits being transmitted, the mac engine will abort the trans- mission and append the jam sequence immediately. the jam sequence is a 32-bit all zeros pattern. the mac engine will attempt to transmit a frame a total of 16 times (initial attempt plus 15 retries) due to nor- mal collisions (those within the slot time). detection of collision will cause the transmission to be rescheduled to a time determined by the random backoff algorithm. if a single retry was required, the 1 bit will be set in the transmit frame status. if more than one retry was re- quired, the more bit will be set. if all 16 attempts ex- perienced collisions, the rtry bit will be set (1 and more will be clear), and the transmit message will be flushed from the fifo. if retries have been disabled by setting the drty bit in csr15, the mac engine will abandon transmission of the frame on detection of the first collision. in this case, only the rtry bit will be set and the transmit message will be flushed from the fifo. if a collision is detected after 512 bit times have been transmitted, the collision is termed a late collision. the mac engine will abort the transmission, append the jam sequence, and set the lcol bit. no retry attempt will be scheduled on detection of a late collision, and the transmit message will be flushed from the fifo. the iso 8802-3 (ieee/ansi 802.3) standard requires use of a ? truncated binary exponential backoff ? algo- rithm, which provides a controlled pseudo random mechanism to enforce the collision backoff interval, before retransmission is attempted. see ansi/ieee std 802.3-1990 edition, 4.2.3.2.5: ? at the end of enforcing a collision (jamming), the csma/cd sublayer delays before attempting to re- transmit the frame. the delay is an integer multiple of slot time. the number of slot times to delay be- fore the nth retransmission attempt is chosen as a uniformly distributed random integer r in the range: 0 r < 2 k where k = min (n,10). ? the AM79C971 controller provides an alternative algo- rithm, which suspends the counting of the slot time/ipg during the time that receive carrier sense is detected. this aids in networks where large numbers of nodes are present, and numerous nodes can be in collision. it effectively accelerates the increase in the backoff time in busy networks and allows nodes not involved in the collision to access the channel, while the colliding nodes await a reduction in channel activity. once chan- nel activity is reduced, the nodes resolving the collision time-out their slot time counters as normal. this modified backoff algorithm is enabled when emba (csr3, bit 3) is set to 1. transmit operation the transmit operation and features of the AM79C971 controller are controlled by programmable options. the AM79C971 controller offers a large transmit fifo to provide frame buffering for increased system latency, automatic retransmission with no fifo reload, and au- tomatic transmit padding. transmit function programming automatic transmit features such as retry on collision, fcs generation/transmission, and pad field insertion can all be programmed to provide flexibility in the (re-) transmission of messages. disable retry on collision (drty) is controlled by the drty bit of the mode register (csr15) in the initializa- tion block. automatic pad field insertion is controlled by the apad_xmt bit in csr4.
64 AM79C971 the disable fcs generation/transmission feature can be programmed as a static feature or dynamically on a frame-by-frame basis. transmit fifo watermark (xmtfw) in csr80 sets the point at which the bmu requests more data from the transmit buffers for the fifo. a minimum of xmtfw empty spaces must be available in the transmit fifo before the bmu will request the system bus in order to transfer transmit frame data into the transmit fifo. transmit start point (xmtsp) in csr80 sets the point when the transmitter actually attempts to transmit a frame onto the media. a minimum of xmtsp bytes must be written to the transmit fifo for the current frame before transmission of the current frame will be- gin. (when automatically padded packets are being sent, it is conceivable that the xmtsp is not reached when all of the data has been transferred to the fifo. in this case, the transmission will begin when all of the frame data has been placed into the transmit fifo.) the default value of xmtsp is 01b, meaning there has to be 64 bytes in the transmit fifo to start a transmis- sion. automatic pad generation transmit frames can be automatically padded to extend them to 64 data bytes (excluding preamble). this al- lows the minimum frame size of 64 bytes (512 bits) for ieee 802.3/ethernet to be guaranteed with no software intervention from the host/controlling process. setting the apad_xmt bit in csr4 enables the automatic padding feature. the pad is placed between the llc data field and fcs field in the ieee 802.3 frame. fcs is always added if the frame is padded, regardless of the state of dxmtfcs (csr15, bit 3) or add_fcs/ no_fcs (tmd1, bit 29). the transmit frame will be padded by bytes with the value of 00h. the default value of apad_xmt is 0, which will disable automatic pad generation after h_reset. it is the responsibility of upper layer software to cor- rectly define the actual length field contained in the message to correspond to the total number of llc data bytes encapsulated in the frame (length field as defined in the iso 8802-3 (ieee/ansi 802.3) stan- dard). the length value contained in the message is not used by the AM79C971 controller to compute the ac- tual number of pad bytes to be inserted. the AM79C971 controller will append pad bytes dependent on the actual number of bits transmitted onto the net- work. once the last data byte of the frame has com- pleted, prior to appending the fcs, the AM79C971 controller will check to ensure that 544 bits have been transmitted. if not, pad bytes are added to extend the frame size to this value, and the fcs is then added. see figure 33. . figure 33. iso 8802-3 (ieee/ansi 802.3) data frame the 544 bit count is derived from the following: minimum frame size (excluding preamble/sfd, including fcs) 64 bytes 512 bits preamble/sfd size 8 bytes 64 bits fcs size 4 bytes 32 bits at the point that fcs is to be appended, the transmitted frame should contain: preamble/sfd + (min frame size - fcs) 64 + (512-32) = 544 bits a minimum length transmit frame from the AM79C971 controller, therefore, will be 576 bits, after the fcs is appended. transmit fcs generation automatic generation and transmission of fcs for a transmit frame depends on the value of dxmtfcs (csr15, bit 3). if dxmtfcs is cleared to 0, the trans- mitter will generate and append the fcs to the trans- mitted frame. if the automatic padding feature is invoked (apad_xmt is set in csr4), the fcs will be appended to frames shorter than 64 bytes by the AM79C971 controller regardless of the state of dxmt- fcs or add_fcs/no_fcs (tmd1, bit 29). note that the calculated fcs is transmitted most significant bit . preamble 1010....1010 sfd 10101011 destination address source address length llc data pad fcs 4 bytes 46 ? 1500 bytes 2 bytes 6 bytes 6 bytes 8 bits 56 bits 20550d-36
AM79C971 65 first. the default value of dxmtfcs is 0 after h_reset. add_fcs (tmd1, bit 29) allows the automatic gener- ation and transmission of fcs on a frame-by-frame basis. dxmtfcs should be set to 1 in this mode. to generate fcs for a frame, add_fcs must be set in the first descriptor of a frame (stp is set to 1). note that bit 29 of tmd1 has the function of add_fcs if swstyle (bcr20, bits 7-0) is programmed to 0, 2, or 3. transmit exception conditions exception conditions for frame transmission fall into two distinct categories: those conditions which are the result of normal network operation, and those which occur due to abnormal network and/or host related events. normal events which may occur and which are handled autonomously by the AM79C971 controller include col- lisions within the slot time with automatic retry. the AM79C971 controller will ensure that collisions which occur within 512 bit times from the start of transmission (including preamble) will be automatically retried with no host intervention. the transmit fifo ensures this by guaranteeing that data contained within the fifo will not be overwritten until at least 64 bytes (512 bits) of preamble plus address, length, and data fields have been transmitted onto the network without encounter- ing a collision. note that if drty (csr15, bit 5) is set to 1 or if the network interface is operating in full-duplex mode, no collision handling is required, and any byte of frame data in the fifo can be overwritten as soon as it is transmitted. if 16 total attempts (initial attempt plus 15 retries) fail, the AM79C971 controller sets the rtry bit in the cur- rent transmit tdte in host memory (tmd2), gives up ownership (resets the own bit to 0) for this frame, and processes the next frame in the transmit ring for trans- mission. abnormal network conditions include:  loss of carrier  late collision  sqe test error (does not apply to 10base-t port or 100-mbps networks.) these conditions should not occur on a correctly con- figured ieee 802.3 network operating in half-duplex mode. if they do, they will be reported. none of these conditions will occur on a network operating in full- duplex mode. (see the section full-duplex operation for more detail.) when an error occurs in the middle of a multi-buffer frame transmission, the error status will be written in the current descriptor. the own bit(s) in the subsequent descriptor(s) will be cleared until the stp (the next frame) is found. loss of carrier when operating in half-duplex mode, a loss of carrier condition will be reported if the AM79C971 controller cannot observe receive activity while it is transmitting on the aui or gpsi port. in aui mode, after the AM79C971 controller initiates a transmission, it will ex- pect to see data ? looped-back ? on the di pair. this will internally generate a ? carrier sense, ? indicating that the integrity of the data path to and from the mau is intact, and that the mau is operating correctly. this ? carrier sense ? signal must be asserted before the last bit is transmitted on do . if ? carrier sense ? does not become active in response to the data transmission, or be- comes inactive before the end of transmission, the loss of carrier (lcar) error bit will be set in tmd2 after the frame has been transmitted. the frame will not be re- tried on the basis of an lcar error. in gpsi mode, lcar will be asserted if rxen does not go active dur- ing the transmission. when the internal 10base-t port is selected, lcar will be reported for every frame transmitted while the network interface is in the link fail state. late collision a late collision will be reported if a collision condition occurs after one slot time (512 bit times) after the trans- mit process was initiated (first bit of preamble com- menced). the AM79C971 controller will abandon the transmit process for that frame, set late collision (lcol) in the associated tmd2, and process the next transmit frame in the ring. frames experiencing a late collision will not be retried. recovery from this condi- tion must be performed by upper layer software. sqe test error during the ipg time following the completion of a trans- mitted message, the aui ci pair is asserted by some transceivers as a self-test. the integral mendec will expect the sqe test message (nominal 10-mhz se- quence) to be returned via the ci pair within a 40-net- work bit-time period after di goes inactive (this does not apply if the 10base-t port is selected). if the ci input is not asserted within the 40 network bit-time pe- riod following the completion of transmission, then the AM79C971 controller will set the cerr bit in csr0. in gpsi mode, clsn must be asserted after the trans- mission or otherwise cerr will be set. cerr will be asserted in 10base-t mode, or in the 10base-t mode through the mii after transmit, if the network port is in link fail state. cerr will never cause inta to be activated. it will, however, set the err bit csr0.
66 AM79C971 receive operation the receive operation and features of the AM79C971 controller are controlled by programmable options. the AM79C971 controller offers a large receive fifo to provide frame buffering for increased system latency, automatic flushing of collision fragments (runt packets), automatic receive pad stripping, and a variety of ad- dress match options. receive function programming automatic pad field stripping is enabled by setting the astrp_rcv bit in csr4. this can provide flexibility in the reception of messages using the ieee 802.3 frame format. all receive frames can be accepted by setting the prom bit in csr15. acceptance of unicast and broad- cast frames can be individually turned off by setting the drcvpa or drcvbc bits in csr15. the physical ad- dress register (csr12 to csr14) stores the address that the AM79C971 controller compares to the destina- tion address of the incoming frame for a unicast ad- dress match. the logical address filter register (csr8 to csr11) serves as a hash filter for multicast address match. the point at which the bmu will start to transfer data from the receive fifo to buffer memory is controlled by the rcvfw bits in csr80. the default established during h_reset is 01b, which sets the watermark flag at 64 bytes filled. for test purposes, the AM79C971 controller can be programmed to accept runt packets by setting rpa in csr124. address matching the AM79C971 controller supports three types of ad- dress matching: unicast, multicast, and broadcast. the normal address matching procedure can be modified by programming three bits in csr15, the mode register (prom, drcvpa, and drcvbc). if the first bit received after the sfd (the least signifi- cant bit of the first byte of the destination address field) is 0, the frame is unicast, which indicates that the frame is meant to be received by a single node. if the first bit received is 1, the frame is multicast, which indicates that the frame is meant to be received by a group of nodes. if the destination address field contains all 1s, the frame is broadcast, which is a special type of multi- cast. frames with the broadcast address in the destina- tion address field are meant to be received by all nodes on the local area network. when a unicast frame arrives at the AM79C971 con- troller, the controller will accept the frame if the destina- tion address field of the incoming frame exactly matches the 6-byte station address stored in the phys- ical address registers (padr, csr12 to csr14). the byte ordering is such that the first byte received from the network (after the sfd) must match the least signif- icant byte of csr12 (padr[7:0]), and the sixth byte re- ceived must match the most significant byte of csr14 (padr[47:40]). when drcvpa (csr15, bit 13) is set to 1, the AM79C971 controller will not accept unicast frames. if the incoming frame is multicast, the AM79C971 con- troller performs a calculation on the contents of the destination address field to determine whether or not to accept the frame. this calculation is explained in the section that describes the logical address filter (ladrf). when all bits of the ladrf registers are 0, no multicast frames are accepted, except for broadcast frames. although broadcast frames are classified as special multicast frames, they are treated differently by the AM79C971 controller hardware. broadcast frames are always accepted, except when drcvbc (csr15, bit 14) is set. none of the address filtering described above applies when the AM79C971 controller is operating in the pro- miscuous mode. in the promiscuous mode, all properly formed packets are received, regardless of the con- tents of their destination address fields. the promiscu- ous mode overrides the disable receive broadcast bit (drcvbc bit l4 in the mode register) and the disable receive physical address bit (drcvpa, csr15, bit 13). the AM79C971 controller operates in promiscuous mode when prom (csr15, bit 15) is set. in addition, the AM79C971 controller provides the ex- ternal address detection interface (eadi) to allow ex- ternal address filtering. see the section external address detection interface for further detail. the receive descriptor entry rmd1 contains three bits that indicate which method of address matching caused the AM79C971 controller to accept the frame. note that these indicator bits are only available when the AM79C971 controller is programmed to use 32-bit structures for the descriptor entries (bcr20, bit 7-0, swstyle is set to 2 or 3). pam (rmd1, bit 22) is set by the AM79C971 controller when it accepted the received frame due to a match of the frame ? s destination address with the content of the physical address register. lafm (rmd1, bit 21) is set by the AM79C971 control- ler when it accepted the received frame based on the value in the logical address filter register. bam (rmd1, bit 20) is set by the AM79C971 controller when it accepted the received frame because the frame ? s destination address is of the type ? broadcast ? .
AM79C971 67 if drcvbc (csr15, bit 14) is cleared to 0, only bam, but not lafm will be set when a broadcast frame is re- ceived, even if the logical address filter is pro- grammed in such a way that a broadcast frame would pass the hash filter. if drcvbc is set to 1 and the log- ical address filter is programmed in such a way that a broadcast frame would pass the hash filter, lafm will be set on the reception of a broadcast frame. when the AM79C971 controller operates in promiscu- ous mode and none of the three match bits is set, it is an indication that the AM79C971 controller only ac- cepted the frame because it was in promiscuous mode. when the AM79C971 controller is not programmed to be in promiscuous mode, but the eadi interface is en- abled, then when none of the three match bits is set, it is an indication that the AM79C971 controller only ac- cepted the frame because it was not rejected by driving the ear pin low within 64 bytes after sfd. see table 6 for receive address matches. automatic pad stripping during reception of an ieee 802.3 frame, the pad field can be stripped automatically. setting astrp_rcv (csr4, bit 0) to 1 enables the automatic pad stripping feature. the pad field will be stripped before the frame is passed to the fifo, thus preserving fifo space for additional frames. the fcs field will also be stripped, since it is computed at the transmitting station based on the data and pad field characters, and will be invalid for a receive frame that has had the pad characters stripped. table 6. receive address match the number of bytes to be stripped is calculated from the embedded length field (as defined in the iso 8802- 3 (ieee/ansi 802.3) definition) contained in the frame. the length indicates the actual number of llc data bytes contained in the message. any received frame which contains a length field less than 46 bytes will have the pad field stripped (if astrp_rcv is set). receive frames which have a length field of 46 bytes or greater will be passed to the host unmodified. figure 34 shows the byte/bit ordering of the received length field for an ieee 802.3-compatible frame format. figure 34. ieee 802.3 frame and length field transmission order pam laf m bam drc vbc comment 0 0 0 x frame accepted due to prom = 1 or no eadi reject 1 0 0 x physical address match 0 1 0 0 logical address filter match; frame is not of type broadcast 0 1 0 1 logical address filter match; frame can be of type broadcast 0 0 1 0 broadcast frame preamble 1010....1010 sfd 10101011 destination address source address length llc data pad fcs 4 bytes 46 ? 1500 bytes 2 bytes 6 bytes 6 bytes 8 bits 56 bits start of frame at time = 0 increasing time bit 0 bit 7 bit 0 bit 7 most significant byte least significant byte 1 ? 1500 bytes 45 ? 0 bytes 20550d-37
68 AM79C971 since any valid ethernet type field value will always be greater than a normal ieee 802.3 length field ( 46), the AM79C971 controller will not attempt to strip valid ethernet frames. note that for some network protocols, the value passed in the ethernet type and/or ieee 802.3 length field is not compliant with either standard and may cause problems if pad stripping is enabled . receive fcs checking reception and checking of the received fcs is per- formed automatically by the AM79C971 controller. note that if the automatic pad stripping feature is en- abled, the fcs for padded frames will be verified against the value computed for the incoming bit stream including pad characters, but the fcs value for a pad- ded frame will not be passed to the host. if an fcs error is detected in any frame, the error will be reported in the crc bit in rmd1. receive exception conditions exception conditions for frame reception fall into two distinct categories, i.e., those conditions which are the result of normal network operation, and those which occur due to abnormal network and/or host related events. normal events which may occur and which are handled autonomously by the AM79C971 controller are basi- cally collisions within the slot time and automatic runt packet rejection. the AM79C971 controller will ensure that collisions that occur within 512 bit times from the start of reception (excluding preamble) will be automat- ically deleted from the receive fifo with no host inter- vention. the receive fifo will delete any frame that is composed of fewer than 64 bytes provided that the runt packet accept (rpa bit in csr124) feature has not been enabled and the network interface is operat- ing in half-duplex mode. this criterion will be met re- gardless of whether the receive frame was the first (or only) frame in the fifo or if the receive frame was queued behind a previously received message. abnormal network conditions include:  fcs errors  late collision host related receive exception conditions include miss, buff, and oflo. these are described in the section, buffer management unit . loopback operation loopback is a mode of operation intended for system diagnostics. in this mode, the transmitter and receiver are both operating at the same time so that the control- ler receives its own transmissions. the controller pro- vides two basic types of loopback. in internal loopback mode, the transmitted data is looped back to the re- ceiver inside the controller without actually transmitting any data to the external network. the receiver will move the received data to the next receive buffer, where it can be examined by software. alternatively, in external loopback mode, data can be transmitted to and received from the external network. loopback operation is enabled by setting loop (csr15, bit 2) to 1. the mode of loopback operation is dependent on the active network port and on the set- tings of the control bits intl (csr15, bit 6), mendecl (csr15, bit 10), and tmauloop (bcr2, bit 14). the setting of the full-duplex control bits in bcr9 has no ef- fect on the loopback operation. gpsi loopback modes when gpsi is the active network port, there are only two modes of loopback operation: internal and external loopback. the settings of mendecl and tmauloop have no effect for this port. when intl is set to 1, internal loopback is selected. data coming out of the transmit fifo is fed directly to the receive fifo. all gpsi outputs are inactive; inputs are ignored. external loopback operation is selected by setting intl to 0. data is transmitted to the network and is expected to be looped back to the gpsi receive pins outside the chip. collision detection is active in this mode. aui loopback modes when aui is the active network port, there are three modes of loopback operation: internal with and without mendec and external loopback. the setting of tmau- loop has no effect for this port. when intl and mendecl are set to 1, internal loop- back without mendec is selected. data coming out of the transmit fifo is fed directly to the receive fifo. the aui transmitter is disabled and signals on the re- ceive and collision inputs are ignored. when intl is set to 1 and mendecl is cleared to 0, internal loopback including the mendec is selected. data is routed from the transmit fifo through the mendec back to the receive fifo. no data is trans- mitted to the network. all signals on the receive and collision inputs are ignored. external loopback operation is selected by setting intl to 0. the programming of mendecl has no effect in this mode. the aui transmitter is enabled and data is transmitted to the network. the AM79C971 controller expects data to be looped back to the receive inputs outside the chip. collision detection is active in this mode.
AM79C971 69 t-mau loopback modes when t-mau is the active network port there are four modes of loopback operation: internal loopback with and without mendec and two external loopback modes. when intl and mendecl are set to 1, internal loop- back without mendec is selected. data coming out of the transmit fifo is fed directly to the receive fifo. the t-mau does not transmit any data to the network, but it continues to send link pulses. all signals on the receive inputs are ignored. lcar (tmd2, bit 27) will al- ways read zero, regardless of the link state. the pro- gramming of tmauloop has no effect. when intl is set to 1 and mendecl is cleared to 0, internal loopback including the mendec is selected. data is routed from the transmit fifo through the mendec back to the receive fifo. the t-mau does not transmit any data to the network, but it continues to send link pulses. all signals on the receive inputs are ignored. lcar (tmd2, bit 27) will always read zero, re- gardless of the link state. the programming of tmau- loop has no effect. external loopback operation works slightly different when the t-mau is the active network port. in a 10base-t network, the hub does not generate a re- ceive carrier back to the AM79C971 controller while the chip is transmitting. the t-mau provides this function internally. a true external loopback covering all the components on the printed circuit board can only be performed by using a special connector (with pin 1 jum- pered to pin 3 and pin 2 jumpered to pin 6) that con- nects the transmit pins of the rj-45 jack to its receive pins. when intl is cleared to 0 and tmauloop is set to 1, data is transmitted to the network and is expected to be routed back to the chip. collision detection is dis- abled in this mode. the link state machine is forced into the link pass state. lcar will always read zero. the programming of mendecl has no effect in this mode. the AM79C971 AM79C971 controller provides a spe- cial external loopback mode that allows the device to be connected to a live 10base-t network. the virtual external loopback mode is invoked by setting intl and tmauloop to 0. in this mode, data coming out of the transmit fifo is fed directly into the receive fifo. ad- ditionally, all transmit data is output to the network. the link state machine is active as is the collision detection logic. the programming of mendecl has no effect in this mode. media independent interface loopback features loopback through the mii can be handled in two ways. the AM79C971 controller supports an internal mii loopback and an external mii loopback. the mii loop- back is completely separate from other network port loopback and requires that the other loopback modes be disengaged while the mii loopback is running. fur- ther, the mii loopback requires that the mii port be manually configured through software using asel (bcr 2, bit 1) and portsel (csr 15, bits 8-7). the external loopback through the mii requires a two- step operation. the external phy must be placed into a loopback mode by writing to the mii control register (bcr33, bcr34). then the AM79C971 controller must be placed into an external loopback mode. all other loopback modes have no meaning during mii opera- tion. the internal loopback through the mii is controlled by miiilp (bcr32, bit 1). when set to 1, this bit will cause the internal portion of the mii data port to loopback on itself. the mii management port (mdc, mdio) is unaf- fected by the miilp bit. the internal mii interface is mapped in the following way:  the txd[3:0] nibble data path is looped back onto the rxd[3:0] nibble data path;  tx_clk is looped back as rx_clk;  tx_en is looped back as rx_dv.  crs is correctly or ? d with tx_en and rx_dv and always encompasses the transmit frame.  tx_er is not driven by the AM79C971 and there- fore not looped back. during the internal loopback, the txd, tx_clk, and tx_en pins will toggle appropriately with the correct data. miscellaneous loopback features all transmit and receive function programming, such as automatic transmit padding and receive pad stripping, operates identically in loopback as in normal operation. loopback mode can be performed with any frame size except in the mii loopback mode. runt packet accept is internally enabled (rpa bit in csr124 is not af- fected) when any loopback mode is invoked. this is to be backwards compatible to the c-lance (am79c90) software. since the AM79C971 controller has two fcs genera- tors, there are no more restrictions on fcs generation or checking, or on testing multicast address detection as they exist in the half-duplex pcnet family devices and in the c-lance. on receive, the AM79C971 con- troller now provides true fcs status. the descriptor for a frame with an fcs error will have the fcs bit (rmd1, bit 27) set to 1. the fcs generator on the transmit side can still be disabled by setting dxmtfcs (csr15, bit 3) to 1. in internal loopback operation, the AM79C971 control- ler provides a special mode to test the collision logic. when fcoll (csr15, bit 4) is set to 1, a collision is forced during every transmission attempt. this will re- sult in a retry error.
70 AM79C971 manchester encoder/decoder the integrated manchester encoder/decoder (men- dec) provides the pls (physical layer signaling) functions required for a fully compliant iso 8802-3 (ieee/ansi 802.3) station. the mendec provides the encoding function for data to be transmitted on the net- work using the high accuracy on-board oscillator, driven by either the crystal oscillator or an external cmos-level compatible clock. the mendec also pro- vides the decoding function from data received from the network. the mendec contains a power on reset (por) circuit, which ensures that all analog portions of the AM79C971 controller are forced into their correct state during power up, and prevents erroneous data transmission and/or reception during this time. external crystal characteristics when using a crystal to drive the oscillator, the follow- ing crystal specification (table 7) may be used to en- sure less than 0.5 ns jitter at do . note: * requires trimming specification; not trim is 50 ppm total. external clock drive characteristics when driving the oscillator from a cmos-level external clock source, xtal2 must be left floating (uncon- nected). an external clock having the following charac- teristics must be used to ensure less than 0.5 ns jitter at do . see table 8. mendec transmit path the transmit section encodes separate clock and nrz data input signals into a standard manchester encoded serial bit stream. the transmit outputs (do ) are de- signed to operate into terminated transmission lines. when operating into a 78- ? terminated transmission line, the transmit signaling meets the required output levels and skew for cheapernet, ethernet, and ieee- 802.3. transmitter timing and operation a 20-mhz fundamental mode crystal oscillator pro- vides the basic timing reference for the mendec por- tion of the AM79C971 controller. the crystal frequency is divided by two to create the internal transmit clock reference. both the 10-mhz and 20-mhz clocks are fed into the manchester encoder. the internal transmit clock is used by the mendec to synchronize the inter- nal transmit data (itxdat) and internal transmit en- able (itxen) from the controller. the internal transmit clock is also used as a stable bit rate clock by the re- ceive section of the mendec and controller. the oscillator requires an external 0.01% timing refer- ence. if an external crystal is used, the accuracy re- quirements are tighter because allowance for the on- board parasitics must be made to deliver a final accu- racy of 0.01%. transmission is enabled by the controller. as long as the itxen request remains active, the serial output of the controller will be manchester encoded and appear at do . when the internal request is dropped by the controller, the differential transmit outputs go to one of two idle states, dependent on tsel in the mode reg- ister (csr15, bit 9). table 9. tsel effect table 7. crystal characteristics parameter min nom max units 1. parallel resonant frequency 20 mhz 2. resonant frequency error -50 +50 ppm 3. change in resonant frequency with respect to temperature (0 - 70 c) * -40 +40 ppm 4. crystal load capacitance 20 50 pf 5. motional crystal capacitance (c1) 0.022 pf 6. internal equivalent series resistance 35 ohm 7. shunt capacitance 7 pf table 8. external clock source characteristics clock frequency: 20 mhz 0.01% rise/fall time (tr/tf): <= 6 ns from 0.5 v to vdd -0.5 v xtal1 high/low time (thigh/tlow): 20 ns min. xtal1 falling edge to falling edge jitter: < 0.2 ns at 2.5 v input (vdd/2) tsel low: the idle state of do yields 0 differential to operate transformer-coupled loads. tsel high: in this idle state, do+ is positive with respect to do- (logical high).
AM79C971 71 receiver path the principal functions of the receiver are to signal the AM79C971 controller that there is information on the receive pair and to separate the incoming manchester encoded data stream into clock and nrz data. the receiver section consists of two parallel paths (see figure 35). the receive data path is a zero threshold, wide bandwidth line receiver. the carrier path is an off- set threshold, bandpass detecting line receiver. both receivers share common bias networks to allow opera- tion over a wide input common mode range. input signal conditioning transient noise pulses at the input data stream are re- jected by the noise rejection filter. pulse width rejec- tion is proportional to transmit data rate. the carrier detection circuitry detects the presence of an incoming data frame, by discerning and rejecting noise from expected manchester data, and controls the stop and start of the phase-lock loop during clock ac- quisition. clock acquisition requires a valid manchester bit pattern of 1010b to lock onto the incoming message. when input amplitude and pulse width conditions are met at di , the internal enable signal from the men- dec to controller (irxen) is asserted and a clock ac- quisition cycle is initiated. clock acquisition when there is no activity at di (receiver is idle), the re- ceive oscillator is phase locked to the internal transmit clock. the first negative clock transition (bit cell center of first valid manchester 0) after irxen is asserted in- terrupts the receive oscillator. the oscillator is then re- started at the second manchester 0 (bit time 4) and is phase locked to it. as a result, the mendec acquires the clock from the incoming manchester bit pattern in 4 bit times with a 1010b manchester bit pattern. irxclk and irxdat are enabled 1/4 bit time after clock acquisition in bit cell 5. irxdat is at a high state when the receiver is idle (no irxclk). irxdat, how- ever, is undefined when clock is acquired and may re- main high or change to low state whenever irxclk is enabled. at 1/4 bit time into bit cell 5, the controller portion of the AM79C971 controller sees the first irx- clk transition. this also strobes in the incoming fifth bit to the mendec as manchester 1. irxdat may make a transition after the irxclk rising edge in bit cell 5, but its state is still undefined. the manchester 1 at bit 5 is clocked to irxdat output at 1/4 bit time in bit cell 6. pll tracking after clock acquisition, the phase-locked clock is com- pared to the incoming transition at the bit cell center (bcc) and the resulting phase error is applied to a cor- rection circuit. this circuit ensures that the phase- locked clock remains locked on the received signal. in- dividual bit cell phase corrections of the voltage con- trolled oscillator (vco) are limited to 10% of the phase difference between bcc and phase-locked clock. hence, input data jitter is reduced in irxclk by 10 to 1. carrier tracking and end of message the carrier detection circuit monitors the di inputs after irxen is asserted for an end of message. irxen deasserts 1 to 2 bit times after the last positive transi- tion on the incoming message. this initiates the end of reception cycle. figure 35. receiver block diagram noise reject filter data receiver carrier detect circuit manchester decoder irxdat* irxclk* irxen* di *internal signal 20550d-38
72 AM79C971 the time delay from the last rising edge of the message to irxen deassert allows the last bit to be strobed by irxclk and transferred to the controller section, but prevents any extra bit(s) at the end of message. data decoding the data receiver is a comparator with clocked output to minimize noise sensitivity to the di inputs. input error is less than 35 mv to minimize sensitivity to input rise and fall time. irxclk strobes the data receiver output at 1/4 bit time to determine the value of the manchester bit, and clocks the data out on irxdat on the following irxclk. the data receiver also gener- ates the signal used for phase detector comparison to the internal mendec vco. jitter tolerance definition the mendec utilizes a clock capture circuit to align its internal data strobe with an incoming bit stream. the clock acquisition circuitry requires four valid bits with the values 1010b. the clock is phase-locked to the neg- ative transition at the bit cell center of the second zero in the pattern. since data is strobed at 1/4 bit time, manchester tran- sitions which shift from their nominal placement through 1/4 bit time will result in improperly decoded data. with this as the criterion for an error, a definition of jitter handling is: the peak deviation approaching or crossing 1/4 bit cell position from nominal input transition, for which the mendec section will properly decode data. attachment unit interface the attachment unit interface (aui) is the pls (physi- cal layer signaling) to pma (physical medium attach- ment) interface which effectively connects the dte to a mau. the differential interface provided by the AM79C971 controller is fully compliant to section 7 of iso 8802-3 (ansi/ieee 802.3) standard. after the AM79C971 controller initiates a transmission it will expect to see data ? looped-back ? on the di pair (when the aui port is selected). this will internally gen- erate a ? carrier sense, ? indicating that the integrity of the data path to and from the mau is intact, and that the mau is operating correctly. this ? carrier sense ? signal must be asserted before end of transmission. if ? carrier sense ? does not become active in response to the data transmission, or becomes inactive before the end of transmission, the loss of carrier (lcar) error bit will be set in the transmit descriptor ring (tmd2, bit 27) after the frame has been transmitted. differential input termination the differential input for the manchester data (di ) is externally terminated by two 40.2- ? resistors and one optional common-mode bypass capacitor, as shown in figure 36. the differential input impedance, z idf , and the common-mode input impedance, z icm , are speci- fied so that the ethernet specification for cable termina- tion impedance is met using standard 1% resistor terminators. if sip devices are used, 39 ohms is also a suitable value. the ci differential inputs are termi- nated in exactly the same way as the di pair. figure 36. aui differential input termination collision detection a mau detects the collision condition on the network and generates a 10-mhz differential signal at the ci inputs. this collision signal passes through an input stage which detects signal levels and pulse duration. when the signal is detected by the mendec, it sets the iclsn line high. the condition continues for approxi- mately 1.5 bit times after the last low-to-high transi- tion on ci . twisted-pair transceiver this section describes operation of the twisted-pair transceiver (t-mau) when operating in half-duplex mode. when in half-duplex mode, the t-mau imple- ments the mau functions for the twisted pair medium as specified by the supplement to the ieee 802.3 stan- dard (type 10base-t). when operating in full-duplex mode, the mac engine behavior changes as described in the section full-duplex operation . the t-mau provides twisted pair driver and receiver cir- cuits, including on-board transmit digital predistortion and receiver squelch, and a number of additional fea- tures including link status indication, automatic twisted pair receive polarity detection/correction and indication, receive carrier sense, transmit active, and collision present indication. twisted pair transmit function the differential driver circuitry in the txd and txp pins provides the necessary electrical driving capability and the pre-distortion control for transmitting signals over maximum length twisted pair cable, as specified by the 10base-t supplement to the iso 8802-3 (ieee/ AM79C971 di+ di- 40.2 ? 40.2 ? 0.01 f to 0.1 f aui isolation transformer 20550d-39
AM79C971 73 ansi 802.3) standard. the transmit function for data output meets the propagation delays and jitter speci- fied by the standard. twisted pair receive function the receiver complies with the receiver specifications of the iso 8802-3 (ieee/ansi 802.3) 10base-t stan- dard, including noise immunity and received signal re- jection criteria ( smart squelch ). signals meeting these criteria appearing at the rxd differential input pair are routed to the mendec. the receiver function meets the propagation delays and jitter requirements speci- fied by the standard. the receiver squelch level drops to half its threshold value after unsquelch to allow re- ception of minimum amplitude signals and to offset car- rier fade in the event of worst case signal attenuation and crosstalk noise conditions. note that the 10base-t standard defines the receive input amplitude at the external media dependent inter- face (mdi). filter and transformer loss are not speci- fied. the t-mau receiver squelch levels are defined to account for a 1-db insertion loss at 10 mhz, which is typical for the type of receive filters/transformers em- ployed. normal 10base-t compatible receive thresholds are employed when the lrt bit (csr15, bit 9) is cleared to 0. when the lrt bit is set to 1, the low receive threshold option is invoked, and the sensitivity of the t- mau receiver is increased. this allows longer line lengths to be employed, exceeding the 100-meter (m) target distance of normal 10base-t (assuming typical 24 awg cable). the increased receiver sensitivity compensates for the increased signal attenuation caused by the additional cable distance. however, making the receiver more sensitive means that it is also more susceptible to extraneous noise, pri- marily caused by coupling from co-resident services (crosstalk). for this reason, it is recommended that when using the low receive threshold option that the service should be installed on 4-pair cable only. multi- pair cables within the same outer sheath have lower crosstalk attenuation and may allow noise emitted from adjacent pairs to couple into the receive pair, being of sufficient amplitude to falsely unsquelch the t-mau. link test function the link test function is implemented as specified by the 10base-t standard. during periods of transmit pair inactivity, link beat pulses will be periodically sent over the twisted pair medium to constantly monitor me- dium integrity. when the link test function is enabled (dlnktst bit in csr15 is cleared), the absence of link beat pulses and receive data on the rxd pair will cause the t-mau to go into a link fail state. in the link fail state, data transmission, data reception, data loopback and the collision detection functions are disabled and remain disabled until valid data or more than five consecutive link pulses appear on the rxd pair. during link fail, the link status signal is inactive. when the link is iden- tified as functional, the link status signal is asserted. the led0 pin displays the link status signal by default. the t-mau will power up in the link fail state and the normal algorithm will apply to allow it to enter the link pass state. if t-mau is selected using the portsel bits in csr15, the t-mau will be forced into the link fail state when moving from aui to t-mau selection. transmission attempts during link fail state will pro- duce no network activity and will produce lcar and cerr error indications. in order to interoperate with systems which do not im- plement link test, this function can be disabled by set- ting the dlnktst bit in csr15. with link test disabled, the data driver, receiver and loopback functions, as well as collision detection, remain enabled irrespective of the presence or absence of data or link pulses on the rxd pair. link test pulses continue to be sent regard- less of the state of the dlnktst bit. polarity detection and reversal the t-mau receive function includes the ability to invert the polarity of the signals appearing at the rxd pair if the polarity of the received signal is reversed (such as in the case of a wiring error). this feature allows data frames received from a reverse wired rxd input pair to be corrected in the t-mau prior to transfer to the mendec. the polarity detection function is activated following h_reset or link fail, and it will reverse the receive polarity based on both the polarity of any previ- ous link beat pulses and the polarity of subsequent frames with a valid end transmit delimiter (etd). when in the link fail state, the t-mau will recognize link beat pulses of either positive or negative polarity. exit from the link fail state is made due to the recep- tion of 5 to 6 consecutive link beat pulses of identical polarity. on entry to the link pass state, the polarity of the last five link beat pulses is used to determine the initial receive polarity configuration, and the receiver is reconfigured to subsequently recognize only link beat pulses of the previously recognized polarity. positive link beat pulses are defined as received signal with a positive amplitude greater than 585 mv (lrt = 1) with a pulse width of 60 ns to 200 ns. this positive excursion may be followed by a negative excursion. this definition is consistent with the expected received signal at a correctly wired receiver, when a link beat pulse, which fits the template of figure 14-12 of the 10base-t standard, is generated at a transmitter and passed through 100 m of twisted pair cable. negative link beat pulses are defined as received sig- nals with a negative amplitude greater than 585 mv
74 AM79C971 with a pulse width of 60 to 200 ns. this negative excur- sion may be followed by a positive excursion. this def- inition is consistent with the expected received signal at a reverse wired receiver, when a link beat pulse, which fits the template of figure 14-12 in the 10base-t stan- dard, is generated at a transmitter and passed through 100 m of twisted pair cable. the polarity detection/correction algorithm will remain armed until two consecutive frames with valid etd of identical polarity are detected. when armed , the re- ceiver is capable of changing the initial or previous po- larity configuration based on the etd polarity. on receipt of the first frame with valid etd following h_reset or link fail, the t-mau will utilize the in- ferred polarity information to configure its rxd input, regardless of its previous state. on receipt of a second frame with a valid etd with correct polarity, the detec- tion/ correction algorithm will lock-in the received po- larity. if the second (or subsequent) frame is not detected as confirming the previous polarity decision, the most recently detected etd polarity will be used as the default. note that frames with invalid etd have no effect on updating the previous polarity decision. once two consecutive frames with valid etd have been re- ceived, the t-mau will disable the detection/correction algorithm until either a link fail condition occurs or h_reset is activated. during polarity reversal, an internal pol signal will be active. during normal polarity conditions, this internal pol signal is inactive. the state of this signal can be read by software and/or displayed by led when en- abled by the led control bits in the bus configuration registers (bcr4 to bcr7). twisted pair interface status when the t-mau is in link pass state, three signals (xmt, rcv and col) indicate whether the t-mau is transmitting, receiving, or in a collision state with both functions active simultaneously. these signals are in- ternal signals that can be programmed to appear on any of the led output pins. programming is done by writing to bcr4 to bcr7. in the link fail state, xmt, rcv, and col are inactive. collision detection function activity on both twisted pair signals (rxd and txd ) at the same time constitutes a collision, thereby, caus- ing the internal col signal to be activated. col will re- main active until one of the two colliding signals changes from active to idle. however, transmission at- tempt in link fail state results in lcar and cerr in- dication. col stays active for 2 bit times at the end of a collision. signal quality error test function the signal quality error (sqe) test function (also called heartbeat) is disabled when the 10base-t port is selected. jabber function the jabber function prevents the twisted pair transmit function of the t-mau txd from being active for an ex- cessive period of time (20 ms to 150 ms). this prevents any one node from disrupting the network due to a stuck-on or faulty transmitter. if this maximum transmit time is exceeded, the t-mau transmitter circuitry is dis- abled, the jab bit is set (csr4, bit 1) and the col sig- nal is asserted. once the transmit data stream is removed, the t-mau waits an unjab time of 250 ms to 750 ms before it deasserts col and re-enables the transmit circuitry. power down the t-mau circuitry can be made to go into a power savings mode. the t-mau will go into the power down mode when h_reset is active, when coma mode is active, or when the t-mau is not selected. refer to the power savings modes section for descriptions of the various power down modes. any of the three conditions listed above resets the in- ternal logic of the t-mau and places the device into power down mode. in this mode, the twisted pair driver pins (txd , txp ) are driven low, and the internal t-mau status signals (led0 , rcvpol, xmt, rcv and col) signals are inactive. after coming out of the power down mode, the t-mau will remain in the reset state for an additional 10 s. im- mediately after the reset condition is removed, the t- mau will be forced into the link fail state. the t-mau will move to the link pass state only after 5 to 6 link beat pulses and/or a single received message is de- tected on the rd pair. in snooze mode, the t-mau receive circuitry will remain enabled even while the sleep pin is driven low. 10base-t interface connection figure 37 shows the proper 10base-t network inter- face design. refer to the pcnet family board design and layout recommendations application note (pid #19595a) for more design details. also, refer to appen- dix a, AM79C971 compatible media interface modules for a list of compatible 10base-t filter/transformer modules. note: the recommended resistor values and filter and transformer modules are the same as those used by the imr+ (am79c981).
AM79C971 75 general purpose serial interface the general purpose serial interface (gpsi) provides a direct interface to the mac section of the AM79C971 controller. all signals are digital and data is non-en- coded. the gpsi allows use of an external manchester encoder/decoder such as the am7992b serial inter- face adapter (sia). in addition, it allows the AM79C971 controller to be used as a mac sublayer engine in re- peater designs based on the imr+ device (am79c981). gpsi mode is invoked by selecting the interface through the portsel bits of the mode register (csr15, bits 8-7). the gpsi interface uses some of the same pins as the interface to the mii. simultaneous use of both functions is not possible. after an h_reset, all mii pins are internally config- ured to function as the mii interface. when the gpsi in- terface is selected by setting portsel (csr15, bits 8-7) to 10b, the AM79C971 controller will terminate all further accesses to the mii. gpsi signal functions are described in the pin descrip- tion section under the gpsi subheading. note that the xtal1 input must always be driven with a clock source, even if gpsi mode is to be used. it is not necessary for the xtal1 clock to meet the normal fre- quency and stability requirements in this case. any fre- quency between 8 mhz and 20 mhz is acceptable. however, voltage drive requirements do not change. when gpsi mode is used, xtal1 must be driven for several reasons: the default h_reset configuration for the AM79C971 controller is aui port selected. until gpsi mode is se- lected, the xtal1 clock is needed for some internal op- erations (namely, reset). the xtal1 clock drives the eeprom read operation, regardless of the network mode selected. the xtal1 clock determines the length of the internal s_reset caused by the read of the reset register, re- gardless of the network mode. note: if a clock slower than 20 mhz is provided at the xtal1 input, the time needed for eeprom read and the internal s_reset will increase. figure 37. 10base-t interface connection full-duplex operation the AM79C971 controller supports full-duplex opera- tion on all four network interfaces: aui, gpsi, 10base- t, and mii. full-duplex operation allows simultaneous transmit and receive activity on the txd and rxd pairs of the 10base-t port, the do and di pairs of the aui port, txdat and rxdat pins of the gpsi port, and the txd[3:0] and rxd[3:0] pins of the mii port. full-duplex operation is enabled by the fden and auifd bits located in bcr9 for all ports. full-duplex operation is enabled through auto-negotiation when danas (bcr 32, bit 7) is not enabled on the mii port or when auto-negotiation is running on the internal phy. when operating in full-duplex mode, the following changes to the device operation are made: bus interface/buffer management unit changes:  the first 64 bytes of every transmit frame are not preserved in the transmit fifo during transmission of the first 512 bits as described in the transmit ex- ception conditions section. instead, when full-du- plex mode is active and a frame is being xmt filter rcv filter rj45 connector filter & transformer module txp+ txd- txp- txd+ rxd+ rxd- AM79C971 td+ td- rd+ rd- 1 2 3 6 61.9 ? 422 ? 61.9 ? 422 ? 100 ? 1.21 k ? 1:1 1:1 20550d-40
76 AM79C971 transmitted, the xmtfw bits (csr80, bits 9-8) al- ways govern when transmit dma is requested.  successful reception of the first 64 bytes of every receive frame is not a requirement for receive dma to begin as described in the receive exception conditions section. instead, receive dma will be re- quested as soon as either the rcvfw threshold (csr80, bits 12-13) is reached or a complete valid receive frame is detected, regardless of length. this receive fifo operation is identical to when the rpa bit (csr124, bit 3) is set during half-duplex mode operation. the mac engine changes for full-duplex operation are as follows:  changes to the transmit deferral mechanism: ? transmission is not deferred while receive is active. ? the ipg counter which governs transmit deferral during the ipg between back-to-back transmits is started when transmit activity for the first packet ends, instead of when transmit and car- rier activity ends.  when the aui or mii port is active, loss of carrier (lcar) reporting is disabled (lcar is still reported when the 10base-t port is active if a packet is transmitted while in link fail state).  the 4.0 s carrier sense blinding period after a transmission during which the sqe test normally occurs is disabled.  when the aui port is active, the sqe test error re- porting (cerr) is disabled (cerr is still reported when the 10base-t port is active if a packet is transmitted while in link fail state).  the collision indication input to the mac engine is ignored. the t-mau changes for full-duplex operation are as fol- lows:  the transmit to receive loopback path in the t-mau is disabled.  the collision detect circuit is disabled.  the sqe test function is disabled. the mii changes for full-duplex operation are as fol- lows:  the collision detect (col) pin is disabled.  the sqe test function is disabled. full-duplex link status led support the AM79C971 controller provides bits in each of the led status registers (bcr4, bcr5, bcr6, bcr7) to display the full-duplex link status. if the fdlse bit (bit 8) is set, a value of 1 will be sent to the associated ledout bit when the t-mau is in the full-duplex link pass state only. media independent interface the AM79C971 controller fully supports the mii ac- cording to the ieee 802.3 standard. this reconcilia- tion sublayer interface allows a variety of phys (100base-tx, 100base-fx, 100base-t4, 100base-t2, 10base-t, etc.) to be attached to the AM79C971 mac engine without future upgrade prob- lems. the mii interface is a 4-bit (nibble) wide data path interface that runs at 25 mhz for 100-mbps networks and 2.5 mhz for 10-mbps networks. the interface con- sists of two independent data paths, receive (rxd(3:0)) and transmit (txd(3:0)), control signals for each data path (rx_er, rx_dv, tx_er, tx_en), net- work status signals (col, crs), clocks (rx_clk, tx_clk) for each data path, and a two-wire manage- ment interface (mdc and mdio). see figure 38. mii transmit interface the mii transmit clock is generated by the external phy and is sent to the AM79C971 controller on the tx_clk input pin. the clock can run at 25 mhz or 2.5 mhz, depending on the speed of the network that the external phy is attached to. the data is a nibble-wide (4 bits) data path, txd(3:0), from the AM79C971 con- troller to the external phy and is synchronous to the rising edge of tx_clk. the transmit process starts when the AM79C971 controller asserts the tx_en, which indicates to the external phy that the data on txd(3:0) is valid. normally, unrecoverable errors are signaled through the mii to the external phy with the tx_er output pin. the external phy will respond to this error by generat- ing a tx coding error on the current transmitted frame. the AM79C971 controller does not use this method of signaling errors on the transmit side. the AM79C971 controller will invert the fcs on the last byte generating an invalid fcs. the tx_er pin is reserved for future use and is actively driven to 0. mii receive interface the mii receive clock is also generated by the external phy and is sent to the AM79C971 controller on the rx_clk input pin. the clock will be the same fre- quency as the tx_clk but will be out of phase and can run at 25 mhz or 2.5 mhz, depending on the speed of the network the external phy is attached to. the rx_clk is a continuous clock during the reception of the frame, but can be stopped for up to two rx_clk periods at the beginning and the end of frames, so that the external phy can sync up to the network data traffic necessary to recover the receive clock. during this time, the external phy may switch to the tx_clk to maintain a stable clock on the receive interface. the AM79C971 controller will handle this situation with no loss of data. the data is a nibble-wide (4 bits) data
AM79C971 77 path, rxd(3:0), from the external phy to the AM79C971 controller and is synchronous to the rising edge of rx_clk. the receive process starts when rx_dv is asserted. rx_dv will remain asserted until the end of the receive frame. the AM79C971 controller requires crs (car- rier sense) to toggle in between frames in order to re- ceive them properly. errors in the currently received frame are signaled across the mii by the rx_er pin. rx_er can be used to signal special conditions out of band when rx_dv is not asserted. two defined out-of- band conditions for this are the 100base-tx signaling of bad start of frame delimiter and the 100base-t4 indication of illegal code group before the receiver has synched to the incoming data. the AM79C971 control- ler will not respond to these conditions. all out of band conditions are currently treated as null events. cer- tain in band non-ieee 802.3u-compliant flow control sequences may cause erratic behavior for the AM79C971 controller. consult the switch/bridge/router/ hub manual to disable the in-band flow control se- quences if they are being used. mii network status interface the mii also provides signals that are consistent and necessary for ieee 802.3 and ieee 802.3u operation. these signals are crs (carrier sense) and col (col- lision sense). carrier sense is used to detect non-idle activity on the network. collision sense is used to indi- cate that simultaneous transmission has occurred in a half-duplex network. mii management interface the mii provides a two-wire management interface so that the AM79C971 controller can control and receive status from external phy devices. the AM79C971 controller can support up to 31 exter- nal phys attached to the mii management interface with software support and only one such device without software support. the network port manager copies the phyad after the AM79C971 controller reads the eeprom and uses it to communicate with the external phy. the phy ad- dress must be programmed into the eeprom prior to starting the AM79C971 controller. this is necessary so that the internal management controller can work au- tonomously from the software driver and can always know where to access the external phy. the AM79C971 controller is unique by offering direct hard- ware support of the external phy device without soft- ware support. the internal phy is addressed at the last available mii address of 1fh. to access the 31 external phys, the software driver must have knowledge of the external phy ? s address when multiple phys are present before attempting to address it. the mii management interface uses the mii control, address, and data registers (bcr32, 33, 34) to control and communicate to the external and internal 10base-t only phys. AM79C971 generates mii man- agement frames to the external phy through the mdio pin synchronous to the rising edge of the management data clock (mdc) based on a combination of writes and reads to these registers. to prevent problems on the exposed interface, mii management frames will not be generated when the internal phy is the target. the mii only supports internal and external 10base-t or 100base-t as possible network connections. the in- ternal aui and gpsi are not considered part of the mii and cannot be selected through the mii. . figure 38. media independent interface 4 rxd(3:0) rx_dv rx_er rx_clk 4 txd(3:0) tx_en tx_er tx_clk AM79C971 mii interface mdio mdc col crs receive signals transmit signals management port signals network status signals 20550d-41
78 AM79C971 the mii management interface has a built-in detection system to allow the AM79C971 controller to determine if an external phy is attached. the mdio i/o pin has a resistor network between the AM79C971 controller and the external phy that will assert a static 1 when connected. if there is no external phy connected, the resistor network will drive a static zero. this information is signaled by the interrupt mpdtint (csr7, miipdti, bit 1), and the status is provided by reading the media independent interface phy detected (miipd) (bcr32, bit 14). this resistor network is only required on an exposed mii connector. mii management frames mii management frames are automatically generated by the AM79C971 controller and conform to the mii clause in the ieee 802.3u standard. the start of the frame is a preamble of 32 ones and guarantees that all of the external phys are synchro- nized on the same interface. (see figure 39.) loss of synchronization is possible due to the hot-plugging ca- pability of the exposed mii. the ieee 802.3 specification allows you to drop the preamble, if after reading the mii status register from the external phy you can determine that the external phy will support preamble suppression (bcr34, bit 6). after having a valid mii status register read, the AM79C971 controller will then drop the creation of the preamble stream until a reset occurs, receives a read error, or the external phy is disconnected. figure 39. frame format at the mii interface connection this is followed by a start field (st) and an operation field (op). the operation field (op) indicates whether the AM79C971 controller is initiating a read or write op- eration. this is followed by the external phy address (phyad) and the register address (regad) pro- grammed in bcr33. the internal phyad is at location 1fh and the internal register address space regad is 00h - 08h. the external phy may have a larger ad- dress space starting at 10h - 1fh. this is the address range set aside by the ieee as vendor usable address space and will vary from vendor to vendor. this field is followed by a bus turnaround field. during a read oper- ation, the bus turnaround field is used to determine if the external phy is responding correctly to the read re- quest or not. the AM79C971 controller will tri-state the mdio for both mdc cycles. during the second cycle, if the external phy is synchronized to the AM79C971 controller, the external phy will drive a 0. if the external phy does not drive a 0, the AM79C971 controller will signal a mreint (csr7, bit 9) interrupt, if mreinte (csr7, bit 8) is set to a 1, indicating the AM79C971 controller had an mii management frame read error and that the data in bcr34 is not valid. the data field to/from the internal or external phy is read or written into the bcr34 register. the last field is an idle field that is necessary to give ample time for drivers to turn off before the next access. the AM79C971 controller will drive the mdc to 0 and tri-state the mdio anytime the mii management port is not active. to help to speed up the reading and writing of the mii management frames to the external phy, the mdc can be sped up to 10 mhz by setting the fmdc bits in bcr32. the ieee 802.3 specification requires use of the 2.5-mhz clock rate, but 5 mhz and 10 mhz are available for the user. the intended applications are that the 10-mhz clock rate can be used for a single ex- ternal phy on an adapter card or motherboard. the 5- mhz clock rate can be used for an exposed mii with one external phy attached. the 2.5-mhz clock rate is intended to be used when multiple external phys are connected to the mii management port or if compli- ance to the ieee 802.3u standard is required. auto-poll external phy status polling as defined in the ieee 802.3 standard, the external phy attached to the AM79C971 controller ? s mii has no way of communicating important timely status informa- tion back to AM79C971 controller. the AM79C971 controller has no way of knowing that an external phy has undergone a change in status without polling the mii status register. to prevent problems from occurring with inadequate host or software polling, the AM79C971 controller will auto-poll when apep (bcr32, bit 11) is set to 1 to insure that the most cur- rent information is available. see appendix e, auto ne- preamb le 1111....1111 op 10 rd 01 wr phy address register address ta z0 rd 10 wr data idle 2 bits 5 bits 5 bits 2 bits 32 bits miiframe st 01 2 bits 16 bits 1 bit z 20550d-42
AM79C971 79 gotiation registers, for the bit descriptions of the mii status register. the contents of the latest read from the external phy will be stored in a shadow register in the auto-poll block. the first read of the mii status reg- ister will just be stored, but subsequent reads will be compared to the contents already stored in the shadow register. if there has been a change in the contents of the mii status register, a mapint (csr7, bit 7) in- terrupt will be generated on inta if the mapinte (csr7, bit 6) is set to 1. the auto-poll features can be disabled if software driver polling is required. the auto-poll ? s frequency of generating mii manage- ment frames can be adjusted by setting of the apdw bits (bcr32, bits 10-8). the delay can be adjusted from 0 mdc periods to 2048 mdc periods. auto-poll by default will only read the mii status register in the ex- ternal phy. network port manager the AM79C971 controller is unique in that it does not require software intervention to control and configure an external phy attached to the mii. this was done to ensure backwards compatibility with existing software drivers. to the current software drivers, the AM79C971 controller will look and act like the pcnet-pci ii and will interoperate with existing pcnet drivers from revision 2.5 upward. the heart of this system is the network port manager, which acts as an arbiter between all of the possible automatically controllable physical con- nections, including the external phy and the internal 10base-t/aui ports. see the section on automatic network port selection for more details. if the external phy is present and is active, the net- work port manager will request status from the external phy by generating mii management frames. these frames will be sent roughly every 900 ms. these frames are necessary so that the network port man- ager can monitor the current active link and can select a different network port if the current link goes down. auto-negotiation the AM79C971 controller implements the auto-nego- tiation portion of the ieee 802.3u specification for the 10base-t mau. auto-negotiation attempts to auto- matically configure the link between two link partners. to accomplish this, the 10base-t mau can send a new link pulse train called fast link pulses. these fast link pulses replace the current 10base-t link pulse. the fast link pulse are made up of a train of 17 clocks alternating with 16 data fields for a total of 33 pulses. the two link partners will send information in those 16 data positions between themselves. the primary infor- mation sent is called the base code link word. see appendix e, auto negotiation registers, for details on the auto-negotiation registers. the AM79C971 con- troller will send in its base code link word the capabil- ities of the internal phy. the internal phy is capable of half- or full-duplex 10base-t. through the external phy, the following capabilities are possible: 100base- t4, 100base-tx full-/half-duplex, and 10base-t full-/half-duplex. the capabilities are then sent to a link partner that will also send its capabilities. both sides look to see what is possible and then they will connect at the greatest possible speed and capability according to the following table as defined in the ieee 802.3u standard. by default, the link partner must be at least 10base-t half-duplex capable. the AM79C971 controller can au- tomatically negotiate either internally or externally with the network and yield the highest performance possible without software support. see the section on network port manager for more details. auto-negotiation goes further by providing a message- based communication scheme called, next pages , be- fore connecting to the link partner. this feature is not supported in AM79C971 unless the danas (bcr32, bit 10) is selected and the software driver is capable of controlling the internal or external phy. a complete bit description of the mii and auto-negoti- ation registers can be found in appendix e. automatic network port selection the AM79C971 controller extends the pcnet-pci ii de- vice ? s automatic network port selection by adding the mii port to the already existing 10base-t, and aui ports. if asel (bcr2, bit 0) is set to 1 and danas (bcr 32, bit 7) is set to 0, then the network port man- ager will start to configure the external phy if it detects the external phy on the mii interface. if the external phy is not responding, the network port manager will try to resolve problems and to fail non-responding links in a graceful manner, utilizing a large timer on the AM79C971 controller to time-out links. automatic network selection: exceptions if asel (bcr2, bit 0) is set to 0 or danas (bcr 32, bit 7) is set to 1, then the network port manager will dis- continue actively trying to establish the connections. it is assumed that the software driver is attempting to table 10. auto-negotiation capabilities network speed physical network type 200 mbps 100base-x, full duplex 100 mbps 100base-t4, half duplex 100 mbps 100base-x, half duplex 20 mbps 10base-t, full duplex 10 mbps 10base-t, half duplex
80 AM79C971 configure the network port and the AM79C971 control- ler will always defer to the software driver. when the asel is set to 0, the software driver should then con- figure the ports with portsel (csr15, bits 7-8). the gpsi does not participate in the automatic selection process and should be manually configured with the portsel bits. if fden (bcr9, bit 0) is set to 1 or dlnkst (csr15, bit 12) is set to 1, the network port manager will continue to select the active network port, but the internal t-mau will not auto-negotiate the net- work port. instead, if fden (bcr9, bit 0) is set to 1, the internal t-mau will come up as a full-duplex t-mau port if link beats are found. if dlnkst (csr15, bit 12) is set to 1 and the internal t-mau is active, the t-mau will be in a link pass state regardless of link beat. note: it is highly recommended that asel and portsel be used when trying to manually configure a specific network port. in order to manually configure the external phy, the recommended procedure is to force the phy configu- rations when auto-negotiation is not enabled. set the danas bit (bcr32, bit 7) to turn off the network port manager. then write again to bcr32 with the danas and xphyane (bcr32, bit 5) bits cleared, together with the xphyfd (bcr32, bit 4) and xphysp (bcr32, bit 3) bits set to the desired configuration. the network port manager will send a few frames to vali- date the configuration. if fcon (bcr32, bit 0) is set to 1, this bit will force the internal network port manager into fast configuration mode. during this mode, the network port manager will not attempt to start auto-negotiation on the internal as well as the external phy. instead, it will rely on link in- tegrity tests for link pass state. this will accelerate the automatic port selection on the AM79C971 controller. the network port manager in fast configuration mode will start with the external phy if one is detected. if the link does not come up, the network port manager will enable the internal 10base-t mau. if the internal port also does not come up, the network port manager will continue to search the mii and the internal t-mau ports while enabling the internal aui port. the fcon (bcr32, bit 0) should only be used if the network is ex- periencing difficulty and is not stable. caution: the network port manager utilizes the phyadd (bcr33, bits 9-5) to communicate with the external phy during the automatic port selection pro- cess. the phyadd is copied into a shadow register after the AM79C971 controller has read the configura- tion information from the eeprom. extreme care must be exercised by the host software not to access bcr33 during this time. a read of pvalid (bcr19, bit 15) be- fore accessing bcr33 will guarantee that the phyadd has been shadowed. am79c972 ? s automatic network port selection mecha- nism falls within the following three general categories:  external phy not present  external phy present but not auto-negotiable  external phy present and auto-negotiable automatic network selection: external phy not present the first case occurs when the miipd (bcr32, bit 14) bit is 0. this indicates that there is no external phy at- tached to AM79C971 controller ? s mii. the AM79C971 controller ? s network port manager will start the internal auto-negotiation 10base-t mau. if the auto-negotia- tion 10base-t mau fails to respond within a specific time frame, then the AM79C971 controller will enable the aui. auto-negotiation fast link pulses are still being sent and the auto-negotiation 10base-t mau is still running. at that point, the active link can switch back to the 10base-t mau when link pulses or fast link pulses are detected. the only way to disable the auto-negotiation process without using fden or dlnkst is to enable the danas (bcr32, bit 7) bit or to write to the internal/external phys mii control regis- ter and disable auto-negotiation when the internal net- work port manager is disabled. automatic network selection: external phy present but not auto-negotiable the second case occurs when the miipd (bcr32, bit 14) bit is 1. this indicates that there is an external phy attached to AM79C971 controller ? s mii. if more than one external phy is attached to the mii management interface, then the danas (bcr32, bit 7) bit must be set to 1 and then all configuration control should revert to software. the AM79C971 controller will read the reg- ister of the external phy to determine its status and network capabilities. see appendix e, auto negotiation registers, for the bit descriptions of the mii status reg- ister. if the external phy is not auto-negotiation capa- ble and/or the xphyane (bcr32, bit 5) bit is set to 0, then the network port manager will match up the exter- nal phy capabilities with the xphyfd (bcr 32, bit 4) and the xphysp (bcr32, bit 3) bits programmed from the eeprom. the AM79C971 controller will then pro- gram the external phy with those values. a new read of the external phys mii status register will be made to see if the link is up. if the link does not come up as pro- grammed after a specific time, the AM79C971 control- ler will fail the external phy link and start the internal phy process as described above. the AM79C971 controller will only start the external phy link if the in- ternal link has failed. if both links have failed, the aui is enabled but the network port manager will still query the internal and external phys for active links. automatic network selection: external phy present and auto-negotiable the third case occurs when the miipd (bcr32, bit 14) bit is 1. this indicates that there is an external phy at- tached to AM79C971 controller ? s mii. if more than one
AM79C971 81 external phy is attached to the mii management inter- face, then the danas (bcr32, bit 7) bit must be set to 1 and then all configuration control should revert to software. the AM79C971 controller will read the mii status register of the external phy to determine its sta- tus and network capabilities. see appendix e for the bit descriptions of the mii status register. if the external phy is auto-negotiation capable and/or the xphyane (bcr32, bit 5) bit is set to 1, then the AM79C971 con- troller will start the external phy ? s auto-negotiation process. the AM79C971 controller will write to the ex- ternal phy ? s advertisement register with the following conditions set: turn off the next pages support, set the technology ability field (see appendix e for the auto- negotiation register bit descriptions) from the external phy mii status register read, and set the type selector field to the ieee 802.3 standard. the AM79C971 con- troller will then write to the external phy ? s mii control register instructing the external phy to negotiate the link. the AM79C971 controller will poll the external phy ? s mii status register until the auto-negotiation complete bit is set to 1and the link status bit is set to 1. the AM79C971 controller will then wait a specific time and then again read the external phy ? s mii status register. if the AM79C971 controller sees that the exter- nal phy ? s link is down, it will try to bring up the external phy ? s link manually as described above. a new read of the external phy ? s mii status register will be made to see if the link is up. if the link does not come up as pro- grammed after a specific time, the AM79C971 control- ler will fail the external phy link and start the process again for the internal phy. if the link has failed, the aui is enabled, but the network port manager will still query the external phy for an active link. automatic network selection: working with the micro linear 6692 the final case that occurs is the hybrid condition that does not fit neither the auto-negotiable case nor the non-auto-negotiable case. an example of this case is the micro linear 6692 phy. the micro linear 6692 phy masquerades as an auto-negotiable phy by pro- viding auto-negotiation capabilities, but does not pro- vide the 10base-t mau. it relies on the mac controller, the AM79C971 controller in this case, to pro- vide the 10base-t mau for it. the network port man- ager handles this condition virtually the same way as the auto-negotiable case, except for the final hand- shake that enables the internal 10base-t mau. after the 6692 negotiates for the 10base-t mau, it monitors the link for normal link pulses (nlps). if it sees the nlps, then it will report that it completed the auto-ne- gotiation process. the AM79C971 controller will read the mii and auto-negotiation registers to figure out which port has been negotiated. at this point, the net- work port manager will enable the internal 10base-t mau, if that port has been negotiated, and complete the first part of the handshake. the final part of the handshake is to prevent the 6692 from renegotiating the link without the network port manager ? s knowl- edge. connecting the led0 pin to the 10btrcv pin of the 6692 will accomplish this. the led0 reports the link status from the internal tmau. the network port man- ager monitors the internal link status, and knowing when the 6692 will start to renegotiate the link, it will stay in synchronization with the 6692. automatic network selection: force external reset if the xphyrst bit (bcr32, bit 6) is set to 1, then the external case flow changes slightly. the AM79C971 controller will write to the external phy ? s mii control register with the reset bit set to 1 (see appendix e, auto negotiation registers, for the mii register bit de- scriptions). this will force a complete reset of the exter- nal phy. the AM79C971 controller after a specific time will poll the external phy ? s mii control register to see if the reset bit is 0. after the reset bit is cleared, then the normal flow continues. external address detection interface (eadi) the eadi is provided to allow external address filtering and to provide a receive frame tag word for propri- etary routing information. it is selected by setting the eadisel bit in bcr2 to 1. this feature is typically uti- lized by terminal servers, bridges and/or router prod- ucts. the eadi interface can be used in conjunction with external logic to capture the packet destination ad- dress from the serial bit stream as it arrives at the AM79C971 controller, to compare the captured ad- dress with a table of stored addresses or identifiers, and then to determine whether or not the AM79C971 controller should accept the packet. external address detection interface: internal phy the eadi interface outputs are delivered directly from the nrz decoded data and clock recovered by the manchester decoder. this allows the external address detection to be performed in parallel with frame recep- tion and address comparison in the mac station ad- dress detection (sad) block of the AM79C971 controller. srdclk is provided to allow clocking of the receive bit stream into the external address detection logic. note that when the 10base-t port is selected, transitions on srdclk will only occur during receive activity. when the aui port is selected, transitions on srdclk will occur during both transmit and receive activity. once a received frame commences and data and clock are available from the decoder, the eadi logic will monitor the alternating ( ? 1,0 ? ) preamble pattern until the two 1s of the start frame delimiter (sfd, 10101011 bit pat- tern) are detected, at which point the sfbd output will be driven high.
82 AM79C971 the sfbd signal will initially be low. the assertion of sfbd is a signal to the external address detection logic that the sfd has been detected and that subsequent srdclk cycles will deliver packet data to the external logic. therefore, when sfbd is asserted, the external address matching logic should begin de-serialization of the srd data and send the resulting destination ad- dress to a content addressable memory (cam) or other address detection device. in order to reduce the amount of logic external to the AM79C971 controller for multiple address decoding systems, the sfbd signal will toggle at each new byte boundary within the packet, subsequent to the sfd. this eliminates the need for externally supplying byte framing logic. srd is the decoded nrz data from the network. this signal can be used for external address detection. note that when the 10base-t port is selected, transitions on srd will only occur during receive activity. when the aui or gpsi port is selected, transitions on srd will occur during receive activity. the ear pin should be driven low by the external ad- dress comparison logic to reject a frame. if an address match is detected by comparison with ei- ther the physical address or logical address filter reg- isters contained within the AM79C971 controller or the frame is of the type ? broadcast ? , then the frame will be accepted regardless of the condition of ear . when the eadisel bit of bcr2 is set to 1 and the AM79C971 controller is programmed to promiscuous mode (prom bit of the mode register is set to 1), then all in- coming frames will be accepted, regardless of any ac- tivity on the ear pin. internal address match is disabled when prom (csr15, bit 15) is cleared to 0, drcvbc (csr15, bit 14) and drcvpa (csr15, bit 13) are set to 1, and the logical address filter registers (csr8 to csr11) are programmed to all zeros. when the eadisel bit of bcr2 is set to 1 and internal address match is disabled, then all incoming frames will be accepted by the AM79C971 controller, unless the ear pin becomes active during the first 64 bytes of the frame (excluding preamble and sfd). this allows external address lookup logic approximately 58 byte times after the last destination address bit is available to generate the ear signal, assuming that the AM79C971 controller is not configured to accept runt packets. the eadi logic only samples ear from 2 bit times after sfd until 512 bit times (64 bytes) after sfd. the frame will be accepted if ear has not been as- serted during this window. if runt packet accept (csr124, bit 3) is enabled, then the ear signal must be generated prior to the 8 bytes received, if frame re- jection is to be guaranteed. runt packet sizes could be as short as 12 byte times (assuming 6 bytes for source address, 2 bytes for length, no data, 4 bytes for fcs) after the last bit of the destination address is available. ear must have a pulse width of at least 110 ns. the eadi outputs continue to provide data throughout the reception of a frame. this allows the external logic to capture frame header information to determine pro- tocol type, internetworking information, and other use- ful data. the eadi interface will operate as long as the strt bit in csr0 is set, even if the receiver and/or transmitter are disabled by software (dtx and drx bits in csr15 are set). this configuration is useful as a semi-power- down mode in that the AM79C971 controller will not perform any power-consuming dma operations. how- ever, external circuitry can still respond to control frames on the network to facilitate remote node control. table 11 summarizes the operation of the eadi inter- face. external address detection interface: external phy when using the mii, the eadi interface changes to re- flect the changes on that interface. except for the nota- tions below the interface conforms to the previous functionality. the data arrives in nibbles and can be at a rate of 25 mhz or 2.5 mhz. the mii provides all necessary data and clock signals needed for the eadi interface. consequently, srdclk and srd are not used and are driven to 0. data for the eadi is the rxd(3:0) receive data provided to the mii. instead of deserializing the network data, the user will receive the data as 4 bit nibbles. rx_clk is provided to allow clocking of the rxd(3:0) receive nibble stream into the external address detection logic. the rxd(3:0) data is synchronous to the rising edge of the rx_clk. the assertion of sfbd is a signal to the external ad- dress detection logic that the sfd has been detected and that the first valid data nibble is on the rxd(3:0) data bus. the sfbd signal is delayed one rx_clk cycle from the above definition and actually signals the start of valid data. in order to reduce the amount of logic external to the AM79C971 controller for multiple table 11. eadi operations prom ear required timing received messages 1 x no timing requirements all received frames 0 1 no timing requirements all received frames 0 0 low for 110 ns during the window from 0 bits after sfd to 512 bits after sfd AM79C971 controller internal physical address and logical address filter matches and broadcast frames
AM79C971 83 address decoding systems, the sfbd signal will go high at each new byte boundary within the packet, subsequent to the sfd. this eliminates the need for ex- ternally supplying byte framing logic. the ear pin function is the same and should be driven low by the external address comparison logic to reject a frame. external address detection interface: receive frame tagging the AM79C971 controller supports receive frame tag- ging in both internal phy mode or in the mii mode. the method remains constant, but the chip interface pins will change between the mii and the internal phy modes. the receive frame tagging implementation will be a two- and three-wire chip interface, respectively, added to the existing eadi. the AM79C971 controller supports up to 15 bits of re- ceive frame tagging per frame in the receive frame sta- tus (rfrtag). the rfrtag bits are in the receive frame status field in rmd2 (bits 30-16) in 32-bit soft- ware mode. the receive frame tagging is not supported in the 16-bit software mode. the rfrtag field are all zeros when either the eadisel (bcr2, bit3) or the rxfrtag (csr7, bit 14) are set to 0. when eadisel (bcr2, bit 3) and rxfrtag (csr7, bit 14) are set to 1, then the rfrtag reflects the tag word shifted in dur- ing that receive frame. in the mii mode, the two-wire interface will use the miirxfrtgd and miirxfrtge pins from the eadi interface. these pins will provide the data input and data input enable for the receive frame tagging, respec- tively. these pins are normally not used during the mii operation. in the internal phy mode, the three-wire interface will use the rxfrtgd, srdclk, and the rxfrtge pins from the eadi and mii. these pins will provide the data input, data input clock, and the data input for the re- ceive frame tagging enable, respectively. the receive frame tag register is a shift register that shifts data in msb first, so that less than the 15 bits al- located may be utilized by the user. the upper bits not utilized will return zeros. the receive frame tag register is set to 0 in between reception of frames. after receiv- ing sfbd indication on the eadi, the user can start shifting data into the receive tag register until one net- work clock period before the AM79C971 controller re- ceives the end of the current receive frame. in the mii mode, the user must see the rx_clk to drive the synchronous receive frame tag data interface. after receiving the sfbd indication, sampled by the ris- ing edge of the rx_clk, the user will drive the data input and the data input enable synchronous with the rising edge of the rx_clk. the user has until one net- work clock period before the deassertion of the rx_dv to input the data into the receive frame tag register. at the deassertion of the rx_dv, the receive frame tag register will no longer accept data from the two-wire in- terface. if the user is still driving the data input enable pin, erroneous or corrupted data may reside in the re- ceive frame tag register. see figure 40. in the internal phy mode, the user must use the recov- ered receive data clock driven on the srdclk pin to drive the synchronous receive frame tag data interface. after receiving the sfbd indication, sampled by the ris- ing edge of the recovered receive data clock, the user will drive the data input and the data input enable syn- chronous with the rising edge of the recovered receive data clock. the user has until one network clock period before the deassertion of the data from the network to input the data into the receive frame tag register. at the completion of received network data, the receive frame tag register will no longer accept data from the two-wire interface. if the user is still driving the data input enable pin, erroneous or corrupted data may reside in the re- ceive frame tag register. see figure 41. figure 40. mii receive frame tagging rx_clk rx_dv miirxfrtge miirxfrtgd sf/bd 20550d-44
84 AM79C971 figure 41. internal phy receive frame tagging expansion bus interface the AM79C971 controller contains an expansion bus interface that supports two different boot devices, eprom and flash, as well as sram used as an exten- sion to the internal fifos to buffer packets. the AM79C971 controller supports flash and eprom de- vices as boot devices as well as providing read/write access to flash or eprom while the AM79C971 con- troller is in stop or in spnd or when the sram size bits (bcr25, bits 7-0) are set to 0. while in stop, the AM79C971 controller provides read/write diagnostic access to sram (when present). this limitation on the sram diagnostic is necessary to prevent data corrup- tion. the signal as_eboe is provided to strobe the upper 8 bits of the address into an external ? 374 (d flip-flop) ad- dress latch. as_eboe is asserted low during eprom/flash read operations to control the oe input of the eprom/flash. the expansion bus address is split into two different buses, ebua_eba[7:0] and ebda[15:8]. the ebua_eba[7:0] provides the least and the most signif- icant address byte. when accessing sram and eprom/flash the ebua_eba[7:0] is strobed into an external ? 374 (d flip-flop) address latch. this consti- tutes the most significant portion of the expansion bus address. for sram/eprom/flash accesses, ebua_eba[7:0] constitutes the remaining least signif- icant address byte. for byte oriented eprom/flash ac- cesses, ebda[15:8] constitutes the upper or middle address byte. ebaddru (bcr29, bits 3-0) should be set to 0 even when not used, since ebaddru consti- tutes the ebua portion of the ebua eba address byte and is strobed into the external ? 374 address latch. the signal eromcs is connected to the cs /ce input of the eprom/flash. the signal eramcs is con- nected to the ce /cs input of the sram. the signal ebwe is connected to the we of the sram and flash devices. the expansion data bus is configured for 16-bit word access during sram accesses and 8-bit byte access during eprom/flash accesses. during sram ac- cesses, ebd[7:0] provides the lower data byte while ebda[15:8] provides the upper data byte. during eprom/flash accesses, ebd[7:0] provides the data byte. see figure 42. expansion rom - boot device access the AM79C971 controller supports eprom or flash as an expansion rom boot device. both are config- ured using the same methods and operate the same. see the previous section on expansion rom transfers to get the pci timing and functional description of the transfer method. the AM79C971 controller is function- ally equivalent to the pcnet-pci ii controller with ex- pansion rom. see figure 43 and figure 44. the AM79C971 controller will always read four bytes for every host expansion rom read access. the interface to the expansion bus runs synchronous to the pci bus interface clock. the AM79C971 controller will start the read operation to the expansion rom by driving the upper 8 bits of the expansion rom address on ebua_eba[7:0]. one-half clock later, as_eboe goes high to allow registering of the upper address bits ex- ternally. the upper portion of the expansion rom ad- dress will be the same for all four byte read cycles. as_eboe is driven high for one-half clock, ebua_eba[7:0] are driven with the upper 8 bits of the expansion rom address for one more clock cycle after as_eboe goes low. next, the AM79C971 controller starts driving the lower 8 bits of the expansion rom address on ebua_eba[7:0]. srdclk miirxfrtge miirxfrtgd sfd bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7 sfbd bit8 bitx bity bitz .. .. .. .. srd 20550d-44
AM79C971 85 figure 42. sram and flash configuration for the expansion bus the time that the AM79C971 controller waits for data to be valid is programmable. romtmg (bcr18, bits 15- 12) defines the time from when the AM79C971 control- ler drives ebua_eba[7:0] with the lower 8 bits of the expansion rom address to when the AM79C971 con- troller latches in the data on the ebd[7:0] inputs. the register value specifies the time in number of clock cy- cles. when romtmg is set to nine (the default value), ebd[7:0] is sampled with the next rising edge of clk ten clock cycles after ebua_eba[7:0] was driven with a new address value. the clock edge that is used to sample the data is also the clock edge that generates the next expansion rom address. all four bytes of ex- pansion rom data are stored in holding registers. one clock cycle after the last data byte is available, the AM79C971 controller asserts trdy. the access time for the expansion rom device (tacc) can be calculated by subtracting the clock-to-output delay for the ebua_eba[7:0] outputs (tv_a_d) and the input-to-clock setup time for the ebd[7:0] inputs (ts_d) from the time defined by romtmg: tacc <= romtmg* clock period - tv_a_d - ts_d for an adapter card application, the value used for clock period should be 30 ns to guarantee correct inter- face timing at the maximum clock frequency of 33 mhz. the timing diagram in figure 45 assumes the default programming of romtmg (1001b = 9 clk). after reading the first byte, the AM79C971 controller reads in three more bytes by incrementing the lower portion of the rom address. after the last byte is strobed in, trdy will be asserted on clock 50. when the host tries to perform a burst read of the expansion rom, the AM79C971 controller will disconnect the access at the second data phase. the host must program the expansion rom base ad- dress register in the pci configuration space before the first access to the expansion rom. the AM79C971 controller will not react to any access to the expansion rom until both memen (pci command register, bit 1) and romen (pci expansion rom base address reg- ister, bit 0) are set to 1. ebua_eba[7:0] ebda[15:8] ebd[7:0] i/o[7:0] a[7:0] a[14:8] we oe cs i/o[7:0] a[7:0] a[14:8] we oe cs ebwe eramcs as_/eboe a[15:8] a[7:0] dq[7:0] oe cs AM79C971 '374 d-ff 32k x 8 sram flash 32k x 8 sram eromcs a[23:16] we 20550d-45
86 AM79C971 figure 43. eprom only configuration for the expansion bus (64k eprom) after the expansion rom is enabled, the AM79C971 controller will claim all memory read accesses with an address between rombase and rombase + 1m - 4 (rombase, pci expansion rom base address reg- ister, bits 31-20). the address output to the expansion rom is the offset from the address on the pci bus to rombase. the AM79C971 controller aliases all ac- cesses to the expansion rom of the command types memory read multiple and memory read line to the basic memory read command. since setting memen also enables memory mapped access to the i/o resources, attention must be given to the pci memory mapped i/o base address register, before enabling access to the expansion rom. the host must set the pci memory mapped i/o base ad- dress register to a value that prevents the AM79C971 controller from claiming any memory cycles not in- tended for it. during the boot procedure, the system will try to find an expansion rom. a pci system assumes that an ex- pansion rom is present when it reads the rom signa- ture 55h (byte 0) and aah (byte 1). a design without expansion rom can guarantee that the expansion rom detection fails by connecting two adjacent ebd pins together and tying them high or low. direct flash access AM79C971 controller supports flash as an expansion rom device, as well as providing a read/write data path to the flash. the AM79C971 controller will sup- port up to 1 mbyte of flash on the expansion bus. the flash is accessed by a read or write to the expansion bus data port (bcr30). the user must load the upper address epaddru (bcr 29, bits 3-0) and then set the flash (bcr29, bit 15) bit to a 1. the flash read/write utilizes the pci clock instead of the ebclk during all accesses. epaddru is not needed if the flash size is 64k or less, but still must be programmed. the user will then load the lower 16 bits of address, epaddrl (bcr 28, bits 15-0). flash/eprom read a read to the expansion bus data port (bcr30) will start a read cycle on the expansion bus interface. the AM79C971 controller will drive ebua_eba[7:0] with the most significant address byte at the same time the AM79C971 controller will drive as_eboe high to strobe the address in the external ? 374 (d flip-flop). on the next clock, the AM79C971 controller will drive ebda[15:8] and ebua_eba[7:0] with the middle and least significant address bytes. ebua_eba[7:0] ebda[15:8] ebd[7:0] ebwe eramcs eromcs a[15:8] a[7:0] dq[7:0] oe cs AM79C971 eprom as_eboe 20550d-46
AM79C971 87 figure 44. eprom only configuration for the expansion bus (>64k eprom) ebua_eba[7:0] ebda[15:8] ebd[7:0] ebwe eramcs eromcs a[15:8] a[7:0] dq[7:0] oe cs AM79C971 eprom as_eboe '374 d-ff a[19:16] 20550d-47
88 AM79C971 figure 45. expansion rom bus read sequence figure 46. flash read from expansion bus data port ebclk ebua_eba[7:0] ebda[15:8], ebd[7:0] eramcs ebwe as_eboe upper address lower address data data tv_a_d t_cs_l t_cs_h t_we_csad t_we_h t_as_l t_as_h t_we_l lower address 20550d-48 ebua_eba[7:0] ebd[7:0] as_eboe eromcs ebua[19:16] ebda[15:8] ebda[15:8] eba[7:0] clk 1 2 3 4 5 6 7 8 9 10 11 12 13 20550d-49
AM79C971 89 the eromcs is driven low for the value romtmg + 1. figure 46 assumes that romtmg is set to nine. ebd[7:0] is sampled with the next rising edge of clk ten clock cycles after ebua_eba[7:0] was driven with a new address value. this pci slave access to the flash/eprom will result in a retry for the very first ac- cess. subsequent accesses may give a retry or not, de- pending on whether or not the data is present and valid. the access time is dependent on the romtmg bits (bcr18, bits 15-12) and the flash/eprom. this ac- cess mechanism differs from the expansion rom ac- cess mechanism since only one byte is read in this manner, instead of the 4 bytes in an expansion rom access. the pci bus will not be held during accesses through the expansion bus data port. if the laainc (bcr29, bit 15) is set, the ebaddrl address will be incremented and a continuous series of reads from the expansion data port (ebdata, bcr30) is possible. the address incrementor will roll over without warning and without incrementing the upper address ebad- dru. the flash write is almost the same procedure as the read access, except that the AM79C971 controller will not drive as_eboe low. the eromcs and ebwe are driven low for the value romtmg again. the write to the flash port is a posted write and will not result in a retry to the pci unless the host tries to write a new value before the previous write is complete, then the host will experience a retry. the flash can only be ac- cessed while in stop or when the sram_size = 0 (bcr25, bits 7-0). see figure 47. figure 47. flash write from expansion bus data port amd flash programming amd ? s flash products are programmed on a byte-by- byte basis. programming is a four bus cycle operation. there are two ? unlock ? write cycles. these are followed by the program set-up command and data write cycles. addresses are latched on the falling edge of ebwe and the data is latched on the rising edge of ebwe . the rising edge of ebwe begins programming. upon executing the amd flash embedded program algorithm command sequence, the AM79C971 con- troller is not required to provide further controls or tim- ing. the amd flash product will compliment ebd[7] during a read of the programmed location until the pro- gramming is complete. the host software should poll the programmed address until ebd[7] matches the programmed value. amd flash byte programming is allowed in any se- quence and across sector boundaries. note that a data 0 cannot be programmed back to a 1. only erase oper- ations can convert zeros to ones. amd flash chip erase is a six-bus cycle operation. there are two unlock write cycles, followed by writing the set-up command. tw o m o r e unlock cycles are then followed by the chip erase command. chip erase does not require the user to program the device prior to erasure. upon executing the amd flash embedded erase algorithm command sequence, the flash device will program and verify the entire memory for an all zero data pattern prior to elec- trical erase. the AM79C971 controller is not required to provide any controls or timings during these opera- tions. the automatic erase begins on the rising edge of the last ebwe pulse in the command sequence and terminates when the data on ebd[7] is 1, at which time the flash device returns to the read mode. polling by the AM79C971 controller is not required during the erase sequence. the following flash programming- table excerpt (table 12) shows the command sequence for byte programming and sector/chip erasure on an amd flash device. in the following table, pa and pd stand for programmed address and programmed data, and sa stands for sector address. the AM79C971 controller will support only a single sector erase per command and not concurrent sector erasures. the AM79C971 controller will support most flash devices as long as there is no timing require- ment between the completion of commands. the flash access time cannot be guaranteed with the AM79C971 controller access mechanism. the AM79C971 controller will also support only flash de- vices that do not require data hold times after write op- erations. ebua_eba[7:0] ebd[7:0] as_eboe eromcs ebua[19:16] ebda[15:8] ebda[15:8] eba[7:0] clk 1 2 3 4 5 6 7 8 9 10 11 12 13 ebwe 20550d-50
90 AM79C971 sram configuration the AM79C971 controller supports sram as a fifo extension as well as providing a read/write data path to the sram. see figure 48. the AM79C971 controller will support up to 128k of sram on the expansion bus. see figure 49. external sram configuration the sram_size (bcr25, bits 7-0) programs the size of the external sram. sram_size can also be pro- grammed to a smaller value than what is present on the expansion bus. the external sram should be programmed on a 512- byte boundary. however, there should be no accesses to the ram space while the AM79C971 controller is running. the AM79C971 controller assumes that it completely owns the sram while it is in operation. to specify how much of the sram is allocated to transmit and how much is allocated to receive, the user should program sram_bnd (bcr26, bits 7-0) with the page boundary where the receive buffer begins. the sram_bnd also should be programmed on a 512- byte boundary. the transmit buffer space starts at 0000h. it is up to the user or the software driver to split up the memory for transmit or receive; there is no de- faulted value. the minimum sram size required is four 512-byte pages for each transmit and receive queue, which limits the sram size to be at least 4 kbytes. the sram_bnd upon h_reset will be reset to 0000h. the AM79C971 controller will not have any transmit buffer space unless sram_bnd is pro- grammed. the last configuration parameter necessary is the clock source used to control the expansion bus interface. this is programmed through the sram inter- face control register. the externally driven expansion bus clock (ebclk) can be used by specifying a value of 010h in ebcs (bcr27, bits 5-3). this allows the user to utilize any clock that may be available. there are two standard clocks that can be chosen as well, the pci clock or the crystal clock used to power the network maus. when the pci or the crystal clock is used, the ebclk does not have to be driven, but it must be tied to vdd through a resistor. the user must specify an sram clock (bcr27, bits 5-3) that will not stop unless the AM79C971 controller is stopped. oth- erwise, the AM79C971 controller will report buffer over- flows, underflows, corrupt data, and will hang eventually. the user can decide to use a fast clock and then divide down the frequency to get a better duty-cycle if re- quired. the choices are a divide by 2 or 4 and is pro- grammed by the clk_fac bits (bcr27, bits 2-0). note that the AM79C971 controller does not support an sram frequency above 33 mhz regardless of the clock and clock factor used. table 12. am29fxxx flash command command sequence bus write cycles req ? d first bus write cycle second bus write cycle third bus write cycle fourth bus write cycle fifth bus write cycle sixth bus write cycle addr data addr data addr data addr data addr data addr data byte program 4 5555h aah 2aaah 55h 5555h a0h pa pd chip erase 6 5555h aah 2aaah 55h 5555h 80h 5555h aah 2aaah 55h 5555h 10h sector erase 6 5555h aah 2aaah 55h 5555h 80h 5555h aah 2aaah 55h sa 3h
AM79C971 91 figure 48. sram only configuration for the expansion bus figure 49. block diagram with external sram ebua_eba[7:0] ebda[15:8] ebd[7:0] i/o[7:0] a[7:0] a[14:8] we oe cs i/o[7:0] a[7:0] a[14:8] we oe cs ebwe eramcs as_eboe AM79C971 '374 d-ff 32k x 8 sram 32k x 8 sram 20550d-51 pci bus interface unit 802.3 mac core expansion bus interface bus rcv fifo mac rcv fifo bus xmt fifo mac xmt fifo buffer management unit fifo control 20550d-52
92 AM79C971 no sram configuration if the sram_size (bcr25, bits 7-0) value is 0 in the sram size register, the AM79C971 controller will as- sume that there is no sram present and will reconfig- ure the four internal fifos into two fifos, one for transmit and one for receive. the fifos will operate the same as in the pcnet-pci ii controller. when the sram size (bcr25, bits 7-0) value is 0, the sram bnd (bcr26, bits 7-0) are ignored by the AM79C971 controller. see figure 50. note: a ? no sram configuration ? is only valid for 10mb mode. in 100mb mode, sram is mandatory and must always be used. low latency receive configuration if the lolatrx (bcr27, bit 4) bit is set to 1, then the AM79C971 controller will configure itself for a low la- tency receive configuration. in this mode, external sram is required at all times. if the sram_size (bcr25, bits 7-0) value is 0, the AM79C971 controller will not configure for low latency receive mode. the AM79C971 controller will provide a fast path on the re- ceive side bypassing the external ram. all transmit traffic will go to the sram, so sram_bnd (bcr26, bits 7-0) has no meaning in low latency receive mode. when the AM79C971 controller has received 16 bytes from the network, it will start a dma request to the pci bus interface unit. the AM79C971 controller will not wait for the first 64 bytes to pass to check for collisions in low latency receive mode. the AM79C971 control- ler must be in stop before switching to this mode. see figure 51. caution: to provide data integrity when switching into and out of the low latency mode, do not set the fastspnde bit when setting the spnd bit. re- ceive frames will be overwritten and the AM79C971 controller may give erratic behavior when it is enabled again. direct sram access the sram can be accessed through the expansion bus data port (bcr30). to access this data port, the user must load the upper address epaddru (bcr29, bits 3-0) and set flash (bcr29, bit 15) to 0. then the user will load the lower 16 bits of address epaddrl (bcr28, bits 15-0). to initiate a read, the user reads the expansion bus data port (bcr30). this slave ac- cess from the pci will result in a retry for the very first access. subsequent accesses may give a retry or not, depending on whether or not the data is present and valid. the direct sram access uses the same flash/ eprom access except for accessing the sram in word format instead of byte format. this access is meant to be a diagnostic access only. the sram can only be accessed while the AM79C971 controller is in stop or spnd (fastspnde is set to 0) mode. figure 50. block diagram no sram configuration pci bus interface unit 802.3 mac core bus rcv fifo mac rcv fifo bus xmt fifo mac xmt fifo buffer management unit fifo control 20550d-53
AM79C971 93 figure 51. block diagram low latency receive configuration sram accesses the sram access during normal operations is a single cycle address load to fill the upper bits into the ? 374 fol- lowed by 17 subsequent accesses. this results in the best utilization for the 4-fifo arbiter in the AM79C971 controller. if the fifo does not have enough data to complete the full 18 cycles, the arbiter will switch after all of the data has been written or read. this under uti- lization occurs only at the end of a packet. the most significant address byte ebua_eba[7:0] is registered into the external ? 374 by assertion of as_eboe the least significant address byte is then toggled on the ebua_eba[7:0] throughout the remain- der of the read/write access. the data word is made up of the most significant data byte ebda[15:8], and the least significant data byte ebd[7:0]. eramcs is con- nected to the ce /cs chip select of the external sram. as_eboe provides the output enable signal to the sram during read operations. during write operations, the as_eboe is driven high during the remainder of the accesses. ebwe is toggled during sram writes. see figure 52 and figure 53. figure 52. typical sram read operation pci bus interface unit 802.3 mac core expansion bus interface bus rcv fifo mac rcv fifo bus xmt fifo mac xmt fifo buffer management unit fifo control 20550d-54 as_eboe ebua_eba[7:0] ebclk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ebd[15:0] 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 eramcs ebwe 15:8 20550d-55
94 AM79C971 figure 53. typical sram write operation sram interface bandwidth requirements when the ebclk pin is used to drive the expansion bus cycles and external srams are present, the clk_fac (bcr27, bits 2-0) selects the clock factor for the expansion bus clock (ebclk). the expansion bus clock can be divided down by factors of 2 or 4. for maximum throughput capability to support maximum wire rates in a full-duplex 100-mbps network, a 33-mhz clock should be supplied to the ebclk input pin and 15-ns sram devices must be used. for systems with lower throughput requirements, a lower clock fre- quency, along with slower speed sram devices, may be used. in a half-duplex 10-mbps design, an ebclk frequency as low as 2.5 mhz may be used, while still providing sufficient bandwidth on the sram interface to keep up with maximum wire data rates. frequency demands for network operation the minimum supported clock frequency on the ex- pansion bus for normal network operations is 10 mhz. the minimum supported clock frequency on the pci bus for normal network operations is 15 mhz. the pci clock pin can be stopped or run at any frequency, but may give underflows and overflows due to reduced bandwidth. these minimum requirements apply only to 10-mbps half-duplex operation. details of the clock fre- quency and sram depth requirements for typical net- work can be found in the pcnet fast buffer memory performance white paper, pid #20898a . eeprom interface the AM79C971 controller contains a built-in capability for reading and writing to an external serial 93c46 eeprom. this built-in capability consists of an inter- face for direct connection to a 93c46 compatible eeprom, an automatic eeprom read feature, and a user-programmable register that allows direct access to the interface pins. automatic eeprom read operation shortly after the deassertion of the rst pin, the AM79C971 controller will read the contents of the eeprom that is attached to the interface. because of this automatic-read capability of the AM79C971 con- troller, an eeprom can be used to program many of the features of the AM79C971 controller at power-up, allowing system-dependent configuration information to be stored in the hardware, instead of inside the device driver. if an eeprom exists on the interface, the AM79C971 controller will read the eeprom contents at the end of the h_reset operation. the eeprom contents will be serially shifted into a temporary register and then sent to various register locations on board the AM79C971 controller. access to the AM79C971 con- figuration space, the expansion rom or any i/o resource is not possible during the eeprom read op- eration. the AM79C971 controller will terminate any access attempt with the assertion of devsel and stop while trdy is not asserted, signaling to the ini- tiator to disconnect and retry the access at a later time. a checksum verification is performed on the data that is read from the eeprom. if the checksum verification passes, pvalid (bcr19, bit 15) will be set to 1. if the checksum verification of the eeprom data fails, pvalid will be cleared to 0, and the AM79C971 con- troller will force all eeprom-programmable bcr reg- isters back to their h_reset default values. however, the content of the address prom locations (offsets 0h - fh from the i/o or memory mapped i/o base ad- dress) will not be cleared. the 8-bit checksum for the entire 64 bytes of the eeprom should be ffh. if no eeprom is present at the time of the automatic read operation, the AM79C971 controller will recognize this condition and will abort the automatic read opera- tion and clear both the pread and pvalid bits in bcr19. all eeprom-programmable bcr registers will be assigned their default values after h_reset. the content of the address prom locations (offsets 0h - fh from the i/o or memory mapped i/o base ad- dress) will be undefined. as_eboe ebua_eba[7:0] ebclk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ebd[15:0] 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 7:0 eramcs ebwe 15:8 20550d-56 note: ebd[15:0] = ebda[15:8]+ebd[7:0]
AM79C971 95 if the user wishes to modify any of the configuration bits that are contained in the eeprom, then the seven command, data and status bits of bcr19 can be used to write to the eeprom. after writing to the eeprom, the host should set the pread bit of bcr19. this action forces an AM79C971 controller reread of the eeprom so that the new eeprom contents will be loaded into the eeprom-programmable registers on board the AM79C971 controller. (the eeprom-pro- grammable registers may also be reprogrammed di- rectly, but only information that is stored in the eeprom will be preserved at system power-down.) when the pread bit of bcr19 is set, it will cause the AM79C971 controller to ignore further accesses to the AM79C971 configuration space, the expansion rom, or any i/o resource until the completion of the ee- prom read operation. the AM79C971 controller will terminate these access attempts with the assertion of devsel and stop while trdy is not asserted, sig- naling to the initiator to disconnect and retry the access at a later time. eeprom auto-detection the AM79C971 controller uses the eesk/led1 /sfbd pin to determine if an eeprom is present in the sys- tem. at the rising edge of clk during the last clock dur- ing which rst is asserted, the AM79C971 controller will sample the value of the eesk/led1 /sfbd pin. if the sampled value is a 1, then the AM79C971 controller assumes that an eeprom is present, and the ee- prom read operation begins shortly after the rst pin is deasserted. if the sampled value of eesk/led1 / sfbd is a 0, the AM79C971 controller assumes that an external pulldown device is holding the eesk/led1 / sfbd pin low, indicating that there is no eeprom in the system. note that if the designer creates a system that contains an led circuit on the eesk/led1 /sfbd pin, but has no eeprom present, then the eeprom auto-detection function will incorrectly conclude that an eeprom is present in the system. however, this will not pose a problem for the AM79C971 controller, since the checksum verification will fail. direct access to the interface the user may directly access the port through the eeprom register, bcr19. this register contains bits that can be used to control the interface pins. by per- forming an appropriate sequence of accesses to bcr19, the user can effectively write to and read from the eeprom. this feature may be used by a system configuration utility to program hardware configuration information into the eeprom. eeprom-programmable registers the following registers contain configuration informa- tion that will be programmed automatically during the eeprom read operation:  i/o offsets 0h-fh address prom locations  bcr2 miscellaneous configuration  bcr4 led0 status  bcr5 led1 status  bcr6 led2 status  bcr7 led3 status  bcr9 full-duplex control  bcr18 burst and bus control  bcr22 pci latency  bcr23 pci subsystem vendor id  bcr24 pci subsystem id  bcr25 sram size  bcr26 sram boundary  bcr27 sram interface control  bcr32 mii control and status  bcr33 mii address  bcr35 pci vendor id if pread (bcr19, bit 14) and pvalid (bcr19, bit 15) are cleared to 0, then the eeprom read has experi- enced a failure and the contents of the eeprom pro- grammable bcr register will be set to default h_reset values. the content of the address prom locations, however, will not be cleared. note that accesses to the address prom i/o locations do not directly access the address eeprom itself. in- stead, these accesses are routed to a set of shadow registers on board the AM79C971 controller that are loaded with a copy of the eeprom contents during the automatic read operation that immediately follows the h_reset operation. eeprom map the automatic eeprom read operation will access 32 words (i.e., 64 bytes) of the eeprom. the format of the eeprom contents is shown in table 14, beginning with the byte that resides at the lowest eeprom ad- dress. note that the first bit out of any word location in the ee- prom is treated as the msb of the register being pro- grammed. for example, the first bit out of eeprom word location 09h will be written into bcr4, bit 15; the second bit out of eeprom word location 09h will be written into bcr4, bit 14, etc.
96 AM79C971 note: *lowest eeprom address. table 13. eeprom content word address byte addr. most significant byte byte addr. least significant byte 00h* 01h 2nd byte of the iso 8802-3 (ieee/ansi 802.3) station physical address for this node 00h first byte of the iso 8802-3 (ieee/ansi 802.3) station physical address for this node, where ? first byte ? refers to the first byte to appear on the 802.3 medium 01h 03h 4th byte of the node address 02h 3rd byte of the node address 02h 05h 6th byte of the node address 04h 5th byte of the node address 03h 07h reserved location: must be 00h 06h reserved location must be 00h 04h 09h hardware id: must be 11h if compatibility to amd drivers is desired 08h reserved location must be 00h 05h 0bh user programmable space 0ah user programmable space 06h 0dh msb of two-byte checksum, which is the sum of bytes 00h-0bh and bytes 0eh and 0fh 0ch lsb of two-byte checksum, which is the sum of bytes 00h-0bh and bytes 0eh and 0fh 07h 0fh must be ascii ? w ? (57h) if compatibility to amd driver software is desired 0eh must be ascii ? w ? (57h) if compatibility to amd driver software is desired 08h 11h bcr2[15:8] (miscellaneous configuration) 10h bcr2[7:0] (miscellaneous configuration) 09h 13h bcr4[15:8] (link status led) 12h bcr4[7:0] (link status led) 0ah 15h bcr5[15:8] (led1 status) 14h bcr5[7:0] (led1 status) 0bh 17h bcr6[15:8] (led2 status) 16h bcr6[7:0] (led2 status) 0ch 19h bcr7[15:8] (led3 status) 18h bcr7[7:0] (led3 status) 0dh 1bh bcr9[15:8] (full-duplex control) 1ah bcr9[7:0] (full-duplex control) 0eh 1dh bcr18[15:8] (burst and bus control) 1ch bcr18[7:0] (burst and bus control) 0fh 1fh bcr22[15:8] (pci latency) 1eh bcr22[7:0] (pci latency) 10h 21h bcr23[15:8] (pci subsystem vendor id) 20h bcr23[7:0] (pci subsystem vendor id) 11h 23h bcr24[15:8] (pci subsystem id) 22h bcr24[7:0] (pci subsystem id) 12h 25h bcr25[15:8] (sram size) 24h bcr25[7:0] (sram size) 13h 27h bcr26[15:8] (sram boundary) 26h bcr26[7:0] (sram boundary) 14h 29h bcr27[15:8] (sram interface control) 28h bcr27[7:0] (sram interface control) 15h 2bh bcr32[15:8] (mii control and status) 2ah bcr32[7:0] (mii control and status) 16h 2dh bcr33[15:8] (mii address) 2ch bcr33[7:0] (mii address) 17h 2fh bcr35[15:8] (pci vendor id) 2eh bcr35[7:0] (pci vendor id) 18h 31h reserved location must be 00h 30h reserved location must be 00h 19h 33h reserved location must be 00h 32h reserved location must be 00h 1ah 35h reserved location must be 00h 34h reserved location must be 00h 1bh 37h reserved location must be 00h 36h reserved location must be 00h 1ch 39h reserved location must be 00h 38h reserved location must be 00h 1dh 3bh reserved location must be 00h 3ah reserved location must be 00h 1eh 3dh reserved location must be 00h 3ch reserved location must be 00h 1fh 3fh checksum adjust byte for the 64 bytes of the eeprom contents, checksum of the 64 bytes of the eeprom should total to ffh 3eh reserved location must be 00h
AM79C971 97 there are two checksum locations within the ee- prom. the first checksum will be used by amd driver software to verify that the iso 8802-3 (ieee/ansi 802.3) station address has not been corrupted. the value of bytes 0ch and 0dh should match the sum of bytes 00h through 0bh and 0eh and 0fh. the second checksum location (byte 3fh) is not a checksum total, but is, instead, a checksum adjustment. the value of this byte should be such that the total checksum for the entire 64 bytes of eeprom data equals the value ffh. the checksum adjust byte is needed by the AM79C971 controller in order to verify that the eeprom content has not been corrupted. led support the AM79C971 controller can support up to four leds. led outputs led0 , led1 , and led2 allow for direct connection of an led and its supporting pullup device. in applications that want to use the pin to drive an led and also have an eeprom, it might be necessary to buffer the led3 circuit from the eeprom connection. when an led circuit is directly connected to the eedo/led3 /srd pin, then it is not possible for most eeprom devices to sink enough i ol to maintain a valid low level on the eedo input to the AM79C971 control- ler. each led can be programmed through a bcr register to indicate one or more of the following network status or activities: collision status, full-duplex link status, half-duplex link status, jabber status, receive match, receive polarity, receive status, magic packet, disable transceiver, mii enable status, and transmit status. the led pins can be configured to operate in either open-drain mode (active low) or in totem-pole mode (active high). the output can be stretched to allow the human eye to recognize even short events that last only several microseconds. after h_reset, the four led outputs are configured as shown in table 14: table 14. led default configuration for each led register, each of the status signals is and ? d with its enable signal, and these signals are all or ? d together to form a combined status signal. each led pin combined status signal can be programmed to run to a pulse stretcher, which consists of a 3-bit shift register clocked at 38 hz (26 ms). the data input of each shift register is normally at logic 0. the or gate output for each led register asynchronously sets all three bits of its shift register when the output becomes asserted. the inverted output of each shift register is used to control an led pin. thus, the pulse stretcher provides 2 to 3 clocks of stretched led output, or 52 ms to 78 ms. see figure 54. figure 54. led control logic power savings modes sleep mode the AM79C971 controller supports two hardware power savings modes. both are entered by driving the sleep pin low and by leaving the mpmode (csr 5, bit 1) bit at its default value of 0. the power down mode that yields the most power sav- ings is called, coma mode . in coma mode, the entire device is shut down. all inputs are ignored except the sleep pin itself. coma mode is enabled when awake (bcr2, bit 2) is at its default value of 0 and sleep is asserted. the second power saving mode is called, snooze mode . in snooze mode, enabled by setting awake to 1 and driving the sleep pin low, the t-mau receive led output indication driver mode pulse stretch led0 link status open drain - active low enabled led1 receive status open drain - active low enabled led2 receive polarity open drain - active low enabled led3 transmit status open drain - active low enabled col cole fdls fdlse jab jabe lnkst lnkse rcv rcve rcvm rcvme rxpol rxpole xmt xmte to pulse stretcher ledctrl.eps mii_sel miise mr_speed_sel 100e mps mpse lnkst dxcvrctl 20550d-57
98 AM79C971 circuitry will remain active even while the sleep pin is driven low. all other sections of the device are shut down except the led0 pin, the only led pin that con- tinues to function, just as in normal operation. the lnkste bit must be set in bcr4 to enable indication of a good 10base-t link if there are link beat pulses or valid frames present. once the t-mau has a good link, led0 will be active. this led0 pin can be used to drive an led and/or external hardware that directly controls the sleep pin of the AM79C971 controller. in the case of driving external hardware, it can be used to tell an external sleep control logic to drive the sleep pin high to bring the AM79C971 controller out of the snooze mode. this configuration effectively wakes the system when there is any activity on the 10base-t link. snooze mode can be used only if the t-mau is the selected network port. link beat pulses are not trans- mitted during snooze mode. sleep must not be asserted while the AM79C971 controller is requesting the bus or while a bus cycle is active. it is recommended to set the AM79C971 con- troller into suspend mode (spnd (csr5, bit 0) set to 1) or to stop the device (stop (csr0, bit 2) set to 1) be- fore asserting the sleep pin. before the sleep mode is invoked, the AM79C971 con- troller will perform an internal s_reset. this s_reset operation will not affect the values of the bcr registers or the pci configuration space. s_reset terminates all network activity abruptly. the host can use the suspend mode (spnd, csr5, bit 0) to terminate all network activity in an orderly sequence before issuing an s_reset. when coming out of the sleep mode, the AM79C971 controller can be programmed to generate an interrupt and inform the driver about the wake-up. the AM79C971 controller will set slpint (csr5, bit 9), when coming out of the sleep mode. inta will be as- serted, when the enable bit slpinte (csr5, bit 8) is set to 1. note that the assertion of inta due to slpint is not dependent on the main interrupt enable bit inea (csr0, bit 6), which will be cleared by the reset going into the sleep mode. the sleep pin should not be asserted during power supply ramp-up. if it is desired that sleep be asserted at power up time, then the system must delay the as- sertion of sleep until three clock cycles after comple- tion of a hardware reset operation. magic packet mode magic packet mode is enabled by performing three steps. first, the AM79C971 controller must be put into suspend mode (see description of csr5, bit 0), allow- ing any current network activity to finish. next, mp- mode (csr5, bit 1) must be set to 1 if it has not been set already. finally, either sleep must be asserted (hardware control) or mpen (csr5, bit 2) must be set to 1 (software control). note that fastspnde (csr7, bit 15) has no meaning in magic packet mode. in magic packet mode, the AM79C971 controller re- mains fully powered up (all vdd and vddb pins must remain at their supply levels). the device will not gen- erate any bus master transfers. no transmit operations will be initiated on the network. the device will continue to receive frames from the network, but all frames will be automatically flushed from the receive fifo. slave accesses to the AM79C971 controller are still possible. the magic packet mode can be disabled at any time by deasserting sleep or clearing mpen. a magic packet frame is a frame that is addressed to the AM79C971 mac and contains a data sequence in its data field made up of 16 repetitions of the physical addresses (padr[47:0]). the AM79C971 controller will search incoming frames until it finds a magic packet frame. it starts scanning for the sequence after pro- cessing the length field of the frame. the data se- quence can begin anywhere in the data field of the frame, but must be detected before the AM79C971 controller reaches the frame ? s fcs field. any deviation of the incoming frame ? s data sequence from the re- quired physical address sequence, even by a single bit, will prevent the detection of that frame as a magic packet frame. the AM79C971 controller supports two different modes of address detection for a magic packet frame. if mpplba (csr5, bit 5) is at its default value of 0, the AM79C971 controller will only detect a magic packet frame if the destination address of the frame matches the content of the physical address register (padr). if mpplba is set to 1, the destination address of the magic packet frame can be unicast, multicast or broad- cast. note that the setting of mpplba only effects the address detection of the magic packet frame. the magic packet frame ? s data sequence must be made up of 16 repetitions of the physical addresses (padr[47:0]), regardless of what kind of destination address it has. when the AM79C971 controller detects a magic packet frame, it sets mpint (csr5, bit 4) to 1. if inea (csr0, bit 6) and mpinte (csr5, bit 3) are set to 1, inta will be asserted. the interrupt signal can be used wake up the system. as an alternative, one of the four led pins can be programmed to indicated that a magic packet frame has been received. mpse (bcr4-7, bit 9) must be set to 1 and the rcve (bcr4-7, bit 2) must be set to 0 to enable that function. note that the polarity of the led pin can be programmed to be active high by setting ledpol (bcr4-7, bit 14) to 1. once a magic packet frame is detected, the AM79C971 controller will discard the frame internally, but will not resume normal transmit and receive opera- tions until sleep is deasserted, or mpen is cleared,
AM79C971 99 disabling magic packet mode. once either of these events has occurred indicating that the system has de- tected the assertion of inta or an led pin and is now awake , the controller will continue polling the receive and transmit descriptor rings where it left off. re-initial- ization should not be performed. if the part is re-initial- ized, then the descriptor locations will be reset also, and the AM79C971 controller will not start where it left off. if magic packet mode is disabled by the deassertion of sleep , then in order to immediately re-enable magic packet mode, the sleep pin must remain deasserted for at least 200 ns before it is reasserted. if magic packet mode is disabled by clearing mpen, then it may be immediately re-enabled by setting mpen back to 1. the pci bus interface clock (clk) is not required to be running. both inta and the led pins may be used to indicate the receipt of a magic packet frame when the clk is stopped. if the system wishes to stop the clk, it should do so after enabling the magic packet mode. the clock should be restarted before magic packet mode is disabled if mpen is being cleared, or the clock must be restarted right after magic packet mode is dis- abled if sleep is being deasserted. otherwise, the re- ceive fifo may overflow if new frames arrive. the network clock (xtal) must continue running at all times while in magic packet mode. caution: to prevent unwanted interrupts from other active parts of the AM79C971 controller, care must be taken to mask all likely interruptible events during magic packet mode. an example would be the inter- rupts from the mii which operate while in magic packet mode. ieee 1149.1 (1990) test access port interface an ieee 1149.1-compatible boundary scan test ac- cess port is provided for board-level continuity test and diagnostics. all digital input, output, and input/output pins are tested. analog pins, including the aui differen- tial driver (do ) and receivers (di , ci ), and the crys- tal input (xtal1/xtal2) pins are tested. the t-mau drivers txd , txp , and receiver rxd are also tested. the following is a brief summary of the ieee 1149.1-compatible test functions implemented in the AM79C971 controller. boundary scan circuit the boundary scan test circuit requires four pins (tck, tms, tdi, and tdo), defined as the test access port (tap). it includes a finite state machine (fsm), an instruction register, a data register array, and a power- on reset circuit. internal pull-up resistors are provided for the tdi, tck, and tms pins. the boundary scan circuit remains active during sleep mode. tap finite state machine the tap engine is a 16-state finite state machine (fsm), driven by the test clock (tck), and the test mode select (tms) pins. an independent power-on reset circuit is provided to ensure that the fsm is in the test_logic_reset state at power-up. therefore, the trst is not provided. the fsm is also reset when tms and tdi are high for five tck periods. supported instructions in addition to the minimum ieee 1149.1 requirements (bypass, extest, and sample instructions), three additional instructions (idcode, tribyp, and set- byp) are provided to further ease board-level testing. all unused instruction codes are reserved. see table 15 for a summary of supported instructions. instruction register and decoding logic after the tap fsm is reset, the idcode instruction is always invoked. the decoding logic gives signals to control the data flow in the data registers according to the current instruction. boundary scan register each boundary scan register (bsr) cell has two stages. a flip-flop and a latch are used for the serial shift stage and the parallel output stage, respectively. there are four possible operation modes in the bsr cell shown in table 16. table 15. ieee 1149.1 supported instruction summary instruc- tion name instruc- tion code description mode selected data register extest 0000 external test te s t bsr idcode 0001 id code inspection normal id reg sample 0010 sample boundary normal bsr tribyp 0011 force float normal bypass setbyp 0100 control boundary to 1/0 te s t bypass bypass 1111 bypass scan normal bypass table 16. bsr mode of operation 1 capture 2 shift 3 update 4 system function
100 AM79C971 other data registers other data registers are the following: 1. bypass register (1 bit) 2. device id register (32 bits) (table 17). the contents of the device id register is the same as the contents of csr88. nand tree testing the AM79C971 controller provides a nand tree test mode to allow checking connectivity to the device on a printed circuit board. the nand tree is built on all pci bus, mii, and led signals. nand tree testing is enabled by asserting rst . the re- sult of the nand tree test can be observed on the inta pin. see figure 55. pin 143 (rst ) is the first input to the nand tree. pin 145 (clk) is the second input to the nand tree, fol- lowed by pin 147 (gnt ). all other pci bus, expansion bus, mii, led signals follow, counterclockwise, with pin 136 (eecs) being the last. pins labeled nc, analog in- terfaces, and all power supply pins are not part of the nand tree. table 18 shows the complete list of pins connected to the nand tree. rst must be asserted low to start a nand tree test sequence. initially, all nand tree inputs except rst should be driven high. this will result in a high output at the inta pin. if the nand tree inputs are driven from high to low in the same order as they are connected to build the nand tree, inta will toggle every time an ad- ditional input is driven low. inta will change to low, when clk is driven low and all other nand tree inputs stay high. inta will toggle back to high, when gnt is additionally driven low. the square wave will continue until all nand tree inputs are driven low. inta will be high, when all nand tree inputs are driven low. see figure 56. note: some of the pins connected to the nand tree are outputs in normal mode of operation. they must not be driven from an external source until the AM79C971 controller is configured for nand tree testing. figure 55. nand tree circuitry table 17. device id register bits 31-28 version bits 27-12 part number (0010 0110 0010 0011) bits 11-1 manufacturer id. the 11 bit manufacturer id cod for amd is 00000000001 in accordance with jedec publication 106-a. bit 0 always a logic 1 AM79C971 core rst (pin143) clk (pin 145) vdd gnt (pin 147) eecs (pin 136) inta (pin 142) b a s mux o .... inta 20550d-58
AM79C971 101 figure 56. nand tree waveform rst clk gnt req ad[31:0] c/be[3:0] idsel frame irdy trdy devsel stop perr serr par inta ffffffff 31 0000ffff f 7 ... ... ... 20550d-59 table 18. nand tree pin sequence nand tree input no. pin no. name nand tree input no. pin no. name nand tree input no. pin no. name 1 143 rst 25 16 irdy 49 47 ad0 2 145 clk 26 17 trdy 50 79 crs 3 147 gnt 27 18 devsel 51 80 col 4 148 req 28 19 stop 52 81 txd3 5 149 ad31 29 21 perr 53 90 txd2 6 151 ad30 30 22 serr 54 91 txd1 7 152 ad29 31 24 pa r 55 92 txd0 8 153 ad28 32 25 c/be 1 56 94 tx_en 9 154 ad27 33 26 ad15 57 95 tx_clk 10 155 ad26 34 28 ad14 58 96 tx_er 11 157 ad25 35 29 ad13 59 98 rx_er 12 159 c/be 3 36 29 ad12 60 99 rx_clk 13 160 ad24 37 31 ad11 61 100 rx_dv 14 1 idsel 38 32 ad10 62 102 rxd0 15 3 ad23 39 34 ad9 63 103 rxd1 16 4 ad22 40 35 ad8 64 104 rxd2 17 6 ad21 41 37 c/be 0 65 105 rxd3 18 7 ad20 42 38 ad7 66 106 sleep /ear 19 9 ad19 43 39 ad6 67 108 mdio 20 10 ad18 44 41 ad5 68 131 eedo/led3 /srd 21 12 ad17 45 42 ad4 69 132 eedi/led0 22 13 ad16 46 43 ad3 70 133 led2 /srdclk 23 14 c/be 2 47 44 ad2 71 134 eesk/led1 /sfbd 24 15 frame 48 46 ad1 72 136 eecs
102 AM79C971 reset there are three different types of reset operations that may be performed on the AM79C971 device, h_reset, s_reset, and stop. the following is a de- scription of each type of reset operation. h_reset hardware reset (h_reset) is an AM79C971 reset operation that has been created by the proper asser- tion of the rst pin of the AM79C971 device. when the minimum pulse width timing as specified in the rst pin description has been satisfied, then an internal reset operation will be performed. h_reset will program most of the csr and bcr reg- isters to their default value. note that there are several csr and bcr registers that are undefined after h_reset. see the sections on the individual registers for details. h_reset will clear all registers in the pci configura- tion space. h_reset will cause the microcode pro- gram to jump to its reset state. following the end of the h_reset operation, the AM79C971 controller will at- tempt to read the eeprom device through the ee- prom interface. h_reset resets the t-mau into the link fail state. h_reset will clear dwio (bcr18, bit 7) and the AM79C971 controller will be in 16-bit i/o mode after the reset operation. a dword write operation to the rdp (i/o offset 10h) must be performed to set the de- vice into 32-bit i/o mode. s_reset software reset (s_reset) is an AM79C971 reset op- eration that has been created by a read access to the reset register, which is located at offset 14h in word i/o mode or offset 18h in dword i/o mode from the AM79C971 i/o or memory mapped i/o base address. s_reset will reset all of or some portions of csr0, 3, 4, 15, 80, 100, and 124 to default values. for the iden- tity of individual csrs and bit locations that are af- fected by s_reset, see the individual csr register descriptions. s_reset will not affect any pci configu- ration space location. s_reset will not affect any of the bcr register values. s_reset will cause the mi- crocode program to jump to its reset state. following the end of the s_reset operation, the AM79C971 controller will not attempt to read the eeprom device. s_reset does not affect the status of the t-mau. after s_reset, the host must perform a full re-initial- ization of the AM79C971 controller before starting net- work activity. s_reset will cause req to deassert immediately. stop (csr0, bit 2) or spnd (csr5, bit 0) can be used to terminate any pending bus master- ship request in an orderly sequence. s_reset terminates all network activity abruptly. the host can use the suspend mode (spnd, csr5, bit 0) to terminate all network activity in an orderly sequence before issuing an s_reset. stop a stop reset is generated by the assertion of the stop bit in csr0. writing a 1 to the stop bit of csr0, when the stop bit currently has a value of 0, will initiate a stop reset. if the stop bit is already a 1, then writing a 1 to the stop bit will not generate a stop reset. stop will reset all or some portions of csr0, 3, and 4 to default values. for the identity of individual csrs and bit locations that are affected by stop, see the individ- ual csr register descriptions. stop will not affect any of the bcr and pci configuration space locations. stop will cause the microcode program to jump to its reset state. following the end of the stop operation, the AM79C971 controller will not attempt to read the eeprom device. setting the stop bit does not affect the t-mau. note: stop will not cause a deassertion of the req signal, if it happens to be active at the time of the write to csr0. the AM79C971 controller will wait until it gains bus ownership and it will first finish all scheduled bus master accesses before the stop reset is exe- cuted. stop terminates all network activity abruptly. the host can use the suspend mode (spnd, csr5, bit 0) to ter- minate all network activity in an orderly sequence before setting the stop bit. software access pci configuration registers the AM79C971 controller implements a 256-byte con- figuration space as defined by the pci specification revision 2.1. the 64-byte header includes all registers required to identify the AM79C971 controller and its function. additional registers are used to setup the con- figuration of the AM79C971 controller in a system. none of the device specific registers located at offsets 40h through fch are implemented. the layout of the AM79C971 pci configuration space is shown in table 19. the pci configuration registers are accessible only by configuration cycles. all multi-byte numeric fields follow little endian byte ordering. all write accesses to re- served locations have no effect; reads from these loca- tions will return a data value of 0.
AM79C971 103 table 19. pci configuration space layout i/o resources the AM79C971 controller requires 32 bytes of address space for access to all the various internal registers as well as to some setup information stored in an external serial eeprom. a software reset port is available, too. the AM79C971 controller supports mapping the ad- dress space to both i/o and memory space. the value in the pci i/o base address register determines the start address of the i/o address space. the register is typically programmed by the pci configuration utility after system power-up. the pci configuration utility must also set the ioen bit in the pci command regis- ter to enable i/o accesses to the AM79C971 controller. for memory mapped i/o access, the pci memory mapped i/o base address register controls the start address of the memory space. the memen bit in the pci command register must also be set to enable the mode. both base address registers can be active at the same time. the AM79C971 controller supports two modes for ac- cessing the i/o resources. for backwards compatibility with amd ? s 16-bit ethernet controllers, word i/o is the default mode after power up. the device can be config- ured to dword i/o mode by software. i/o registers the AM79C971 controller registers are divided into two groups. the control and status registers (csr) are used to configure the ethernet mac engine and to ob- tain status information. the bus control registers (bcr) are used to configure the bus interface unit and the leds. both sets of registers are accessed using in- direct addressing. the csr and bcr share a common register address port (rap). there are, however, separate data ports. the register data port (rdp) is used to access a csr. the bcr data port (bdp) is used to access a bcr. in order to access a particular csr location, the rap should first be written with the appropriate csr ad- dress. the rdp will then point to the selected csr. a read of the rdp will yield the selected csr data. a write to the rdp will write to the selected csr. in order to access a particular bcr location, the rap should first be written with the appropriate bcr address. the bdp will then point to the selected bcr. a read of the bdp will yield the selected bcr data. a write to the bdp will write to the selected bcr. once the rap has been written with a value, the rap value remains unchanged until another rap write oc- curs, or until an h_reset or s_reset occurs. rap is cleared to all 0s when an h_reset or s_reset oc- curs. rap is unaffected by setting the stop bit. address prom space the AM79C971 controller allows for connection of a serial eeprom. the first 16 bytes of the eeprom will be automatically loaded into the address prom (aprom) space after h_reset. the address prom space is a convenient place to store the value of the 48- 31 24 23 16 15 8 7 0 offset device id vendor id 00h status command 04h base-class sub-class programming if revision id 08h reserved header type latency timer reserved 0ch i/o base address 10h memory mapped i/o base address 14h reserved 18h reserved 1ch reserved 20h reserved 24h reserved 28h subsystem id subsystem vendor id 2ch expansion rom base address 30h reserved 34h reserved 38h max_lat min_gnt interrupt pin interrupt line 3ch reserved 40h reserved . . reserved fch
104 AM79C971 bit ieee station address. it can be overwritten by the host computer and its content has no effect on the op- eration of the controller. the software must copy the station address from the address prom space to the initialization block or to csr12-14 in order for the re- ceiver to accept unicast frames directed to this station. the six bytes of the ieee station address occupy the first six locations of the address prom space. the next six bytes are reserved. bytes 12 and 13 should match the value of the checksum of bytes 1 through 11 and 14 and 15. bytes 14 and 15 should each be ascii ? w ? (57h). the above requirements must be met in order to be compatible with amd driver software. apromwe bit (bcr2, bit 8) must be set to 1 to enable write access to the address prom space. reset register a read of the reset register creates an internal soft- ware reset (s_reset) pulse in the AM79C971 control- ler. the internal s_reset pulse that is generated by this access is different from both the assertion of the hardware rst pin (h_reset) and from the assertion of the software stop bit. specifically, s_reset is the equivalent of the assertion of the rst pin (h_reset) except that s_reset has no effect on the bcr or pci configuration space locations or on the t-mau. the ne2100 lance-based family of ethernet cards requires that a write access to the reset register fol- lows each read access to the reset register. the AM79C971 controller does not have a similar require- ment. the write access is not required and does not have any effect. note: the AM79C971 controller cannot service any slave accesses for a very short time after a read access of the reset register, because the internal s_reset operation takes about 1 s to finish. the AM79C971 controller will terminate all slave accesses with the as- sertion of devsel and stop while trdy is not as- serted, signaling to the initiator to disconnect and retry the access at a later time. word i/o mode after h_reset, the AM79C971 controller is pro- grammed to operate in word i/o mode. dwio (bcr18, bit 7) will be cleared to 0. it will then be loaded by the value in the eeprom. table 20 shows how the 32 bytes of address space are used in word i/o mode. all i/o resources must be accessed in word quantities and on word addresses. the address prom locations can also be read in byte quantities. the only allowed dword operation is a write access to the rdp, which switches the device to dword i/o mode. a read access other than listed in the table below will yield undefined data, a write operation may cause unexpected repro- gramming of the AM79C971 control registers. table 20 shows legal i/o accesses in word i/o mode. double word i/o mode after h_reset, the AM79C971 controller is pro- grammed to operate in word i/o mode. dwio (bcr18, bit 7) will be cleared to 0. it will then be loaded by the value in the eeprom. table 20 shows how the 32 bytes of address space are used in word i/o mode. all i/o resources must be accessed in word quantities and on word addresses. the address prom locations can also be read in byte quantities. the only allowed dword operation is a write access to the rdp, which switches the device to dword i/o mode. a read access other than listed in the table below will yield undefined data, a write operation may cause unexpected repro- gramming of the AM79C971 control registers. table 23 shows legal i/o accesses in word i/o mode. double word i/o mode the AM79C971 controller can be configured to operate in dword (32-bit) i/o mode. the software can invoke the dwio mode by performing a dword write access to the i/o location at offset 10h (rdp). the data of the write access must be such that it does not affect the in- tended operation of the AM79C971 controller. setting the device into 32-bit i/o mode is usually the first oper- ation after h_reset or s_reset. the rap register will point to csr0 at that time. writing a value of 0 to csr0 is a safe operation. dwio (bcr18, bit 7) will be set to 1 as an indication that the AM79C971 controller operates in 32-bit i/o mode. table 20. i/o map in word i/o mode (dwio = 0) offset no. of bytes register 00h - 0fh 16 aprom 10h 2 rdp 12h 2 rap (shared by rdp and bdp) 14h 2 reset register 16h 2 bdp 18h - 1fh 8 reserved table 21. i/o map in word i/o mode (dwio = 0) offset no. of bytes register 00h - 0fh 16 aprom 10h 2 rdp 12h 2 rap (shared by rdp and bdp) 14h 2 reset register 16h 2 bdp 18h - 1fh 8 reserved
AM79C971 105 the dwio mode can be configured from the eeprom or programmed by the software. note: even though the i/o resource mapping changes when the i/o mode setting changes, the rdp location offset is the same for both modes. once the dwio bit has been set to 1, only h_reset or a read of eeprom can clear it to 0. the dwio mode setting is unaffected by setting the stop bit. table 24 shows how the 32 bytes of address space are used in dword i/o mode. all i/o resources must be accessed in dword quanti- ties and on dword addresses. a read access other than listed in table 25 will yield undefined data, a write operation may cause unexpected reprogramming of the AM79C971 control registers after h_reset, the AM79C971 controller is pro- grammed to operate in word i/o mode. dwio (bcr18, bit 7) will be cleared to 0. it will then be loaded by the value in the eeprom. table 20 shows how the 32 bytes of address space are used in word i/o mode. all i/o resources must be accessed in word quantities and on word addresses. the address prom locations can also be read in byte quantities. the only allowed dword operation is a write access to the rdp, which switches the device to dword i/o mode. a read access other than listed in the table below will yield undefined data, a write operation may cause unexpected repro- gramming of the AM79C971 control registers. table 23 shows legal i/o accesses in word i/o mode . double word i/o mode the AM79C971 controller can be configured to operate in dword (32-bit) i/o mode. the software can invoke the dwio mode by performing a dword write access to the i/o location at offset 10h (rdp). the data of the write access must be such that it does not affect the in- tended operation of the AM79C971 controller. setting the device into 32-bit i/o mode is usually the first oper- ation after h_reset or s_reset. the rap register will point to csr0 at that time. writing a value of 0 to csr0 is a safe operation. dwio (bcr18, bit 7) will be set to 1 as an indication that the AM79C971 controller operates in 32-bit i/o mode. the dwio mode can be configured from the eeprom or programmed by the software. note: even though the i/o resource mapping changes when the i/o mode setting changes, the rdp location offset is the same for both modes. once the dwio bit has been set to 1, only h_reset or a read of eeprom can clear it to 0. the dwio mode setting is unaffected by setting the stop bit. table 24 shows how the 32 bytes of address space are used in dword i/o mode. all i/o resources must be accessed in dword quanti- ties and on dword addresses. a read access other than listed in table 25 will yield undefined data, a write operation may cause unexpected reprogramming of the AM79C971 control registers table 22. i/o map in word i/o mode (dwio = 0) offset no. of bytes register 00h - 0fh 16 aprom 10h 2 rdp 12h 2 rap (shared by rdp and bdp) 14h 2 reset register 16h 2 bdp 18h - 1fh 8 reserved
106 AM79C971 table 24. i/o map in dword i/o mode (dwio = 1) table 25. legal i/o accesses in double word i/o mode (dwio =1) user accessible registers the AM79C971 controller has three types of user reg- isters: the pci configuration registers, the control and status registers (csr), and the bus control registers (bcr). the AM79C971 controller implements all pcnet-isa (am79c960) registers, all c-lance (am79c90) regis- ters, plus a number of additional registers. the AM79C971 controller csrs are compatible upon power up with both the pcnet-isa csrs and all of the c-lance csrs. the pci configuration registers can be accessed in any data width. all other registers must be accessed ac- cording to the i/o mode that is currently selected. when wio mode is selected, all other register loca- tions are defined to be 16 bits in width. when dwio mode is selected, all these register locations are de- fined to be 32 bits in width, with the upper 16 bits of most register locations marked as reserved locations with undefined values. when performing register write operations in dwio mode, the upper 16 bits should al- ways be written as zeros. when performing register read operations in dwio mode, the upper 16 bits of i/ o resources should always be regarded as having un- defined values, except for csr88. the AM79C971 registers can be divided into four groups: pci configuration, setup, running, and test. registers not included in any of these categories can be assumed to be intended for diagnostic purposes. table 23. legal i/o accesses in word i/o mode (dwio = 0) ad[4:0] be [3:0] type comment 0xx00 1110 rd byte read of aprom location 0h, 4h, 8h or ch 0xx01 1101 rd byte read of aprom location 1h, 5h, 9h or dh 0xx10 1011 rd byte read of aprom location 2h, 6h, ah or eh 0xx11 0111 rd byte read of aprom location 3h, 7h, bh or fh 0xx00 1100 rd word read of aprom locations 1h (msb) and 0h (lsb), 5h and 4h, 8h and 9h or ch and dh 0xx10 0011 rd word read of aprom locations 3h (msb) and 2h (lsb), 7h and 6h, bh and ah or fh and eh 10000 1100 rd word read of rdp 10010 0011 rd word read of rap 10100 1100 rd word read of reset register 10110 0011 rd word read of bdp 0xx00 1100 wr word write to aprom locations 1h (msb) and 0h (lsb), 5h and 4h, 8h and 9h or ch and dh 0xx10 0011 wr word write to aprom locations 3h (msb) and 2h (lsb), 7h and 6h, bh and ah or fh and eh 10000 1100 wr word write to rdp 10010 0011 wr word write to rap 10100 1100 wr word write to reset register 10110 0011 wr word write to bdp 10000 0000 wr dword write to rdp, switches device to dword i/o mode offset no. of bytes register 00h - 0fh 16 aprom 10h 4 rdp 14h 4 rap (shared by rdp and bdp) 18h 4 reset register 1ch 4 bdp ad[4:0] be [3:0] type comment 0xx00 0000 rd dword read of aprom locations 3h (msb) to 0h (lsb), 7h to 4h, bh to 8h or fh to ch 10000 0000 rd dword read of rdp 10100 0000 rd dword read of rap 11000 0000 rd dword read of reset register 11100 0000 rd dword read of bdp 0xx00 0000 wr dword write to aprom locations 3h (msb) to 0h (lsb), 7h to 4h, bh to 8h or fh to ch 10000 0000 wr dword write to rdp 10100 0000 wr dword write to rap 11000 0000 wr dword write to reset register 11100 0000 wr dword write of bdp
AM79C971 107  pci configuration registers these registers are intended to be initialized by the system initialization procedure (e.g., bios device ini- tialization routine) to program the operation of the AM79C971 controller pci bus interface. the following is a list of the registers that would typi- cally need to be programmed once during the initializa- tion of the AM79C971 controller within a system: ? pci i/o base address or memory mapped i/o base address register ? pci expansion rom base address register ? pci interrupt line register ? pci latency timer register ? pci status register ? pci command register  setup registers these registers are intended to be initialized by the de- vice driver to program the operation of various AM79C971 controller features. the following is a list of the registers that would typi- cally need to be programmed once during the setup of the AM79C971 controller within a system. the control bits in each of these registers typically do not need to be modified once they have been written. however, there are no restrictions as to how many times these registers may actually be accessed. note that if the de- fault power up values of any of these registers is ac- ceptable to the application, then such registers need never be accessed at all. note: registers marked with ? ^ ? may be programma- ble through the eeprom read operation and, there- fore, do not necessarily need to be written to by the system initialization procedure or by the driver soft- ware. registers marked with ? * ? will be initialized by the initialization block read operation. csr1 initialization block address[15:0] csr2* initialization block address[31:16] csr3 interrupt masks and deferral control csr4 test and features control csr5 extended control and interrupt csr7 extended control and interrupt2 csr8* logical address filter[15:0] csr9* logical address filter[31:16] csr10* logical address filter[47:32] csr11* logical address filter[63:48] csr12*^ physical address[15:0] csr13*^ physical address[31:16] csr14*^ physical address[47:32] csr15* mode csr24* base address of receive ring lower csr25* base address of receive ring upper csr30* base address of transmit ring lower csr31* base address of transmit ring upper csr47* transmit polling interval csr49* receive polling interval csr76* receive ring length csr78* transmit ring length csr80 dma transfer counter and fifo threshold control csr82 bus activity timer csr100 memory error timeout csr122 receiver packet alignment control csr125^ mac enhanced configuration control bcr2^ miscellaneous configuration bcr4^ led0 status bcr5^ led1 status bcr6^ led2 status bcr7^ led3 status bcr9^ full-duplex control bcr18^ bus and burst control bcr19 eeprom control and status bcr20 software style bcr22^ pci latency bcr23^ pci subsystem vendor id bcr24^ pci subsystem id bcr25^ sram size bcr26^ sram boundary bcr27^ sram interface control bcr32^ mii control and status bcr33^ mii address bcr35^ pci vendor id  running registers these registers are intended to be used by the device driver software after the AM79C971 controller is running to access status information and to pass control infor- mation.
108 AM79C971 the following is a list of the registers that would typically need to be periodically read and perhaps written during the normal running operation of the AM79C971 control- ler within a system. each of these registers contains control bits, or status bits, or both. rap register address port csr0 AM79C971 controller status csr3 interrupt masks and deferral control csr4 test and features control csr5 extended control and interrupt csr7 extended control and interrupt2 csr112 missed frame count csr114 pci status register the following registers are only necessary if an exter- nal phy device is being used and accessed. bcr32 mii control and status bcr33 mii address bcr34 mii management data  test registers these registers are intended to be used only for testing and diagnostic purposes. those registers not included in any of the above lists can be assumed to be intended for diagnostic purposes. pci configuration registers pci vendor id register offset 00h the pci vendor id register is a 16-bit register that iden- tifies the manufacturer of the AM79C971 controller. amd ? s vendor id is 1022h. note that this vendor id is not the same as the manufacturer id in csr88 and csr89. the vendor id is assigned by the pci special interest group. the pci vendor id register is located at offset 00h in the pci configuration space. it is read only. pci device id register offset 02h the pci device id register is a 16-bit register that uniquely identifies the AM79C971 controller within amd's product line. the AM79C971 device id is 2000h. note that this device id is not the same as the part number in csr88 and csr89. the device id is assigned by amd. the device id is the same as the pcnet-pci ii (am79c970a) device. the pci device id register is located at offset 02h in the pci configuration space. it is read only. this register is the same as bcr35 and can be written by the eeprom. pci command register offset 04h the pci command register is a 16-bit register used to control the gross functionality of the AM79C971 con- troller. it controls the AM79C971 controller's ability to generate and respond to pci bus cycles. to logically disconnect the AM79C971 device from all pci bus cy- cles except configuration cycles, a value of 0 should be written to this register. the pci command register is located at offset 04h in the pci configuration space. it is read and written by the host. bit name description 15-10 res reserved locations. read as ze- ros; write operations have no ef- fect. 9 fbtben fast back-to-back enable. read as zero; write operations have no effect. the AM79C971 controller will not generate fast back-to- back cycles. 8 serren serr enable. controls the as- sertion of the serr pin. serr is disabled when serren is cleared. serr will be asserted on detection of an address parity error and if both serren and perren (bit 6 of this register) are set. serren is cleared by h_reset and is not effected by s_reset or by setting the stop bit. 7 res reserved location. read as ze- ros; write operations have no ef- fect. 6 perren parity error response enable. enables the parity error response functions. when perren is 0 and the AM79C971 controller de- tects a parity error, it only sets the detected parity error bit in the pci status register. when per- ren is 1, the AM79C971 control- ler asserts perr on the detection of a data parity error. it also sets the dataperr bit (pci status register, bit 8), when the data parity error occurred during a master cycle. perren also enables reporting address parity
AM79C971 109 errors through the serr pin and the serr bit in the pci status register. perren is cleared by h_reset and is not effected by s_reset or by setting the stop bit. 5 vgasnoopvga palette snoop. read as ze- ro; write operations have no ef- fect. 4 mwien memory write and invalidate cy- cle enable. read as zero; write operations have no effect. the AM79C971 controller only gener- ates memory write cycles. 3 scycen special cycle enable. read as zero; write operations have no ef- fect. the AM79C971 controller ignores all special cycle opera- tions. 2 bmen bus master enable. setting bmen enables the AM79C971 controller to become a bus mas- ter on the pci bus. the host must set bmen before setting the init or strt bit in csr0 of the AM79C971 controller. bmen is cleared by h_reset and is not effected by s_reset or by setting the stop bit. 1 memen memory space access enable. the AM79C971 controller will ig- nore all memory accesses when memen is cleared. the host must set memen before the first memory access to the device. for memory mapped i/o, the host must program the pci mem- ory mapped i/o base address register with a valid memory ad- dress before setting memen. for accesses to the expansion rom, the host must program the pci expansion rom base ad- dress register at offset 30h with a valid memory address before set- ting memen. the AM79C971 controller will only respond to ac- cesses to the expansion rom when both romen (pci expan- sion rom base address register, bit 0) and memen are set to 1. since memen also enables the memory mapped access to the AM79C971 i/o resources, the pci memory mapped i/o base address register must be pro- grammed with an address so that the device does not claim cycles not intended for it. memen is cleared by h_reset and is not effected by s_reset or by setting the stop bit. 0 ioen i/o space access enable. the AM79C971 controller will ignore all i/o accesses when ioen is cleared. the host must set ioen before the first i/o access to the device. the pci i/o base ad- dress register must be pro- grammed with a valid i/o address before setting ioen. ioen is cleared by h_reset and is not effected by s_reset or by setting the stop bit. pci status register offset 06h the pci status register is a 16-bit register that contains status information for the pci bus related events. it is located at offset 06h in the pci configuration space. bit name description 15 perr parity error. perr is set when the AM79C971 controller detects a parity error. the AM79C971 controller sam- ples the ad[31:0], c/be [3:0], and the par lines for a parity error at the following times:  in slave mode, during the ad- dress phase of any pci bus com- mand.  in slave mode, for all i/o, mem- ory and configuration write com- mands that select the AM79C971 controller when data is trans- ferred (trdy and irdy are as- serted).
110 AM79C971  in master mode, during the data phase of all memory read com- mands. in master mode, during the data phase of the memory write com- mand, the AM79C971 controller sets the perr bit if the target re- ports a data parity error by as- serting the perr signal. perr is not effected by the state of the parity error response en- able bit (pci command register, bit 6). perr is set by the AM79C971 controller and cleared by writing a 1. writing a 0 has no effect. perr is cleared by h_reset and is not affected by s_reset or by setting the stop bit. 14 serr signaled serr. serr is set when the AM79C971 controller detects an address parity error and both serren and perren (pci command register, bits 8 and 6) are set. serr is set by the AM79C971 controller and cleared by writing a 1. writing a 0 has no effect. serr is cleared by h_reset and is not affected by s_reset or by setting the stop bit. 13 rmabort received master abort. rm- abort is set when the AM79C971 controller terminates a master cycle with a master abort sequence. rmabort is set by the AM79C971 controller and cleared by writing a 1. writing a 0 has no effect. rmabort is cleared by h_reset and is not affected by s_reset or by set- ting the stop bit. 12 rtabort received target abort. rt- abort is set when a target ter- minates an AM79C971 master cycle with a target abort se- quence. rtabort is set by the AM79C971 controller and cleared by writing a 1. writing a 0 has no effect. rtabort is cleared by h_reset and is not affected by s_reset or by set- ting the stop bit. 11 stabort send target abort. read as ze- ro; write operations have no ef- fect. the AM79C971 controller will never terminate a slave ac- cess with a target abort se- quence. stabort is read only. 10-9 devsel device select timing. devsel is set to 01b (medium), which means that the AM79C971 con- troller will assert devsel two clock periods after frame is as- serted. devsel is read only. 8 dataperr data parity error detected. dataperr is set when the AM79C971 controller is the cur- rent bus master and it detects a data parity error and the parity error response enable bit (pci command register, bit 6) is set. during the data phase of all memory read commands, the AM79C971 controller checks for parity error by sampling the ad[31:0] and c/be [3:0] and the par lines. during the data phase of all memory write commands, the AM79C971 controller checks the perr input to detect whether the target has reported a parity error. dataperr is set by the AM79C971 controller and cleared by writing a 1. writing a 0 has no effect. dataperr is cleared by h_reset and is not affected by s_reset or by set- ting the stop bit. 7 fbtbc fast back-to-back capable. read as one; write operations have no effect. the AM79C971 controller is capable of accepting fast back-to-back transactions with the first transaction address- ing a different target.
AM79C971 111 6-0 res reserved locations. read as ze- ro; write operations have no ef- fect. pci revision id register offset 08h the pci revision id register is an 8-bit register that specifies the AM79C971 controller revision number. the value of this register is 2xh, with the lower four bits being silicon-revision dependent. the initial revision value will be 21h. the pci revision id register is located at offset 08h in the pci configuration space. it is read only. pci programming interface register offset 09h the pci programming interface register is an 8-bit reg- ister that identifies the programming interface of AM79C971 controller. pci does not define any specific register-level programming interfaces for network de- vices. the value of this register is 00h. the pci programming interface register is located at offset 09h in the pci configuration space. it is read only. pci sub-class register offset 0ah the pci sub-class register is an 8-bit register that identifies specifically the function of the AM79C971 controller. the value of this register is 00h which iden- tifies the AM79C971 device as an ethernet controller. the pci sub-class register is located at offset 0ah in the pci configuration space. it is read only. pci base-class register offset 0bh the pci base-class register is an 8-bit register that broadly classifies the function of the AM79C971 con- troller. the value of this register is 02h which classifies the AM79C971 device as a network controller. the pci base-class register is located at offset 0bh in the pci configuration space. it is read only. pci latency timer register offset 0dh the pci latency timer register is an 8-bit register that specifies the minimum guaranteed time the AM79C971 controller will control the bus once it starts its bus mas- tership period. the time is measured in clock cycles. every time the AM79C971 controller asserts frame at the beginning of a bus mastership period, it will copy the value of the pci latency timer register into a counter and start counting down. the counter will freeze at 0. when the system arbiter removes gnt while the counter is non-zero, the AM79C971 controller will continue with its data transfers. it will only release the bus when the counter has reached 0. the pci latency timer is only significant in burst trans- actions, where frame stays asserted until the last data phase. in a non-burst transaction, frame is only asserted during the address phase. the internal la- tency counter will be cleared and suspended while frame is deasserted. all eight bits of the pci latency timer register are pro- grammable. the host should read the AM79C971 pci min_gnt and pci max_lat registers to determine the latency requirements for the device and then initial- ize the latency timer register with an appropriate value. the pci latency timer register is located at offset 0dh in the pci configuration space. it is read and written by the host. the pci latency timer register is cleared by h_reset and is not effected by s_reset or by set- ting the stop bit. pci header type register offset 0eh the pci header type register is an 8-bit register that describes the format of the pci configuration space lo- cations 10h to 3ch and that identifies a device to be single or multi-function. the pci header type register is located at address 0eh in the pci configuration space. it is read only. bit name description 7 funct single-function/multi-function de- vice. read as zero; write opera- tions have no effect. the AM79C971 controller is a single function device. 6-0 layout pci configuration space layout. read as zeros; write operations have no effect. the layout of the pci configuration space loca- tions 10h to 3ch is as shown in the table at the beginning of this section. pci i/o base address register offset 10h the pci i/o base address register is a 32-bit register that determines the location of the AM79C971 i/o re- sources in all of i/o space. it is located at offset 10h in the pci configuration space. bit name description 31-5 iobase i/o base address most significant 27 bits. these bits are written by the host to specify the location of the AM79C971 i/o resources in
112 AM79C971 all of i/o space. iobase must be written with a valid address be- fore the AM79C971 controller slave i/o mode is turned on by setting the ioen bit (pci com- mand register, bit 0). when the AM79C971 controller is enabled for i/o mode (ioen is set), it monitors the pci bus for a valid i/o command. if the value on ad[31:5] during the address phase of the cycles matches the value of iobase, the AM79C971 controller will drive devsel indi- cating it will respond to the ac- cess. iobase is read and written by the host. iobase is cleared by h_reset and is not affected by s_reset or by setting the stop bit. 4-2 iosize i/o size requirements. read as zeros; write operations have no effect. iosize indicates the size of the i/o space the AM79C971 control- ler requires. when the host writes a value of ffff ffffh to the i/o base address register, it will read back a value of 0 in bits 4-2. that indicates an AM79C971 i/o space requirement of 32 bytes. 1 res reserved location. read as zero; write operations have no effect. 0 iospace i/o space indicator. read as one; write operations have no effect. indicating that this base address register describes an i/o base address. pci memory mapped i/o base address register offset 14h the pci memory mapped i/o base address register is a 32-bit register that determines the location of the AM79C971 i/o resources in all of memory space. it is located at offset 14h in the pci configuration space. bit name description 31-5 membase memory mapped i/o base ad- dress most significant 27 bits. these bits are written by the host to specify the location of the AM79C971 i/o resources in all of memory space. membase must be written with a valid address before the AM79C971 controller slave memory mapped i/o mode is turned on by setting the me- men bit (pci command register, bit 1). when the AM79C971 controller is enabled for memory mapped i/o mode (memen is set), it mon- itors the pci bus for a valid mem- ory command. if the value on ad[31:5] during the address phase of the cycles matches the value of membase, the AM79C971 controller will drive devse l indicating it will respond to the access. membase is read and written by the host. membase is cleared by h_reset and is not affected by s_reset or by setting the stop bit. 4 memsize memory mapped i/o size re- quirements. read as zeros; write operations have no effect. memsize indicates the size of the memory space the AM79C971 controller requires. when the host writes a value of ffff ffffh to the memory mapped i/o base address regis- ter, it will read back a value of 0 in bit 4. that indicates a AM79C971 memory space requirement of 32 bytes. 3 prefetch prefetchable. read as zero; write operations have no effect. indi- cates that memory space con- trolled by this base address register is not prefetchable. data in the memory mapped i/o space cannot be prefetched. because one of the i/o resources in this address space is a reset regis- ter, the order of the read access- es is important. 2-1 type memory type indicator. read as zeros; write operations have no effect. indicates that this base ad- dress register is 32 bits wide and
AM79C971 113 mapping can be done anywhere in the 32-bit memory space. 0 memspace memory space indicator. read as zero; write operations have no effect. indicates that this base ad- dress register describes a memo- ry base address. pci subsystem vendor id register offset 2ch the pci subsystem vendor id register is a 16-bit reg- ister that together with the pci subsystem id uniquely identifies the add-in card or subsystem the AM79C971 controller is used in. subsystem vendor ids can be ob- tained from the pci sig. a value of 0 (the default) indi- cates that the AM79C971 controller does not support subsystem identification. the pci subsystem vendor id is an alias of bcr23, bits 15-0. it is programmable through the eeprom. the pci subsystem vendor id register is located at off- set 2ch in the pci configuration space. it is read only. pci subsystem id register offset 2eh the pci subsystem id register is a 16-bit register that together with the pci subsystem vendor id uniquely identifies the add-in card or subsystem the AM79C971 controller is used in. the value of the subsystem id is up to the system vendor. a value of 0 (the default) indi- cates that the AM79C971 controller does not support subsystem identification. the pci subsystem id is an alias of bcr24, bits 15-0. it is programmable through the eeprom. the pci subsystem id register is located at offset 2eh in the pci configuration space. it is read only. pci expansion rom base address register offset 30h the pci expansion rom base address register is a 32-bit register that defines the base address, size and address alignment of an expansion rom. it is located at offset 30h in the pci configuration space. bit name description 31-20 rombase expansion rom base address most significant 12 bits. these bits are written by the host to specify the location of the expan- sion rom in all of memory space. rombase must be written with a valid address before the AM79C971 expansion rom ac- cess is enabled by setting romen (pci expansion rom base address register, bit 0) and memen (pci command register, bit 1). since the 12 most significant bits of the base address are program- mable, the host can map the ex- pansion rom on any 1m boundary. when the AM79C971 controller is enabled for expansion rom access (romen and memen are set to 1), it monitors the pci bus for a valid memory com- mand. if the value on ad[31:2] during the address phase of the cycle falls between rombase and rombase + 1m - 4, the AM79C971 controller will drive devsel indicating it will respond to the access. rombase is read and written by the host. rombase is cleared by h_reset and is not affected by s_reset or by setting the stop bit. 19-1 romsize rom size. read as zeros; write operation have no effect. rom- size indicates the maximum size of the expansion rom the AM79C971 controller can sup- port. the host can determine the expansion rom size by writing ffff ffffh to the expansion rom base address register. it will read back a value of 0 in bit 19-1, indicating an expansion rom size of 1m. note that romsize only speci- fies the maximum size of expan- sion rom the AM79C971 controller supports. a smaller rom can be used, too. the actu- al size of the code in the expan- sion rom is always determined by reading the expansion rom header. 0 romen expansion rom enable. written by the host to enable access to the expansion rom. the AM79C971 controller will only re- spond to accesses to the expan- sion rom when both romen and memen (pci command reg- ister, bit 1) are set to 1.
114 AM79C971 romen is read and written by the host. romen is cleared by h_reset and is not effected by s_reset or by setting the stop bit. pci interrupt line register offset 3ch the pci interrupt line register is an 8-bit register that is used to communicate the routing of the interrupt. this register is written by the post software as it ini- tializes the AM79C971 controller in the system. the register is read by the network driver to determine the interrupt channel which the post software has as- signed to the AM79C971 controller. the pci interrupt line register is not modified by the AM79C971 control- ler. it has no effect on the operation of the device. the pci interrupt line register is located at offset 3ch in the pci configuration space. it is read and written by the host. it is cleared by h_reset and is not affected s_reset or by setting the stop bit. pci interrupt pin register offset 3dh this pci interrupt pin register is an 8-bit register that indicates the interrupt pin that the AM79C971 controller is using. the value for the AM79C971 interrupt pin reg- ister is 01h, which corresponds to inta . the pci interrupt pin register is located at offset 3dh in the pci configuration space. it is read only. pci min_gnt register offset 3eh the pci min_gnt register is an 8-bit register that specifies the minimum length of a burst period that the AM79C971 needs to keep up with the network activity. the length of the burst period is calculated assuming a clock rate of 33 mhz. the register value specifies the time in units of 1/4 s. the pci min_gnt register is an alias of bcr22, bits 7-0. the default value for min_gnt is 06h, which corresponds to a minimum grant of 1.5 s and which is the time it takes the AM79C971 controller to read/write half of the fifo. (16 dword transfers in burst mode with one extra wait state per data phase inserted by the target.) note that the default is only a typical value. this calculation also does not take into account any descriptor accesses. the host should use the value in this register to deter- mine the setting of the pci latency timer register. the pci min_gnt register is located at offset 3eh in the pci configuration space. it is read only. pci max_lat register offset 3fh the pci max_lat register is an 8-bit register that specifies the maximum arbitration latency the AM79C971 controller can sustain without causing problems to the network activity. the register value specifies the time in units of 1/4 s. the max_lat reg- ister is an alias of bcr22, bits 15-8. it is recommended that bcr22 be programmed to the value of 1818h. the host should use the value in this register to deter- mine the setting of the pci latency timer register. the pci max_lat register is located at offset 3fh in the pci configuration space. it is read only. rap register the rap (register address pointer) register is used to gain access to csr and bcr registers on board the AM79C971 controller. the rap contains the address of a csr or bcr. as an example of rap use, consider a read access to csr4. in order to access this register, it is necessary to first load the value 0004h into the rap by performing a write access to the rap offset of 12h (12h when wio mode has been selected, 14h when dwio mode has been selected). then a second access is performed, this time to the rdp offset of 10h (for either wio or dwio mode). the rdp access is a read access, and since rap has just been loaded with the value of 0004h, the rdp read will yield the contents of csr4. a read of the bdp at this time (offset of 16h when wio mode has been selected, 1ch when dwio mode has been selected) will yield the contents of bcr4, since the rap is used as the pointer into both bdp and rdp space. rap: register address port bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-8 res reserved locations. read and written as zeros. 7-0 rap register address port. the value of these 8 bits determines which csr or bcr will be accessed when an i/o access to the rdp or bdp port, respectively, is per- formed. a write access to undefined csr or bcr locations may cause un- expected reprogramming of the AM79C971 control registers. a
AM79C971 115 read access will yield undefined values. read/write accessible always. rap is cleared by h_reset or s_reset and is unaffected by setting the stop bit. control and status registers the csr space is accessible by performing accesses to the rdp (register data port). the particular csr that is read or written during an rdp access will de- pend upon the current setting of the rap. rap serves as a pointer into the csr space. csr0: AM79C971 controller status and control register certain bits in csr0 indicate the cause of an interrupt. the register is designed so that these indicator bits are cleared by writing ones to those bit locations. this means that the software can read csr0 and write back the value just read to clear the interrupt condition. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 err error is set by the or of babl, cerr, miss, and merr. err remains set as long as any of the error flags are true. read accessible always. err is read only. write operations are ignored. 14 babl babble is a transmitter time-out error. babl is set by the AM79C971 controller when the transmitter has been on the chan- nel longer than the time required to send the maximum length frame. babl will be set if 1519 bytes or greater are transmitted. when babl is set, inta is as- serted if iena is 1 and the mask bit bablm (csr3, bit 14) is 0. babl assertion will set the err bit, regardless of the settings of iena and bablm. read/write accessible always. babl is cleared by the host by writing a 1. writing a 0 has no ef- fect. babl is cleared by h_reset, s_reset, or by set- ting the stop bit. 13 cerr collision error is set by the AM79C971 controller when the device operates in half-duplex mode and the collision inputs to the aui or to the gpsi port failed to activate within 20 network bit times after the chip terminated transmission (sqe test). this feature is a transceiver test fea- ture. cerr reporting is disabled when the aui or the gpsi port is active and the AM79C971 con- troller operates in full-duplex mode. when the 10base-t port is se- lected, for both half-duplex and full-duplex operation, cerr will be set after a transmission if the t-mau is in link fail state. when the mii port is selected, cerr is only reported when the external phy is operating as a 10base-t phy and if the exter- nal t-mau is in link fail state. cerr assertion will not result in an interrupt being generated. cerr assertion will set the err bit. read/write accessible always. cerr is cleared by the host by writing a 1. writing a 0 has no ef- fect. cerr is cleared by h_reset, s_reset, or by set- ting the stop bit. 12 miss missed frame is set by the AM79C971 controller when it has lost an incoming receive frame resulting from a receive descrip- tor not being available. this bit is the only immediate indication that receive data has been lost since there is no current receive de- scriptor. the missed frame counter (csr112) also incre- ments each time a receive frame is missed. when miss is set, inta is as- serted if iena is 1 and the mask bit missm (csr3, bit 12) is 0. miss assertion will set the err
116 AM79C971 bit, regardless of the settings of iena and missm. read/write accessible always. miss is cleared by the host by writing a 1. writing a 0 has no ef- fect. miss is cleared by h_reset, s_reset, or by set- ting the stop bit. 11 merr memory error is set by the AM79C971 controller when it re- quests the use of the system in- terface bus by asserting req and has not received gnt asser- tion after a programmable length of time. the length of time in mi- croseconds before merr is as- serted will depend upon the setting of the bus timeout regis- ter (csr100). the default setting of csr100 will give a merr after 153.6 s of bus latency. when merr is set, inta is as- serted if iena is 1 and the mask bit merrm (csr3, bit 11) is 0. merr assertion will set the err bit, regardless of the settings of iena and merrm. read/write accessible always. merr is cleared by the host by writing a 1. writing a 0 has no ef- fect. merr is cleared by h_reset, s_reset, or by set- ting the stop bit. 10 rint receive interrupt is set by the AM79C971 controller after the last descriptor of a receive frame has been updated by writing a 0 to the ownership bit. rint may also be set when the first descrip- tor of a receive frame has been updated by writing a 0 to the ownership bit if the lappen bit of csr3 has been set to a 1. when rint is set, inta is assert- ed if iena is 1 and the mask bit rintm (csr3, bit 10) is 0. read/write accessible always. rint is cleared by the host by writing a 1. writing a 0 has no ef- fect. rint is cleared by h_reset, s_reset, or by set- ting the stop bit. 9 tint transmit interrupt is set by the AM79C971 controller after the own bit in the last descriptor of a transmit frame has been cleared to indicate the frame has been sent or an error occurred in the transmission. when tint is set, inta is assert- ed if iena is 1 and the mask bit tintm (csr3, bit 9) is 0. tint will not be set if tintokd (csr5, bit 15) is set to 1 and the transmission was successful. read/write accessible always. tint is cleared by the host by writing a 1. writing a 0 has no ef- fect. tint is cleared by h_reset, s_reset, or by set- ting the stop bit. 8 idon initialization done is set by the AM79C971 controller after the initialization sequence has com- pleted. when idon is set, the AM79C971 controller has read the initialization block from mem- ory. when idon is set, inta is as- serted if iena is 1 and the mask bit idonm (csr3, bit 8) is 0. read/write accessible always. idon is cleared by the host by writing a 1. writing a 0 has no ef- fect. idon is cleared by h_reset, s_reset, or by set- ting the stop bit. 7 intr interrupt flag indicates that one or more following interrupt caus- ing conditions has occurred: babl, exdint, idon, jab, merr, miss, mfco, rcvcco, rint, sint, slpint, tint, tx- strt, uint, stint, mreint, mccint, mcciint, miipdtint, mapint and the associated mask or enable bit is pro- grammed to allow the event to cause an interrupt. if iena is set to 1 and intr is set, inta will be active. when intr is set by sint or slpint, inta will be active in- dependent of the state of iena.
AM79C971 117 read accessible always. intr is read only. intr is cleared by clearing all of the active individual interrupt bits that have not been masked out. 6 iena interrupt enable allows inta to be active if the interrupt flag is set. if iena = 0, then inta will be disabled regardless of the state of intr. read/write accessible always. iena is set by writing a 1 and cleared by writing a 0. iena is cleared by h_reset or s_reset and setting the stop bit. 5 rxon receive on indicates that the re- ceive function is enabled. rxon is set if drx (csr15, bit 0) is set to 0 after the start bit is set. if init and start are set together, rxon will not be set until after the initialization block has been read in. read accessible always. rxon is read only. rxon is cleared by h_reset or s_reset and set- ting the stop bit. 4 txon transmit on indicates that the transmit function is enabled. txon is set if dtx (csr15, bit 1) is set to 0 after the start bit is set. if init and start are set to- gether, txon will not be set until after the initialization block has been read in. read accessible always. txon is read only. txon is cleared by h_reset or s_reset and set- ting the stop bit. 3 tdmd transmit demand, when set, causes the buffer management unit to access the transmit de- scriptor ring without waiting for the poll-time counter to elapse. if txon is not enabled, tdmd bit will be reset and no transmit de- scriptor ring access will occur. tdmd is required to be set if the txdpoll bit in csr4 is set. set- ting tdmd while txdpoll = 0 merely hastens the AM79C971 controller ? s response to a trans- mit descriptor ring entry. read/write accessible always. tdmd is set by writing a 1. writ- ing a 0 has no effect. tdmd will be cleared by the buffer manage- ment unit when it fetches a transmit descriptor. tdmd is cleared by h_reset or s_reset and setting the stop bit. 2 stop stop assertion disables the chip from all dma activity. the chip re- mains inactive until either strt or init are set. if stop, strt and init are all set together, stop will override strt and init. read/write accessible always. stop is set by writing a 1, by h_reset or s_reset. writing a 0 has no effect. stop is cleared by setting either strt or init. 1 strt strt assertion enables AM79C971 controller to send and receive frames, and perform buff- er management operations. set- ting strt clears the stop bit. if strt and init are set together, the AM79C971 controller initial- ization will be performed first. read/write accessible always. strt is set by writing a 1. writing a 0 has no effect. strt is cleared by h_reset, s_reset, or by setting the stop bit. 0 init init assertion enables the AM79C971 controller to begin the initialization procedure which reads in the initialization block from memory. setting init clears the stop bit. if strt and init are set together, the AM79C971 controller initialization will be per- formed first. init is not cleared when the initialization sequence has completed. read/write accessible always. init is set by writing a 1. writing a 0 has no effect. init is cleared
118 AM79C971 by h_reset, s_reset, or by setting the stop bit. csr1: initialization block address 0 bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 iadr[15:0] lower 16 bits of the address of the initialization block. bit loca- tions 1 and 0 must both be 0 to align the initialization block to a dword boundary. this register is aliased with csr16. read/write accessible only when either the stop or the spnd bit is set. unaffected by h_reset or s_reset, or by setting the stop bit. csr2: initialization block address 1 bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-8 iadr[31:24] if ssize32 is set (bcr20, bit 8), then the iadr[31:24] bits will be used strictly as the upper 8 bits of the initialization block address. however, if ssize32 is reset (bcr20, bit 8), then the iadr[31:24] bits will be used to generate the upper 8 bits of all bus mastering addresses, as re- quired for a 32-bit address bus. note that the 16-bit software structures specified by the ssize32 = 0 setting will yield only 24 bits of address for the AM79C971 bus master access- es, while the 32-bit hardware for which the AM79C971 controller is intended will require 32 bits of ad- dress. therefore, whenever ssize32 = 0, the iadr[31:24] bits will be appended to the 24-bit initialization address, to each 24- bit descriptor base address and to each beginning 24-bit buffer address in order to form complete 32-bit addresses. the upper 8 bits that exist in the descriptor ad- dress registers and the buffer ad- dress registers which are stored on board the AM79C971 control- ler will be overwritten with the iadr[31:24] value, so that csr accesses to these registers will show the 32-bit address that in- cludes the appended field. if ssize32 = 1, then software will provide 32-bit pointer values for all of the shared software struc- tures - i.e., descriptor bases and buffer addresses, and therefore, iadr[31:24] will not be written to the upper 8 bits of any of these resources, but it will be used as the upper 8 bits of the initializa- tion address. this register is aliased with csr17. read/write accessible only when either the stop or the spnd bit is set. unaffected by h_reset, s_reset, or by setting the stop bit. 7-0 iadr[23:16] bits 23 through 16 of the address of the initialization block. when- ever this register is written, csr17 is updated with csr2 ? s contents. read/write accessible only when either the stop or the spnd bit is set. unaffected by h_reset, s_reset, or by setting the stop bit. csr3: interrupt masks and deferral control bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 res reserved location. read and written as zero. 14 bablm babble mask. if bablm is set, the babl bit will be masked and unable to set the intr bit. read/write accessible always. bablm is cleared by h_reset or s_reset and is not affected by stop.
AM79C971 119 13 res reserved location. read and written as zero. 12 missm missed frame mask. if missm is set, the miss bit will be masked and unable to set the intr bit. read/write accessible always. missm is cleared by h_reset or s_reset and is not affected by stop. 11 merrm memory error mask. if merrm is set, the merr bit will be masked and unable to set the intr bit. read/write accessible always. merrm is cleared by h_reset or s_reset and is not affected by stop. 10 rintm receive interrupt mask. if rintm is set, the rint bit will be masked and unable to set the intr bit. read/write accessible always. rintm is cleared by h_reset or s_reset and is not affected by stop. 9 tintm transmit interrupt mask. if tintm is set, the tint bit will be masked and unable to set the intr bit. read/write accessible always. tintm is cleared by h_reset or s_reset and is not affected by stop. 8 idonm initialization done mask. if idonm is set, the idon bit will be masked and unable to set the intr bit. read/write accessible always. idonm is cleared by h_reset or s_reset and is not affected by stop. 7 res reserved location. read and written as zeros. 6 dxsuflo disable transmit stop on under- flow error. when dxsuflo (csr3, bit 6) is set to 0, the transmitter is turned off when an uflo error occurs (csr0, txon = 0). when dxsuflo is set to 1, the AM79C971 controller gracefully recovers from an uflo error. it scans the transmit descriptor ring until it finds the start of a new frame and starts a new transmis- sion. read/write accessible always. dxsuflo is cleared by h_reset or s_reset and is not affected by stop. 5 lappen look ahead packet processing enable. when set to a 1, the lappen bit will cause the AM79C971 controller to generate an interrupt following the descrip- tor write operation to the first buff- er of a receive frame. this interrupt will be generated in ad- dition to the interrupt that is gen- erated following the descriptor write operation to the last buffer of a receive packet. the interrupt will be signaled through the rint bit of csr0. setting lappen to a 1 also en- ables the AM79C971 controller to read the stp bit of receive de- scriptors. the AM79C971 con- troller will use the stp information to determine where it should begin writing a receive packet ? s data. note that while in this mode, the AM79C971 con- troller can write intermediate packet data to buffers whose de- scriptors do not contain stp bits set to 1. following the write to the last descriptor used by a packet, the AM79C971 controller will scan through the next descriptor entries to locate the next stp bit that is set to a 1. the AM79C971 controller will begin writing the next packets data to the buffer pointed to by that descriptor. note that because several de- scriptors may be allocated by the host for each packet, and not all messages may need all of the de- scriptors that are allocated be- tween descriptors that contain
120 AM79C971 stp = 1, then some descriptors/ buffers may be skipped in the ring. while performing the search for the next stp bit that is set to 1, the AM79C971 controller will advance through the receive de- scriptor ring regardless of the state of ownership bits. if any of the entries that are examined during this search indicate AM79C971 controller ownership of the descriptor but also indicate stp = 0, then the AM79C971 controller will reset the own bit to 0 in these entries. if a scanned entry indicates host ownership with stp = 0, then the AM79C971 controller will not al- ter the entry, but will advance to the next entry. when the stp bit is found to be true, but the descriptor that con- tains this setting is not owned by the AM79C971 controller, then the AM79C971 controller will stop advancing through the ring en- tries and begin periodic polling of this entry. when the stp bit is found to be true, and the descrip- tor that contains this setting is owned by the AM79C971 control- ler, then the AM79C971 control- ler will stop advancing through the ring entries, store the descrip- tor information that it has just read, and wait for the next re- ceive to arrive. this behavior allows the host software to pre-assign buffer space in such a manner that the header portion of a receive pack- et will always be written to a par- ticular memory area, and the data portion of a receive packet will al- ways be written to a separate memory area. the interrupt is generated when the header bytes have been written to the header memory area. read/write accessible always. the lappen bit will be reset to 0 by h_reset or s_reset and will be unaffected by stop. see appendix d for more infor- mation on the look ahead pack- et processing concept. 4 dxmt2pd disable transmit two part defer- ral (see medium allocation sec- tion in the media access management section for more details). if dxmt2pd is set, transmit two part deferral will be disabled. read/write accessible always. dxmt2pd is cleared by h_reset or s_reset and is not affected by stop. 3 emba enable modified back-off algo- rithm (see contention resolution section in media access man- agement section for more de- tails). if emba is set, a modified back-off algorithm is implement- ed. read/write accessible always. emba is cleared by h_reset or s_reset and is not affected by stop. 2 bswp byte swap. this bit is used to choose between big and little en- dian modes of operation. when bswp is set to a 1, big endian mode is selected. when bswp is set to 0, little endian mode is se- lected. when big endian mode is select- ed, the AM79C971 controller will swap the order of bytes on the ad bus during a data phase on ac- cesses to the fifos only. specif- ically, ad[31:24] becomes byte 0, ad[23:16] becomes byte 1, ad[15:8] becomes byte 2, and ad[7:0] becomes byte 3 when big endian mode is selected. when little endian mode is se- lected, the order of bytes on the ad bus during a data phase is: ad[31:24] is byte 3, ad[23:16] is byte 2, ad[15:8] is byte 1, and ad[7:0] is byte 0. byte swap only affects data transfers that involve the fifos. initialization block transfers are not affected by the setting of the
AM79C971 121 bswp bit. descriptor transfers are not affected by the setting of the bswp bit. rdp, rap, bdp and pci configuration space ac- cesses are not affected by the setting of the bswp bit. address prom transfers are not affected by the setting of the bswp bit. expansion rom accesses are not affected by the setting of the bswp bit. note that the byte ordering of the pci bus is defined to be little en- dian. bswp should not be set to 1 when the AM79C971 controller is used in a pci bus application. read/write accessible always. bswp is cleared by h_reset or s_reset and is not affected by stop. 1 res reserved location. the default value of this bit is a 0. writing a 1 to this bit has no effect on device function. if a 1 is written to this bit, then a 1 will be read back. exist- ing drivers may write a 1 to this bit for compatibility, but new drivers should write a 0 to this bit and should treat the read value as un- defined. 0 res reserved location. the default value of this bit is a 0. writing a 1 to this bit has no effect on device function. if a 1 is written to this bit, then a 1 will be read back. exist- ing drivers may write a 1 to this bit for compatibility, but new drivers should write a 0 to this bit and should treat the read value as un- defined. csr4: test and features control certain bits in csr4 indicate the cause of an interrupt. the register is designed so that these indicator bits are cleared by writing ones to those bit locations. this means that the software can read csr4 and write back the value just read to clear the interrupt condition. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 en124 enable csr124 access. setting en124 to 1 allows the user to write to bits in csr124, which en- ables the gpsi interface (gpsien, bit 4) and runt packet accept mode (rpa, bit 3). once these bits are accessed, en124 must be cleared back to 0. read/write accessible always. entst is cleared by h_reset or s_reset and is unaffected by the stop bit. 14 dmaplus writing and reading from this bit has no effect. dmaplus is al- ways set to 1. 13 res reserved location. written as zero and read as undefined. 12 txdpoll transmit disable transmit poll- ing. if txdpoll is set, the buffer management unit will disable transmit polling. likewise, if txd- poll is cleared, automatic trans- mit polling is enabled. if txdpoll is set, tdmd bit in csr0 must be set in order to ini- tiate a manual poll of a transmit descriptor. transmit descriptor polling will not take place if txon is reset. transmit polling will take place following receive activi- ties. read/write accessible always. txdpoll is cleared by h_reset or s_reset and is unaffected by the stop bit. 11 apad_xmt auto pad transmit. when set, apad_xmt enables the auto- matic padding feature. transmit frames will be padded to extend them to 64 bytes including fcs. the fcs is calculated for the en- tire frame, including pad, and ap- pended after the pad field. apad_xmt will override the pro- gramming of the dxmtfcs bit (csr15, bit 3) and of the add_fcs/no_fcs bit (tmd1, bit 29) for frames shorter than 64 bytes. read/write accessible always. apad_xmt is cleared by h_reset or s_reset and is unaffected by the stop bit.
122 AM79C971 10 astrp_rcv auto strip receive. when set, astrp_rcv enables the auto- matic pad stripping feature. the pad and fcs fields will be stripped from receive frames and not placed in the fifo. read/write accessible always. astrp_rcv is cleared by h_reset or s_reset and is unaffected by the stop bit. 9 mfco missed frame counter overflow is set by the AM79C971 control- ler when the missed frame counter (csr112 and csr114) has wrapped around. when mfco is set, inta is as- serted if iena is 1 and the mask bit mfcom is 0. read/write accessible always. mfco is cleared by the host by writing a 1. writing a 0 has no ef- fect. mfco is cleared by h_reset, s_reset, or by set- ting the stop bit. 8 mfcom missed frame counter overflow mask. if mfcom is set, the mfco bit will be masked and un- able to set the intr bit. read/write accessible always. mfcom is set to 1 by h_reset or s_reset and is not affected by the stop bit. 7 uintcmd user interrupt command. uintcmd can be used by the host to generate an interrupt un- related to any network activity. when uintcmd is set, inta is asserted if iena is set to 1. uintcmd will be cleared inter- nally after the AM79C971 control- ler has set uint to 1. read/write accessible always. uintcmd is cleared by h_reset or s_reset or by setting the stop bit. 6 uint user interrupt. uint is set by the AM79C971 controller after the host has issued a user interrupt command by setting uintcmd (csr4, bit 7) to 1. read/write accessible always. uint is cleared by the host by writing a 1. writing a 0 has no ef- fect. uint is cleared by h_reset or s_reset or by setting the stop bit. 5 rcvcco receive collision counter over- flow is set by the AM79C971 con- troller when the receive collision counter (csr114 and csr115) has wrapped around. when rcvcco is set, inta is asserted if iena is 1 and the mask bit rcvccom is 0. read/write accessible always. rcvcco is cleared by the host by writing a 1. writing a 0 has no effect. rcvcco is cleared by h_reset, s_reset, or by set- ting the stop bit. 4 rcvccom receive collision counter over- flow mask. if rcvccom is set, the rcvcco bit will be masked and unable to set the intr bit. read/write accessible always. rcvccom is set to 1 by h_reset or s_reset and is not affected by the stop bit. 3 txstrt transmit start status is set by the AM79C971 controller whenever it begins transmission of a frame. when txstrt is set, inta is as- serted if iena is 1 and the mask bit txstrtm is 0. read/write accessible always. txstrt is cleared by the host by writing a 1. writing a 0 has no ef- fect. txstrt is cleared by h_reset, s_reset, or by set- ting the stop bit. 2 txstrtm transmit start mask. if tx- strtm is set, the txstrt bit will be masked and unable to set the intr bit. read/write accessible always. txstrtm is set to 1 by h_reset or s_reset and is not affected by the stop bit.
AM79C971 123 1 jab jabber error is set by the AM79C971 controller when the t-mau exceeds the allowed transmission limit. jabber can only be asserted in 10base-t mode. when jab is set, inta is assert- ed if iena is 1 and the mask bit jabm is 0. read/write accessible always. jab is cleared by the host by writ- ing a 1. writing a 0 has no effect. jab is cleared by h_reset, s_reset or by setting the stop bit. 0 jabm jabber error mask. if jabm is set, the jab bit will be masked and unable to set the intr bit. read/write accessible always. jabm is set to 1 by h_reset or s_reset and is not affected by the stop bit. csr5: extended control and interrupt 1 certain bits in csr5 indicate the cause of an interrupt. the register is designed so that these indicator bits are cleared by writing ones to those bit locations. this means that the software can read csr5 and write back the value just read to clear the interrupt condition. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 tokintd transmit ok interrupt disable. if tokintd is set to 1, the tint bit in csr0 will not be set when a transmission was successful. only a transmit error will set the tint bit. tokintd has no effect when ltinten (csr5, bit 14) is set to 1. a transmit descriptor with ltint set to 1 will always cause tint to be set to 1, independent of the success of the transmis- sion. read/write accessible always. tokintd is cleared by h_reset or s_reset and is unaffected by stop. 14 ltinten last transmit interrupt enable. when set to 1, the ltinten bit will cause the AM79C971 control- ler to read bit 28 of tmd1 as ltint. the setting ltint will de- termine if tint will be set at the end of the transmission. read/write accessible always. ltinten is cleared by h_reset or s_reset and is unaffected by stop. 13-12 res reserved locations. written as zeros and read as undefined. 11 sint system interrupt is set by the AM79C971 controller when it de- tects a system error during a bus master transfer on the pci bus. system errors are data parity er- ror, master abort, or a target abort. the setting of sint due to data parity error is not dependent on the setting of perren (pci command register, bit 6). when sint is set, inta is assert- ed if the enable bit sinte is 1. note that the assertion of an in- terrupt due to sint is not depen- dent on the state of the inea bit, since inea is cleared by the stop reset generated by the system error. read/write accessible always. sint is cleared by the host by writing a 1. writing a 0 has no ef- fect. the state of sint is not af- fected by clearing any of the pci status register bits that get set when a data parity error (dataperr, bit 8), master abort (rmabort, bit 13), or target abort (rtabort, bit 12) occurs. sint is cleared by h_reset or s_reset and is not affected by setting the stop bit. 10 sinte system interrupt enable. if sin- te is set, the sint bit will be able to set the intr bit. read/write accessible always. sinte is set to 0 by h_reset or s_reset and is not affected by setting the stop bit.
124 AM79C971 9 slpint sleep interrupt is set by the AM79C971 controller when it comes out of sleep mode. when slpint is set, inta is as- serted if the enable bit slpinte is 1. note that the assertion of an interrupt due to slpint is not de- pendent on the state of the inea bit, since inea is cleared by the s_reset reset generated when entering the sleep mode. read/write accessible always. slpint is cleared by the host by writing a 1. writing a 0 has no ef- fect. slpint is cleared by h_reset and is not affected by s_reset or setting the stop bit. 8 slpinte sleep interrupt enable. if slpinte is set, the slpint bit will be able to set the intr bit. read/write accessible always. slpinte is set to 0 by h_reset and is not affected by s_reset or setting the stop bit. 7 exdint excessive deferral interrupt is set by the AM79C971 controller when the transmitter has experi- enced excessive deferral on a transmit frame, where excessive deferral is defined in the iso 8802-3 (ieee/ansi 802.3) stan- dard. when exdint is set, inta is as- serted if the enable bit exdinte is 1. read/write accessible always. exdint is cleared by the host by writing a 1. writing a 0 has no ef- fect. exdint is cleared by h_reset and is not affected by s_reset or setting the stop bit. 6 exdinte excessive deferral interrupt en- able. if exdinte is set, the exdint bit will be able to set the intr bit. read/write accessible always. exdinte is set to 0 by h_reset and is not affected by s_reset or setting the stop bit. 5 mpplba magic packet physical logical broadcast accept. if mpplba is at its default value of 0, the AM79C971 controller will only de- tect a magic packet frame if the destination address of the packet matches the content of the physi- cal address register (padr). if mpplba is set to 1, the destina- tion address of the magic packet frame can be unicast, multicast, or broadcast. note that the set- ting of mpplba only affects the address detection of the magic packet frame. the magic packet frame ? s data sequence must be made up of 16 consecutive phys- ical addresses (padr[47:0]) re- gardless of what kind of destination address it has. read/write accessible always. mpplba is set to 0 by h_reset or s_reset and is not affected by setting the stop bit. 4 mpint magic packet interrupt. magic packet interrupt is set by the AM79C971 controller when the device is in the magic packet mode and the AM79C971 con- troller receives a magic packet frame. when mpint is set to 1, inta is asserted if iena (csr0, bit 6) and the enable bit mpinte are set to 1. read/write accessible always. mpint is cleared by the host by writing a 1. writing a 0 has no af- fect. mpint is cleared by h_reset, s_reset, or by set- ting the stop bit. 3 mpinte magic packet interrupt enable. if mpinte is set to 1, the mpint bit will be able to set the intr bit. read/write accessible always. mpint is cleared to 0 by h_reset or s_reset and is not affected by setting the stop bit.
AM79C971 125 2 mpen magic packet enable. mpen al- lows activation of the magic packet mode by the host. the AM79C971 controller will enter the magic packet mode when both mpen and mpmode are set to 1. read/write accessible always. mpen is cleared to 0 by h_reset or s_reset and is not affected by setting the stop bit. 1 mpmode magic packet mode. setting mp- mode to 1 will redefine the sleep pin to be a magic packet enable pin. the AM79C971 con- troller will enter the magic packet mode when mpmode is set to 1 and either sleep is asserted or mpen is set to 1. read/write accessible always. mpmode is cleared to 0 by h_reset or s_reset and is not affected by setting the stop bit 0 spnd suspend. setting spnd to 1 will cause the AM79C971 controller to start requesting entrance into suspend mode. the host must poll spnd until it reads back 1 to determine that the AM79C971 controller has entered the sus- pend mode. setting spnd to 0 will get the AM79C971 controller out of suspend mode. spnd can only be set to 1 if stop (csr0, bit 2) is set to 0. h_reset, s_reset or setting the stop bit will get the AM79C971 controller out of suspend mode. requesting entrance into the suspend mode by the host de- pends on the setting of the fastspnde bit (csr7, bit 15). refer to the bit description of the fastspnde bit and the sus- pend section in detailed func- tions, buffer management unit for details. in suspend mode, all of the csr and bcr registers are accessi- ble. as long as the AM79C971 controller is not reset while in suspend mode (by h_reset, s_reset or by setting the stop bit), no re-initialization of the de- vice is required after the device comes out of suspend mode. the AM79C971 controller will contin- ue at the transmit and receive de- scriptor ring locations, from where it had left, when it entered the suspend mode. read/write accessible always. spnd is cleared by h_reset, s_reset, or by setting the stop bit. csr6: rx/tx descriptor table length bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 tlen contains a copy of the transmit encoded ring length (tlen) field read from the initialization block during the AM79C971 controller initialization. this field is written during the AM79C971 controller initialization routine. read accessible only when either the stop or the spnd bit is set. write operations have no effect and should not be performed. tlen is only defined after initial- ization. these bits are unaffected by h_reset, s_reset, or stop. 11-8 rlen contains a copy of the receive encoded ring length (rlen) read from the initialization block during AM79C971 controller initializa- tion. this field is written during the AM79C971 controller initial- ization routine. read accessible only when either the stop or the spnd bit is set. write operations have no effect and should not be performed. rlen is only defined after initial- ization. these bits are unaffected by h_reset, s_reset, or stop. 7-0 res reserved locations. read as 0s. write operations are ignored.
126 AM79C971 csr7: extended control and interrupt 2 certain bits in csr7 indicate the cause of an interrupt. the register is designed so that these indicator bits are cleared by writing ones to those bit locations. this means that the software can read csr7 and write back the value just read to clear the interrupt condition. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 fastspnde fast suspend enable. when fastspnde is set to 1, the AM79C971 controller performs a fast suspend whenever the spnd bit is set. when a fast suspend is request- ed, the AM79C971 controller per- forms a quick entry into the suspend mode. at the time the spnd bit is set, the AM79C971 controller will complete the dma process of any transmit and/or re- ceive packet that had already be- gun dma activity. in addition, any transmit packet that had started transmission will be fully transmit- ted and any receive packet that had begun reception will be fully received. however, no additional packets will be transmitted or re- ceived and no additional transmit or receive dma activity will begin. hence, the AM79C971 controller may enter the suspend mode with transmit and/or receive packets still in the fifos or exter- nal sram. when fastspnde is 0 and the spnd bit is set, the AM79C971 controller may take longer before entering the suspend mode. at the time the spnd bit is set, the AM79C971 controller will com- plete the dma process of a trans- mit packet if it had already begun and the AM79C971 controller will completely receive a receive packet if it had already begun. additionally, all transmit packets stored in the transmit fifos and the transmit buffer area in the ex- ternal sram (if one is present) will be transmitted and all receive packets stored in the receive fifos, and the receive buffer area in the external sram (if one is present) will be transferred into system memory. since the fifo and external sram contents are flushed, it may take much longer before the AM79C971 controller enters the suspend mode. the amount of time that it takes de- pends on many factors including the size of the external sram, bus latency, and network traffic level. when a write to csr5 is per- formed with bit 0 (spnd) set to 1, the value that is simultaneously written to fastspnde is used to determine which approach is used to enter suspend mode. read/write accessible always. fastspnde is cleared by h_reset, s_reset or by set- ting the stop bit. 14 rxfrtg receive frame tag. when re- ceive frame tag is set to 1, a tag word is put into the receive de- scriptor supplied by the eadi. see the section receive frame tagging for details. this bit is valid only when the eadisel (bcr2, bit 3) is set to 1. read/write accessible always. rxfrtg is cleared by h_reset. rxfrtg is unaffect- ed by s_reset or by setting the stop bit. 13 rdmd receive demand, when set, causes the buffer management unit to access the receive de- scriptor ring without waiting for the receive poll-time counter to elapse. if rxon is not enabled, rdmd has no meaning and no receive descriptor ring access will occur. rdmd is required to be set if the rxdpoll bit in csr7 is set. set- ting rdmd while rxdpoll = 0 merely hastens the AM79C971 controller ? s response to a receive descriptor ring entry.
AM79C971 127 read/write accessible always. rdmd is set by writing a 1. writ- ing a 0 has no effect. rdmd will be cleared by the buffer manage- ment unit when it fetches a re- ceive descriptor. rdmd is cleared by h_reset. rdmd is unaffected by s_reset or by setting the stop bit. 12 rxdpoll receive disable polling. if rxd- poll is set, the buffer manage- ment unit will disable receive polling. likewise, if rxdpoll is cleared, automatic receive poll- ing is enabled. if rxdpoll is set, rdmd bit in csr7 must be set in order to initiate a manual poll of a receive descriptor. re- ceive descriptor polling will not take place if rxon is reset. read/write accessible always. rxdpoll is cleared by h_reset. rxdpoll is unaf- fected by s_reset or by setting the stop bit. 11 stint software timer interrupt. the software timer interrupt is set by the AM79C971 controller when the software timer counts down to 0. the software timer will im- mediately load the stval (bcr 31, bits 5-0) into the software timer and begin counting down. when stint is set to 1, inta is asserted if the enable bit stinte is set to 1. read/write accessible always. stint is cleared by the host by writing a 1. writing a 0 has no ef- fect. stint is cleared by h_reset and is not affected by s_reset or setting the stop bit. 10 stinte software timer interrupt enable. if stinte is set, the stint bit will be able to set the intr bit. read/write accessible always. stinte is set to 0 by h_reset and is not affected by s_reset or setting the stop bit 9 mreint mii management read error in- terrupt. the mii read error inter- rupt is set by the AM79C971 controller to indicate that the cur- rently read register from the ex- ternal phy is invalid. the contents of bcr34 are incorrect and that the operation should be performed again. the indication of an incorrect read comes from the phy. during the read turn- around time of the mii manage- ment frame the external phy should drive the mdio pin to a low state. if this does not hap- pen, it indicates that the phy and the AM79C971 controller have lost synchronization. when mreint is set to 1, inta is asserted if the enable bit mrein- te is set to 1. read/write accessible always. mreint is cleared by the host by writing a 1. writing a 0 has no ef- fect. mreint is cleared by h_reset and is not affected by s_reset or setting the stop bit. 8 mreinte mii management read error in- terrupt enable. if mreinte is set, the mreint bit will be able to set the intr bit. read/write accessible always. mreinte is set to 0 by h_reset and is not affected by s_reset or setting the stop bit 7 mapint mii management auto-poll inter- rupt. the mii auto-poll interrupt is set by the AM79C971 controller to indicate that the currently read status does not match the stored previous status indicating a change in state for the external phy. a change in the auto-poll access method (bcr32, bit 10) will reset the shadow register and will not cause an interrupt on the first access from the auto-poll section. subsequent accesses will generate an interrupt if the shadow register and the read register produce differences.
128 AM79C971 when mapint is set to 1, inta is asserted if the enable bit map- inte is set to 1. read/write accessible always. mapint is cleared by the host by writing a 1. writing a 0 has no ef- fect. mapint is cleared by h_reset and is not affected by s_reset or setting the stop bit. 6 mapinte mii auto-poll interrupt enable. if mapinte is set, the mapint bit will be able to set the intr bit. read/write accessible always. mapinte is set to 0 by h_reset and is not affected by s_reset or setting the stop bit 5 mccint mii management command complete interrupt. the mii man- agement command complete in- terrupt is set by the AM79C971 controller when a read or write operation to the mii data port (bcr34) is complete. when mccint is set to 1, inta is asserted if the enable bit mc- cinte is set to 1. read/write accessible always. mccint is cleared by the host by writing a 1. writing a 0 has no ef- fect. mccint is cleared by h_reset and is not affected by s_reset or setting the stop bit. 4 mccinte mii management command complete interrupt enable. if mccinte is set to 1, the mc- cint bit will be able to set the intr bit when the host reads or writes to the mii data port (bcr34) only. internal mii man- agement commands will not gen- erate an interrupt. for instance auto-poll state machine generat- ed mii management frames will not generate an interrupt upon completion unless there is a com- pare error which get reported through the mapint (csr7, bit 6) interrupt or the mcciinte is set to 1. read/write accessible always. mccinte is set to 0 by h_reset and is not affected by s_reset or setting the stop bit. 3 mcciint mii management command complete internal interrupt. the mii management command complete interrupt is set by the AM79C971 controller when a read or write operation on the mii management port is complete from an internal operation. exam- ples of internal operations are auto-poll or mii management port generated mii management frames. these are normally hid- den to the host. when mcciint is set to 1, inta is asserted if the enable bit mc- cinte is set to 1. read/write accessible always. mcciint is cleared by the host by writing a 1. writing a 0 has no effect. mcciint is cleared by h_reset and is not affected by s_reset or setting the stop bit. 2 mcciinte mii management command complete internal interrupt en- able. if mcciinte is set to 1, the mcciint bit will be able to set the intr bit when the internal state machines generate mii management frames. for in- stance, when mcciinte is set to 1 and the auto-poll state ma- chine generates a mii manage- ment frame, the mcciint will set the intr bit upon completion of the mii management frame re- gardless of the comparison out- come. read/write accessible always. mcciinte is set to 0 by h_reset and is not affected by s_reset or setting the stop bit.
AM79C971 129 1 miipdtint mii phy detect transition inter- rupt. the mii phy detect transi- tion interrupt is set by the AM79C971 controller whenever the miipd bit (bcr32, bit 14) transitions from 0 to 1 or vice ver- sa. read/write accessible always. miipdtint is cleared by the host by writing a 1. writing a 0 has no effect. miipdtint is cleared by h_reset and is not affected by s_reset or setting the stop bit. 0 miipdtinte mii phy detect transition inter- rupt enable. if miipdtinte is set to 1, the miipdtint bit will be able to set the intr bit. read/write accessible always. miipdtinte is set to 0 by h_reset and is not affected by s_reset or setting the stop bit. csr8: logical address filter 0 bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 ladrf[15:0] logical address filter, ladrf- [15:0]. the content of this register is undefined until loaded from the initialization block after the init bit in csr0 has been set or a di- rect register write has been per- formed on this register. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr9: logical address filter 1 bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 ladrf[31:16] logical address filter, ladrf- [31:16]. the content of this regis- ter is undefined until loaded from the initialization block after the init bit in csr0 has been set or a direct register write has been performed on this register. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr10: logical address filter 2 bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 ladrf[47:32] logical address filter, ladrf[47:32]. the content of this register is undefined until loaded from the initialization block after the init bit in csr0 has been set or a direct register write has been performed on this register. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr11: logical address filter 3 bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 ladrf[63:48] logical address filter, ladrf[63:48]. the content of this register is undefined until loaded from the initialization block after the init bit in csr0 has been set or a direct register write has been performed on this register. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr12: physical address register 0 bit name description 31-16 res reserved locations. written as zeros and read as undefined.
130 AM79C971 15-0 padr[15:0] physical address register, padr[15:0]. the content of this register is undefined until loaded from the initialization block after the init bit in csr0 has been set or a direct register write has been performed on this register. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr13: physical address register 1 bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 padr[31:16] physical address register, padr[31:16]. the content of this register is undefined until loaded from the initialization block after the init bit in csr0 has been set or a direct register write has been performed on this register. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr14: physical address register 2 bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 padr[47:32] physical address register, padr[47:32]. the content of this register is undefined until loaded from the initialization block after the init bit in csr0 has been set or a direct register write has been performed on this register. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr15: mode this register ? s fields are loaded during the AM79C971 controller initialization routine with the corresponding initialization block values, or when a direct register write has been performed on this register. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 prom promiscuous mode. when prom = 1, all incoming receive frames are accepted. read/write accessible only when either the stop or the spnd bit is set. 14 drcvbc disable receive broadcast. when set, disables the AM79C971 controller from re- ceiving broadcast messages. used for protocols that do not support broadcast addressing, except as a function of multicast. drcvbc is cleared by activation of h_reset or s_reset (broadcast messages will be re- ceived) and is unaffected by stop. read/write accessible only when either the stop or the spnd bit is set. 13 drcvpa disable receive physical ad- dress. when set, the physical ad- dress detection (station or node id) of the AM79C971 controller will be disabled. frames ad- dressed to the nodes individual physical address will not be rec- ognized. read/write accessible only when either the stop or the spnd bit is set. 12 dlnktst disable link status. when dlnktst = 1, monitoring of link pulses is disabled. when dlnktst = 0, monitoring of link pulses is enabled. this bit only has meaning when the 10base- t network interface is selected. read/write accessible only when either the stop or the spnd bit is set. 11 dapc disable automatic polarity cor- rection. when dapc = 1, the
AM79C971 131 10base-t receive polarity rever- sal algorithm is disabled. like- wise, when dapc = 0, the polarity reversal algorithm is en- abled. this bit only has meaning when the 10base-t network interface is selected. read/write accessible only when either the stop or the spnd bit is set. 10 mendecl mendec loopback mode. see the description of the loop bit in csr15, bit 2. read/write accessible only when either the stop or the spnd bit is set. 9 lrt (tmau mode) low receive threshold. when lrt = 1, the in- ternal twisted pair receive thresh- olds are reduced by 4.5 db below the standard 10base-t value (approximately 3/5) and the un- squelch threshold for the rxd circuit will be 180 mv to 312 mv peak. when lrt = 0, the unsquelch threshold for the rxd circuit will be the standard 10base-t value, 300 mv to 520 mv peak. in either case, the rxd circuit post squelch threshold will be one-half of the unsquelch thresh- old. this bit only has meaning when the 10base-t network interface is selected. read/write accessible only when either the stop or the spnd bit is set. cleared by h_reset or s_reset and is unaffected by stop. tsel (aui mode) transmit mode se- lect. tsel controls the levels at which the aui drivers rest when the aui transmit port is idle. when tsel = 0, do+ and do- yield ? zero ? differential to operate transformer coupled loads (ethernet 2 and ieee 802.3). when tsel = 1, the do+ idles at a higher value with respect to do-, yielding a logical high state (ethernet 1). this bit only has meaning when the aui network interface is se- lected. read/write accessible only when either the stop or the spnd bit is set. cleared by h_reset or s_reset. 8-7 portsel[1:0]port select bits allow for software controlled selection of the net- work medium. see table 26. portsel settings of aui, 10base-t and mii are ignored when the asel bit of bcr2 (bit 1) has been set to 1. read/write accessible only when either the stop or the spnd bit is set. cleared by h_reset or s_reset and is unaffected by stop. 6 intl internal loopback. see the de- scription of loop (csr15, bit 2). read/write accessible only when either the stop or the spnd bit is set.
132 AM79C971 table 26. network port configuration. 5 drty disable retry. when drty is set to 1, the AM79C971 controller will attempt only one transmission. in this mode, the device will not pro- tect the first 64 bytes of frame data in the transmit fifo from being overwritten, because auto- matic retransmission will not be necessary. when drty is set to 0, the AM79C971 controller will attempt 16 transmissions before signaling a retry error. read/write accessible only when either the stop or the spnd bit is set. 4 fcoll force collision. this bit allows the collision logic to be tested. the AM79C971 controller must be in internal loopback for fcoll to be valid. if fcoll = 1, a colli- sion will be forced during loop- back transmission attempts, which will result in a retry error. if fcoll = 0, the force collision logic will be disabled. fcoll is defined after the initialization block is read. read/write accessible only when either the stop or the spnd bit is set. 3 dxmtfcs disable transmit crc (fcs). when dxmtfcs is set to 0, the transmitter will generate and ap- pend an fcs to the transmitted frame. when dxmtfcs is set to 1, no fcs is generated or sent with the transmitted frame. dxmtfcs is overridden when add_fcs is set in tmd1. when apad_xmt (csr4, bit 11) is set to 1, the setting of dxmtfcs has no effect on frames shorter than 64 bytes. if dxmtfcs is set and add_fcs is clear for a particular frame, no fcs will be generated. the value of add_fcs is valid only when stp is set in tmd1. if add_fcs is set for a particular frame, the state of dxmtfcs is ignored and a fcs will be ap- pended on that frame by the transmit circuitry. see also the add_fcs bit in tmd1. this bit was called dtcr in the lance (am7990) device. read/write accessible only when either the stop or the spnd bit is set. 2 loop loopback enable allows the AM79C971 controller to operate in full-duplex mode for test pur- poses. the setting of the full- duplex control bits in bcr9 have no effect when the device oper- ates in loopback mode. when loop = 1, loopback is enabled. in combination with intl and mendecl, various loopback modes are defined as follows in table 27. refer to loop back op- eration section for more details. portsel [1:0] asel (bcr2[1]) link status (10base-t) mii status (bcr32[14]) network port xx 1 fail 0 aui xx 1 pass 0 10base-t xx 1 don ? t care 1 mii 00 0 don ? t care don ? t care aui 01 0 don ? t care don ? t care 10base-t 10 0 don ? t care don ? t care gpsi 11 0 don ? t care don ? t care mii table 27. loopback configuration for aui loop intl mendecl loopback mode 0 x x non-loopback 1 0 x external loopback 1 1 0 internal loopback include mendec 1 1 1 internal loopback exclude mendec
AM79C971 133 read/write accessible only when either the stop or the spnd bit is set. loop is cleared by h_reset or s_reset and is unaffected by stop. 1 dtx disable transmit results in AM79C971 controller not access- ing the transmit descriptor ring and, therefore, no transmissions are attempted. dtx = 0, will set txon bit (csr0 bit 4) if strt (csr0 bit 1) is asserted. read/write accessible only when either the stop or the spnd bit is set. 0 drx disable receiver results in the AM79C971 controller not access- ing the receive descriptor ring and, therefore, all receive frame data are ignored. drx = 0, will set rxon bit (csr0 bit 5) if strt (csr0 bit 1) is asserted. read/write accessible only when either the stop or the spnd bit is set. csr16: initialization block address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 iadrl this register is an alias of csr1. read/write accessible only when either the stop or the spnd bit is set. csr17: initialization block address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 iadrh this register is an alias of csr2. read/write accessible only when either the stop or the spnd bit is set. csr18: current receive buffer address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 crbal contains the lower 16 bits of the current receive buffer address at which the AM79C971 controller will store incoming frame data. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr19: current receive buffer address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 crbau contains the upper 16 bits of the current receive buffer address at which the AM79C971 controller will store incoming frame data. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr20: current transmit buffer address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 cxbal contains the lower 16 bits of the current transmit buffer address from which the AM79C971 con- troller is transmitting. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr21: current transmit buffer address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined.
134 AM79C971 15-0 cxbau contains the upper 16 bits of the current transmit buffer address from which the AM79C971 con- troller is transmitting. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr22: next receive buffer address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nrbal contains the lower 16 bits of the next receive buffer address to which the AM79C971 controller will store incoming frame data. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr23: next receive buffer address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nrbau contains the upper 16 bits of the next receive buffer address to which the AM79C971 controller will store incoming frame data. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr24: base address of receive ring lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 badrl contains the lower 16 bits of the base address of the receive ring. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr25: base address of receive ring upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 badru contains the upper 16 bits of the base address of the receive ring. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr26: next receive descriptor address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nrdal contains the lower 16 bits of the next receive descriptor address pointer. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr27: next receive descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nrdau contains the upper 16 bits of the next receive descriptor address pointer. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr28: current receive descriptor address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined.
AM79C971 135 15-0 crdal contains the lower 16 bits of the current receive descriptor ad- dress pointer. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr29: current receive descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 crdau contains the upper 16 bits of the current receive descriptor ad- dress pointer. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr30: base address of transmit ring lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 badxl contains the lower 16 bits of the base address of the transmit ring. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr31: base address of transmit ring upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 badxu contains the upper 16 bits of the base address of the transmit ring. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr32: next transmit descriptor address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nxdal contains the lower 16 bits of the next transmit descriptor address pointer. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr33: next transmit descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nxdau contains the upper 16 bits of the next transmit descriptor address pointer. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr34: current transmit descriptor address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 cxdal contains the lower 16 bits of the current transmit descriptor ad- dress pointer. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr35: current transmit descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined.
136 AM79C971 15-0 cxdau contains the upper 16 bits of the current transmit descriptor ad- dress pointer. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr36: next next receive descriptor address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nnrdal contains the lower 16 bits of the next next receive descriptor ad- dress pointer. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr37: next next receive descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nnrdau contains the upper 16 bits of the next next receive descriptor ad- dress pointer. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr38: next next transmit descriptor address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nnxdal contains the lower 16 bits of the next next transmit descriptor ad- dress pointer. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr39: next next transmit descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nnxdau contains the upper 16 bits of the next next transmit descriptor ad- dress pointer. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr40: current receive byte count bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 res reserved locations. read and written as zeros. 11-0 crbc current receive byte count. this field is a copy of the bcnt field of rmd1 of the current re- ceive descriptor. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr41: current receive status bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 crst current receive status. this field is a copy of bits 31-16 of rmd1 of the current receive de- scriptor. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop.
AM79C971 137 csr42: current transmit byte count bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 res reserved locations. read and written as zeros. 11-0 cxbc current transmit byte count. this field is a copy of the bcnt field of tmd1 of the current trans- mit descriptor. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr43: current transmit status bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 cxst current transmit status. this field is a copy of bits 31-16 of tmd1 of the current transmit de- scriptor. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr44: next receive byte count bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 res reserved locations. read and written as zeros. 11-0 nrbc next receive byte count. this field is a copy of the bcnt field of rmd1 of the next receive de- scriptor. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr45: next receive status bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nrst next receive status. this field is a copy of bits 31-16 of rmd1 of the next receive descriptor. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr46: transmit poll time counter bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 txpoll transmit poll time counter. this counter is incremented by the AM79C971 controller microcode and is used to trigger the transmit descriptor ring polling operation of the AM79C971 controller. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr47: transmit polling interval bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 txpollint transmit polling interval. this register contains the time that the AM79C971 controller will wait be- tween successive polling opera- tions. the txpollint value is expressed as the two ? s comple- ment of the desired interval, where each bit of txpollint represents 1 clock period of time. txpollint[3:0] are ignored. (txpollint[16] is implied to be a one, so txpollint[15] is sig- nificant and does not represent the sign of the two ? s complement txpollint value.)
138 AM79C971 the default value of this register is 0000b. this corresponds to a polling interval of 65,536 clock periods (1.966 ms when clk = 33 mhz). the txpol- lint value of 0000b is created during the microcode initialization routine and, therefore, might not be seen when reading csr47 af- ter h_reset or s_reset. if the user desires to program a value for pollint other than the default, then the correct proce- dure is to first set init only in csr0. then, when the initializa- tion sequence is complete, the user must set stop (csr0, bit 2). then the user may write to csr47 and then set strt in csr0. in this way, the default value of 0000h in csr47 will be overwritten with the desired user value. if the user does not use the stan- dard initialization procedure (standard implies use of an initial- ization block in memory and set- ting the init bit of csr0), but instead, chooses to write directly to each of the registers that are involved in the init operation, then it is imperative that the user also writes all zeros to csr47 as part of the alternative initialization sequence. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr48: receive poll time counter bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 rxpoll receive poll time counter. this counter is incremented by the AM79C971 controller microcode and is used to trigger the receive descriptor ring polling operation of the AM79C971 controller. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr49: receive polling interval bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 rxpollint receive polling interval. this reg- ister contains the time that the AM79C971 controller will wait be- tween successive polling opera- tions. the rxpollint value is expressed as the two ? s comple- ment of the desired interval, where each bit of rxpollint approximately represents one clock time period. rxpol- lint[3:0] are ignored. (rxpol- lint[16] is implied to be a 1, so rxpollint[15] is significant and does not represent the sign of the two ? s complement rxpol- lint value.) the default value of this register is 0000h. this corresponds to a polling interval of 65,536 clock periods (1.966 ms when clk = 33 mhz). the rxpol- lint value of 0000h is created during the microcode initialization routine and, therefore, might not be seen when reading csr49 af- ter h_reset or s_reset. if the user desires to program a value for rxpollint other than the default, then the correct pro- cedure is to first set init only in csr0. then, when the initializa- tion sequence is complete, the user must set stop (csr0, bit 2). then the user may write to csr49 and then set strt in csr0. in this way, the default value of 0000h in csr47 will be overwritten with the desired user value.
AM79C971 139 preliminary if the user does not use the stan- dard initialization procedure (standard implies use of an initial- ization block in memory and set- ting the init bit of csr0), but instead, chooses to write directly to each of the registers that are involved in the init operation, then it is imperative that the user also writes all zeros to csr49 as part of the alternative initialization sequence. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr58: software style this register is an alias of the location bcr20. accesses to and from this register are equivalent to accesses to bcr20. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-11 res reserved locations. written as zeros and read as undefined. 10 aperren advanced parity error handling enable. when aperren is set to 1, the bpe bits (rmd1 and tmd1, bit 23) start having a meaning. bpe will be set in the descriptor associated with the buffer that was accessed when a data parity error occurred. note that since the advanced parity er- ror handling uses an additional bit in the descriptor, swstyle (bits 7-0 of this register) must be set to 2 or 3 to program the AM79C971 controller to use 32-bit software structures. aperren does not affect the re- porting of address parity errors or data parity errors that occur when the AM79C971 controller is the target of the transfer. read anytime, write accessible only when either the stop or the spnd bit is set. aperren is cleared by h_reset and is not affected by s_reset or stop. 9 res reserved locations. written as zeros and read as undefined. 8 ssize32 software size 32 bits. when set, this bit indicates that the AM79C971 controller utilizes 32- bit software structures for the ini- tialization block and the transmit and receive descriptor entries. when cleared, this bit indicates that the AM79C971 controller uti- lizes 16-bit software structures for the initialization block and the transmit and receive descriptor entries. in this mode, the AM79C971 controller is back- wards compatible with the am7990 lance and am79c960 pcnet-isa controllers. the value of ssize32 is deter- mined by the AM79C971 control- ler according to the setting of the software style (swstyle, bits 7-0 of this register). read accessible always. ssize32 is read only; write oper- ations will be ignored. ssize32 will be cleared after h_reset (since swstyle defaults to 0) and is not affected by s_reset or stop. if ssize32 is reset, then bits iadr[31:24] of csr2 will be used to generate values for the upper 8 bits of the 32-bit address bus during master accesses initi- ated by the AM79C971 controller. this action is required, since the 16-bit software structures speci- fied by the ssize32 = 0 setting will yield only 24 bits of address for the AM79C971 controller bus master accesses. if ssize32 is set, then the soft- ware structures that are common to the AM79C971 controller and the host system will supply a full 32 bits for each address pointer that is needed by the AM79C971 controller for performing master accesses. the value of the ssize32 bit has no effect on the drive of the upper 8 address bits. the upper 8 ad-
140 AM79C971 preliminary dress pins are always driven, re- gardless of the state of the ssize32 bit. note that the setting of the ssize32 bit has no effect on the defined width for i/o resources. i/o resource width is determined by the state of the dwio bit (bcr18, bit 7). 7-0 swstyle software style register. the val- ue in this register determines the style of register and memory re- sources that shall be used by the AM79C971 controller. the soft- ware style selection will affect the interpretation of a few bits within the csr space, the order of the descriptor entries and the width of the descriptors and initialization block entries. all AM79C971 controller csr bits and bcr bits and all descrip- tor, buffer, and initialization block entries not cited in table 26 are unaffected by the software style selection and are, therefore, al- ways fully functional as specified in the csr and bcr sections. read/write accessible only when either the stop or the spnd bit is set. the swstyle register will contain the value 00h following h_reset and will be unaffected by s_reset or stop. csr60: previous transmit descriptor address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 pxdal contains the lower 16 bits of the previous transmit descriptor ad- dress pointer. AM79C971 con- troller has the capability to stack multiple transmit frames. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr61: previous transmit descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 pxdau contains the upper 16 bits of the previous transmit descriptor address pointer. the AM79C971 controller has the capability to stack multiple transmit frames. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. table 26. software styles swstyle [7:0] style name ssize32 initialization block entries descriptor ring entries 00h lance/ pcnet-isa controller 0 16-bit software structures, non-burst or burst access 16-bit software structures, non-burst access only 01h res 1 res res 02h pcnet-pci controller 1 32-bit software structures, non-burst or burst access 32-bit software structures, non-burst access only 03h pcnet-pci controller 1 32-bit software structures, non-burst or burst access 32-bit software structures, non-burst access only all other reserved undefined undefined undefined
AM79C971 141 preliminary csr62: previous transmit byte count bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 res reserved locations. 11-0 pxbc previous transmit byte count. this field is a copy of the bcnt field of tmd1 of the previous transmit descriptor. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr63: previous transmit status bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 pxst previous transmit status. this field is a copy of bits 31-16 of tmd1 of the previous transmit descriptor. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr64: next transmit buffer address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nxbal contains the lower 16 bits of the next transmit buffer address from which the AM79C971 controller will transmit an outgoing frame. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr65: next transmit buffer address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nxbau contains the upper 16 bits of the next transmit buffer address from which the AM79C971 controller will transmit an outgoing frame. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr66: next transmit byte count bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 res reserved locations. read and written as zeros. 11-0 nxbc next transmit byte count. this field is a copy of the bcnt field of tmd1 of the next transmit de- scriptor. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr67: next transmit status bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nxst next transmit status. this field is a copy of bits 31-16 of tmd1 of the next transmit descriptor. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. 7-0 res reserved locations. read and written as zeros. accessible only when either the stop or the spnd bit is set.
142 AM79C971 preliminary csr72: receive ring counter bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 rcvrc receive ring counter location. contains a two ? s complement bi- nary number used to number the current receive descriptor. this counter interprets the value in csr76 as pointing to the first de- scriptor. a counter value of zero corresponds to the last descriptor in the ring. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr74: transmit ring counter bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 xmtrc transmit ring counter location. contains a two ? s complement bi- nary number used to number the current transmit descriptor. this counter interprets the value in csr78 as pointing to the first de- scriptor. a counter value of zero corresponds to the last descriptor in the ring. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr76: receive ring length bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 rcvrl receive ring length. contains the two ? s complement of the re- ceive descriptor ring length. this register is initialized during the AM79C971 controller initializa- tion routine based on the value in the rlen field of the initialization block. however, this register can be manually altered. the actual receive ring length is defined by the current value in this register. the ring length can be defined as any value from 1 to 65535. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr78: transmit ring length bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 xmtrl transmit ring length. contains the two ? s complement of the transmit descriptor ring length. this register is initialized during the AM79C971 controller initial- ization routine based on the value in the tlen field of the initializa- tion block. however, this register can be manually altered. the ac- tual transmit ring length is defined by the current value in this regis- ter. the ring length can be de- fined as any value from 1 to 65535. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr80: dma transfer counter and fifo threshold control bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-14 res reserved locations. written as zeros and read as undefined. 13-12 rcvfw[1:0] receive fifo watermark. rcvfw controls the point at which receive dma is requested in relation to the number of re- ceived bytes in the receive fifo. rcvfw specifies the number of bytes which must be present (once the frame has been verified as a non-runt) before receive
AM79C971 143 preliminary dma is requested. note however that, if the network interface is op- erating in half-duplex mode, in or- der for receive dma to be performed for a new frame, at least 64 bytes must have been re- ceived. this effectively avoids having to react to receive frames which are runts or suffer a colli- sion during the slot time (512 bit times). if the runt packet accept feature is enabled or if the net- work interface is operating in full- duplex mode, receive dma will be requested as soon as either the rcvfw threshold is reached, or a complete valid receive frame is detected (regardless of length). when the fdrpad (bcr9, bit 2) is set and the AM79C971 control- ler is in full-duplex mode, in order to receive dma to be performed for a new frame, at least 64 bytes must have been received. this effectively disables the runt pack- et accept feature in full duplex. when operating in the no-sram mode (no sram present), the bus receive fifo and the mac receive operate like a single fifo and the watermark value selected by rcvfw[1:0] sets the number of bytes that must be present in the fifo before re- ceive dma is requested. note: a ? no sram configura- tion ? is only valid for 10mb mode. in 100mb mode, sram is man- datory and must always be used. when operating with an external sram, the bus receive fifo, and the mac receive fifo oper- ate independently on the bus side and mac side of the external sram, respectively. in this case, the watermark value set by rcvfw[1:0] sets the number of bytes that must be present in the bus receive fifo only. see ta- ble 27. table 27. receive watermark programming read/write accessible only when either the stop or the spnd bit is set. rcvfw[1:0] is set to a val- ue of 01b (64 bytes) after h_reset or s_reset and is unaffected by stop. 11-10 xmtsp[1:0] transmit start point. xmtsp controls the point at which pream- ble transmission attempts to com- mence in relation to the number of bytes written to the mac transmit fifo for the current transmit frame. when the entire frame is in the mac transmit fifo, transmission will start re- gardless of the value in xmtsp. if the network interface is operat- ing in half-duplex mode, regard- less of xmtsp, the fifo will not internally overwrite its data until at least 64 bytes (or the entire frame if shorter than 64 bytes) have been transmitted onto the network. this ensures that for collisions within the slot time win- dow, transmit data need not be rewritten to the transmit fifo, and retries will be handled auton- omously by the mac. if the dis- able retry feature is enabled, or if the network is operating in full-du- plex mode, the AM79C971 con- troller can overwrite the beginning of the frame as soon as the data is transmitted, because no collision handling is required in these modes. note that when an external sram is being used, if the nou- flo bit (bcr18, bit 11) is set to 1, there is the additional restric- tion that the complete transmit frame must be dma ? d into the AM79C971 controller and reside within a combination of the bus transmit fifo, the external sram, and the mac transmit fifo. rcvfw[1:0] bytes received 00 16 01 64 10 112 11 reserved
144 AM79C971 preliminary when an external sram is used, sram_size > 0, there is a re- striction that the number of bytes written is a combination of bytes written into the bus transmit fifo and the mac transmit fifo. the AM79C971 controller supports a mode that will wait un- til a full packet is available before commencing with the transmis- sion of preamble. this mode is useful in a system where high la- tencies cannot be avoided. see table 28. table 28. transmit start point programming note: a ? no sram configuration ? is only valid for 10mb mode. in 100mb mode, sram is mandatory and must always be used. read/write accessible only when either the stop or the spnd bit is set. xmtsp is set to a value of 01b (64 bytes) after h_reset or s_reset and is unaffected by stop. 9-8 xmtfw[1:0] transmit fifo watermark. xmt- fw specifies the point at which transmit dma is requested, based upon the number of bytes that could be written to the trans- mit fifo without fifo overflow. transmit dma is requested at any time when the number of bytes specified by xmtfw could be written to the fifo without causing transmit fifo overflow, and the internal microcode en- gine has reached a point where the transmit fifo is checked to determine if dma servicing is re- quired. when operating in the no-sram mode (no sram present), sram_size set to 0, the bus transmit fifo and the mac transmit fifo operate like a sin- gle fifo and the watermark val- ue selected by xmtfw[1:0] sets the number of fifo byte loca- tions that must be available in the fifo before receive dma is re- quested. note: a ? no sram configura- tion ? is only valid for 10mb mode. in 100mb mode, sram is man- datory and must always be used. when operating with an external sram, the bus transmit fifo and the mac transmit fifo op- erate independently on the bus side and mac side of the external sram, respectively. in this case, the watermark value set by xmt- fw[1:0] sets the number of fifo byte locations that must be avail- able in the bus transmit fifo. see table 29. read/write accessible only when either the stop or the spnd bit is set. xmtfw is set to a value of 00b (16 bytes) after h_reset or s_reset and is unaffected by stop. 7-0 dmatc[7:0] dma transfer counter. writing and reading to this field has no ef- fect. use max_lat and min_gnt in the pci configura- tion space. csr82: transmit descriptor address pointer lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. xmtsp[1:0] sram_size bytes written 00 0 20 01 0 64 10 0 128 11 0 248 00 >0 44 01 >0 64 10 >0 128 11 >0 full packet table 29. transmit watermark programming xmtfw[1:0] bytes available 00 16 01 64 10 108 11 reserved
AM79C971 145 preliminary 15-0 txdapl contains the lower 16 bits of the transmit descriptor address cor- responding to the last buffer of the previous transmit frame. if the previous transmit frame did not use buffer chaining, then txda- pl contains the lower 16 bits of the previous frame ? s transmit de- scriptor address. when both the stop or spnd bits are cleared, this register is updated by AM79C971 controller immediately before a transmit de- scriptor write. read accessible always. write accessible through the pxdal bits (csr60) when the stop or spnd bit is set. txdapl is set to 0 by h_reset and are unaffect- ed by s_reset or stop. csr84: dma address register lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 dmabal this register contains the lower 16 bits of the address of system memory for the current dma cy- cle. the bus interface unit con- trols the address register by issuing increment commands to increment the memory address for sequential operations. the dmabal register is undefined until the first AM79C971 control- ler dma operation. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr85: dma address register upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 dmabau this register contains the upper 16 bits of the address of system memory for the current dma cy- cle. the bus interface unit con- trols the address register by issuing increment commands to increment the memory address for sequential operations. the dmabau register is undefined until the first AM79C971 control- ler dma operation. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr86: buffer byte counter bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 res reserved. read and written with ones. 11-0 dmabc dma byte count register. con- tains the two's complement of the current size of the remaining transmit or receive buffer in bytes. this register is increment- ed by the bus interface unit. the dmabc register is undefined un- til written. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr88: chip id register lower bit name description 31-28 ver version. this 4-bit pattern is silicon-revision dependent. read accessible only when either the stop or the spnd bit is set. ver is read only. write opera- tions are ignored. 27-12 partid part number. the 16-bit code for the AM79C971 controller is 0010 0110 0010 0011b (2623h). this register is exactly the same as the device id register in the jtag description. it is, however,
146 AM79C971 preliminary a different id as that stored in the device id register in the pci con- figuration space. read accessible only when either the stop or the spnd bit is set. ver is read only. partid is read only. write operations are ig- nored. 11-1 manfid manufacturer id. the 11-bit man- ufacturer code for amd is 00000000001b. this code is per the jedec publication 106-a. note that this code is not the same as the vendor id in the pci configuration space. read accessible only when either the stop or the spnd bit is set. ver is read only. manfid is read only. write operations are ignored. 0 one always a logic 1. read accessible only when either the stop or the spnd bit is set. ver is read only. one is read only. write operations are ig- nored. csr89: chip id register upper bit name description 31-16 res reserved locations. read as un- defined. 15-12 ver version. this 4-bit pattern is silicon-revision dependent. read accessible only when either the stop or the spnd bit is set. ver is read only. ver is read only. write operations are ig- nored. 11-0 partidu upper 12 bits of the AM79C971 controller part number, i.e., 0010 0110 0010b (262h). read accessible only when either the stop or the spnd bit is set. ver is read only. partidu is read only. write operations are ignored. csr92: ring length conversion bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 rcon ring length conversion regis- ter. this register performs a ring length conversion from an encod- ed value as found in the initializa- tion block to a two ? s complement value used for internal counting. by writing bits 15-12 with an en- coded ring length, a two ? s com- plemented value is read. the rcon register is undefined until written. read/write accessible only when either the stop or the spnd bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr100: bus timeout bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 merrto this register contains the value of the longest allowable bus latency (interval between assertion of req and assertion of gnt ) that a system may insert into an AM79C971 controller master transfer. if this value of bus laten- cy is exceeded, then a merr will be indicated in csr0, bit 11, and an interrupt may be generated, depending upon the setting of the merrm bit (csr3, bit 11) and the iena bit (csr0, bit 6). the value in this register is inter- preted as the unsigned number of xtal1 clock periods divided by two, (i.e., the value in this register is given in 0.1 s increments.) for example, the value 0600h (1536 decimal) will cause a merr to be indicated after 153.6 s of bus la- tency. a value of 0 will allow an infinitely long bus latency, i.e., bus timeout error will never oc- cur.
AM79C971 147 preliminary read/write accessible only when either the stop or the spnd bit is set. this register is set to 0600h by h_reset or s_reset and is unaffected by stop. csr112: missed frame count bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 mfc missed frame count. indicates the number of missed frames. mfc will roll over to a count of 0 from the value 65535. the mfco bit of csr4 (bit 8) will be set each time that this occurs. read accessible always. mfc is read only, write operations are ig- nored. mfc is cleared by h_reset or s_reset or by setting the stop bit. csr114: receive collision count bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 rcc receive collision count. indi- cates the total number of colli- sions encountered by the receiver since the last reset of the counter. rcc will roll over to a count of 0 from the value 65535. the rcvcco bit of csr4 (bit 5) will be set each time that this occurs. read accessible always. rcc is read only, write operations are ig- nored. rcc is cleared by h_reset or s_reset, or by setting the stop bit. csr122: advanced feature control bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-1 res reserved locations. written as zeros and read as undefined. 0 rcvalgn receive packet align. when set, this bit forces the data field of iso 8802-3 (ieee/ansi 802.3) pack- ets to align to 0. mod 4 address boundaries (i.e., dword aligned addresses). it is important to note that this feature will only function correctly if all receive buffer boundaries are dword aligned and all receive buffers have 0 mod 4 lengths. in order to ac- complish the data alignment, the AM79C971 controller simply in- serts two bytes of random data at the beginning of the receive pack- et (i.e., before the iso 8802-3 (ieee/ansi 802.3) destination address field). the mcnt field reported to the receive descriptor will not include the extra two bytes. read/write accessible always. rcvalgn is cleared by h_reset or s_reset and is not affected by stop. csr124: test register 1 this register is used to place the AM79C971 controller into various test modes. the runt packet accept is the only user accessible test mode. all other test modes are for amd internal use only. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-4 res reserved locations. written as zeros and read as undefined. 3 rpa runt packet accept. this bit forces the AM79C971 controller to accept runt packets (packets shorter than 64 bytes). read accessible always; write accessible only when stop is set to 1. rpa is cleared by h_reset or s_reset and is not affected by stop. 2-0 res reserved locations. written as zeros and read as undefined. csr125: mac enhanced configuration control bit name description
148 AM79C971 preliminary 31-16 res reserved locations. written as zeros and read as undefined. 15-8 ipg inter packet gap. changing ipg allows the user to program the AM79C971 controller for aggres- siveness on a network. by chang- ing the default value of 96 bit times (6oh) the user can adjust the fairness or aggressiveness of the AM79C971 mac on the net- work. by programming a lower number of bit times other then the iso/iec 8802-3 standard re- quires, the AM79C971 mac will become more aggressive on the network. this aggressive nature will give rise to the AM79C971 controller possibly ? capturing the network ? at times by forcing other less aggressive nodes to defer. by programming a larger number of bit times, the AM79C971 mac will become less aggressive on the network and may defer more often than normal. the perfor- mance of the AM79C971 control- ler may decrease as the ipg value is increased from the de- fault value. note : programming of the ipg should be done in nibble intervals instead of absolute bit times. the decimal and hex values do not match due to delays in the part used to make up the final ipg. changes should be added or sub- tracted from the provided hex val- ue on a one-for-one basis. caution: use this parameter with care. by lowering the ipg below the iso/iec 8802-3 stan- dard 96 bit times, the AM79C971 controller can inter- rupt normal network behavior. read accessible always. write accessible when the stop bit is set to 1. ipg is set to 60h (96 bit times) by h_reset or s_reset and is not affected by stop. 7-0 ifs1 interframespacingpart1. chang- ing ifs1 allows the user to pro- gram the value of the interframe- spacepart1 timing. the AM79C971 controller sets the de- fault value at 60 bit times (3ch). see the subsection on medium allocation in the section media access management for more details. the equation for setting ifs1 when ipg 96 bit times is: ifs1 = ipg - 36 bit times note : programming of the ipg should be done in nibble intervals instead of absolute bit times due to the mii. the decimal and hex values do not match due to de- lays in the part used to make up the final ipg. changes should be added or subtracted from the provided hex value on a one-for-one basis. due to changes in synchroniza- tion delays internally through dif- ferent network ports, the ifs1 can be off by as much as +12 bit times. read accessible always. write accessible only when the spnd bit or the stop bit is set to 1. ifs1 is set to 3ch (60 bit times) by h_reset or s_reset and is not affected by stop. bus configuration registers the bus configuration registers (bcr) are used to program the configuration of the bus interface and other special features of the AM79C971 controller that are not related to the ieee 8802-3 mac functions. the bcrs are accessed by first setting the appropriate rap value and then by performing a slave access to the bdp. see table 30. all bcr registers are 16 bits in width in word i/o mode (dwio = 0, bcr18, bit 7) and 32 bits in width in dword i/o mode (dwio = 1). the upper 16 bits of all bcr reg- isters is undefined when in dword i/o mode. these bits should be written as zeros and should be treated as undefined when read. the default value given for any bcr is the value in the register after h_reset. some of these values may be changed shortly after h_reset when the contents of the external eeprom is automatically read in. none of the bcr register val- ues are affected by the assertion of the stop bit.
AM79C971 149 preliminary note that several registers have no default value. bcr0, bcr1, bcr3, bcr8, bcr10-17, and bcr21 are reserved and have undefined values. bcr2 and bcr34 are not observable without first being pro- grammed through the eeprom read operation or a user register write operation. bcr0, bcr1, bcr16, bcr17, and bcr21 are regis- ters that are used by other devices in the pcnet family. writing to these registers have no effect on the opera- tion of the AM79C971 controller. writes to those registers marked as ? reserved ? will have no effect. reads from these locations will produce undefined values. bcr0: master mode read active bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 msrda reserved locations. after h_reset, the value in this regis- ter will be 0005h. the setting of this register has no effect on any AM79C971 controller function. it is only included for software com- patibility with other pcnet family devices. read always. msrda is read only. write operations have no ef- fect. table 30. bcr registers rap mnemonic default name programmability user eeprom 0 msrda 0005h reserved no no 1 mswra 0005h reserved no no 2 mc 0002h miscellaneous configuration ye s ye s 3 reserved n/a reserved no no 4 led0 00c0h led0 status ye s ye s 5 led1 0084h led1 status ye s ye s 6 led2 0088h led2 status ye s ye s 7 led3 0090h led3 status ye s ye s 8 reserved n/a reserved no no 9 fdc 0000h full-duplex control ye s ye s 10-15 reserved n/a reserved no no 16 iobasel n/a reserved no no 17 iobaseu n/a reserved no no 18 bsbc 9001h burst and bus control ye s ye s 19 eecas 0002h eeprom control and status ye s no 20 sws 0000h software style ye s no 21 intcon n/a reserved no no 22 pcilat ff06h pci latency ye s ye s 23 pcisid 0000h pci subsystem id no ye s 24 pcisvid 0000h pci subsystem vendor id no ye s 25 sramsiz 0000h sram size ye s ye s 26 sramb 0000h sram boundary ye s ye s 27 sramic 0000h sram interface control ye s ye s 28 ebaddrl n/a expansion bus address lower ye s no 29 ebaddru n/a expansion bus address upper ye s no 30 ebd n/a expansion bus data port ye s no 31 stval ffffh software timer value ye s no 32 miicas 0000h mii control and status ye s ye s 33 miiaddr 0000h mii address ye s ye s 34 miimdr n/a mii management data ye s no 35 pcivid 1022h pci vendor id no ye s
150 AM79C971 preliminary bcr1: master mode write active bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 mswra reserved locations. after h_reset, the value in this regis- ter will be 0005h. the setting of this register has no effect on any AM79C971 controller function. it is only included for software com- patibility with other pcnet family devices. read always. mswra is read only. write operations have no ef- fect. bcr2: miscellaneous configuration note: bits 15-0 in this register are programmable through the eeprom. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 res reserved location. written and read as zeros. 14 tmauloop when set, this bit allows external loopback packets to pass onto the network through the t-mau interface, if the t-mau interface has been selected. if the t-mau interface has not been selected, then this bit has no effect. read/write accessible always. tmauloop is reset to 0 by h_reset and is unaffected by s_reset or stop. 13 res reserved location. written and read as zero. 12 ledpe led program enable. when ledpe is set to 1, programming of the led0 (bcr4), led1 (bcr5), led2 (bcr6), and led3 (bcr7) registers is en- abled. when ledpe is cleared to 0, programming of led0 (bcr4), led1 (bcr5), led2 (bcr6), and led3 (bcr7) registers is disabled. writes to those regis- ters will be ignored. read/write accessible always. ledpe is cleared to 0 by h_reset and is unaffected by s_reset or by setting the stop bit. 11-9 res reserved locations. written and read as zeros. 8 apromwe address prom write enable. the AM79C971 controller con- tains a shadow ram on board for storage of the first 16 bytes load- ed from the serial eeprom. accesses to address prom i/o resources will be directed toward this ram. when apromwe is set to 1, then write access to the shadow ram will be enabled. read/write accessible always. apromwe is cleared to 0 by h_reset and is unaffected by s_reset or by setting the stop bit. 7 intlevel interrupt level. this bit allows the interrupt output signals to be pro- grammed for level or edge- sensitive applications. when intlevel is cleared to 0, the inta pin is configured for level-sensitive applications. in this mode, an interrupt request is signaled by a low level driven on the inta pin by the AM79C971 controller. when the interrupt is cleared, the inta pin is tri-stated by the AM79C971 controller and allowed to be pulled to a high lev- el by an external pullup device. this mode is intended for sys- tems which allow the interrupt signal to be shared by multiple devices. when intlevel is set to 1, the inta pin is configured for edge- sensitive applications. in this mode, an interrupt request is sig- naled by a high level driven on the inta pin by the AM79C971 controller. when the interrupt is cleared, the inta pin is driven to a low level by the AM79C971 controller. this mode is intended for systems that do not allow
AM79C971 151 preliminary interrupt channels to be shared by multiple devices. intlevel should not be set to 1 when the AM79C971 controller is used in a pci bus application. read/write accessible always. intlevel is cleared to 0 by h_reset and is unaffected by s_reset or by setting the stop bit. 6-4 res reserved locations. written as zeros and read as undefined. 3 eadisel eadi select. when set to 1, this bit enables the three eadi inter- face pins that are multiplexed with other functions. eesk/led1 becomes sfbd, eedo/led3 becomes srd, led2 becomes srdclk, and sleep becomes ear . see the section on external address detection for more de- tails. read/write accessible always. eadisel is cleared by h_reset and is unaffected by s_reset or by setting the stop bit. 2 awake this bit selects one of two differ- ent sleep modes. if awake is set to 1 and the sleep pin is asserted, the AM79C971 controller goes into snooze mode. if awake is cleared to 0 and the sleep pin is asserted, the AM79C971 control- ler goes into coma mode. see the section power saving modes for more details. this bit only has meaning when the 10base-t network interface is selected. read/write accessible always. awake is cleared to 0 by h_reset and is unaffected by s_reset or by setting the stop bit. 1 asel auto select. when set, the AM79C971 controller will auto- matically select the operating me- dia interface port. if asel has been set to a 1, then when the mi- ipd bit (bcr32, bit 14) is 1, the mii port is selected. if the miipd bit is 0, and then, if the 10base- t transceiver is in the link pass state (due to receiving valid frame data and/or link test pulses or the dlnktst bit is set), the 10base-t port will be used. if the miipd bit is 0 and the 10base-t port is in the link fail state, the aui port will be used. switching between the ports will not occur during transmission to avoid any type of fragment generation. the network port configurations are found in table 31. when asel is set to 1 and the miipd bit is 0, link beat pulses will be transmitted on the 10base-t port, regardless of the state of link status. when asel is reset to 0, link beat pulses will only be transmitted on the 10base-t port when the port- sel bits of the mode register (csr15) have selected 10base- t as the active port. when asel is set to a 0, then the selected network port will be de- termined by the settings of the portsel bits of csr15. when asel is set to 1, the selected net- work port may be determined through software by reading the miipd bit and, if miipd is 0, read- ing the link status through bcr4 or another led control register if it is programmed for link status. the portsel[1:0] bits do not reflect the selected network port when asel is 1. read/write ac- cessible always. asel is set to 1 by h_reset and is unaffected by s_reset or stop. 0 xmausel reserved location. read/write accessible always. this reserved location is cleared by h_reset and is unaffected by s_reset or stop. writing a 1 to this bit has no effect on the operation of the AM79C971 controller.
152 AM79C971 preliminary bcr4: led0 status bcr4 controls the function(s) that the led0 pin dis- plays. multiple functions can be simultaneously en- abled on this led pin. the led display will indicate the logical or of the enabled functions. bcr4 defaults to link status (lnkst) with pulse stretcher enabled (pse = 1) and is fully programmable. note: when ledpe (bcr2, bit 12) is set to 1, pro- gramming of the led0 status register is enabled. when ledpe is cleared to 0, programming of the led0 register is disabled. writes to those registers will be ignored. note: bits 15-0 in this register are programmable through the eeprom. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 ledout this bit indicates the current (non-stretched) value of the led output pin. a value of 1 in this bit indicates that the or of the en- abled signals is true. the logical value of the ledout status signal is determined by the settings of the individual status enable bits of the led register (bits 8 and 6-0). read accessible always. this bit is read only; writes have no ef- fect. ledout is unaffected by h_reset, s_reset, or stop. 14 ledpol led polarity. when this bit has the value 0, then the led pin will be driven to a low level whenev- er the or of the enabled signals is true, and the led pin will be disabled and allowed to float high whenever the or of the enabled signals is false (i.e., the led out- put will be an open drain output and the output value will be the inverse of the ledout status bit). when this bit has the value 1, then the led pin will be driven to a high level whenever the or of the enabled signals is true, and the led pin will be driven to a low level whenever the or of the enabled signals is false (i.e., the led output will be a totem pole output and the output value will be the same polarity as the ledout status bit.). the setting of this bit will not ef- fect the polarity of the ledout bit for this register. read/write accessible always. ledpol is cleared by h_reset and is not affected by s_reset or setting the stop bit. 13 leddis led disable. this bit is used to disable the led output. when leddis has the value 1, then the led output will always be dis- abled. when leddis has the val- ue 0, then the led output value will be governed by the ledout and ledpol values. read/write accessible always. leddis is cleared by h_reset and is not affected by s_reset or setting the stop bit. table 31. network port configuration portsel[1:0] asel (bcr2[1]) link status (of 10base-t) mii status (bcr32[14]) network port xx 1 fail 0 aui xx 1 pass 0 10base-t xx 1 don ? t care 1 mii 00 0 don ? t care don ? t care aui 01 0 don ? t care don ? t care 10base-t 10 0 don ? t care don ? t care gpsi 11 0 don ? t care don ? t care mii
AM79C971 153 preliminary 12 100e 100 mbps enable. when this bit is set to 1, a value of 1 is passed to the ledout bit in this register when the AM79C971 controller is operating at 100 mbps mode. the indication is valid with both the in- ternal and external phys. read/write accessible always. 100e is cleared by h_reset and is not affected by s_reset or setting the stop bit. 11 miise media independent interface se- lected enable. indicates when the mii interface is selected. this will be set when either the manage- ment port state machine is se- lecting the mii or when asel (bcr2, bit1) is disabled and portsel (csr15, bits 8-7) se- lects the mii. this could control relays to switch in and out appro- priate filters or could control an external phy when sharing an rj45 connector. read/write accessible always. miise is cleared by h_reset and is not affected by s_reset or setting the stop bit. 10 dxcvrctl dxcvr control. when the aui interface is the active network port, dxcvrctl controls the as- sertion of the led0 output. the polarity of the asserted state is controlled by the ledpol bit (bcr4, bit 14). the led0 pin can be used to control a dc-to-dc converter in applications that want to connect a 10base2 mau, as well as a standard db15 aui connector to the AM79C971 aui port. when dxcvrctl is set to 1, the led0 output will be asserted. this could be used to enable a dc-to-dc converter for 10base2 maus (assuming the enable input of the dc-to-dc converter is active high and led- pol is cleared to 0). when dx- cvrctl is cleared to 0, the led0 output will be deasserted. this would power down the dc- to-dc converter. when the 10base-t interface is the active network port, the dxcvr output is always deasserted. read/write accessible always. dxcvrctl is cleared by h_reset and is unaffected by s_reset or by setting the stop bit. 9 mpse magic packet status enable. when this bit is set to 1, a value of 1 is passed to the ledout bit in this register when magic packet frame mode is enabled and a magic packet frame is detected on the network. read/write accessible always. mpse is cleared by h_reset and is not affected by s_reset or setting the stop bit. 8 fdlse full-duplex link status enable. indicates the full-duplex link test status. when this bit is set, a value of 1 is passed to the led- out signal when the AM79C971 controller is functioning in a link pass state and full-duplex opera- tion is enabled. when the AM79C971 controller is not func- tioning in a link pass state with full-duplex operation being en- abled, a value of 0 is passed to the ledout signal. when the 10base-t port is ac- tive, a value of 1 is passed to the ledout signal whenever the link test function (described in the t-mau section) detects a link pass state and the fden (bcr9, bit 0) bit is set. when the aui port is active, a value of 1 is passed to the ledout signal whenever full-duplex operation on the aui port is enabled (both fden and auifd bits in bcr9 are set to 1). when the mii port is active, a value of 1 is passed to the ledout signal whenever full-duplex operation on the mii port is enabled (fden bit in bcr9 is set to 1). read/write accessible always. fdlse is cleared by h_reset and is not affected by s_reset or setting the stop bit.
154 AM79C971 preliminary 7 pse pulse stretcher enable. when this bit is set, the led illumination time is extended for each new oc- currence of the enabled function for this led output. a value of 0 disables the pulse stretcher. read/write accessible always. pse is set to 1 by h_reset and is not affected by s_reset or setting the stop bit. 6 lnkse link status enable. when this bit is set, a value of 1 will be passed to the ledout bit in this register when the t-mau mode is in link pass state. when the t-mau is in link fail state, a value of 0 is passed to the ledout bit. this bit does not reflect the link status of the external phy. the function of this bit is masked if the 10base-t port is operating in full-duplex mode. this allows a half-duplex link status led and a full-duplex link status led at the same time. read/write accessible always. lnkse is set to 1 by h_reset and is not affected by s_reset or setting the stop bit. 5 rcvme receive match status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is receive ac- tivity on the network that has passed the address match func- tion for this node. all address matching modes are included: physical, logical filtering, broad- cast and promiscuous. read/write accessible always. rcvme is cleared by h_reset and is not affected by s_reset or setting the stop bit. 4 xmte transmit status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is transmit activity on the network. read/write accessible always. xmte is cleared by h_reset and is not affected by s_reset or setting the stop bit. 3 rxpole receive polarity status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when the polarity of the rxd pair has not been re- versed. receive polarity indication is val- id only if the t-mau is in link pass state. read/write accessible always. rxpole is cleared by h_reset and is not affected by s_reset or setting the stop bit. 2 rcve receive status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is receive ac- tivity on the network. read/write accessible always. rcve is cleared by h_reset and is not affected by s_reset or setting the stop bit. 1 jabe jabber status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when the AM79C971 controller is jabbering on the network. read/write accessible always. jabe is cleared by h_reset and is not affected by s_reset or setting the stop bit. 0 cole collision status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is collision activity on the network. the activ- ity on the collision inputs to the aui ports within the first 4 s after every transmission for the pur- pose of sqe testing will not cause the ledout bit to be set. read/write accessible always. cole is cleared by h_reset and is not affected by s_reset or setting the stop bit.
AM79C971 155 preliminary bcr5: led1 status bcr5 controls the function(s) that the led1 pin dis- plays. multiple functions can be simultaneously en- abled on this led pin. the led display will indicate the logical or of the enabled functions. bcr5 defaults to receive status (rcv) with pulse stretcher enabled (pse = 1) and is fully programmable. note: when ledpe (bcr2, bit 12) is set to 1, pro- gramming of the led1 status register is enabled. when ledpe is cleared to 0, programming of the led1 register is disabled. writes to those registers will be ignored. note: bits 15-0 in this register are programmable through the eeprom. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 ledout this bit indicates the current (non-stretched) value of the led output pin. a value of 1 in this bit indicates that the or of the en- abled signals is true. the logical value of the ledout status signal is determined by the settings of the individual status enable bits of the led register (bits 8 and 6-0). read accessible always. this bit is read only, writes have no ef- fect. ledout is unaffected by h_reset, s_reset, or stop. 14 ledpol led polarity. when this bit has the value 0, then the led pin will be driven to a low level whenev- er the or of the enabled signals is true, and the led pin will be disabled and allowed to float high whenever the or of the enabled signals is false (i.e., the led out- put will be an open drain output and the output value will be the inverse of the ledout status bit). when this bit has the value 1, then the led pin will be driven to a high level whenever the or of the enabled signals is true, and the led pin will be driven to a low level whenever the or of the enabled signals is false (i.e., the led output will be a totem pole output and the output value will be the same polarity as the ledout status bit). the setting of this bit will not ef- fect the polarity of the ledout bit for this register. read/write accessible always. ledpol is cleared by h_reset and is not affected by s_reset or setting the stop bit. 13 leddis led disable. this bit is used to disable the led output. when leddis has the value 1, then the led output will always be dis- abled. when leddis has the val- ue 0, then the led output value will be governed by the ledout and ledpol values. read/write accessible always. leddis is cleared by h_reset and is not affected by s_reset or setting the stop bit. 12 100e 100 mbps enable. when this bit is set to 1, a value of 1 is passed to the ledout bit in this register when the AM79C971 controller is operating at 100 mbps mode. the indication is valid with both the in- ternal and external phys. read/write accessible always. 100e is cleared by h_reset and is not affected by s_reset or setting the stop bit. 11 miise media independent interface se- lected enable. indicates when the mii interface is selected. this will be set when either the manage- ment port state machine is se- lecting the mii or when asel (bcr2, bit1) is disabled and portsel (csr15, bits 8-7) se- lects the mii. this could control relays to switch in and out appro- priate filters or could control an external phy when sharing an rj45 connector. read/write accessible always. miise is cleared by h_reset and is not affected by s_reset or setting the stop bit.
156 AM79C971 preliminary 10 dxcvrctl dxcvr control. when the aui interface is the active network port, dxcvrctl controls the as- sertion of the led1 output. the polarity of the asserted state is controlled by the ledpol bit (bcr4, bit 14). the led1 pin can be used to control a dc-to-dc converter in applications that want to connect a 10base2 mau, as well as a standard db15 aui connector to the AM79C971 aui port. when dxcvrctl is set to 1, the led1 output will be asserted. this could be used to enable a dc-to-dc converter for 10base2 maus (assuming the enable input of the dc-to-dc converter is active high and led- pol is cleared to 0). when dx- cvrctl is cleared to 0, the led1 output will be deasserted. this would power down the dc- to-dc converter. when the 10base-t interface is the active network port, the dxcvr output is always deasserted. read/write accessible always. dxcvrctl is cleared by h_reset and is unaffected by s_reset or by setting the stop bit. 9 mpse magic packet status enable. when this bit is set to 1, a value of 1 is passed to the ledout bit in this register when magic packet mode is enabled and a magic packet frame is detected on the network. read/write accessible always. mpse is cleared by h_reset and is not affected by s_reset or setting the stop bit. 8 fdlse full-duplex link status enable. indicates the full-duplex link test status. when this bit is set, a value of 1 is passed to the led- out signal when the AM79C971 controller is functioning in a link pass state and full-duplex opera- tion is enabled. when the AM79C971 controller is not func- tioning in a link pass state with full-duplex operation being en- abled, a value of 0 is passed to the ledout signal. when the 10base-t port is ac- tive, a value of 1 is passed to the ledout signal whenever the link test function (described in the t-mau section) detects a link pass state and the fden (bcr9, bit 0) bit is set. when the aui port is active, a value of 1 is passed to the ledout signal whenever full-duplex operation on the aui port is enabled (both fden and auifd bits in bcr9 are set to 1). read/write accessible always. fdlse is cleared by h_reset and is not affected by s_reset or setting the stop bit. 7 pse pulse stretcher enable. when this bit is set, the led illumination time is extended for each new oc- currence of the enabled function for this led output. a value of 0 disables the pulse stretcher. read/write accessible always. pse is set to 1 by h_reset and is not affected by s_reset or setting the stop bit. 6 lnkse link status enable. when this bit is set, a value of 1 will be passed to the ledout bit in this register when the t-mau is in link pass state. when the t-mau is in link fail state, a value of 0 is passed to the ledout bit. this bit does not reflect the link status of the external phy. the function of this bit is masked if the 10base-t port is operating in full-duplex mode. this allows a half-duplex link status led and a full-duplex link status led at the same time. read/write accessible always. lnkse is cleared by h_reset and is not affected by s_reset or setting the stop bit.
AM79C971 157 preliminary 5 rcvme receive match status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is receive ac- tivity on the network that has passed the address match func- tion for this node. all address matching modes are included: physical, logical filtering, broad- cast, and promiscuous. read/write accessible always. rcvme is cleared by h_reset and is not affected by s_reset or setting the stop bit. 4 xmte transmit status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is transmit activity on the network. read/write accessible always. xmte is cleared by h_reset and is not affected by s_reset or setting the stop bit. 3 rxpole receive polarity status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when normal polarity of the rxd pair has not been re- versed. receive polarity indication is val- id only if the t-mau is in link pass state. read/write accessible always. rxpole is cleared by h_reset and is not affected by s_reset or setting the stop bit. 2 rcve receive status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is receive ac- tivity on the network. read/write accessible always. rcve is set to 1 by h_reset and is not affected by s_reset or setting the stop bit. 1 jabe jabber status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when the AM79C971 controller is jabbering on the network. read/write accessible always. jabe is cleared by h_reset and is not affected by s_reset or setting the stop bit. 0 cole collision status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is collision activity on the network. the activ- ity on the collision inputs to the aui port within the first 4 s after every transmission for the pur- pose of sqe testing will not cause the ledout bit to be set. read/write accessible always. cole is cleared by h_reset and is not affected by s_reset or setting the stop bit. bcr6: led2 status bcr6 controls the function(s) that the led2 pin dis- plays. multiple functions can be simultaneously en- abled on this led pin. the led display will indicate the logical or of the enabled functions. bcr6 defaults to receive polarity status (rxpol) with pulse stretcher enabled (pse = 1) and is fully programmable. note: when ledpe (bcr2, bit 12) is set to 1, pro- gramming of the led2 status register is enabled. when ledpe is cleared to 0, programming of the led2 register is disabled. writes to those registers will be ignored. note: bits 15-0 in this register are programmable through the eeprom pread operation. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 ledout this bit indicates the current (non-stretched) value of the led output pin. a value of 1 in this bit indicates that the or of the en- abled signals is true. the logical value of the ledout status signal is determined by the settings of the individual status enable bits of the led register (bits 8 and 6-0). read accessible always. this bit is read only; writes have no ef- fect. ledout is unaffected by h_reset, s_reset, or stop.
158 AM79C971 preliminary 14 ledpol led polarity. when this bit has the value 0, then the led pin will be driven to a low level whenev- er the or of the enabled signals is true, and the led pin will be disabled and allowed to float high whenever the or of the enabled signals is false (i.e., the led out- put will be an open drain output and the output value will be the inverse of the ledout status bit). when this bit has the value 1, then the led pin will be driven to a high level whenever the or of the enabled signals is true, and the led pin will be driven to a low level whenever the or of the enabled signals is false (i.e., the led output will be a totem pole output and the output value will be the same polarity as the ledout status bit). the setting of this bit will not ef- fect the polarity of the ledout bit for this register. read/write accessible always. ledpol is cleared by h_reset and is not affected by s_reset or setting the stop bit. 13 leddis led disable. this bit is used to disable the led output. when leddis has the value 1, then the led output will always be dis- abled. when leddis has the val- ue 0, then the led output value will be governed by the ledout and ledpol values. read/write accessible always. leddis is cleared by h_reset and is not affected by s_reset or setting the stop bit. 12 100e 100 mbps enable. when this bit is set to 1, a value of 1 is passed to the ledout bit in this register when the AM79C971 controller is operating at 100 mbps mode. the indication is valid with both the in- ternal and external phys. read/write accessible always. 100e is cleared by h_reset and is not affected by s_reset or setting the stop bit. 11 miise media independent interface se- lected enable. indicates when the mii interface is selected. this will be set when either the manage- ment port state machine is se- lecting the mii or when asel (bcr2, bit1) is disabled and portsel (csr15, bits 8-7) se- lects the mii. this could control relays to switch in and out appro- priate filters or could control an external phy when sharing an rj45 connector. read/write accessible always. miise is cleared by h_reset and is not affected by s_reset or setting the stop bit. 10 dxcvrctl dxcvr control. when the aui interface is the active network port, dxcvrctl controls the as- sertion of the led2 output. the polarity of the asserted state is controlled by the ledpol bit (bcr4, bit 14). the led2 pin can be used to control a dc-to-dc converter in applications that want to connect a 10base2 mau, as well as a standard db15 aui connector to the AM79C971 aui port. when dxcvrctl is set to 1, the led2 output will be asserted. this could be used to enable a dc-to-dc converter for 10base2 maus (assuming the enable input of the dc-to-dc converter is active high and led- pol is cleared to 0). when dx- cvrctl is cleared to 0, the led2 output will be deasserted. this would power down the dc- to-dc converter. when the 10base-t interface is the active network port, the dxcvr output is always deasserted. read/write accessible always. dxcvrctl is cleared by h_reset and is unaffected by s_reset or by setting the stop bit.
AM79C971 159 preliminary 9 mpse magic packet status enable. when this bit is set to 1, a value of 1 is passed to the ledout bit in this register when magic packet frame mode is enabled and a magic packet frame is detected on the network. read/write accessible always. mpse is cleared by h_reset and is not affected by s_reset or setting the stop bit. 8 fdlse full-duplex link status enable. indicates the full-duplex link test status. when this bit is set, a value of 1 is passed to the led- out signal when the AM79C971 controller is functioning in a link pass state and full-duplex opera- tion is enabled. when the AM79C971 controller is not func- tioning in a link pass state with full-duplex operation being en- abled, a value of 0 is passed to the ledout signal. when the 10base-t port is ac- tive, a value of 1 is passed to the ledout signal whenever the link test function (described in the t-mau section) detects a link pass state and the fden (bcr9, bit 0) bit is set. when the aui port is active, a value of 1 is passed to the ledout signal whenever full-duplex operation on the aui port is enabled (both fden and auifd bits in bcr9 are set to 1). read/write accessible always. fdlse is cleared by h_reset and is not affected by s_reset or setting the stop bit. 7 pse pulse stretcher enable. when this bit is set, the led illumination time is extended for each new oc- currence of the enabled function for this led output. a value of 0 disables the pulse stretcher. read/write accessible always. pse is set to 1 by h_reset and is not affected by s_reset or setting the stop bit. 6 lnkse link status enable. when this bit is set, a value of 1 will be passed to the ledout bit in this register when the t-mau is in link pass state. when the t-mau is in link fail state, a value of 0 is passed to the ledout bit. this bit does not reflect the link status of the external phy. the function of this bit is masked if the 10base-t port is operating in full-duplex mode. this allows a half-duplex link status led and a full-duplex link status led at the same time. read/write accessible always. lnkse is cleared by h_reset and is not affected by s_reset or setting the stop bit. 5 rcvme receive match status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is receive ac- tivity on the network that has passed the address match func- tion for this node. all address matching modes are included: physical, logical filtering, broad- cast, and promiscuous. read/write accessible always. rcvme is cleared by h_reset and is not affected by s_reset or setting the stop bit. 4 xmte transmit status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is transmit activity on the network. read/write accessible always. xmte is cleared by h_reset and is not affected by s_reset or setting the stop bit. 3 rxpole receive polarity status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when normal polarity of the rxd pair has not been re- versed. receive polarity indication is valid only if the t-mau is in link pass state.
160 AM79C971 preliminary read/write accessible always. rxpole is set to 1 by h_reset and is not affected by s_reset or setting the stop bit. 2 rcve receive status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is receive ac- tivity on the network. read/write accessible always. rcve is set to 1 by h_reset and is not affected by s_reset or setting the stop bit. 1 jabe jabber status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when the AM79C971 controller is jabbering on the network. read/write accessible always. jabe is cleared by h_reset and is not affected by s_reset or setting the stop bit. 0 cole collision status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is collision activity on the network. the activ- ity on the collision inputs to the aui port within the first 4 s after every transmission for the pur- pose of sqe testing will not cause the ledout bit to be set. read/write accessible always. cole is cleared by h_reset and is not affected by s_reset or setting the stop bit. bcr7: led3 status bcr7 controls the function(s) that the led3 pin dis- plays. multiple functions can be simultaneously en- abled on this led pin. the led display will indicate the logical or of the enabled functions. bcr7 defaults to transmit status (xmt) with pulse stretcher enabled (pse = 1) and is fully programmable. note: when ledpe (bcr2, bit 12) is set to 1, pro- gramming of the led3 status register is enabled. when ledpe is cleared to 0, programming of the led3 register is disabled. writes to those registers will be ignored. note: bits 15-0 in this register are programmable through the eeprom. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 ledout this bit indicates the current (non-stretched) value of the led output pin. a value of 1 in this bit indicates that the or of the en- abled signals is true. the logical value of the ledout status signal is determined by the settings of the individual status enable bits of the led register (bits 8 and 6-0). read accessible always. this bit is read only; writes have no ef- fect. ledout is unaffected by h_reset, s_reset, or stop. 14 ledpol led polarity. when this bit has the value 0, then the led pin will be driven to a low level whenev- er the or of the enabled signals is true, and the led pin will be disabled and allowed to float high whenever the or of the enabled signals is false (i.e., the led out- put will be an open drain output and the output value will be the inverse of the ledout status bit.). when this bit has the value 1, then the led pin will be driven to a high level whenever the or of the enabled signals is true, and the led pin will be driven to a low level whenever the or of the enabled signals is false (i.e., the led output will be a totem pole output and the output value will be the same polarity as the ledout status bit). the setting of this bit will not ef- fect the polarity of the ledout bit for this register. read/write accessible always. ledpol is cleared by h_reset and is not affected by s_reset or setting the stop bit.
AM79C971 161 preliminary 13 leddis led disable. this bit is used to disable the led output. when leddis has the value 1, then the led output will always be dis- abled. when leddis has the val- ue 0, then the led output value will be governed by the ledout and ledpol values. read/write accessible always. leddis is cleared by h_reset and is not affected by s_reset or setting the stop bit. 12 100e 100 mbps enable. when this bit is set to 1, a value of 1 is passed to the ledout bit in this register when the AM79C971 controller is operating at 100 mbps mode. the indication is valid with both the in- ternal and external phys. read/write accessible always. 100e is cleared by h_reset and is not affected by s_reset or setting the stop bit. 11 miise media independent interface se- lected enable. indicates when the mii interface is selected. this will be set when either the manage- ment port state machine is se- lecting the mii or when asel (bcr2, bit1) is disabled and portsel (csr15, bits 8-7) se- lects the mii. this could control relays to switch in and out appro- priate filters or could control an external phy when sharing an rj45 connector. read/write accessible always. miise is cleared by h_reset and is not affected by s_reset or setting the stop bit. 10 dxcvrctl dxcvr control. when the aui interface is the active network port, dxcvrctl controls the as- sertion of the led3 output. the polarity of the asserted state is controlled by the ledpol bit (bcr4, bit 14). the led3 pin can be used to control a dc-to-dc converter in applications that want to connect a 10base2 mau, as well as a standard db15 aui connector to the AM79C971 aui port. when dxcvrctl is set to 1, the led3 output will be asserted. this could be used to enable a dc-to-dc converter for 10base2 maus (assuming the enable input of the dc-to-dc converter is active high and led- pol is cleared to 0). when dx- cvrctl is cleared to 0, the led3 output will be deasserted. this would power down the dc- to-dc converter. when the 10base-t interface is the active network port, the dxcvr output is always deasserted. read/write accessible always. dxcvrctl is cleared by h_reset and is unaffected by s_reset or by setting the stop bit. 9 mpse magic packet status enable. when this bit is set to 1, a value of 1 is passed to the ledout bit in this register when magic frame mode is enabled and a magic frame is detected on the network. read/write accessible always. mpse is cleared by h_reset and is not affected by s_reset or setting the stop bit. 8 fdlse full-duplex link status enable. indicates the full-duplex link test status. when this bit is set, a value of 1 is passed to the led- out signal when the AM79C971 controller is functioning in a link pass state and full-duplex opera- tion is enabled. when the AM79C971 controller is not func- tioning in a link pass state with full-duplex operation being en- abled, a value of 0 is passed to the ledout signal. when the 10base-t port is ac- tive, a value of 1 is passed to the ledout signal whenever the link test function (described in the t-mau section) detects a link pass state and the fden (bcr9, bit 0) bit is set. when the aui port is active, a value of 1 is passed to the ledout signal whenever full-duplex operation on the aui port is enabled (both
162 AM79C971 preliminary fden and auifd bits in bcr9 are set to 1). read/write accessible always. fdlse is cleared by h_reset and is not affected by s_reset or setting the stop bit. 7 pse pulse stretcher enable. when this bit is set, the led illumination time is extended for each new oc- currence of the enabled function for this led output. a value of 0 disables the pulse stretcher. read/write accessible always. pse is set to 1 by h_reset and is not affected by s_reset or setting the stop bit. 6 lnkse link status enable. when this bit is set, a value of 1 will be passed to the ledout bit in this register when the t-mau is in link pass state. when the t-mau is in link fail state, a value of 0 is passed to the ledout bit. this bit does not reflect the link status of the external phy. the function of this bit is masked if the 10base-t port is operating in full-duplex mode. this allows a half-duplex link status led and a full-duplex link status led at the same time. read/write accessible always. lnkse is cleared by h_reset and is not affected by s_reset or setting the stop bit. 5 rcvme receive match status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is receive ac- tivity on the network that has passed the address match func- tion for this node. all address matching modes are included: physical, logical filtering, broad- cast, and promiscuous. read/write accessible always. rcvme is cleared by h_reset and is not affected by s_reset or setting the stop bit. 4 xmte transmit status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is transmit activity on the network. read/write accessible always. xmte is set to 1 by h_reset and is not affected by s_reset or setting the stop bit. 3 rxpole receive polarity status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when normal polarity of the rxd pair has not been re- versed. receive polarity indication is val- id only if the t-mau is in link pass state. read/write accessible always. rxpole is cleared by h_reset and is not affected by s_reset or setting the stop bit. 2 rcve receive status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is receive ac- tivity on the network. read/write accessible always. rcve is cleared by h_reset and is not affected by s_reset or setting the stop bit. 1 jabe jabber status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when the AM79C971 controller is jabbering on the network. read/write accessible always. jabe is cleared by h_reset and is not affected by s_reset or setting the stop bit. 0 cole collision status enable. when this bit is set, a value of 1 is passed to the ledout bit in this register when there is collision activity on the network. the activ- ity on the collision inputs to the aui port within the first 4 s after every transmission for the pur- pose of sqe testing will not cause the ledout bit to be set.
AM79C971 163 preliminary read/write accessible always. cole is cleared by h_reset and is not affected by s_reset or setting the stop bit. bcr9: full-duplex control note: bits 15-0 in this register are programmable through the eeprom. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-3 res reserved locations. written as zeros and read as undefined. 2 fdrpad full-duplex runt packet accept disable. when fdrpad is set to 1 and full-duplex mode is en- abled, the AM79C971 controller will only receive frames that meet the minimum ethernet frame length of 64 bytes. receive dma will not start until at least 64 bytes or a complete frame have been received. by default, fdrpad is cleared to 0. the AM79C971 con- troller will accept any length frame and receive dma will start according to the programming of the receive fifo watermark. note that there should not be any runt packets in a full-duplex net- work, since the main cause for runt packets is a network collision and there are no collisions in a full-duplex network. read/write accessible always. fdrpad is cleared by h_reset and is not affected by s_reset or by setting the stop bit. 1 auifd aui full-duplex. auifd controls whether or not full-duplex opera- tion on the aui port is enabled. auifd is only meaningful if fden (bcr9, bit 0) is set to 1. if the fden bit is 0, the aui port will always operate in half-duplex mode. in addition, if fden is set to 1 but the auifd bit is reset to 0, the aui port will always oper- ate in half-duplex mode. if fden is set to 1 and auifd is set to 1, full-duplex operation on the aui port is enabled. read/write accessible always. auifd is reset to 0 by h_reset, and is unaffected by s_reset and the stop bit. 0 fden full-duplex enable. fden con- trols whether full-duplex opera- tion is enabled. when fden is cleared, full-duplex operation is not enabled and the AM79C971 controller will always operate in the half-duplex mode. when fden is set, the AM79C971 con- troller will operate in full-duplex mode when the 10base-t or mii port is enabled or when the aui port is enabled and the auifd (bcr9, bit 1) bit is set. when dlnktst (csr15, bit 12) is set to 1, full-duplex operation will not be enabled on the 10base-t port. fden will override the auto- negotiation portion of the internal 10base-t mau. the internal tmau will no longer try to auto- matically negotiate for the link. it assumes that the software is pro- gramming the fden bit for a rea- son and defers control. see table 32. do not set this bit when auto- negotiation is enabled. read/write accessible always. fden is reset to 0 by h_reset, and is unaffected by s_reset and the stop bit. bcr16: i/o base address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-5 iobasel reserved locations. after h_reset, the value of these bits will be undefined. the settings of these bits will have no effect on any AM79C971 controller func- tion. it is only included for soft- ware compatibility with other pcnet family devices. read/write accessible always. iobasel is not affected by s_reset or stop.
164 AM79C971 preliminary 4-0 res reserved locations. written as zeros, read as undefined. bcr17: i/o base address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 iobaseu reserved locations. after h_reset, the value in this regis- ter will be undefined. the settings of this register will have no effect on any AM79C971 controller function. it is only included for software compatibility with other pcnet family devices. read/write accessible always. iobaseu is not affected by s_reset or stop. bcr18: burst and bus control register note: note that bits 15-0 in this register are program- mable through the eeprom. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 romtmg expansion rom timing. the val- ue of romtmg is used to tune the timing for all ebdata (bcr30) accesses to sram/ flash/eprom as well as all ex- pansion rom accesses to flash/ eprom. romtmg, during read opera- tions, defines the time from when the AM79C971 controller drives the lower 8 or 16 bits of the ex- pansion bus address bus to when the AM79C971 controller latches in the data on the 8 or 16 bits of the expansion bus data inputs. romtmg, during write operations, defines the time from when the AM79C971 controller drives the lower 8 or 16 bits of the expansion bus data to when the ebwe and eromcs deassert. the differences in the sizes of the expansion bus address and data busses is due to the differ- ence in the access for sram ver- sus flash/eprom. the register value specifies the time in number of clock cycles +1 according to table 33. note : programming romtng with a value of 0 is not permitted. the access time for the expan- sion rom or the edbata (bcr30) device (t acc ) during read operations can be calculat- ed by subtracting the clock to out- put delay for the ebua_eba[7:0] outputs (t v_a_d ) and by subtract- ing the input to clock setup time for the ebd[7:0] inputs (t s_d ) from the time defined by romt- mg: t acc = romtmg * clk period *clk_fac - (t v_a_d ) - (t s_d ) the access time for the expan- sion rom or for the edbata (bcr30) device (t acc) during write operations can be calculat- ed by subtracting the clock to out- put delay for the ebua eba[7:0] outputs (t v_a_d ) and by adding the input to clock setup time for sram/flash/epro inputs (t s_d ) from the time defined by romt- mg: t acc = romtmg * clk period * clk_fac - (t v_a_d ) - (t s_d ) table 32. network port configuration auifd (bit 1) fden (bit 0) effect on the aui port effect on the 10base-t port effect on the gpsi port effect on the mii port (asel = 0, portsel = mii) x 0 half-duplex half-duplex half-duplex half-duplex 0 1 half-duplex full-duplex full-duplex full-duplex 1 1 full-duplex full-duplex full-duplex full-duplex table 33. romtng programming values romtmg (bits 15-12) no. of expansion bus cycles 1h<=n <=fh n+1
AM79C971 165 preliminary for an adapter card application, the value used for clock period should be 30 ns to guarantee cor- rect interface timing at the maxi- mum clock frequency of 33 mhz. read accessible always; write accessible only when the stop bit is set. romtmg is set to the value of 1001b by h_reset and is not affected by s_reset or stop. the default value allows using an expansion rom with an access time of 250 ns in a system with a maximum clock frequency of 33 mhz. 11 nouflo no underflow on transmit. when the nouflo bit is set to 1, the AM79C971 controller will not start transmitting the preamble for a packet until the transmit start point (csr80, bits 10-11) re- quirement (except when xmtsp = 3h, full packet has no meaning when nouflo is set to 1) has been met and the complete pack- et has been dma ? d into the AM79C971 controller. the com- plete packet may reside in any combination of the bus transmit fifo, the external sram, and the mac transmit fifo, as long as enough of the packet is in the mac transmit fifo to meet the transmit start point requirement. when the nouflo bit is cleared to 0, the transmit start point is the only restriction on when pre- amble transmission begins for transmit packets. setting the nouflo bit guaran- tees that the AM79C971 control- ler will never suffer transmit underflows, because the arbiter that controls transfers to and from the external sram guarantees a worst case latency on transfers to and from the mac and bus transmit fifos such that it will never underflow if the complete packet has been dma ? d into the AM79C971 controller before packet transmission begins. the nouflo bit should not be set when the AM79C971 control- ler is operating in the no-sram mode with no external sram. read/write accessible only when either the stop or the spnd bit is set. nouflo is cleared to 0 af- ter h_reset or s_reset and is unaffected by stop. 10 res reserved location. written as ze- ros and read as undefined. 9 memcmd memory command used for burst read accesses to the transmit buffer. when memcmd is set to 0, all burst read accesses to the transmit buffer are of the pci command type memory read line (type 14). when memcmd is set to 1, all burst read accesses to the transmit buffer are of the pci command type memory read multiple (type 12). read accessible always; write accessible only when either the stop or the spnd bit is set. memcmd is cleared by h_reset and is not affected by s_reset or stop. 8 extreq extended request. this bit con- trols the deassertion of req for a burst transaction. if extreq is set to 0, req is deasserted at the beginning of a burst transaction. (the AM79C971 controller never performs more than one burst transaction within a single bus mastership period.) in this mode, the AM79C971 controller relies on the pci latency timer to get enough bus bandwidth, in case the system arbiter also removes gnt at the beginning of the burst transaction. if extreq is set to 1, req stays asserted until the last but one data phase of the burst transaction is done. this mode is useful for systems that implement an arbitration scheme without preemption and require that req stays asserted through- out the transaction.
166 AM79C971 preliminary extreq should not be set to 1 when the AM79C971 controller is used in a pci bus application. read accessible always, write accessible only when either the stop or the spnd bit is set. ex- treq is cleared by h_reset and is not affected by s_reset or stop. 7 dwio double word i/o. when set, this bit indicates that the AM79C971 controller is programmed for dword i/o (dwio) mode. when cleared, this bit indicates that the AM79C971 controller is pro- grammed for word i/o (wio) mode. this bit affects the i/o re- source offset map and it affects the defined width of the AM79C971 controllers i/o re- sources. see the dwio and wio sections for more details. the initial value of the dwio bit is determined by the programming of the eeprom. the value of dwio can be al- tered automatically by the AM79C971 controller. specifical- ly, the AM79C971 controller will set dwio if it detects a dword write access to offset 10h from the AM79C971 controller i/o base address (corresponding to the rdp resource). once the dwio bit has been set to a 1, only a h_reset or an ee- prom read can reset it to a 0. (note that the eeprom read op- eration will only set dwio to a 0 if the appropriate bit inside of the eeprom is set to 0.) read accessible always. dwio is read only, write operations have no effect. dwio is cleared by h_reset and is not affected s_reset or by setting the stop bit. 6 breade burst read enable. when set, this bit enables burst mode during memory read accesses. when cleared, this bit prevents the de- vice from performing bursting during read accesses. the AM79C971 controller can per- form burst transfers when reading the initialization block, the de- scriptor ring entries (when swstyle = 3) and the buffer memory. breade should be set to 1 when the AM79C971 controller is used in a pci bus application to guar- antee maximum performance. read accessible always; write accessible only when either the stop or the spnd bit is set. breade is cleared by h_reset and is not affected by s_reset or stop. 5 bwrite burst write enable. when set, this bit enables burst mode during memory write accesses. when cleared, this bit prevents the de- vice from performing bursting during write accesses. the AM79C971 controller can per- form burst transfers when writing the descriptor ring entries (when swstyle = 3) and the buffer memory. bwrite should be set to 1 when the AM79C971 controller is used in a pci bus application to guar- antee maximum performance. read accessible always, write accessible only when either the stop or the spnd bit is set. bwrite is cleared by h_reset and is not affected by s_reset or stop. 4-3 tstshdw reserved locations. written an read as zeros. 2-0 linbc reserved locations. read acces- sible always; write accessible only when either the stop or the spnd bit is set. after h_reset, the value in these bits will be 001b. the setting of these bits have no effect on any AM79C971 controller function. linbc is not affected by s_reset or stop.
AM79C971 167 preliminary bcr19: eeprom control and status bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 pvalid eeprom valid status bit. read accessible only. pvalid is read only; write operations have no ef- fect. a value of 1 in this bit indi- cates that a pread operation has occurred, and that (1) there is an eeprom connected to the AM79C971 controller interface pins and (2) the contents read from the eeprom have passed the checksum verification opera- tion. a value of 0 in this bit indicates a failure in reading the eeprom. the checksum for the entire 64 bytes of eeprom is incorrect or no eeprom is connected to the interface pins. pvalid is set to 0 during h_reset and is unaffected by s_reset or the stop bit. how- ever, following the h_reset op- eration, an automatic read of the eeprom will be performed. just as is true for the normal pread command, at the end of this auto- matic read operation, the pvalid bit may be set to 1. therefore, h_reset will set the pvalid bit to 0 at first, but the automatic ee- prom read operation may later set pvalid to a 1. if pvalid becomes 0 following an eeprom read operation (ei- ther automatically generated af- ter h_reset, or requested through pread), then all ee- prom-programmable bcr loca- tions will be reset to their h_reset values. the content of the address prom locations, however, will not be cleared. if no eeprom is present at the eesk, eedi, and eedo pins, then all attempted pread com- mands will terminate early and pvalid will not be set. this ap- plies to the automatic read of the eeprom after h_reset, as well as to host-initiated pread commands. 14 pread eeprom read command bit. when this bit is set to a 1 by the host, the pvalid bit (bcr19, bit 15) will immediately be reset to a 0, and then the AM79C971 con- troller will perform a read opera- tion of 64 bytes from the eeprom through the interface. the eeprom data that is fetched during the read will be stored in the appropriate internal registers on board the AM79C971 controller. upon com- pletion of the eeprom read op- eration, the AM79C971 controller will assert the pvalid bit. ee- prom contents will be indirectly accessible to the host through read accesses to the address prom (offsets 0h through oh) and through read accesses to other eeprom programmable registers. note that read access- es from these locations will not actually access the eeprom it- self, but instead will access the AM79C971 controllers internal copy of the eeprom contents. write accesses to these locations may change the AM79C971 con- troller register contents, but the eeprom locations will not be af- fected. eeprom locations may be accessed directly through bcr19. at the end of the read operation, the pread bit will automatically be reset to a 0 by the AM79C971 controller and pvalid will bet set, provided that an eeprom existed on the interface pins and that the checksum for the entire 64 bytes of eeprom was cor- rect. note that when pread is set to a 1, then the AM79C971 controller will no longer respond to any ac- cesses directed toward it, until the pread operation has com- pleted successfully. the AM79C971 controller will termi- nate these accesses with the as-
168 AM79C971 preliminary sertion of devsel and stop while trdy is not asserted, sig- naling to the initiator to discon- nect and retry the access at a later time. if a pread command is given to the AM79C971 controller but no eeprom is attached to the inter- face pins, the pread bit will be cleared to a 0, and the pvalid bit will remain reset with a value of 0. this applies to the automatic read of the eeprom after h_reset as well as to host initi- ated pread commands. ee- prom programmable locations on board the AM79C971 control- ler will be set to their default val- ues by such an aborted pread operation. for example, if the aborted pread operation imme- diately followed the h_reset operation, then the final state of the eeprom programmable lo- cations will be equal to the h_reset programming for those locations. if a pread command is given to the AM79C971 controller and the auto-detection pin (eesk/led1 / sfbd) indicates that no ee- prom is present, then the ee- prom read operation will still be attempted. note that at the end of the h_reset operation, a read of the eeprom will be performed automatically. this h_reset- generated eeprom read func- tion will not proceed if the auto- detection pin (eesk/led1 /sf- bd) indicates that no eeprom is present. read accessible always; write accessible only when either the stop or the spnd bit is set. pread is set to 0 during h_reset and is unaffected by s_reset or the stop bit. 13 eedet eeprom detect. this bit indi- cates the sampled value of the eesk/led1 /sfbd pin at the end of h_reset. this value indi- cates whether or not an ee- prom is present at the eeprom interface. if this bit is a 1, it indi- cates that an eeprom is present. if this bit is a 0, it indi- cates that an eeprom is not present. read accessible only. eedet is read only; write operations have no effect. the value of this bit is determined at the end of the h_reset operation. it is unaf- fected by s_reset or the stop bit. table 34 indicates the possible combinations of eedet and the existence of an eeprom and the resulting operations that are pos- sible on the eeprom interface. 12-5 res reserved locations. written as zeros; read as undefined. 4 een eeprom port enable. when this bit is set to a 1, it causes the val- ues of ecs, esk, and edi to be driven onto the eecs, eesk, and eedi pins, respectively. if een = 0 and no eeprom read function is currently active, then eecs will be driven low. when een = 0 and no eeprom read function is currently active, eesk and eedi pins will be driven by the led registers bcr5 and bcr4, respectively. see table 35. read accessible always, write accessible only when either the stop or the spnd bit is set. een is set to 0 by h_reset and is unaffected by the s_reset or stop bit. 3 res reserved location. written as zero and read as undefined. 2 ecs eeprom chip select. this bit is used to control the value of the eecs pin of the interface when the een bit is set to 1 and the pread bit is set to 0. if een = 1
AM79C971 169 preliminary and pread = 0 and ecs is set to a 1, then the eecs pin will be forced to a high level at the ris- ing edge of the next clock follow- ing bit programming. if een = 1 and pread = 0 and ecs is set to a 0, then the eecs pin will be forced to a low level at the rising edge of the next clock following bit programming. ecs has no effect on the output value of the eecs pin unless the pread bit is set to 0 and the een bit is set to 1. read accessible always, write accessible only when either the stop or the spnd bit is set. ecs is set to 0 by h_reset and is not affected by s_reset or stop. 1 esk eeprom serial clock. this bit and the edi/edo bit are used to control host access to the ee- prom. values programmed to this bit are placed onto the eesk pin at the rising edge of the next clock following bit programming, except when the pread bit is set to 1 or the een bit is set to 0. if both the esk bit and the edi/ edo bit values are changed dur- ing one bcr19 write operation, while een = 1, then setup and hold times of the eedi pin value with respect to the eesk signal edge are not guaranteed. esk has no effect on the eesk pin unless the pread bit is set to 0 and the een bit is set to 1. read accessible always, write accessible only when either the stop or the spnd bit is set. esk is reset to 1 by h_reset and is not affected by s_reset or stop. 0 edi/edo eeprom data in/ eeprom data out. data that is written to this bit will appear on the eedi output of the interface, except when the pread bit is set to 1 or the een bit is set to 0. data that is read from this bit reflects the value of the eedo input of the in- terface. edi/edo has no effect on the eedi pin unless the pread bit is set to 0 and the een bit is set to 1. read accessible always; write accessible only when either the stop or the spnd bit is set. edi/ edo is reset to 0 by h_reset and is not affected by s_reset or stop. table 34. eedet setting eedet value (bcr19[13]) eeprom connected? result if pread is set to 1 result of automatic eeprom read operation following h_reset 0 no eeprom read operation is attempted. entire read sequence will occur, checksum failure will result, pvalid is reset to 0. first two eesk clock cycles are generated, then eeprom read operation is aborted and pvalid is reset to 0. 0 ye s eeprom read operation is attempted. entire read sequence will occur, checksum operation will pass, pvalid is set to 1. first two eesk clock cycles are generated, then eeprom read operation is aborted and pvalid is reset to 0. 1 no eeprom read operation is attempted. entire read sequence will occur, checksum failure will result, pvalid is reset to 0. eeprom read operation is attempted. entire read sequence will occur, checksum failure will result, pvalid is reset to 0. 1 ye s eeprom read operation is attempted. entire read sequence will occur, checksum operation will pass, pvalid is set to 1. eeprom read operation is attempted. entire read sequence will occur, checksum operation will pass, pvalid is set to 1.
170 AM79C971 preliminary table 35. interface pin assignment bcr20: software style this register is an alias of the location csr58. accesses to and from this register are equivalent to accesses to csr58. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-11 res reserved locations. written as zeros and read as undefined. 10 aperren advanced parity error handling enable. when aperren is set to 1, the bpe bits (rmd1 and tmd1, bit 23) start having a meaning. bpe will be set in the descriptor associated with the buffer that was accessed when a data parity error occurred. note that since the advanced parity er- ror handling uses an additional bit in the descriptor, swstyle (bits 7-0 of this register) must be set to 2 or 3 to program the AM79C971 controller to use 32-bit software structures. aperren does not affect the re- porting of address parity errors or data parity errors that occur when the AM79C971 controller is the target of the transfer. read anytime; write accessible only when either the stop or the spnd bit is set. aperren is cleared by h_reset and is not affected by s_reset or stop. 9 res reserved locations. written as zeros; read as undefined. 8 ssize32 software size 32 bits. when set, this bit indicates that the AM79C971 controller utilizes 32- bit software structures for the ini- tialization block and the transmit and receive descriptor entries. when cleared, this bit indicates that the AM79C971 controller uti- lizes 16-bit software structures for the initialization block and the transmit and receive descriptor entries. in this mode, the AM79C971 controller is back- wards compatible with the am7990 lance and am79c960 pcnet-isa controllers. the value of ssize32 is deter- mined by the AM79C971 control- ler according to the setting of the software style (swstyle, bits 7-0 of this register). read accessible always. ssize32 is read only; write oper- ations will be ignored. ssize32 will be cleared after h_reset (since swstyle defaults to 0) and is not affected by s_reset or stop. if ssize32 is reset, then bits iadr[31:24] of csr2 will be used to generate values for the upper 8 bits of the 32-bit address bus during master accesses initi- ated by the AM79C971 controller. this action is required, since the 16-bit software structures speci- fied by the ssize32 = 0 setting will yield only 24 bits of address for AM79C971 controller bus master accesses. if ssize32 is set, then the soft- ware structures that are common to the AM79C971 controller and the host system will supply a full 32 bits for each address pointer that is needed by the AM79C971 controller for performing master accesses. rst pin pread or auto read in progress een eecs eesk eedi low x x 0 tr i - s t a t e tr i - s t a t e high 1 x active active active high 0 1 from ecs bit of bcr19 from esk bit of bcr19 from eedi bit of bcr19 high 0 0 0 led1 led0
AM79C971 171 preliminary the value of the ssize32 bit has no effect on the drive of the upper 8 address bits. the upper 8 ad- dress pins are always driven, re- gardless of the state of the ssize32 bit. note that the setting of the ssize32 bit has no effect on the defined width for i/o resources. i/o resource width is determined by the state of the dwio bit (bcr18, bit 7). 7-0 swstyle software style register. the val- ue in this register determines the style of register and memory re- sources that shall be used by the AM79C971 controller. the soft- ware style selection will affect the interpretation of a few bits within the csr space, the order of the descriptor entries and the width of the descriptors and initialization block entries. all AM79C971 controller csr bits and all descriptor, buffer, and initialization block entries not cit- ed in the table 36 are unaffected by the software style selection and are, therefore, always fully functional as specified in the csr and bcr sections. read/write accessible only when either the stop or the spnd bit is set. the swstyle register will contain the value 00h following h_reset and will be unaffected by s_reset or stop. bcr21: interrupt control bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 intcon reserved locations. writes to this register will have no effect on the operation of the AM79C971 con- troller. bcr22: pci latency register note: bits 15-0 in this register are programmable through the eeprom. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-8 max_lat maximum latency. specifies the maximum arbitration latency the AM79C971 controller can sustain without causing problems to the network activity. the register val- ue specifies the time in units of 1/ 4 microseconds. max_lat is aliased to the pci configuration space register max_lat (offset 3fh). the host will use the value in the register to determine the setting of the AM79C971 latency timer register. read accessible always; write accessible only when either the stop or the spnd bit is set. max_lat is set to the value of ffh by h_reset which results in a default maximum latency of 63.75 microseconds. it is recom- table 36. software styles swstyle [7:0] style name ssize32 initialization block entries descriptor ring entries 00h lance/ pcnet-isa controller 0 16-bit software structures, non-burst or burst access 16-bit software structures, non-burst access only 01h res 1 res res 02h pcnet-pci controller 1 32-bit software structures, non-burst or burst access 32-bit software structures, non-burst access only 03h pcnet-pci controller 1 32-bit software structures, non-burst or burst access 32-bit software structures, non-burst access only all other reserved undefined undefined undefined
172 AM79C971 preliminary mended to program the value of 18h via eeprom. max_lat is not affected by s_reset or stop. 7-0 min_gnt minimum grant. specifies the minimum length of a burst period the AM79C971 controller needs to keep up with the network activ- ity. the length of the burst period is calculated assuming a clock rate of 33 mhz. the register val- ue specifies the time in units of 1/ 4 s. min_gnt is aliased to the pci configuration space register min_gnt (offset 3eh). the host will use the value in the register to determine the setting of the AM79C971 latency timer regis- ter. read accessible always; write accessible only when either the stop or the spnd bit is set. min_gnt is set to the value of 06h by h_reset which results in a default minimum grant of 1.5 s, which is the time it takes the AM79C971 controller to read/ write half of the fifo. (16 dword transfers in burst mode with one extra wait state per data phase inserted by the target.) note that the default is only a typical value. it also does not take into account any descriptor accesses. it is rec- ommended to program the value of 18h via eeprom. min_gnt is not affected by s_reset or stop. bcr23: pci subsystem vendor id register note: bits 15-0 in this register are programmable through the eeprom. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 svid subsystem vendor id. svid is used together with sid (bcr24, bits 15-0) to uniquely identify the add-in board or subsystem the AM79C971 controller is used in. subsystem vendor ids can be obtained from the pci sig. a val- ue of 0 (the default) indicates that the AM79C971 controller does not support subsystem identifica- tion. svid is aliased to the pci configuration space register sub- system vendor id (offset 2ch). read accessible always. svid is read only. write operations are ignored. svid is cleared to 0 by h_reset and is not affected by s_reset or by setting the stop bit. bcr24: pci subsystem id register note: bits 15-0 in this register are programmable through the eeprom. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 sid subsystem id. sid is used to- gether with svid (bcr23, bits 15-0) to uniquely identify the add- in board or subsystem the AM79C971 controller is used in. the value of sid is up to the sys- tem vendor. a value of 0 (the de- fault) indicates that the AM79C971 controller does not support subsystem identification. sid is aliased to the pci configu- ration space register subsystem id (offset 2eh). read accessible always. sid is read only. write operations are ignored. sid is cleared to 0 by h_reset and is not affected by s_reset or by setting the stop bit. bcr25: sram size register bit name description note: bits 7-0 in this register are programmable through the eeprom. 31-8 res reserved locations. written as zeros and read as undefined.
AM79C971 173 preliminary 7-0 sram_size sram size. specifies the upper 8 bits of the 16-bit total size of the sram buffer. each bit in sram_size accounts for a 512- byte page. the starting address for the lower 8 bits is assumed to be 00h and the ending address for the lower is assumed to be ffh. therefore, the maximum ad- dress range is the starting ad- dress of 0000h to ending address of ((sram_size +1) * 256 words) or ffffh. an sram_size value of all zeros specifies that no sram is present and the internal fifos will be joined into a contiguous fifo similar to the pcnet-pci ii con- troller. note : the minimum allowed number of pages is eight for nor- mal network operation. the AM79C971 controller will not op- erate correctly with less than the eight pages of memory. when the minimum number of pages is used, these pages must be allo- cated four each for transmit and receive. also note that a ? no sram configuration ? is only valid for 10mb mode. in 100mb mode, sram is mandatory and must al- ways be used. caution: programming sram_bnd and sram_size to the same value will cause data corruption except in the case where sram_size is 0. read accessible always; write accessible only when the stop bit is set. sram_size is set to 000000b during h_reset and is unaffected by s_reset or stop. bcr26: sram boundary register bit name description note: bits 7-0 in this register are programmable through the eeprom. 31-8 res reserved locations. written as zeros and read as undefined. 7-0 sram_bnd sram boundary. specifies the upper 8 bits of the 16-bit address boundary where the receive buffer begins in the sram. the transmit buffer in the sram begins at ad- dress 0 and ends at the address located just before the address specified by sram_bnd. there- fore, the receive buffer always be- gins on a 512 byte boundary. the lower bits are assumed to be ze- ros. sram_bnd has no effect in the low latency receive mode. note : the minimum allowed number of pages is four. the AM79C971 controller will not op- erate correctly with less than four pages of memory per queue. see table 37 for sram_bnd pro- gramming details. table 37. sram_bnd programming caution: programming sram_bnd and sram_size to the same value will cause data corruption except in the case where sram size is 0. read accessible always; write accessible only when the stop bit is set. sram_bnd is set to 00000000b during h_reset and is unaffected by s_reset or stop. bcr27: sram interface control register note: bits 15-0 in this register are programmable through the eeprom. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 ptr tst reserved. reserved for manu- facturing tests. written as zero and read as undefined. sram addresses sram_bnd [7:0] lower address [7:0] minimum s r a m_ b n d address 04h 00-ffh maximum sram_bnd address fch 00-ffh
174 AM79C971 preliminary note : use of this bit will cause data corruption and erroneous operation. read/write accessible always. ptr_tst is set to 0 by h_reset and is unaffected by s_reset and the stop bit. 14 lolatrx low latency receive. when the lolatrx bit is set to 1, the AM79C971 controller will switch to an architecture applicable to cut-through switches. the AM79C971 controller will assert a receive frame dma after only 16 bytes of the current receive frame has been received regardless of where the rcvfw (csr80, bits 13-12) are set. the watermark is a fixed value and cannot be changed. the receive fifos will be in no_sram mode while all transmit traffic is buffered through the external sram. this bit is only valid and the low latency re- ceive only enabled when the sram_size (bcr25, bits 7-0) bits are non-zero. sram_bnd (bcr26, bits 7-0) has no mean- ing when the AM79C971 control- ler is in the low latency mode. see the section on sram config- uration for more details. when the lolatrx bit is set to 0, the AM79C971 controller will return to a normal receive config- uration. the runt packet accept bit (rpa, csr124, bit 3) must be set when lolatrx is set. caution: to provide data in- tegrity when switching into and out of the low latency mode, do not set the fastspnde (csr7, bit 15) bit when setting the spnd bit. re- ceive frames will be overwrit- ten and the AM79C971 controller may give erratic be- havior when it is enable again. the minimum allowed number of pages is four. the AM79C971 controller will not operate correctly in the lola- trx mode with less than four pages of memory. read/write accessible only when the stop bit is set. lolatrx is cleared to 0 after h_reset or s_reset and is unaffected by stop. 13-6 res reserved locations. written as zeros and read as undefined. 5-3 ebcs expansion bus clock source. these bits are used to select the source of the fundamental clock to drive the sram and expansion rom access cycles. table 38 shows the selected clock source for the various values of ebcs. note that the actual frequency that the expansion bus access cycles run at is a function of both the ebcs and clk_fac (bcr27, bits 2-0) bit field set- tings. when ebcs is set to either the pci clock or the xtal clock, no external clock source is re- quired as the clocks are routed in- ternally and the ebclk pin should be pulled to vdd through a resistor. read accessible always; write accessible only when the stop bit is set. ebcs is set to 000b (pci clock selected) during h_reset and is unaffected by s_reset or the stop bit. note : the clock frequency driv- ing the expansion bus access cy- cles that results from the settings of the ebcs and clk fac bits must not exceed 33 mhz at any time. when ebcs is set to either the pci clock or the xtal clock, no external clock source is re- quired because the clocks are routed internally and the ebclk pin should be pulled to vdd through a resistor. table 38. ebcs values ebcs expansion bus clock source 000 clk pin (pci clock) 001 xtal1 and xtal2 pins (20-mhz clock) 010 ebclk pin 011 reserved 1xx reserved
AM79C971 175 preliminary caution: care should be ex- ercised when choosing the pci clock pin because of the nature of the pci clock signal. the pci specification states that the pci clock can be stopped. if that can occur while it is being used for the expansion bus clock data, corruption will re- sult. caution: the external clock source used to drive the eb- clk pin must be a continuous clock source at all times. 2-0 clk_fac clock factor. these bits are used to select whether the clock select- ed by ebcs is used directly or if it is divided down to give a slower clock for running the expansion bus access cycles. the possible factors are given in table 39. read accessible always; write accessible only when the stop bit is set. clk_fac is set to 000b during h_reset and is unaffect- ed by s_reset or stop. bcr28: expansion bus port address lower (used for flash/eprom and sram accesses) bit name description 31-8 res reserved locations. written as zeros and read as undefined. 15-0 epaddrl expansion port address lower. this address is used to provide addresses for the flash and sram port accesses. sram accesses are started when a read or write is performed on bcr30 and the flash (bcr 29, bit 15) is set to 0. during sram accesses only bits in the epaddrl are valid. since all sram accesses are word orient- ed only, epaddrl[0] is the least significant word address bit. on any byte write accesses to the sram, the user will have to fol- low the read-modify-write scheme. on any byte read ac- cesses to the sram, the user will have to chose which byte is needed from the complete word returned in bcr30. flash accesses are started when a read or write is performed on bcr30 and the flash (bcr 29, bit 15) is set to 1. during flash accesses all bits in epaddr are valid. read accessible always; write accessible only when the stop is set or when sram size (bcr25, bits 7-0) is 0. epaddrl is undefined after h_reset and is unaffected by s_reset or stop. bcr29: expansion port address upper (used for flash/eprom accesses) bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 flash flash access. when the flash bit is set to 1 the expansion bus access will be a flash cycle. when flash is set to 0 the ex- pansion bus access will be a sram cycle. for a complete de- scription see the section on ex- pansion bus interface . this bit is only applicable to reads or writes to ebdata (bcr30). it does not affect expansion rom accesses from the pci system bus. read accessible always; write accessible only when the stop bit is set. flash is 0 after h_reset and is unaffected by s_reset or the stop bit. 14 laainc lower address auto increment. when the laainc bit is set to 1, the expansion port lower ad- dress will automatically increment by one after a read or write ac- table 39. clk_fac values clk_fac clock factor 000 1 001 1/2 (divide by 2) 010 reserved 011 1/4 (divide by 4) 1xx reserved
176 AM79C971 preliminary cess to ebdata (bcr30). when ebaddrl reaches ffffh and laainc is set to 1, the expansion port lower address (epaddrl) will roll over to 0000h. when the laainc bit is set to 0, the expan- sion port lower address will not be affected in any way after an access to ebdata (bcr30) and must be programmed. read accessible always; write accessible only when the stop bit is set. lainc is 0 after h_reset and is unaffected by s_reset or the stop bit. 13-4 res reserved locations. written as zeros and read as undefined. 3-0 epaddru expansion port address upper. this upper portion of the expan- sion bus address is used to pro- vide addresses for flash/eprom port accesses. read accessible always; write accessible only when the stop bit is set or when sram size (bcr25, bits 7-0) is 0. epadd- ru is undefined after h_reset and is unaffected by s_reset or the stop bit. bcr30: expansion bus data port register bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 ebdata expansion bus data port. ebda- ta is the data port for operations on the expansion port accesses involving sram and flash ac- cesses. the type of access is set by the flash bit (bcr 29, bit 15). when the flash bit is set to 1, the expansion bus access will follow the flash access timing. when the flash bit is set to 0, the expansion bus access will follow the sram access timing. note: it is important to set the flash bit and load expansion port address epaddr (bcr28, bcr29) with the required ad- dress before attempting read or write to the expansion bus data port. the flash and sram ac- cesses use different address phases. incorrect configuration will result in a possible corruption of data. flash read cycles are performed when bcr30 is read and the flash bit (bcr29, bit 15) is set to 1. upon completion of the read cycle, the 8-bit result for flash ac- cess is stored in ebdata[7:0], ebdata[15:8] is undefined. flash write cycles are performed when bcr30 is written and the flash bit (bcr29, bit 15) is set to 1. ebdata[7:0] only is valid for write cycles. sram read cycles are performed when bcr30 is read and the flash bit (bcr29, bit 15) is set to 0. upon completion of the read cycle, the 16-bit result for sram access is stored in ebdata. write cycles to the sram are in- voked when bcr30 is written and the flash bit (bcr29, bit 15) is set to 0. byte writes to the sram must use a read-modify- write scheme since the word is al- ways valid for sram write or read accesses. read and write accessible only when the stop is set or when sram size (bcr25, bits 7-0) is 0. ebdata is undefined after h_reset, and is unaffected by s_reset and the stop bit. bcr31: software timer register bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 stval software timer value. stval controls the maximum time for the software timer to count be- fore generating the stint (csr7, bit 11) interrupt. the soft- ware timer is a free-running timer that is started upon the first write to stval. after the first write, the software timer will continually count and set the stint interrupt at the stval period.
AM79C971 177 preliminary the stval value is interpreted as an unsigned number with a resolution of 12.8 s. for in- stance, a value of 122 ms would be programmed with a value of 9531 (253bh). a value of 0 is un- defined and will result in erratic behavior. read and write accessible al- ways. stval is set to ffffh af- ter h_reset and is unaffected by s_reset and the stop bit. bcr32: mii control and status register note: bits 15-0 in this register are programmable through the eeprom. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 antst reserved. reserved for manu- facturing tests. written as 0 and read as undefined. note : use of this bit will cause data corruption and erroneous operation. read/write accessible always. antst is set to 0 by h_reset and is unaffected by s_reset and the stop bit. 14 miipd mii phy detect. miipd reflects the quiescent state of the mdio pin. miipd is continuously updat- ed whenever there is no manage- ment operation in progress on the mii interface. when a manage- ment operation begins on the in- terface, the state of miipd is preserved until the operation ends, when the quiescent state is again monitored and continuous- ly updates the miipd bit. when the mdio pin is at a quiescent low state, miipd is cleared to 0. when the mdio pin is at a quies- cent high state, miipd is set to 1. miipd is used by the automatic port selection logic to select the mii port. when the auto select bit (asel, bcr2, bit 1) is a 1 and the miipd bit is a 1, the mii port is se- lected. any transition on the mi- ipd bit will set the miipdint bit in csr7, bit 1. read accessible always. miipd is read only. write operations are ignored. 13-12 fmdc fast management data clock. when fmdc is set to 2h the mii management data clock will run at 10 mhz. the management data clock will no longer be ieee 802.3u-compliant and setting this bit should be used with care. the accompanying external phy must also be able to accept man- agement frames at the new clock rate. when fmdc is set to 1h, the mii management data clock will run at 5 mhz. the management data clock will no longer be ieee 802.3u-compliant and setting this bit should be used with care. the accompanying external phy must also be able to accept man- agement frames at the new clock rate. when fmdc is set to 0h, the mii management data clock will run at 2.5 mhz and will be fully compliant to ieee 802.3u stan- dards. read/write accessible always. fmdc is set to 0 during h_reset, and is unaffected by s_reset and the stop bit 11 apep mii auto-poll external phy. apep when set to 1 the AM79C971 controller will poll the mii status register in the external phy. this feature allows the soft- ware driver or upper layers to see any changes in the status of the external phy. an interrupt when enabled is generated when the contents of the new status is dif- ferent from the previous status. auto-poll will not function when the internal phy is selected. table 40. fmdc values fmdc fast management data clock 00 2.5 mhz 01 5 mhz 10 10 mhz 11 reserved
178 AM79C971 preliminary read/write accessible always. apep is set to 0 during h_reset and is unaffected by s_reset and the stop bit. 10-8 apdw mii auto-poll dwell time. apdw determines the dwell time be- tween mii management frames accesses when auto-poll is turned on. see table 41. read/write accessible always. apdw is set to 100h after h_reset and is unaffected by s_reset and the stop bit. 7 danas disable auto-negotiation auto setup. when danas is set, the AM79C971 controller after a h_reset or s_reset will re- main dormant and not automati- cally startup the auto-negotiation section or the enhanced automat- ic port selection section. instead, the AM79C971 controller will wait for the software driver to setup the auto-negotiation portions of the device. the automatic port selection for AM79C971 control- ler will resemble the pcnet-pci ii controller. the mii programming in bcr33 and bcr34 is still valid. the AM79C971 controller will not generate any management frames unless auto-poll is en- abled. read/write accessible always. danas is set to 0 by h_reset and is unaffected by s_reset and the stop bit. 6 xphyrst external phy reset. when xph- yrst is set, the AM79C971 con- troller after an h_reset or s_reset will issue an mii man- agement frames that will reset the external phy. this bit is needed when there is no way to guaran- tee the state of the external phy. this bit must be reprogrammed after every h_reset. read/write accessible always. xphyrst is set to 0 by h_reset and is unaffected by s_reset and the stop bit. xphyrst is only valid when the internal network port manager is scanning for a network port. 5 xphyane external phy auto-negotiation enable. this bit will force the ex- ternal phy into enabling auto- negotiation. when set to 0 the AM79C971 controller will send a mii management frame disabling auto-negotiation. read/write accessible always. xphyane is set to 0 by h_reset and is unaffected by s_reset and the stop bit. xphyane is only valid when the internal network port manager is scanning for a network port. 4 xphyfd external phy full duplex. when set, this bit will force the external phy into full duplex when auto- negotiation is not enabled. read/write accessible always. xphyfd is set to 0 by h_reset, and is unaffected by s_reset and the stop bit. xphyfd is only valid when the internal network port manager is scanning for a network port. 3 xphysp external phy speed. when set, this bit will force the external phy into 100 mbps mode when auto- negotiation is not enabled. read/write accessible always. xphysp is set to 0 by h_reset, and is unaffected by s_reset and the stop bit. xphysp is only valid when the internal network port manager is scanning for a network port. 2mii l media independent interface for micro linear 6692. when set, this table 41. apdw values apdw auto-poll ? dwell time 000 continuous (26 s @ 2.5 mhz) 001 every 128 mdc cycles (103 s @ 2.5 mhz) 010 every 256 mdc cycles (206 s @ 2.5 mhz) 011 every 512 mdc cycles (410 s @ 2.5 mhz) 100 every 1024 mdc cycles (819 s @ 2.5 mhz) 101 every 2048 mdc cycles (1640 s @ 2.5 mhz) 110-111 reserved
AM79C971 179 preliminary bit will allow the AM79C971 con- troller to work seamlessly with the micro linear 6692 phy. see the section on working with micro linear 6692 for details. read/write accessible always. mii l is set to 0 by h_reset and is unaffected by s_reset and the stop bit. mii l is only valid when the internal network port manager is scanning for a network port. 1 miiilp media independent interface in- ternal loopback. when set, this bit will cause the internal portion of the mii data port to loopback on itself. the interface is mapped in the following way. the txd[3:0] nibble data path is looped back onto the rxd[3:0] nibble data path. tx_clk is looped back as rx_clk. tx_en is looped back as rx_dv. crs is correctly or ? d with tx_en and rx_dv and always encompass- es the transmit frame. tx_er is looped back as rx_er. howev- er, tx_er will not get asserted by the AM79C971 controller to signal an error. the tx_er func- tion is reserved for future use. read/write accessible always. miiilp is set to 0 by h_reset and is unaffected by s_reset and the stop bit. 0 fcon fast configuration mode. when set this bit will force the internal management port state machine into a fast configuration mode. during this mode, the manage- ment port state machine will not attempt to start auto-negotiation on the internal as well as the ex- ternal phy. instead, it will rely on link beats for link pass state. this will accelerate the automatic port selection on the AM79C971 con- troller. read/write accessible always. fcon is set to 0 by h_reset and is unaffected by s_reset and the stop bit. fcon is only valid when the internal network port manager is scanning for a network port. see table 40. bcr33: mii address register bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-10 res reserved locations. written as zeros and read as undefined. 9-5 phyad mii management frame phy ad- dress. phyad contains the 5-bit phy address field that is used in the management frame that gets clocked out via the mii manage- ment port pins (mdc and mdio) whenever a read or write transac- tion occurs to bcr34. the inter- nal phy device is always addressed as 11111b. the mii management frame will not ap- pear on the mii when reading or writing to the internal phy. this is done for mii compatibility sake. the network port manager cop- ies the phyad after the AM79C971 controller reads the eeprom and uses it to commu- nicate with the external phy. the phy address must be pro- grammed into the eeprom prior to starting the AM79C971 con- troller. read/write accessible always. phyad is undefined after h_reset and is unaffected by s_reset and the stop bit. 4-0 regad mii management frame register address. regad contains the 5- bit register address field that is used in the management frame that gets clocked out via the mii management port pins (mdc and mdio) whenever a read or write transaction occurs to bcr34. read/write accessible always. regad is undefined after h_reset and is unaffected by s_reset and the stop bit.
180 AM79C971 preliminary bcr34: mii management data register bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 miimd mii management data. miimd is the data port for operations on the mii management interface (mdio and mdc). the AM79C971 de- vice builds management frames using the phyad and regad values from bcr33. the opera- tion code used in each frame is based upon whether a read or write operation has been per- formed to bcr34. read cycles on the mii management interface are invoked when bcr34 is read. upon completion of the read cy- cle, the 16-bit result of the read operation is stored in miimd. write cycles on the mii manage- ment interface are invoked when bcr34 is written. the value writ- ten to miimd is the value used in the data field of the management write frame. when the phyad (bcr33, bits 9-5) is 11111b the data written and read from the miimd will be from the internal phy only. no mii management frame will be sent across the mii when the phyad is 11111b. read/write accessible always. miimd is undefined after h_reset and is unaffected by s_reset and the stop bit. bcr35: pci vendor id register note: bits 15-0 in this register are programmable through the eeprom. bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 vid vendor id. the pci vendor id register is a 16-bit register that identifies the manufacturer of the AM79C971 controller. amd ? s vendor id is 1022h. note that this vendor id is not the same as the manufacturer id in csr88 and csr89. the vendor id is as- signed by the pci special inter- est group. the vendor id is not normally programmable, but the AM79C971 controller allows this due to legacy operating systems that do not look at the pci sub- system vendor id and the ven- dor id to uniquely identify the add-in board or subsystem that the AM79C971 controller is used in. note: if the operating system or the network operating sys- tem supports pci subsystem vendor id and subsystem id, use those to identify the add-in board or subsystem and pro- gram the vid with the default value of 1022h . vid is aliased to the pci configu- ration space register vendor id (offset 00h). read accessible always. vid is read only. write operations are ignored. vid is set to 1022h by h_reset and is not affected by s_reset or by setting the stop bit. initialization block when ssize32 (bcr20, bit 8) is set to 0, the software structures are defined to be 16 bits wide. the base ad- dress of the initialization block must be aligned to a dword boundary, i.e., csr1, bit 1 and 0 must be cleared to 0. when ssize32 is set to 0, the initialization block looks like table 42. note: the AM79C971 controller performs dword ac- cesses to read the initialization block. this statement is always true, regardless of the setting of the ssize32 bit. when ssize32 (bcr20, bit 8) is set to 1, the software structures are defined to be 32 bits wide. the base ad- dress of the initialization block must be aligned to a dword boundary, i.e., csr1, bits 1 and 0 must be cleared to 0. when ssize32 is set to 1, the initialization block looks like table 43
AM79C971 181 preliminary . rlen and tlen when ssize32 (bcr20, bit 8) is set to 0, the software structures are defined to be 16 bits wide, and the rlen and tlen fields in the initialization block are each three bits wide. the values in these fields determine the number of transmit and receive descriptor ring entries (dre) which are used in the descriptor rings. their meaning is shown in table 44. if a value other than those listed in table 44 is desired, csr76 and csr78 can be written after initialization is complete. when ssize32 (bcr20, bit 8) is set to 1, the software structures are defined to be 32 bits wide, and the rlen and tlen fields in the initialization block are each 4 bits wide. the values in these fields determine the number of transmit and receive descriptor ring entries (dre) which are used in the descriptor rings. their meaning is shown in table 45. if a value other than those listed in table 45 is desired, csr76 and csr78 can be written after initialization is complete. rdra and tdra rdra and tdra indicate where the transmit and re- ceive descriptor rings begin. each dre must be lo- cated at a 16-byte address boundary when ssize32 is set to 1 (bcr20, bit 8). each dre must be located at an 8-byte address boundary when ssize32 is set to 0 (bcr20, bit 8). table 42. initialization block (ssize32 = 0) address bits 15-13 bit 12 bits 11-8 bits 7-4 bits 3-0 iadr+00h mode 15-00 iadr+02h padr 15-00 iadr+04h padr 31-16 iadr+06h padr 47-32 iadr+08h ladrf 15-00 iadr+0ah ladrf 31-16 iadr+0ch ladrf 47-32 iadr+0eh ladrf 63-48 iadr+10h rdra 15-00 iadr+12h rlen 0 res rdra 23-16 iadr+14h tdra 15-00 iadr+16h tlen 0 res tdra 23-16 table 43. initialization block (ssize32 = 1) address bits bits bits bits bits bits bits bits 31-28 27-24 23-20 19-16 15-12 11-8 7-4 3-0 iadr+00h tlen res rlen res mode iadr+04h padr 31-00 iadr+08h res padr 47-32 iadr+0ch ladrf 31-00 iadr+10h ladrf 63-32 iadr+14h rdra 31-00 iadr+18h tdra 31-00 table 44. r/tlen decoding (ssize32 = 0) r/tlen number of dres 000 1 001 2 010 4 011 8 100 16 101 32 110 64 111 128
182 AM79C971 preliminary ladrf the logical address filter (ladrf) is a 64-bit mask that is used to accept incoming logical addresses. if the first bit in the incoming address (as transmitted on the wire) is a 1, it indicates a logical address. if the first bit is a 0, it is a physical address and is compared against the physical address that was loaded through the initialization block. a logical address is passed through the crc genera- tor, producing a 32-bit result. the high order 6 bits of the crc is used to select one of the 64 bit positions in the logical address filter. if the selected filter bit is set, the address is accepted and the frame is placed into memory. the logical address filter is used in multicast address- ing schemes. the acceptance of the incoming frame based on the filter value indicates that the message may be intended for the node. it is the node ? s responsi- bility to determine if the message is actually intended for the node by comparing the destination address of the stored message with a list of acceptable logical ad- dresses. if the logical address filter is loaded with all zeros and promiscuous mode is disabled, all incoming logical ad- dresses except broadcast will be rejected. see figure 57. figure 57. address match logic padr this 48-bit value represents the unique node address assigned by the iso 8802-3 (ieee/ansi 802.3) and used for internal address comparison. padr[0] is com- pared with the first bit in the destination address of the incoming frame. it must be 0 since only the destination address of a unicast frames is compared to padr. the six hex-digit nomenclature used by the iso 8802-3 (ieee/ansi 802.3) maps to the AM79C971 padr reg- ister as follows: the first byte is compared with padr[7:0], with padr[0] being the least significant bit of the byte. the second iso 8802-3 (ieee/ansi 802.3) byte is compared with padr[15:8], again from the least significant bit to the most significant bit, and so on. the sixth byte is compared with padr[47:40], the least sig- nificant bit being padr[40]. table 45. r/tlen decoding (ssize32 = 1) r/tlen number of dres 0000 1 0001 2 0010 4 0011 8 0100 16 0101 32 0110 64 0111 128 1000 256 1001 512 11xx 512 1x1x 512 1 crc gen sel 31 26 mux 63 0 64 match = 1 packet accepted match = 0 packet rejected match logical address filter (ladrf) 0 6 32-bit resultant crc 1 0 received message destination address 47 20550d-60
AM79C971 183 preliminary mode the mode register field of the initialization block is cop- ied into csr15 and interpreted according to the de- scription of csr15. receive descriptors when swstyle (bcr20, bits 7-0) is set to 0, then the software structures are defined to be 16 bits wide, and receive descriptors look like table 46 (crda = current receive descriptor address). when swstyle (bcr 20, bits 7-0) is set to 2, then the software structures are defined to be 32 bits wide, and receive descriptors look like table 47 (crda = current receive descriptor address). when swstyle (bcr 20, bits 7-0) is set to 3, then the software structures are defined to be 32 bits wide, and receive descriptors look like table 48 (crda = current receive descriptor address). rmd0 bit name description 31-0 rbadr receive buffer address. this field contains the address of the re- ceive buffer that is associated with this descriptor. rmd1 bit name description 31 own this bit indicates whether the de- scriptor entry is owned by the host (own = 0) or by the AM79C971 controller (own = 1). the AM79C971 controller clears the own bit after filling the buffer that the descriptor points to. the host sets the own bit after emp- tying the buffer . table 48. receive descriptor (swstyle = 3) table 46. receive descriptor (swstyle = 0) address 15 14 13 12 11 10 9 8 7-0 crda+00h rbadr[15:0] crda+02h own err fram oflo crc buff stp enp rbadr[23:16] crda+04h 1 1 1 1 bcnt crda+06h 0 0 0 0 mcnt table 47. receive descriptor (swstyle = 2 address 31 30 29 28 27 26 25 24 23 22 21 20 19-16 15-12 11-0 crda+00h rbadr[31:0] crda+04h own err fra m ofl o crc buf f stp enp bpe pa m lafm bam res 1111 bcnt crda+08h res rfrtag[14:0] 0000 mcnt crda+0ch user space address 31 30 29 28 27 26 25 24 23 22 21 20 19-16 15-12 11-0 crda+00h res rfrtag[14:0] 0000 mcnt crda+04h own err fra m ofl o crc buf f stp enp bpe pa m lafm bam res 1111 bcnt crda+08h rbadr[31:0] crda+0ch user space
184 AM79C971 preliminary once the AM79C971 controller or host has relinquished ownership of a buffer, it must not change any field in the descriptor entry. 30 err err is the or of fram, oflo, crc, buff, or bpe. err is set by the AM79C971 controller and cleared by the host. 29 fram framing error indicates that the incoming frame contains a non- integer multiple of eight bits and there was an fcs error. if there was no fcs error on the incom- ing frame, then fram will not be set even if there was a non- integer multiple of eight bits in the frame. fram is not valid in inter- nal loopback mode. fram is val- id only when enp is set and oflo is not. fram is set by the AM79C971 controller and cleared by the host. 28 oflo overflow error indicates that the receiver has lost all or part of the incoming frame, due to an inabili- ty to move data from the receive fifo into a memory buffer before the internal fifo overflowed. oflo is set by the AM79C971 controller and cleared by the host. 27 crc crc indicates that the receiver has detected a crc (fcs) error on the incoming frame. crc is valid only when enp is set and oflo is not. crc is set by the AM79C971 controller and cleared by the host. crc will also be set when AM79C971 receives an rx_er indication from the ex- ternal phy through the mii. 26 buff buffer error is set any time the AM79C971 controller does not own the next buffer while data chaining a received frame. this can occur in either of two ways: 1. the own bit of the next buffer is 0. 2. fifo overflow occurred before the AM79C971 controller was able to read the own bit of the next descriptor. if a buffer error occurs, an over- flow error may also occur inter- nally in the fifo, but will not be reported in the descriptor status entry unless both buff and oflo errors occur at the same time. buff is set by the AM79C971 controller and cleared by the host. 25 stp start of packet indicates that this is the first buffer used by the AM79C971 controller for this frame. if stp and enp are both set to 1, the frame fits into a single buffer. otherwise, the frame is spread over more than one buff- er. when lappen (csr3, bit 5) is cleared to 0, stp is set by the AM79C971 controller and cleared by the host. when lap- pen is set to 1, stp must be set by the host. 24 enp end of packet indicates that this is the last buffer used by the AM79C971 controller for this frame. it is used for data chaining buffers. if both stp and enp are set, the frame fits into one buffer and there is no data chaining. enp is set by the AM79C971 controller and cleared by the host. 23 bpe bus parity error is set by the AM79C971 controller when a par- ity error occurred on the bus inter- face during data transfers to a receive buffer. bpe is valid only when enp, oflo, or buff are set. the AM79C971 controller will only set bpe when the advanced parity error handling is enabled by setting aperren (bcr20, bit 10) to 1. bpe is set by the AM79C971 controller and cleared by the host. this bit does not exist when the AM79C971 controller is pro- grammed to use 16-bit software structures for the descriptor ring entries (bcr20, bits 7-0, sw- style is cleared to 0). 22 pam physical address match is set by the AM79C971 controller when it accepts the received frame due
AM79C971 185 preliminary to a match of the frame ? s destina- tion address with the content of the physical address register. pam is valid only when enp is set. pam is set by the AM79C971 controller and cleared by the host. this bit does not exist when the AM79C971 controller is pro- grammed to use 16-bit software structures for the descriptor ring entries (bcr20, bits 7-0, sw- style is cleared to 0). 21 lafm logical address filter match is set by the AM79C971 controller when it accepts the received frame based on the value in the logical address filter register. lafm is valid only when enp is set. lafm is set by the AM79C971 controller and cleared by the host. note that if drcvbc (csr15, bit 14) is cleared to 0, only bam, but not lafm will be set when a broadcast frame is received, even if the logical address filter is programmed in such a way that a broadcast frame would pass the hash filter. if drcvbc is set to 1 and the logical address fil- ter is programmed in such a way that a broadcast frame would pass the hash filter, lafm will be set on the reception of a broad- cast frame. this bit does not exist when the AM79C971 controller is pro- grammed to use 16-bit software structures for the descriptor ring entries (bcr20, bits 7-0, sw- style is cleared to 0). 20 bam broadcast address match is set by the AM79C971 controller when it accepts the received frame, because the frame ? s desti- nation address is of the type ? broadcast. ? bam is valid only when enp is set. bam is set by the AM79C971 controller and cleared by the host. this bit does not exist when the AM79C971 controller is pro- grammed to use 16-bit software structures for the descriptor ring entries (bcr20, bits 7-0, sw- style is cleared to 0). 19-16 res reserved locations. these loca- tions should be read and written as zeros. 15-12 ones these four bits must be written as ones. they are written by the host and unchanged by the AM79C971 controller. 11-00 bcnt buffer byte count is the length of the buffer pointed to by this de- scriptor, expressed as the two ? s complement of the length of the buffer. this field is written by the host and unchanged by the AM79C971 controller. rmd2 bit name description zero this field is reserved. the AM79C971 controller will write a zero to this location. 30-16 rfrtag receive frame tag. indicates the receive frame tag applied from the eadi interface. this field is user defined and has a default value of all zeros. when rx- frtg (csr7, bit 14) is set to 0, rfrtag will be read as all zeros. see the section on receive frame tagging for details. 15-12 zeros this field is reserved. AM79C971 controller will write zeros to these locations. 11-0 mcnt message byte count is the length in bytes of the received message, expressed as an unsigned binary integer. mcnt is valid only when err is clear and enp is set. mcnt is written by the AM79C971 controller and cleared by the host. note : this is a 13-bit internal counter.
186 AM79C971 preliminary rmd3 bit name description 31-0 us user space. reserved for user defined space. transmit descriptors when swstyle (bcr20, bits 7-0) is set to 0, the soft- ware structures are defined to be 16 bits wide, and transmit descriptors look like table 49 (cxda = current transmit descriptor address). when swstyle (bcr 20, bits 7-0) is set to 2, the soft- ware structures are defined to be 32 bits wide, and transmit descriptors look like table 50 (cxda = current transmit descriptor address). when swstyle (bcr 20, bits 7-0) is set to 3, then the software structures are defined to be 32 bits wide, and transmit descriptors look like table 51 (cxda = current transmit descriptor address). tmd0 bit name description 31-0 tbadr transmit buffer address. this field contains the address of the transmit buffer that is associated with this descriptor. table 49. transmit descriptor (swstyle = 0) address 15 14 13 12 11 10 9 8 7-0 cxda+00h tbadr[15:0] cxda+02h own err add_ fcs more/ lti n t one def stp enp tbadr[23:16] cxda+04h 1 1 1 1 bcnt cxda+06h buff uflo ex def lcol lcar rtry tdr table 50. transmit descriptor (swstyle = 2) address 31 30 29 28 27 26 25 24 23 22-16 15-12 11-4 3-0 cxda+00h tbadr[31:0] cxda+04h own err add_ fcs more/ lt in t one def stp enp bpe res 1111 bcnt cxda+08h buff uflo ex def lcol lcar rtry res res res res res res trc cxda+0ch user space table 51. transmit descriptor (swstyle = 3) address 31 30 29 28 27 26 25 24 23 22-16 15-12 11-4 3-0 cxda+00h buff uflo ex def lcol lcar rtry res res trc cxda+04h own err add_ fcs more/ lt in t one def stp enp bpe res 1111 bcnt cxda+08h tbadr[31:0] cxda+0ch user space
AM79C971 187 tmd1 bit name description 31 own this bit indicates whether the de- scriptor entry is owned by the host (own = 0) or by the AM79C971 controller (own = 1). the host sets the own bit after filling the buffer pointed to by the descriptor entry. the AM79C971 controller clears the own bit af- ter transmitting the contents of the buffer. both the AM79C971 controller and the host must not alter a descriptor entry after it has relinquished ownership. 30 err err is the or of uflo, lcol, lcar, rtry or bpe. err is set by the AM79C971 controller and cleared by the host. this bit is set in the current descriptor when the error occurs and, therefore, may be set in any descriptor of a chained buffer transmission. 29 add_fcs add_fcs dynamically controls the generation of fcs on a frame by frame basis. it is valid only if the stp bit is set. when add_fcs is set, the state of dxmtfcs is ignored and trans- mitter fcs generation is activat- ed. when add_fcs is cleared to 0, fcs generation is controlled by dxmtfcs. when apad_xmt (csr4, bit 11) is set to 1, the setting of add_fcs has no effect on frames shorter than 64 bytes. add_fcs is set by the host, and is not changed by the AM79C971 controller. this is a reserved bit in the c-lance (am79c90) controller. 28 more/ltint bit 28 always functions as more. the value of more is written by the AM79C971 control- ler and is read by the host. when ltinten is cleared to 0 (csr5, bit 14), the AM79C971 controller will never look at the contents of bit 28, write operations by the host have no effect. when ltint- en is set to 1 bit 28 changes its function to ltint on host write operations and on AM79C971 controller read operations. more more indicates that more than one retry was needed to transmit a frame. the value of more is written by the AM79C971 control- ler. this bit has meaning only if the enp bit is set. ltint ltint is used to suppress inter- rupts after successful transmis- sion on selected frames. when ltint is cleared to 0 and enp is set to 1, the AM79C971 controller will not set tint (csr0, bit 9) af- ter a successful transmission. tint will only be set when the last descriptor of a frame has both ltint and enp set to 1. when ltint is cleared to 0, it will only cause the suppression of in- terrupts for successful transmis- sion. tint will always be set if the transmission has an error. the ltinten overrides the function of tokintd (csr5, bit 15). 27 one one indicates that exactly one retry was needed to transmit a frame. one flag is not valid when lcol is set. the value of the one bit is written by the AM79C971 controller. this bit has meaning only if the enp bit is set. 26 def deferred indicates that the AM79C971 controller had to de- fer while trying to transmit a frame. this condition occurs if the channel is busy when the AM79C971 controller is ready to transmit. def is set by the AM79C971 controller and cleared by the host. 25 stp start of packet indicates that this is the first buffer to be used by the AM79C971 controller for this frame. it is used for data chaining buffers. the stp bit must be set in the first buffer of the frame, or the AM79C971 controller will skip over the descriptor and poll the next descriptor(s) until the own and stp bits are set. stp is set by the host and is not changed by the AM79C971 controller.
188 AM79C971 24 enp end of packet indicates that this is the last buffer to be used by the AM79C971 controller for this frame. it is used for data chaining buffers. if both stp and enp are set, the frame fits into one buffer and there is no data chaining. enp is set by the host and is not changed by the AM79C971 con- troller. 23 bpe bus parity error is set by the AM79C971 controller when a par- ity error occurred on the bus inter- face during a data transfers from the transmit buffer associated with this descriptor. the AM79C971 controller will only set bpe when the advanced parity error handling is enabled by set- ting aperren (bcr20, bit 10) to 1. bpe is set by the AM79C971 controller and cleared by the host. this bit does not exist, when the AM79C971 controller is pro- grammed to use 16-bit software structures for the descriptor ring entries (bcr20, bits 7-0, sw- style is cleared to 0). 22-16 res reserved locations. 15-12 ones these four bits must be written as ones. this field is written by the host and unchanged by the AM79C971 controller. 11-00 bcnt buffer byte count is the usable length of the buffer pointed to by this descriptor, expressed as the two ? s complement of the length of the buffer. this is the number of bytes from this buffer that will be transmitted by the AM79C971 controller. this field is written by the host and is not changed by the AM79C971 controller. there are no minimum buffer size re- strictions. tmd2 bit name description 31 buff buffer error is set by the AM79C971 controller during transmission when the AM79C971 controller does not find the enp flag in the current descriptor and does not own the next descriptor. this can occur in either of two ways: 1. the own bit of the next buffer is 0. 2. fifo underflow occurred be- fore the AM79C971 controller ob- tained the status byte (tmd1[31:24]) of the next de- scriptor. buff is set by the AM79C971 controller and cleared by the host. if a buffer error occurs, an un- derflow error will also occur. buff is not valid when lcol or rtry error is set during transmit data chaining. buff is set by the AM79C971 controller and cleared by the host. 30 uflo underflow error indicates that the transmitter has truncated a mes- sage because it could not read data from memory fast enough. uflo indicates that the fifo has emptied before the end of the frame was reached. when dxsuflo (csr3, bit 6) is cleared to 0, the transmitter is turned off when an uflo error occurs (csr0, txon = 0). when dxsuflo is set to 1, the AM79C971 controller gracefully recovers from an uflo error. it scans the transmit descriptor ring until it finds the start of a new frame and starts a new transmis- sion. uflo is set by the AM79C971 controller and cleared by the host. 29 exdef excessive deferral. indicates that the transmitter has experienced excessive deferral on this trans-
AM79C971 189 mit frame, where excessive de- ferral is defined in the iso 8802-3 (ieee/ansi 802.3) standard. ex- cessive deferral will also set the interrupt bit exdint (csr5, bit 7). 28 lcol late collision indicates that a col- lision has occurred after the first channel slot time has elapsed. the AM79C971 controller does not retry on late collisions. lcol is set by the AM79C971 controller and cleared by the host. 27 lcar loss of carrier is set when the carrier is lost during an AM79C971 controller initiated transmission when in aui mode and the device is operating in half-duplex mode. the AM79C971 controller does not retry upon loss of carrier. it will continue to transmit the whole frame until done. lcar will not be set when the device is operat- ing in full-duplex mode and the aui port is active. lcar is not valid in internal loopback mode. lcar is set by the AM79C971 controller and cleared by the host. lcar does not reflect a link sta- tus problem on the external phy. in 10base-t mode, lcar will be set when the t-mau was in link fail state during the transmis- sion. 26 rtry retry error indicates that the transmitter has failed after 16 at- tempts to successfully transmit a message, due to repeated colli- sions on the medium. if drty is set to 1 in the mode register, rtry will set after one failed transmission attempt. rtry is set by the AM79C971 controller and cleared by the host. 25-16 res reserved locations. 15-4 res reserved locations. 3-0 trc transmit retry count. indicates the number of transmit retries of the associated packet. the maxi- mum count is 15. however, if a retry error occurs, the count will roll over to 0. in this case only, the transmit retry count value of 0 should be interpreted as meaning 16. trc is written by the AM79C971 con- troller into the last transmit de- scriptor of a frame, or when an error terminates a frame. valid only when own is cleared to 0. tmd3 bit name description 31-0 us user space. reserved for user defined space.
190 AM79C971 register summary pci configuration registers note: ro = read only, rw = read/write offset name width in bit access mode default value 00h pci vendor id 16 ro 1022h 02h pci device id 16 ro 2000h 04h pci command 16 rw 0000h 06h pci status 16 rw 0280h 08h pci revision id 8 ro 10h 09h pci programming if 8 ro 00h 0ah pci sub-class 8 ro 00h 0bh pci base-class 8 ro 02h 0ch reserved 8 ro 00h 0dh pci latency timer 8 rw 00h 0eh pci header type 8 ro 00h 0fh reserved 8 ro 00h 10h pci i/o base address 32 rw 0000 0001h 14h pci memory mapped i/o base address 32 rw 0000 0000h 18h - 2bh reserved 8 ro 00h 2ch pci subsystem vendor id 16 ro 00h 2eh pci subsystem id 16 ro 00h 30h pci expansion rom base address 32 rw 0000 0000h 34h - 3bh reserved 8 ro 00h 3ch pci interrupt line 8 rw 00h 3dh pci interrupt pin 8 ro 01h 3eh pci min_gnt 8 ro 06h 3fh pci max_lat 8 ro ffh 40h - ffh reserved 8 ro 00h
AM79C971 191 control and status registers note: u = undefined value, r = running register, s = setup register, t = test register; all default values are in hexadecimal format. rap addr symbol default value comments use 00 csr0 uuuu 0004 AM79C971 controller status register r 01 csr1 uuuu uuuu lower iadr: maps to location 16 s 02 csr2 uuuu uuuu upper iadr: maps to location 17 s 03 csr3 uuuu 0000 interrupt masks and deferral control s 04 csr4 uuuu 0115 test and features control r 05 csr5 uuuu 0000 extended control and interrupt 1 r 06 csr6 uuuu uuuu rxtx: rx/tx encoded ring lengths s 07 csr7 0uuu 0000 extended control and interrupt 1 r 08 csr8 uuuu uuuu ladrf0: logical address filter ? ladrf[15:0] s 09 csr9 uuuu uuuu ladrf1: logical address filter ? ladrf[31:16] s 10 csr10 uuuu uuuu ladrf2: logical address filter ? ladrf[47:32] s 11 csr11 uuuu uuuu ladrf3: logical address filter ? ladrf[63:48] s 12 csr12 uuuu uuuu padr0: physical address register ? padr[15:0][ s 13 csr13 uuuu uuuu padr1: physical address register ? padr[31:16] s 14 csr14 uuuu uuuu padr2: physical address register ? padr[47:32] s 15 csr15 see register description mode: mode register s 16 csr16 uuuu uuuu iadrl: base address of init block lower (copy) t 17 csr17 uuuu uuuu iadrh: base address of init block upper (copy) t 18 csr18 uuuu uuuu crbal: current rcv buffer address lower t 19 csr22 uuuu uuuu crbau: current rcv buffer address upper t 20 csr20 uuuu uuuu cxbal: current xmt buffer address lower t 21 csr21 uuuu uuuu cxbau: current xmt buffer address upper t 22 csr22 uuuu uuuu nrbal: next rcv buffer address lower t 23 csr23 uuuu uuuu nrbau: next rcv buffer address upper t 24 csr24 uuuu uuuu badrl: base address of rcv ring lower s 25 csr25 uuuu uuuu badru: base address of rcv ring upper s 26 csr26 uuuu uuuu nrdal: next rcv descriptor address lower t 27 csr27 uuuu uuuu nrdau: next rcv descriptor address upper t 28 csr28 uuuu uuuu crdal: current rcv descriptor address lower t 29 csr29 uuuu uuuu crdau: current rcv descriptor address upper t 30 csr30 uuuu uuuu badxl: base address of xmt ring lower s 31 csr31 uuuu uuuu badxu: base address of xmt ring upper s 32 csr32 uuuu uuuu nxdal: next xmt descriptor address lower t 33 csr33 uuuu uuuu nxdau: next xmt descriptor address upper t
192 AM79C971 control and status registers (continued) rap addr symbol default value after h_reset comments use 34 csr34 uuuu uuuu cxdal: current xmt descriptor address lower t 35 csr35 uuuu uuuu cxdau: current xmt descriptor address upper t 36 csr36 uuuu uuuu nnrdal: next next receive descriptor address lower t 37 csr37 uuuu uuuu nnrdau: next next receive descriptor address upper t 38 csr38 uuuu uuuu nnxdal: next next transmit descriptor address lower t 39 csr39 uuuu uuuu nnxdau: next next transmit descriptor address upper t 40 csr40 uuuu uuuu crbc: current receive byte count t 41 csr41 uuuu uuuu crst: current receive status t 42 csr42 uuuu uuuu cxbc: current transmit byte t 43 csr43 uuuu uuuu cxst: current transmit status t 44 csr44 uuuu uuuu nrbc: next rcv byte count t 45 csr45 uuuu uuuu nrst: next rcv status t 46 csr46 uuuu uuuu txdpoll: transmit poll time counter t 47 csr47 uuuu uuuu txpi: transmit polling interval s 48 csr48 uuuu uuuu rxpoll: receive poll time counter 49 csr49 uuuu uuuu rxpi: receive polling interval 50 csr50 uuuu uuuu reserved 51 csr51 uuuu uuuu reserved 52 csr52 uuuu uuuu reserved 53 csr53 uuuu uuuu reserved 54 csr54 uuuu uuuu reserved 55 csr55 uuuu uuuu reserved 56 csr56 uuuu uuuu reserved 57 csr57 uuuu uuuu reserved 58 csr58 see register description sws: software style s 59 csr59 uuuu uuuu reserved t 60 csr60 uuuu uuuu pxdal: previous xmt descriptor address lower t 61 csr61 uuuu uuuu pxdau: previous xmt descriptor address upper t 62 csr62 uuuu uuuu pxbc: previous transmit byte count t 63 csr63 uuuu uuuu pxst: previous transmit status t 64 csr64 uuuu uuuu nxbal: next xmt buffer address lower t 65 csr65 uuuu uuuu nxbau: next xmt buffer address upper t 66 csr66 uuuu uuuu nxbc: next transmit byte count t 67 csr67 uuuu uuuu nxst: next transmit status t 68 csr68 uuuu uuuu reserved 69 csr69 uuuu uuuu reserved 70 csr70 uuuu uuuu reserved
AM79C971 193 control and status registers (continued) rap addr symbol default value after h_reset comments use 71 csr71 uuuu uuuu reserved 72 csr72 uuuu uuuu rcvrc: rcv ring counter t 73 csr73 uuuu uuuu reserved 74 csr74 uuuu uuuu xmtrc: xmt ring counter t 75 csr75 uuuu uuuu reserved 76 csr76 uuuu uuuu rcvrl: rcv ring length s 77 csr77 uuuu uuuu reserved 78 csr78 uuuu uuuu xmtrl: xmt ring length s 79 csr79 uuuu uuuu reserved 80 csr80 uuuu 1410 dmatcfw: dma transfer counter and fifo threshold s 81 csr81 uuuu uuuu reserved 82 csr82 uuuu uuuu transmit descriptor pointer address lower s 83 csr83 uuuu uuuu reserved 84 csr84 uuuu uuuu dmaba: address register lower t 85 csr85 uuuu uuuu dmaba: address register upper t 86 csr86 uuuu uuuu dmabc: buffer byte counter t 87 csr87 uuuu uuuu reserved 88 csr88 x262 3003 chip id register lower t 89 csr89 uuuu x262 chip id register upper t 90 csr90 uuuu uuuu reserved 91 csr91 uuuu uuuu reserved t 92 csr92 uuuu uuuu rcon: ring length conversion t 93 csr93 uuuu uuuu reserved 94 csr94 uuuu uuuu reserved 95 csr95 uuuu uuuu reserved 96 csr96 uuuu uuuu reserved 97 csr97 uuuu uuuu reserved 98 csr98 uuuu uuuu reserved 99 csr99 uuuu uuuu reserved 100 csr100 uuuu 0200 bus timeout s 101 csr101 uuuu uuuu reserved 102 csr102 uuuu uuuu reserved 103 csr103 uuuu 0105 reserved 104 csr104 uuuu uuuu reserved 105 csr105 uuuu uuuu reserved 106 csr106 uuuu uuuu reserved 107 csr107 uuuu uuuu reserved
194 AM79C971 control and status registers (concluded) rap addr symbol default value after h_reset comments use 108 csr108 uuuu uuuu reserved 109 csr109 uuuu uuuu reserved 110 csr110 uuuu uuuu reserved 111 csr111 uuuu uuuu reserved 112 csr112 uuuu uuuu missed frame count r 113 csr113 uuuu uuuu reserved 114 csr114 uuuu uuuu received collision count r 115 csr115 uuuu uuuu reserved 116 csr116 uuuu 0200 reserved 117 csr117 uuuu uuuu reserved 118 csr118 uuuu uuuu reserved 119 csr119 uuuu 0105 reserved 120 csr120 uuuu uuuu reserved 121 csr121 uuuu uuuu reserved 122 csr226 uuuu 0000 receive frame alignment control s 123 csr237 uuuu uuuu reserved 124 csr248 uuuu 0000 te s t r e g i s t e r 1 t 125 csr125 003c 0060 mac enhanced configuration control t 126 csr126 uuuu uuuu reserved 127 csr127 uuuu uuuu reserved
AM79C971 195 bus configuration registers writes to those registers marked as ? reserved ? will have no effect. reads from these locations will produce unde- fined values. rap mnemonic default name programmability user eeprom 0 msrda 0005h reserved no no 1 mswra 0005h reserved no no 2 mc 0002h miscellaneous configuration ye s ye s 3 reserved n/a reserved no no 4 led0 00c0h led0 status ye s ye s 5 led1 0084h led1 status ye s ye s 6 led2 0088h led2 status ye s ye s 7 led3 0090h led3 status ye s ye s 8 reserved n/a reserved no no 9 fdc 0000h full-duplex control ye s ye s 10-15 reserved n/a reserved no no 16 iobasel n/a reserved no no 17 iobaseu n/a reserved no no 18 bsbc 9001h burst and bus control ye s ye s 19 eecas 0002h eeprom control and status ye s no 20 sws 0200h software style ye s no 21 intcon n/a reserved no no 22 pcilat ff06h pci latency ye s ye s 23 pcisid 0000h pci subsystem id no ye s 24 pcisvid 0000h pci subsystem vendor id no ye s 25 sramsiz 0000h sram size ye s ye s 26 sramb 0000h sram boundary ye s ye s 27 sramic 0000h sram interface control ye s ye s 28 ebaddrl n/a expansion bus address lower ye s no 29 ebaddru n/a expansion bus address upper ye s no 30 ebdr n/a expansion bus data port ye s no 31 stval ffffh software timer value ye s no 32 miicas 0000h mii control and status ye s ye s 33 miiaddr n/a mii address ye s ye s 34 miimdr n/a mii management data ye s no 35 pcivid 1022h pci vendor id no ye s
196 AM79C971 register programming summary AM79C971 programmable registers AM79C971 control and status registers register contents csr0 status and control bits: (default = 0004) 8000 err 4000 babl 2000 cerr 1000 miss 0800 merr 0400 rint 0200 tint 0100i idon 0080 intr 0040 iena 0020 rxon 0010 txon 0008 tdmd 0004 stop 0002 strt 0001 init csr1 lower iadr (maps to csr 16) csr2 upper iadr (maps to csr 17) csr3 interrupt masks and deferral control: (default = 0) 8000-- 4000 bablm 2000 - 1000 missm 0800 merrm 0400 rintm 0200 tintm 0100i donm 0080- - 0040 dxsuflo 0020 lappen 0010 dxmt2pd 0008 emba 0004 bswp 0002 -- 0001 -- csr4 interrupt masks, configuration and status bits: (default = 0115) 8000 en124 4000 dmaplus 2000 timer 1000 txdpoll 0800 apad_xmt 0400 astrp_rcv 0200 mfco 0100 mfcom 0080 unitcmd 0040 unit 0020 rcvcco 0010 rcvccom 0008 txstrt 0004 txstrtm 0002 jab 0001 jabm csr5 extended interrupt masks, configuration and status bits: (default = 0xxx) 8000tokintd 4000ltinten 2000-- 1000-- 0800 sint 0400 sinte 0200 slpint 0100 slpinte 0080 exdint 0040 exdinte 0020 mpplba 0010 mpint 0008 mpinte 0004 mpen 0002 mpmode 0001 spnd csr7 extended interrupt masks, configuration and status bits: (default = 0000) 8000 fastspnd 4000 rxfrmtg 2000 rdmd 1000 rxdpoll 0800 stint 0400 stinte 0200 mreint 0100 mreinte 0080 mapint 0040 mapinte 0020 mccint 0010 mccinte 0008 mcciint 0004 mcciinte 0002 miipdtint 0001 miipdtnte csr8 - csr11 logical address filter csr12 - csr14 physical address register csr15 mode: (default = 0) bits [8:7] = portsel, port selection 0000aui port 008010base-t 0101media independent interface 8000prom 4000drcvbc 2000drcvpa 1000dlnktst 0800 dapc 0400 mendecl 0200 lrt/tsel 0100 portsel1 0080 potsel0 0040 intl 0020 drty 0010 fcoll 0008 dxmtfcs 0004 loop 0002 dtx 0001 drx csr47 txpollint: transmit polling interval csr49 rxpollint: receive polling interval
AM79C971 197 AM79C971 control and status registers (continued) register contents csr58 software style (mapped to bcr20) bits [7:0] = swstyle, software style register. 0000 lance/pcnet-isa 0002 pcnet-32 8000 -- 4000 -- 2000 -- 1000 -- 0800 -- 0400 aperren 0200 csrpcnet 0100 ssize32 0080 swstyle7 0040 swstyle6 0020 swstyle5 0010 swstyle4 0008 swstyle3 0004 swstyle2 0002 swstyle1 0001 swstyle0 csr76 rcvrl: rcv descriptor ring length csr78 xmtrl: xmt descriptor ring length csr80 fifo threshold and dma burst control. (default = 2810) 8000 reserved 4000 reserved bits [13:12] = rcvfw, receive fifo watermark 0000 request dma when 16 bytes are present 1000 request dma when 64 bytes are present 2000 request dma when 112 bytes are present 3000 reserved bits [11:10] = xmtsp, transmit start point 0000 start transmission after 20/44 (no sram/srm) bytes have been written 0400 start transmission after 64 bytes have been written 0800 start transmission after 128 bytes have been written 0c00 start transmission after 248 bytes (full packet) have been written bits [9:8] = xmtfw, transmit fifo watermark 0000 start dma when 16 write cycles can be made 0100 start dma when 64 write cycles can be made 0200 start dma when 108 write cycles can be made 0300 reserved bits [7:0] = dma transfer counter csr88~89 chip id (contents = v2623003; v = version number) csr112 missed frame count csr114 receive collision count csr122 receive frame alignment control 8000 -- 4000 -- 2000 -- 1000 -- 0800 -- 0400 -- 0200 -- 0100 -- 0080 -- 0040 -- 0020 -- 0010 -- 0008 -- 0004 -- 0002 -- 0001 rcvalgn csr124 bmu test register (default = 0000) 8000 -- 4000 -- 2000 -- 1000 -- 0800 -- 0400 -- 0200 -- 0100 -- 0080 -- 0040 -- 0020 -- 0010 -- 0008 gpsien 0004 rpa 0002 -- 0001 -- csr125 mac enhanced configuration control (default = 603c bits [15:8] = ipg, interpacket gap (default=60xx, 96 bit times) bits [8:0] = ifs1, interframe space part 1 (default=xx3c, 60 bit times)
198 AM79C971 AM79C971 bus configuration registers rap addr register contents 0 msrda programs width of dma read signal (default = 5) 1 mswra programs width of dma write signal (default = 5) 2 mc miscellaneous configuration bits: (default = 2) 8000 -- 4000 tmauloop 2000 -- 1000 -- 0800 -- 0400 -- 0200 -- 0100 apromwe 0080 initlevel 0040 -- 0020 -- 0010 dracc 0008 eadisel 0004 awake 0002 asel 0001 xmausel 4 led0 programs the function and width of the led0 signal. (default = 00c0) 8000 ledout 4000 ledpol 2000 leddis 1000 100e 0800 miise 0400 dxcvrctl 0200 mpse 0100 fdlse 0080 pse 0040 linkse 0020 rcvme 0010 xmte 0008 rxpole 0004 rcve 0002 jabe 0001 cole 5 led1 programs the function and width of the led1 signal. (default = 0084) 8000 ledout 4000 ledpol 2000 leddis 1000 100e 0800 miise 0400 dxcvrctl 0200 mpse 0100 fdlse 0080 pse 0040 linkse 0020 rcvme 0010 xmte 0008 rxpole 0004 rcve 0002 jabe 0001 cole 6 led2 programs the function and width of the led2 signal. (default = 0088) 8000 ledout 4000 ledpol 2000 leddis 1000 100e 0800 miise 0400 dxcvrctl 0200 mpse 0100 fdlse 0080 pse 0040 linkse 0020 rcvme 0010 xmte 0008 rxpole 0004 rcve 0002 jabe 0001 cole 7 led3 programs the function and width of the led3 signal. (default = 0090) 8000 ledout 4000 ledpol 2000 leddis 1000 100e 0800 miise 0400 dxcvrctl 0200 mpse 0100 fdlse 0080 pse 0040 linkse 0020 rcvme 0010 xmte 0008 rxpole 0004 rcve 0002 jabe 0001 cole 9 fdc full-duplex control. (default= 0000) 8000 -- 4000 -- 2000 -- 1000 -- 0800 -- 0400 -- 0200 -- 0100 -- 0080 -- 0040 -- 0020 -- 0010 -- 0008 -- 0004 fdrpad 0002 auifd 0001 fden 16 iobasel i/o base address lower 17 iobaseu i/o base address upper 18 bsbc burst size and bus control (default = 2101) 8000 romtmg3 4000 romtmg2 2000 romtmg1 1000 romtmg0 0800 nouflo 0400 -- 0200 memcmd 0100 extreq 0080 dwio 0040 breade 0020 bwrite 0 0 1 0 t s t s h dw 1 0008 tstshdw0 0004 linbc2 0002 linbc1 0001 linbc0 19 eecas eeprom control and status (default = 0002) 8000 pvalid 4000 pread 2000 eedet 1000 -- 0800 -- 0400 -- 0200 -- 0100 -- 0080 -- 0040 -- 0020 -- 0010 een 0008 -- 0004 ecs 0002 esk 0001 edi/ edo
AM79C971 199 AM79C971 bus configuration registers (continued) 20 swstyle software style (default = 0000, maps to csr 58) 21 intcon interrupt control 8000 -- 4000 -- 2000 -- 1000 -- 0800-- 0400-- 0200-- 0100-- 0080-- 0040-- 0020-- 0010-- 0008-- 0004-- 0002-- 0001-- 22 pcilat pci latency (default = ff06) bits [15:8] = max_lat bits [7:0] = min_gnt 25 sramsize sram size (default = 000) bits [7:0] = sram_size 26 srambnd sram boundary (default = 0000) bits [7:0] = sram_bnd 27 sramic sram interface control 8000 ptr tst 4000 lolatrx bits [5:3] = ebcs, expansion bus clock source 0000 clk pin, pci clock (external clock not required) 0008 xtal1 and xtal2 pins, 20 mhz clock (external clock not required) 0010 ebclk pin, expansion bus clock (external clock not required) bits [2:0] = clk_fac, expansion bus clock factor 0000 1/1 clock factor 0001 1/2 clock factor 0002 -- 0003 -- epaddrl expansion port address lower 29 epaddru expansion port address upper 8000 flash 4000 ainc 2000 -- 1000 -- 0800 -- 0400 -- 0200 -- 0100 -- 0080 -- 0040 -- 0020 -- 0010 -- 0008 epaddru3 0004 epaddru2 0002 epaddru1 0001 epaddru0 30 ebdata expansion bus data port 31 stval software timer interrupt value (default = ffff) 32 miicas mii status and control (default = 0400) 8000 antst 4000 miipd 2000 fmdc1 1000 fmd0 0800 apep 0400 apdw2 0200 apdw1 0100 apdw0 0080 danas 0040 xphyrst 0020 xphyane 0010 xphyfd 0008 xphysp 0004 mii l 0002 miilp 0001 fcon 33 miiaddr mii address bits [9:5] = phyad, physical layer device address bits [4:0] = regad, mii/auto-negotiation register address 34 miimdr mii data port
200 AM79C971 absolute maximum ratings storage temperature ........................ ? 65 c to +150 c ambient temperature .......................... -65 c to +70 c supply voltage with respect to av ss , v ssb , v ssm , v ss_pll , v ss (av dd , v ddb , v ddm , v dd_pll , v dd ............................. ? 0.3 v to +6.0 v stresses above those listed under absolute maximum ratings may cause permanent device failure. function- ality at or above these limits is not implied. exposure to absolute maximum ratings for extended periods may affect device reliability . operating ranges commercial (c) devices temperature (ta) ................................... 0 c to +70 c supply voltages (av dd , v dd_pll , v dd ) ..........+5 v 5% (v ddb for 5-v signaling) ...........................+5 v 5% (v dd_pci for 3.3-v signaling) ..............+ 3.3 v 10% all inputs within the range: av ss - 0.5 v _ v in _ av dd + 0.5 v, or v ssb - 0.5 v _ v in _ v dd_pci + 0.5 v, or v ss_pll - 0.5 v _ v in _ v dd_pll + 0.5v, or v ss - 0.5 v _ v in _ v dd + 0.5 v, or v ssb - 0.5 < v in < v ddb + 0.5v operating ranges define those limits between which the func- tionality of the device is guaranteed. dc characteristics over commercial operating ranges unless otherwise specified parameter symbol parameter description test conditions min max units digital input voltage for 5-v signaling v il input low voltage 0.8 v v ih input high voltage 2.0 v digital output voltage for 5-v signaling v ol output low voltage i ol1 = 3 ma i ol2 = 6 ma i ol3 = 12 ma (note 1) 0.45 v v oh output high voltage (note 2) i oh 1 = -2 ma i oh 2 = -4 ma (note 3) 2.4 v digital input leakage current for 5-v signaling i ix input low leakage current (note 4) vin = 0 v, v dd = v ddb = v dd_pci = 5 v -10 10 a digital output leakage current for 5-v signaling i ozl output low leakage current (note 5) v out = 0.4v -10 a digital input voltage for 3.3-v signaling v il input low voltage -0.5 0.325 v ddb v ih input high voltage 0.475 v ddb v ddb + 0.5 digital output voltage for 3.3-v signaling v ol output low voltage iol = 1.5 ma 0.1 v ddb v oh output high voltage (note 2) ioh = -0.5 ma 0.9 v ddb
AM79C971 201 dc characteristics over commercial operating ranges unless otherwise specified (continued) parameter symbol parameter description test conditions min max units digital input leakage current for 3.3-v signaling i ix input low leakage current (note 4) v in = 0 v, v dd = v dd_pci = 3.3 v -10 10 a digital output leakage current for 3.3-v signaling i ozl output low leakage current (note 5) v out = 0.4v -10 a i ozh output high leakage current (note 5) v out = v dd , v dd_pci 10 a crystal input current v ilx xtal1 input low voltage threshold v in = external clock -0.5 0.8 v v ihx xtal1 input high voltage threshold v in = external clock vdd - 0.8 vdd + 0.5 v iilx xtal1 input low current v in = external clock active -120 0 a v in = vss sleep -10 +10 a iihx xtal1 input high current v in = external clock active 0 120 a v in = vdd sleep 400 a power supply current i dd active power supply current xtal1 = 20 mhz, clk = 33 mhz, mdc = 2.5 mhz, tx_clk=rx_clk=25 mhz 190 ma i ddcoma sleep mode power supply current sleep active 700 a i ddsnooze auto wake mode power supply current awake bit set active 20 ma i ddmagic0 magic packet mode power supply current clk = 0 mhz (note 11) 55 ma i ddmagic33 magic packet mode power supply current clk = 33 mhz (note 11) 125 ma pin capacitance c in input pin capacitance f c = 1 mhz (note 6, 10) 10 pf c o i/o or output pin capacitance f c = 1 mhz (note 6) 10 pf c clk clk pin capacitance f c = 1 mhz (note 6) 5 12 pf twisted pair interface (10base-t) i irxd input current at rxd av dd < v in < av dd -500 500 a r rxd rxd differential input resistance 10 k ? v tivb rxd , rxd- open circuit input voltage (bias) i in = 0 ma av dd - 3.0 av dd - 1.5 v v tidv differential mode input voltage range (rxd ) av dd = 5.0 v -3.1 3.1 v v tsq+ rxd positive squelch threshold (peak) sinusoid 5 mhz f 10 mhz lrt = 0 (csr15, bit 9) 300 520 mv v tsq- rxd negative squelch threshold (peak) sinusoid 5 mhz f 10 mhz lrt = 0 (csr15, bit 9) -520 -300 mv v ths+ rxd post-squelch positive threshold (peak) sinusoid 5 mhz f 10 mhz lrt = 0 (csr15, bit 9) 150 293 mv
202 AM79C971 dc characteristics over commercial operating ranges unless otherwise specified (continued) notes: 2. ol1 applies to ad[31:00], c/be [3:0], par and req ol2 applies to devsel , frame , inta , irdy , perr , serr , stop , trdy , eecs, eedi, ebua_eba[7:0], ebda[15:8], ebd[7:0], eromcs , eramcs , as_eboe , ebwe , txd[3:0], tx_en, tx_er, mdc, mdio and tdo. i ol3 applies to eesk/led1 /sfbd, led2 /srdclk, eedo/led3 /srd, and eedi/led0 . parameter symbol parameter description test conditions min max units twisted pair interface (10base-t) (cont ? d) v ths- rxd post-squelch negative threshold (peak) sinusoid 5 mhz f 10 mhz lrt = 0 (csr15, bit 9) -293 -150 mv v lt s q + rxd positive squelch threshold (peak) sinusoid 5 mhz f 10 mhz lrt = 1 (csr15, bit 9) 180 312 mv v lt s q - rxd negative squelch threshold (peak) sinusoid 5 mhz f 10 mhz lrt = 1 (csr15, bit 9) -312 -180 mv v lt h s + rxd post-squelch positive threshold (peak) sinusoid 5 mhz f 10 mhz lrt = 1 (csr15, bit 9) 90 176 mv v lt h s - rxd post-squelch negative threshold (peak) sinusoid 5 mhz f 10 mhz lrt = 1 (csr15, bit 9) -176 -90 mv v rxdth rxd switching threshold (note 4) -35 35 mv v txh txd and txp output high voltage v ss = 0 v v dd - 0.6 v dd v v txl txd and txp output low voltage v dd = 5 v v ss v ss + 0.6 v v txi txd and txp differential output voltage imbalance -40 40 mv v txoff txd and txp idle output voltage 40 mv r tx txd , txp differential driver output impedance (note 4) 80 _ attachment unit interface (aui) i iaxd input current at di+ and di- -1v < v in < av dd + 0.5 v -500 +500 a i iaxc input current at ci+ and ci- -1v < vin < avdd + 0.5 v -500 +500 a v aod differential output voltage |(do+)- (do-)| rl = 78 ? 630 1200 mv v aodoff transmit differential output idle voltage rl = 78 ? (note 9) -40 40 mv i aodoff transmit differential output idle current rl = 78 ? (note 8) -1 1 ma v cmt transmit output common mode voltage rl = 78 ? 2.5 avdd v v odi do transmit differential output voltage imbalance rl = 78 ? (note 7) 25 mv v at h receive data differential input threshold -35 35 mv v asq di and ci differential input threshold (squelch) -275 -160 mv
AM79C971 203 3. voh does not apply to open-drain output pins. 4. oh1 applies to all other outputs. ioh2 applies to txd[3:0], tx_en,tx_er,mdc, and mdio outputs are cmos and will be driven to rail if the load is not resistive. 5. il and iih apply to all input pins except xtal1. 6. ozl and iozh apply to all three-state output pins and bidirectional pins. 7. parameter not tested. value determined by characterization. 8. tested, but to values in excess of limits. test accuracy not sufficient to allow screening guard bands. 9. correlated to other tested parameters - not tested directly. 10. test not implemented to data sheet specification. 11. cin = 8 pf for the idsel input and all input pins on the mii interface (tx_clk, col, crs, rx_clk, rxd[3:0], rx_dv, rx_er). 12. the power supply current in magic packet mode is linear with respect to the pci clock frequency operation, assuming the network port remains constant. for example, at clk = 20 mhz, the maximum magic packet power supply current would be 87 ma. switching characteristics: bus interface parameter symbol parameter name test condition min max unit clock timing - pci bus interface f clk clk frequency 0 33 mhz t cyc clk period @ 1.5 v for v ddb = 5 v @ 0.4 v dd_pci v for v dd_pci = 3.3 v 30 _ ns t high clk high time @ 2.0 v for v ddb = 5 v @ 0.475 v dd_pci v for v dd_pci = 3.3 v 12 ns t low clk low time @ 0.8 v for v ddb = 5 v @ 0.325 v dd_pci v for v dd_pci = 3.3 v 12 ns t fall clk fall time over 2 v p-p for v ddb = 5 v over 0.4 v dd_pci p-p for v dd_pci = 3.3 v (note 1) 1 4 v/ns t rise clk rise time over 2 v p-p for v ddb = 5 v over 0.4 v dd_pci p-p for v dd_pci = 3.3 v (note 1) 1 4 v/ns output and float delay timing - pci bus interface t val ad[31:00], c/be [3:0], par, frame , irdy , trdy , stop , devsel , perr , serr valid delay 2 11 ns t val (req ) req valid delay 2 12 ns t on ad[31:00], c/be [3:0], par, frame , irdy , trdy , stop , devsel active delay 2 ns t off ad[31:00], c/be [3:0], par, frame , irdy , trdy , stop , devsel float delay 28 ns
204 AM79C971 switching characteristics: bus interface (continued) notes: 1. not tested; parameter guaranteed by design characterization. 2. parameter value is given for automatic eeprom read operation. when eeprom port (bcr19) is used to access the eeprom, software is responsible for meeting eeprom timing requirements. parameter symbol parameter name test condition min max unit setup and hold timing t su ad[31:00], c/be [3:0], par, frame , irdy , trdy , stop , devsel , idsel setup time 7 ns t h ad[31:00], c/be [3:0], par, frame , irdy , trdy , stop , devsel , idsel hold time 0 ns t su (gnt ) gnt setup time 10 ns t h (gnt ) gnt hold time 0 ns eeprom timing f eesk eesk frequency (note 2) 650 khz t high (eesk) eesk high time 780 ns t low (eesk) eesk low time 780 ns t val (eedi) eedi valid output delay from eesk (note 2) -15 15 ns t val (eecs) eecs valid output delay from eesk (note 2) -15 15 ns t low (eecs) eecs low time 1550 ns t su (eedo) eedo setup time to eesk (note 2) 50 ns t h (eedo) eedo hold time from eesk (note 2) 0 ns jtag (ieee 1149.1) test signal timing t j1 tck frequency 10 mhz t j2 tck period 100 ns t j3 tck high time @ 2.0 v 45 ns t j4 tck low time @ 0.8 v 45 ns t j5 tck rise time 4 ns t j6 tck fall time 4 ns t j7 tdi, tms setup time 8 ns t j8 tdi, tms hold time 10 ns t j9 tdo valid delay 3 30 ns t j10 tdo float delay 50 ns t j11 all outputs (non-test) valid delay 3 25 ns t j12 all outputs (non-test) float delay 36 ns t j13 all inputs (non-test)) setup time 8 ns t j14 all inputs (non-test) hold time 7 ns
AM79C971 205 switching characteristics: bus interface (concluded) note: address is the ebua_eba[7:0] bus. data is the ebda[15:8] and the ebd[7:0] buses. parameter symbol parameter name test condition min max unit expansion bus interface timing f clk ebclk frequency 2.5 33 mhz t cyc ebclk period @ 1.5 v 30 400 ns t high ebclk high time @ 2.0 v 12 ns t low ebclk low time @ 0.8 v 12 ns t fall ebclk fall time over 2 v p-p 1 4 v/ns t rise ebclk rise time over 2 v p-p 1 4 v/ns t v_a_d address and data valid time from the rising edge of ebclk 13 ns t cs_l eramcs assert time from the rising edge of ebclk 13 ns t cs_h eramcs deassert time from rising edge of ebclk 7 10 ns t s_d data setup time to the rising edge of ebclk 0 ns t h_d data hold time from the rising edge of ebclk 6 ns t _as_h as_eboe (address strobe) rising edge from the falling edge of ebclk 10 13 ns t _as_l as_eboe falling edge from the rising edge of ebclk 10 13 ns t _oe_h as_eboe (output enable deassert) rising edge from the rising edge of ebclk 7 ns t _lz data bus driving from the rising edge of ebclk 5 ns t _hz data bus tristated from the rising edge of ebclk 13 ns t _we_l ebwe assert time from the falling edge of ebclk 6 ns t _we_h ebwe deassert time from the rising edge of ebclk 10 ns t _we_csad ebwe setup time to address, eramcs, and data 1 ns
206 AM79C971 switching characteristics: 10base-t interface note: not tested, parameter guaranteed by characterization. parameter symbol parameter name test condition min max unit transmit timing t tetd transmit start of idle 250 350 ns t tr transmitter rise time (10% to 90%) 5.5 ns t tf transmitter fall time (90% to 10%) 5.5 ns t tm transmitter rise and fall time mismatch t tm = | t tr - t tf | 1 ns t xmton xmt asserted delay 100 ns t xmtoff xmt deasserted delay 20 62 ms t perlp idle signal period 8 24 ms t pwlp idle link pulse width (see note below) 75 120 ns t pwplp predistortion idle link pulse width (see note below) 45 55 ns t ja transmit jabber activation time 20 150 ms t jr transmit jabber reset time 250 750 ms t jrec transmit jabber recovery time (minimum time gap between transmitted frames to prevent jabber activation) 1.0 s receiving timing t pwnrd rxd pulse width not to turn off internal carrier sense v in > v ths(min) 136 ns t pwroff rxd pulse width to turn off v in > v ths(min) 200 ns t retd receive start of idle 200 ns t rcvon rcv asserted delay tron - 50 tron + 100 ns t rcvoff rcv deasserted delay 20 62 ms collision detection and sqe test t colon col asserted delay 750 900 ns t coloff col deasserted delay 20 62 ms
AM79C971 207 switching characteristics: attachment unit interface notes: 1. di pulses narrower than tp wodi (min) will be rejected; pulses wider than t pwodi (max) will turn internal di carrier sense on. 2. di pulses narrower than t pwkdi (min) will maintain internal di carrier sense on; pulses wider than t pwkdi (max) will turn internal di carrier sense off. 3. ci pulses narrower than t pwoci (min) will be rejected; pulses wider than t pwoci (max) will turn internal ci carrier sense on. 4. ci pulses narrower than t pwkci (min) will maintain internal ci carrier sense on; pulses wider than t pwkci (max) will turn inter- nal ci carrier sense off. parameter symbol parameter name test condition min max unit aui port t dotr do+, do- rise time (10% to 90%) 2.5 5.0 ns t dotf do+, do- fall time (10% to 90%) 2.5 5.0 ns t dorm do+, do- rise and fall time mismatch 1.0 ns t doetd do end of transmission 200 375 ns t pwodi di pulse width accept/reject threshold |v in| > |v asq | (note 1) 15 45 ns t pwkdi di pulse width maintain/turn-off threshold |v in| > |v asq | (note 2) 136 200 ns t pwoci ci pulse width accept/reject threshold |v in| > |v asq | (note 3) 10 26 ns t pwkci ci pulse width maintain/turn-off threshold |v in| > |v asq | (note 4) 90 160 ns internal mendec clock timing t x1 xtal1 period v in = external clock 49.995 50.001 ns t x1h xtal1 high pulse width v in = external clock 20 ns t x1l xtal1 low pulse width v in = external clock 20 ns t x1r xtal1 rise time v in = external clock 5 ns t x1f xtal1 fall time v in = external clock 5 ns
208 AM79C971 switching characteristics: media independent interface notes: 1. mdio valid measured at the exposed mechanical media independent interface. 2. txclk and rxclk frequency and timing parameters are defined for the external physical layer transceiver as defined in the ieee 802.3u standard. they are not replicated here. parameter symbol parameter name test condition min max unit transmit timing t tval tx_en, tx_er, txd valid from tx_clk measured from v ilmax = 0.8 v or measured from v ihmin = 2.0v (note 1) 0 25 ns receive timing t rsu rx_dv, rx_er, rxd setup to rx_clk measured from v ilmax = 0.8 v or measured from v ihmin = 2.0v (note 1) 10 ns t rh rx_dv, rx_er, rxd hold to rx_clk measured from v ilmax = 0.8 v or measured from v ihmin = 2.0v (note 1) 10 ns management cycle timing t mhigh mdc pulse width high time c load = 390 pf 160 ns t mlow mdc pulse width low time c load = 390 pf 160 ns t mcyc mdc cycle period c load = 390 pf 400 ns t msu mdio setup to mdc c load = 470 pf, measured from v ilmax = 0.8 v or measured from v ihmin = 2.0v (note 1) 10 ns t mh mdio hold to mdc c load = 470 pf, measured from v ilmax = 0.8 v or measured from v ihmin = 2.0v (note 1) 10 ns t mval mdio valid from mdc c load = 470 pf, measured from v ilmax = 0.8 v or measured from v ihmin = 2.0v, (note 1) t mcyc - t msu ns
AM79C971 209 switching characteristics: general-purpose serial interface notes: 1. clsn must be asserted for a continuous period of 110 ns or more. assertion for less than 110 ns period may or may not result in clsn recognition. 2. rxclk should meet jitter requirements of ieee 802.3 specification. 3. clsn assertion before 51.2 s will be indicated as a normal collision. clsn assertion after 51.2 s will be considered as a late receive collision. parameter symbol parameter name test condition min max unit transmit timing t gpt1 txclk period (802.3 compliant) @ 1.5 v 99.99 100.01 ns t gpt2 txclk high time @ 2.0 v 40 60 ns t gpt3 txdat and txen delay from txclk @ 1.5 v 0 70 ns t gpt4 rxen setup before txclk (last bit) @ 1.5 v 210 ns t gpt5 rxen hold after txen @ 1.5 v 0 ns t gpt6 clsn active time to trigger collision @ 1.5 v (note 1) 410 ns t gpt7 clsn active to rxen to prevent lcar assertion @ 1.5 v 0 ns t gpt8 clsn active to rxen for sqe heartbeat window @ 1.5 v 0 4.0 s t gpt9 clsn active to rxen for normal collision @ 1.5 v 0 51.2 s receive timing t gpr1 rxclk period @ 1.5 v (note 2) 80 120 ns t gpr2 rxclk high time @ 2.0 v (note 2) 30 80 ns t gpr3 rxclk low time @ 0.8 v (note 2) 30 80 ns t gpr4 rxdat and rxen setup to rxclk @ 1.5 v 15 ns t gpr5 rxdat hold after rxclk @ 1.5 v 15 ns t gpr6 rxen hold after rxclk @ 1.5 v 0 ns t gpr7 clsn active to first rxclk (collision recognition) @ 1.5 v 0 ns t gpr8 clsn active to rxclk for address type designation bit @ 1.5 v (note 3) 51.2 s t gpr9 clsn setup to last rxclk for collision recognition @ 1.5 v 210 ns t gpr10 clsn active @ 1.5 v 410 ns t gpr11 clsn inactive setup to first rxclk @ 1.5 v 300 ns t gpr12 clsn inactive hold to last rxclk @ 1.5 v 300 ns
210 AM79C971 switching characteristics: external address detection interface note: 1. may need to delay rx_clk to capture start frame byte delimiter (sfbd) at 100 mbps operation. parameter symbol parameter name test condition min max unit external address detection interface: internal phy t ead1 srd setup to srdclk 40 ns t ead2 srd hold to srdclk 40 ns t ead3 sfbd# change to srdclk -15 +15 ns t ead4 ear deassertion to srdclk (first rising edge) 50 ns t ead5 ear assertion after sfd event (frame rejection) 0 51,090 ns t ead6 ear assertion width 110 ns external address detection interface: external phy - mii @ 25 mhz t ead7 sfbd change from rx_clk 0 20 (note 1) ns t ead8 ear deassertion to rx_clk (first rising edge) 40 ns t ead9 ear assertion after sfd event (frame rejection) 0 5,080 ns t ead10 ear assertion width 50 ns external address detection interface: external phy - mii @ 2.5 mhz t ead11 ear deassertion to rx_clk (first rising edge) 400 ns t ead12 ear assertion after sfd event (frame rejection) 0 50,800 ns t ead13 ear assertion width 500 ns receive frame tag timing with media independent interface t ead14 rxfrtge assertion from sfbd (first rising edge) 0 ns t ead15 rxfrtge, rxfrtgd setup to rx_clk 10 ns t ead16 rxfrtge, rxfrtgd hold to rx_clk 10 ns t ead17 rxfrtge deassertion to rx_dv rx_clk @25 mhz rx_clk @2.5 mhz 40 400 ns ns
AM79C971 211 key to switching waveforms switching test circuits figure 58. normal and tri-state outputs must be steady may change from h to l may change from l to h does not apply don ? t care , any change permitted will be steady will be changing from h to l will be changing from l to h changing, state unknown center line is high- impedance off state waveform inputs outputs i oh i ol sense point v threshold c l 20550d-61
212 AM79C971 switching test circuits (continued) figure 59. aui do switching test circuit figure 60. txd switching test circuit figure 61. txp outputs test circuit test point 52.3 ? 154 ? av dd av ss 100 pf do+ do ? 20550d-62 test point 294 ? dv dd dv ss 100 pf txd+ txd ? includes test jig capacitance 294 ? 20550d-63 test point 715 ? dv dd dv ss 100 pf txp+ txp ? includes test jig capacitance 715 ? 20550d-64
AM79C971 213 switching waveforms: system bus interface figure 62. clk waveform for 5 v signaling figure 63. clk waveform for 3.3 v signaling figure 64. input setup and hold timing clk t high t fall t cyc t rise t low 2.0 v 1.5 v 0.8 v 0.4v 2.0 v 1.5 v 0.8 v 2.4 v 20550d-65 clk t high t fall t cyc t rise t low 0.5 v dd_pci 0.4 v dd_pci 0.3 v dd_pci 0.2 v dd_pci 0.5 v dd_pci 0.4 v dd_pci 0.3 v dd_pci 0.6 v dd_pci 20550d-66 clk t h ad[31:00], c/be[3:0], par, frame, irdy, trdy, stop, devsel, idsel t su gnt t h(gnt) t su(gnt) tx tx 20550d-67
214 AM79C971 switching waveforms: system bus interface (continued) figure 65. output valid delay timing figure 66. output tri-state delay timing figure 67. eeprom read functional timing clk t val(req) tx tx tx min max valid n valid n+1 req min max valid n valid n+1 t val ad[31:00] c/be[3:0], par, frame, irdy, trdy, stop, devsel, perr, serr 20550d-68 clk tx tx tx ad[31:00], c/be[3:0], par, frame, irdy, trdy, stop, devsel, perr ad[31:00], c/be[3:0], par, frame, irdy, trdy, stop, devsel, perr valid n t off t on valid n 20550d-69 eecs eesk eedi eedo 01 10 a5 a4 a3 a2 a1 a0 d15 d14 d13 d2 d1 d0 20550d-70
AM79C971 215 switching waveforms: system bus interface (continued) figure 68. automatic pread eeprom timing figure 69. jtag (ieee 1149.1) tck waveform for 5 v signaling eesk eedo stable eedi eecs t high (eesk) t low (eesk) t low (eecs) t su (eedo) t h (eedo) t val (eedi,eecs) 20550d-71 tck t j3 t j6 t j2 t j5 t j4 2.0 v 1.5 v 0.8 v 2.0 v 1.5 v 0.8 v 20550d-72
216 AM79C971 switching waveforms: system bus interface (continued) figure 70. jtag (ieee 1149.1) test signal timing tck tdi, tms tdo t j8 output signals t j2 t j7 t j9 t j11 t j14 input signals t j12 t j13 20550d-73
AM79C971 217 switching waveforms: expansion bus interface figure 71. ebclk waveform figure 72. expansion bus sram read timing--normal sram operation ebclk t high t fall t cyc t rise t low 2.0 v 1.5 v 0.8 v 0.4v 2.0 v 1.5 v 0.8 v 2.4 v 20550d-74 data ebclk ebua_eba[7:0] ebda[15:8], ebd[7:0] eramcs ebwe as_eboe lower address data tv_a_d t_hz ts_d t_lz t_cs_l th_d t_cs_h t_as_l t_as_h lower address upper address 20550d-75
218 AM79C971 switiching waveforms: expansion bus interface (continued) figure 73. expansion bus sram write timing--normal sram operation ebclk ebua_eba[7:0] ebda[15:8], ebd[7:0] eramcs ebwe as_eboe upper address lower address data data tv_a_d t_cs_l t_cs_h t_we_csad t_we_h t_as_l t_as_h t_we_l lower address 20550d-76
AM79C971 219 switching waveforms: 10base-t interface figure 74. transmit timing figure 75. idle link test pulse t tf t tet t tr t xmtof t xmton txd+ txp+ txd- txp xmt 20550d-77 txd+ txp+ txd- txp- t pwlp t perl t pwplp 20550d-78
220 AM79C971 switching waveforms: 10base-t interface (continued) figure 76. receive thresholds (lrt = 0) figure 77. receive thresholds (lrt = 1) rxd v tsq- v tsq+ v ths- v ths + 20550d-79 rxd v ltsq- v ltsq+ v lths- v lths + 20550d-80
AM79C971 221 switching waveforms: attachment unit interface figure 78. transmit timing - start of frame figure 79. transmit timing - end of frame (last bit = 0) xtal1 istdclk (note 1) itxen (note 1) itxdat+ (note 1) do+ do do ? t x1 11 1 1 1 00 tx1h tx1hl t dotf t dotr tx1hf tx1hr note 1: internal signal and is shown for clarification only. 20550d-81 xtal1 istdclk (note 1) itxen (note 1) itxdat+ (note 1) do+ do do ? 11 100 00 t doetd typical > 200 ns bit (n ? 2) bit (n ? 1) bit (n) note 1: internal signal and is shown for clarification only. 20550d-82
222 AM79C971 switching waveforms: attachment unit interface (continued) figure 80. transmit timing - end of frame (last bit = 1) xtal1 istdclk (note 1) itxen (note 1) itxdat+ (note 1) do+ do do ? 11 1 10 0 t doetd typical > 250 ns bit (n ? 2) bit (n ? 1) bit (n) note 1: internal signal and is shown for clarification only. 20550d-83
AM79C971 223 switching waveforms: attachment unit interface (continued) figure 81. receive timing figure 82. collision timing figure 83. port do etd waveform dl+/ ? v asq t pwkdi t pwkdi t pwodi 20550d-84 cl+/ ? v asq t pwkci t pwkci t pwoci 20550d-85 do+/ ? t doetd 40 mv 0v 100 mv max. 80 bit times 20550d-86
224 AM79C971 switching waveforms: media independent interface figure 84. transmit timing figure 85. receive timing figure 86. mdc waveform tx_clk t tval txd[3:0], tx_en, tx_er vihmin vilmax vihmin vilmax 20550d-87 rx_clk t rh rxd[3:0], rx_er, rx_dv t rsu vihmin vilmax vihmin vilmax 20550d-88 mdc 0.8 v 1.5 v 2.0 v t mhigh t mcyc t mlow 0.8 v 2.4 v 1.5 v 2.0 v 0.4 v 20550d-89
AM79C971 225 switching waveforms: media independent interface (continued) figure 87. management data setup and hold timing figure 88. management data output valid delay timing mdc t mh mdio t msu vihmin vilmax vihmin vilmax 20550d-90 mdc t mval mdio vihmin vilmax vihmin vilmax 20550d-91
226 AM79C971 switching waveforms: general-purpose serial interface figure 89. transmit timing figure 90. receive timing t gpt3 t gpt2 t gpt3 t gpt3 t gpt5 t gpt4 t gpt6 t gpt7 t gpt5 t gpt8 t gpt1 (first bit preamble) (last bit) transmit clock (txclk) transmit data (txdat) transmit enable (txen) carrier present (rxen) (note 1) collision (clsn) (note 2) notes: 1. if rxcrs is not present during transmission, lcar bit in tmd2 will be set. 2. if clsn is not present during or shortly after transmission, cerr in csr0 will be set. 20550d-92 t gpr11 t gpr8 t gpr9 t gpr2 t gpr3 t gpr4 t gpr4 t gpr5 t gpr5 t gpr5 t gpr12 t gpr1 t gpr7 (no collision) (first bit preamble) (address type designation bit) (last bit) receive clock (rxclk) receive data (rxdat) carrier present (rxen) collision (clsn), active collision (clsn), inactive t gpr10 20550d-93
AM79C971 227 switching waveforms: external address detection interface figure 91. reject timing figure 92. reject timing - external phy mii @ 25 mhz figure 93. reject timing - external phy mii @ 2.5 mhz preamble data field sfd one zero one bit 0 bit 1 bit 2 bit 3 bit 4 bit 8 bit 0 bit 7 bit 8 t ead5 t ead1 t ead2 t ead3 t ead3 t ead4 accept reject t ead6 srdclk srd sf/bd ear 20550d-94 rx_clk rxd[3:0] rx_dv ear preamble sf/bd sfd da da da t ead8 t ead7 t ead9 t ead10 20550d-95 rx_clk rxd[3:0] rx_dv ear preamble sf/bd sfd da da da t ead13 t ead11 t ead12 20550d-96
228 AM79C971 switching waveforms: receive frame tag figure 94. receive frame tag timing with media independent interface rx_clk rxd[3:0] rx_dv ear preamble sf/bd sfd da da da rxfrtge t ead14 rxfrtgd t ead15 t ead16 t ead17 20550d-97
AM79C971 229 physical dimensions* pqr160 plastic quad flat pack (measured in millimeters) *for reference only. bsc is an ansi standard for basic space centering. 25.35 ref 27.90 28.10 31.00 31.40 pin 120 pin 80 0.65 basic 3.20 3.60 0.25 min pin 40 pin 1 i.d. 25.35 ref pin 160 27.90 28.10 31.00 31.40 3.95 max seating plane 16-038-pqr-1 pqr160 12-22-95 lv
230 AM79C971 pql176 thin quad flat pack (measured in millimeters) the contents of this document are provided in connection with advanced micro devices, inc. ( ? amd ? ) products. amd makes no representations or warranties with respect to the accuracy or completeness of the contents of this publication and reserves the right to make c hanges to specifi- cations and product descriptions at any time without notice. no license, whether express, implied, arising by estoppel or other wise, to any intel- lectual property rights is granted by this publication. except as set forth in amd's standard terms and conditions of sale, amd assumes no liability whatsoever, and disclaims any express or implied warranty, relating to its products including, but not limited to, th e implied warranty of merchantability, fitness for a particular purpose, or infringement of any intellectual property right. amd's products are not designed, intended, authorized or warranted for use as components in systems intended for surgical impla nt into the body, or in other applications intended to support or sustain life, or in any other application in which the failure of amd's p roduct could create a situation where personal injury, death, or severe property or environmental damage may occur. amd reserves the right to discont inue or make changes to its products at any time without notice. trademarks copyright ? 2000 advanced micro devices, inc. all rights reserved. amd, the amd logo, and combinations thereof are trademarks of advanced micro devices, inc. netphy is a trademark of advanced micro devices, inc. product names used in this publication are for identification purposes only and may be trademarks of their respective companies . 25.80 26.20 23.80 24.20 25.80 26.20 23.80 24.20 1 176 1.00 ref. 1.60 max 11 ? ? 13 ? 11 ? ? 13 ? 0.50 bsc 1.35 1.45 44 16-038-pqt-1_al pql176 5.12.97. lv
appendix a AM79C971 a-1 AM79C971 compatible media interface modules AM79C971 compatible 10base-t filters and transformers the table below provides a sample list of AM79C971 compatible 10base-t filter and transformer modules available form various vendors. contact the respective manufacturer for a complete updated component list- ing. note : 100base-tx and 100base-t4 interfaces are unique to the external phy. contact the phy vendor for the appropriate information. manufacturer part no. package filters and transformers filters tr ansformers and choke filters transformers dual chokes filters tr ansformers resistors dual chokes bel fuse a556-2006-de 16-pin 0.3 dil x bel fuse 0556-2006-00 14-pin sip x bel fuse 0556-2006-01 14-pin sip x bel fuse 0556-6392-00 16-pin 0.5 dil x halo electronics fd02-101g 16-pin 0.3 dil x halo electronics fd12-101g 16-pin 0.3 dil x halo electronics fd22-101g 16-pin 0.3 dil x pca electronics epa 1990a 16-pin 0.3 dil x pca electronics epa 2013d 16-pin 0.3 dil x pca electronics epa 2162 16-pin 0.3 sip x pulse engineering pe-65421 16-pin 0.3 dil x pulse engineering pe-65434 16-pin 0.3 sil x pulse engineering pe-65445 16-pin 0.3 dil x pulse engineering pe-65467 12-pin 0.5 smt x valor electronics pt3877 16-pin 0.3 dil x valor electronics pt3877 16-pin 0.3 dil x
a-2 AM79C971 device, compatible with:10base-t filters and transformers AM79C971 compatible aui isolation transformers the table below provides a sample list of AM79C971 compatible aui isolation transformers available from various vendors. contact the respective manufacturer for a complete updated component listing. AM79C971 compatible dc/dc converters the table below provides a sample list of AM79C971 compatible dc/dc converters available from various vendors. contact the respective manufacturer for a complete updated component listing. manufacturer contact information contact the following companies for further information on their products. manufacturer part no. package description bel fuse a553-0506-ab 16-pin 0.3 dil 50 mh bel fuse s553-0756-ae 16-pin 0.3 smd 75 h halo electronics td01-0765k 16-pin 0.3 dil 75 h halo electronics tg01-0756w 16-pin 0.3 smd 75 h pca electronics ep9531-4 16-pin 0.3 dil 50 h pulse engineering pe-64106 16-pin 0.3 dil 50 h pulse engineering pe-65723 16-pin 0.3 smt 75 h valor electronics lt6032 16-pin 0.3 dil 75 h valor electronics st7032 16-pin 0.3 smd 75 h manufacturer part no. package voltage remote on/off halo electronics dcuo-0509d 24-pin dip 5/-9 no halo electronics dcuo=0509e 24-pin dip 5/-9 ye s pca electronics epc1007p 24-pin dip 5/-9 no pca electronics epc1054p 24-pin dip 5/-9 ye s pca electronics epc1078 24-pin dip 5/-9 ye s valor electronics pm7202 24-pin dip 5/-9 no valor electronics pm7222 24-pin dip 5/-9 ye s company u. s. and domestic asia europe bel fuse phone: (201) 432-0463 fax: (201) 432-9542 852-328-5515 852-352-3706 33-1-69410402 33-1-69413320 halo electronics phone: (415)969-7313 fax: (415) 367-7158 65-285-1566 65-284-9466 pca electronics (hpc in hong kong) phone: (818) 892-0761 fax: (818) 894-5791 852-553-0165 852-352-3706 33-1-44894800 33-1-42051579 pulse engineering phone: (619) 674-8100 fax: (619) 675-8262 852-425-1651 852-480-5974 353-093-24107 353-093-24459 valor electronics phone: (619) 537-2500 fax: (619) 537-2525 852-513-8210 852-513-8214 49-89-69233122 49-89-6926542
appendix b AM79C971 b-1 recommendation for power and ground decoupling the mixed analog/digital circuitry in the AM79C971 de- vice makes it imperative to provide noise-free power and ground connections to the device. without clean power and ground connections, a design may suffer from high bit error rates or may not function at all. hence, it is highly recommended that the guidelines presented here are followed to ensure a reliable de- sign. decoupling/bypass capacitors adequate decoupling of the power and ground pins and planes is required by all AM79C971 designs. this in- cludes both low-frequency bulk capacitors and high fre- quency capacitors. it is recommended that at least one low-frequency bulk (e.g., 22 f) decoupling ca- pacitor be used in the area of the AM79C971 device. the bulk capacitor(s) should be connected directly to the power and ground planes. in addition, at least eight high frequency decoupling capacitors (e.g., 0.1 f multilayer ceramic capacitors of dielectric type xdr) should be used around the periphery of the pcnet-pci ii device to prevent power and ground bounce from affecting device operation. to reduce the inductance between the power and ground pins and the capacitor, the pins should be connected directly to the capacitors, rather than through the planes to the ca- pacitors. the suggested connection scheme for the ca- pacitors is shown in the figure below. note also that the traces connecting these pins to the capacitors should be as wide as possible to reduce inductance (15 mils is desirable). figure 1. connection scheme for capacitors AM79C971 AM79C971 AM79C971 c a p c a p c a p best ok not recommended 19364d-1
b-2 AM79C971 the most critical pins in the layout of a AM79C971 de- sign are the four analog power and two analog ground pins, vdd_pll, avdd, vss_pll and avss respec- tively. all of these pins are located in one corner of the device, the ? analog corner. ? specific functions and lay- out requirements of the analog power and ground pins are given below. avss and avdd these pins provide the power and ground for the twisted pair and aui drivers. in addition avss serves as the ground for the logic interfaces in the 20 mhz crystal oscillator. hence, these pins can be very noisy. a dedicated 0.1 f capacitor between these pins is recommended. vss_pll and vdd_pll these pins are the most critical pins on the AM79C971 device because they provide the power and ground for the phase-lock loop (pll) portion of the chip. the voltage-controlled oscillator (vco) portion of the pll is sensitive to noise in the 60 khz - 200 khz. range. to prevent noise in this frequency range from disrupting the vco, it is strongly recommended that the low-pass filter shown below be implemented on these pins when internal ports are used.this filter is not needed when mii is used solely. figure 2. power and ground pin connections to determine the value for the resistor and capacitor, the formula is: r * c 88 where r is in ohms and c is in microfarads. some pos- sible combinations are given below. to minimize the voltage drop across the resistor, the r value should not be more than 10 ? . note: the capacitor used should be tantalum not alu- minum electrolytic.5.0 vss_pll and vdd_pll/avdd these pins provide power and ground for the aui and twisted pair receive circuitry. in addition, as mentioned earlier, vss_pll and vdd_pll provide power and ground for the phase-lock loop portion of the chip. ex- cept for the filter circuit already mentioned, no specific decoupling is necessary on these pins. avdd avdd provides power for the control and interface logic in the pll. ground for this logic is provided by digital ground pins. no specific decoupling is necessary on this pin. special note for adapter cards : in adapter card de- signs, it is important to utilize all available power and ground pins available on the bus edge connec- tor . in addition, the connection from the bus edge con- nector to the power or ground plane should be made through more than one via and with wide traces (15 mils desirable) wherever possible. following these rec- ommendations results in minimal inductance in the power and ground paths. by minimizing this induc- tance, ground bounce is minimized. see also the pcnet ? family board design and layout recommendations applications note (pid# 19595) for additional information. vdd_pll vss_pll AM79C971 vdd plane 33 f to 10 f 0.1 f 1 ? to 10 ? vss plane (pin 129) (pin 119) 2.7 ? ? 10 ? 19364d-2 r c 2.7 ? 33 f 4.3 ? 22 f 6.8 ? 15 f 10 ? 10 f
appendix c AM79C971 c-1 alternative method for initialization* the AM79C971 controller may be initialized by per- forming i/o writes only. that is, data can be written di- rectly to the appropriate control and status registers (csr instead of reading from the initialization block in memory). the registers that must be written are shown in the table below. these register writes are followed by writing the start bit in csr0. notes: *the init bit must not be set or the initialization block will be accessed instead. **needed only if ssize32 =0. control and status register comment csr2 iadr[31:16]** csr8 ladrf[15:0] csr9 ladrf[31:16] csr10 ladrf[47:32] csr11 ladrf[63:48] csr12 padr[15:0] csr13 padr[31:16] csr14 padr[47:32] csr15 mode csr24-25 badr csr30-31 badx csr47 txpollint csr49 rxpollint csr76 rcvrl csr78 xmtrl
c-2 AM79C971
appendix d AM79C971 d-1 look-ahead packet processing (lapp) concept introduction a driver for the AM79C971 controller would normally re- quire that the cpu copy receive frame data from the controllers buffer space to the applications buffer space after the entire frame has been received by the control- ler. for applications that use a ping-pong windowing style, the traffic on the network will be halted until the current frame has been completely processed by the en- tire application stack. this means that the time between last byte of a receive frame arriving at the client ? s ether- net controller and the client ? s transmission of the first byte of the next outgoing frame will be separated by: 1. the time that it takes the client ? s cpu ? s interrupt procedure to pass software control from the current task to the driver, 2. plus the time that it takes the client driver to pass the header data to the application and request an application buffer, 3. plus the time that it takes the application to gener- ate the buffer pointer and then return the buffer pointer to the driver, 4. plus the time that it takes the client driver to transfer all of the frame data from the controller ? s buffer space into the application ? s buffer space and then call the application again to process the complete frame, 5. plus the time that it takes the application to pro- cess the frame and generate the next outgoing frame, and 6. plus the time that it takes the client driver to set up the descriptor for the controller and then write a tdmd bit to csr0. the sum of these times can often be about the same as the time taken to actually transmit the frames on the wire, thereby, yielding a network utilization rate of less than 50 percent. an important thing to note is that the AM79C971 control- ler ? s data transfers to its buffer space are such that the system bus is needed by the AM79C971 controller for approximately 4 percent of the time. this leaves 96 per- cent of the system bus bandwidth for the cpu to perform some of the interframe operations in advance of the completion of network receive activity, if possible. the question then becomes: how much of the tasks that need to be performed between reception of a frame and transmission of the next frame can be performed before the reception of the frame actually ends at the network, and how can the cpu be instructed to perform these tasks during the network reception time. the answer depends upon exactly what is happening in the driver and application code, but the steps that can be performed at the same time as the receive data are arriving include as much as the first three steps and part of the fourth step shown in the se- quence above. by performing these steps before the entire frame has arrived, the frame throughput can be substantially increased. a good increase in performance can be expected when the first three steps are performed before the end of the network receive operation. a much more significant performance increase could be realized if the AM79C971 controller could place the frame data di- rectly into the application ? s buffer space; (i.e., eliminate the need for step 4.) in order to make this work, it is necessary that the application buffer pointer be deter- mined before the frame has completely arrived, then the buffer pointer in the next descriptor for the receive frame would need to be modified in order to direct the AM79C971 controller to write directly to the application buffer. more details on this operation will be given later. an alternative modification to the existing system can gain a smaller but still significant improvement in per- formance. this alternative leaves step 4 unchanged in that the cpu is still required to perform the copy oper- ation, but is allows a large portion of the copy operation to be done before the frame has been completely re- ceived by the controller, i.e., the cpu can perform the copy operation of the receive data from the AM79C971 controller ? s buffer space into the application buffer space before the frame data has completely arrived from the network. this allows the copy operation of step 4 to be performed concurrently with the arrival of network data, rather than sequentially, following the end of network receive activity. outline of lapp flow this section gives a suggested outline for a driver that utilizes the lapp feature of the AM79C971 controller. note: the labels in the following text are used as refer- ences in the timeline diagram that follows (figure d1).
d-2 AM79C971 setup the driver should set up descriptors in groups of three, with the own and stp bits of each set of three de- scriptors to read as follows: 11b, 10b, 00b. an option bit (lappen) exists in csr3, bit position 5; the software should set this bit. when set, the lappen bit directs the AM79C971 controller to generate an in- terrupt when stp has been written to a receive de- scriptor by the AM79C971 controller. flow the AM79C971 controller polls the current receive de- scriptor at some point in time before a message arrives. the AM79C971 controller determines that this receive buffer is owned by the AM79C971 controller and it stores the descriptor information to be used when a message does arrive. n0 frame preamble appears on the wire, followed by sfd and destination address. n1 the 64th byte of frame data arrives from the wire. this causes the AM79C971 controller to begin frame data dma operations to the first buffer. c0 when the 64th byte of the message arrives, the AM79C971 controller performs a lookahead operation to the next receive descriptor. this descriptor should be owned by the AM79C971 controller. c1 the AM79C971 controller intermittently re- quests the bus to transfer frame data to the first buffer as it arrives on the wire. s1 the driver remains idle. c2 when the AM79C971 controller has completely filled the first buffer, it writes status to the first descriptor. c3 when the first descriptor for the frame has been written, changing ownership from the AM79C971 controller to the cpu, the AM79C971 controller will generate an srp in- terrupt. (this interrupt appears as a rint interrupt in csr0). s1 the srp interrupt causes the cpu to switch tasks to allow the AM79C971 controller ? s driver to run. c4 during the cpu interrupt-generated task switching, the AM79C971 controller is perform- ing a lookahead operation to the third descrip- tor. at this point in time, the third descriptor is owned by the cpu. note: even though the third buffer is not owned by the AM79C971 controller, existing amd ethernet control- lers will continue to perform data dma into the buffer space that the controller already owns (i.e., buffer num- ber 2). the controller does not know if buffer space in buffer number 2 will be sufficient or not for this frame, but it has no way to tell except by trying to move the en- tire message into that space. only when the message does not fit will it signal a buffer error condition--there is no need to panic at this point that it discovers that it does not yet own descriptor number 3. s2 the first task of the drivers interrupt service routing is to collect the header information from the AM79C971 controller ? s first buffer and pass it to the application. s3 the application will return an application buffer pointer to the driver. the driver will add an offset to the application data buffer pointer, since the AM79C971 controller will be placing the first portion of the message into the first and second buffers. (the modified application data buffer pointer will only be directly used by the AM79C971 controller when it reaches the third buffer.) the driver will place the modified data buffer pointer into the final descriptor of the group (#3) and will grant ownership of this de- scriptor to the AM79C971 controller. c5 interleaved with s2, s3, and s4 driver activity, the AM79C971 controller will write frame data to buffer number 2. s4 the driver will next proceed to copy the con- tents of the AM79C971 controller ? s first buffer to the beginning of the application space. this copy will be to the exact (unmodified) buffer pointer that was passed by the application. s5 after copying all of the data from the first buffer into the beginning of the application data buffer, the driver will begin to poll the ownership bit of the second descriptor. the driver is waiting for the AM79C971 controller to finish filling the sec- ond buffer. c6 at this point, knowing that it had not previously owned the third descriptor and knowing that the current message has not ended (there is more data in the fifo), the AM79C971 controller will make a last ditch lookahead to the final (third) descriptor. this time the ownership will be true (i.e., the descriptor belongs tot he con- troller), because the driver wrote the application pointer into this descriptor and then changed the ownership to give the descriptor to the AM79C971 controller back at s3. note that if steps s1, s2, and s3 have not completed at this time, a buff error will result. c7 after filling the second buffer and performing the last chance lookahead to the next descrip- tor, the AM79C971 controller will write the sta-
AM79C971 d-3 tus and change the ownership bit of descriptor number 2. s6 after the ownership of descriptor number 2 has been changed by the AM79C971 controller, the next driver poll of the second descriptor will show ownership granted to the cpu. the driver now copies the data from buffer number 2 into the middle section of the application buffer space. this operation is interleaved with the c7 and c8 operations. c8 the AM79C971 controller will perform data dma to the last buffer, whose pointer is pointing to application space. data entering the last buff- er will not need the infamous double copy that is required by existing drivers, since it is being placed directly into the application buffer space. n2 the message on the wire ends. s7 when the driver completes the copy of buffer number 2 data to the application buffer space, it begins polling descriptor number 3. c9 when the AM79C971 controller has finished all data dma operations, it writes status and changes ownership of descriptor number 3. s8 the driver sees that the ownership of descriptor number 3 has changed, and it calls the appli- cation to tell the application that a frame has arrived. s9 the application processes the received frame and generates the next tx frame, placing it into a tx buffer. s10 the driver sets up the tx descriptor for the AM79C971 controller.
d-4 AM79C971 figure d1. lapp timeline buffer #1 ethernet controller activity: software activity: buffer #2 buffer #3 s0: driver is idle. c1: controller is performing intermittent bursts of dma to fill data buffer #1. ethernet wire activity: n0: packet preamble, sfd and destination address are arriving. c3: srp interrupt is generated. c5: controller is performing intermittent bursts of dma to fill data buffer #2. s1: interrupt latency. s3: driver writes modified application pointer to descriptor #3. c8: controller is performing intermittent bursts of dma to fill data buffer #3. n1: 64th byte of packet data arrives. s4: driver copies data from buffer #1 to the application buffer. s5: driver polls descriptor #2. s7: driver is swapped out, allowing a non-etherenet application to run. s8: driver calls application to tell application that packet has arrived. s6: driver copies data from buffer #2 to the application buffer. c9: controller writes descriptor #3. c0: lookahead to descriptor #2. c2: controller writes descriptor #1. s2: driver call to application to get application buffer pointer. { s9: application processes packet, generates tx packet. s10: driver sets up tx descriptor. packet data arriving c4: lookahead to descriptor #3 ( own ). c6: "last chance" lookahead to descriptor #3 (own). c7: controller writes descriptor #2. } }{ { n2: eom c10: erp interrupt is generated. } s8a: interrupt latency. s7a: driver interrupt service routine executes return. { 19364d-d1
AM79C971 d-5 lapp software requirements software needs to set up a receive ring with descriptors formed into groups of three. the first descriptor of each group should have own = 1 and stp = 1, the second descriptor of each group should have own = 1 and stp = 0. the third descriptor of each group should have own = 0 and stp = 0. the size of the first buffer (as indicated in the first descriptor) should be at least equal to the largest expected header size; however, for maximum efficiency of cpu utilization, the first buffer size should be larger than the header size. it should be equal to the expected number of message bytes, minus the time needed for interrupt latency and minus the ap- plication call latency, minus the time needed for the driver to write to the third descriptor, minus the time needed for the drive to copy data from buffer number 2 to the application buffer space. note that the time needed for the copies performed by the driver depends upon the sizes of the second and third buffers, and that the sizes of the second and third buffers need to be set according to the time needed for the data copy opera- tions. this means that an iterative self-adjusting mech- anism needs to be placed into the software to determine the correct buffer sizing for optimal opera- tion. fixed values for buffer sizes may be used; in such a case, the lapp method will still provide a significant performance increase, but the performance increase will not be maximized. figure d-2 illustrates this setup for a receive ring size of 9. figure d2. lapp 3 buffer grouping lapp rules for parsing descriptors when using the lapp method, software must use a modified form of descriptor parsing as follows:  software will examine own and stp to determine where an rcv frame begins. rcv frames will only begin in buffers that have own = 0 and stp = 1.  software shall assume that a frame continues until it finds either enp = 1 or err = 1.  software must discard all descriptors with own = 0 and stp = 0 and move to the next descriptor when searching for the beginning of a new frame; enp and err should be ignored by software during this search.  software cannot change an stp value in the receive descriptor ring after the initial setup of the ring is complete, even if software has ownership of the stp descriptor #1 descriptor #2 descriptor #3 descriptor #4 descriptor #5 descriptor #6 descriptor #7 descriptor #8 descriptor #9 own = 1 stp = 1 size = a-(s1+s2+s3+s4+s6) own = 1 stp = 0 size = s1+s2+s3+s4 own = 0 stp = 0 size = s6 own = 1 stp = 1 size = a-(s1+s2+s3+s4+s6) own = 1 stp = 0 size = s1+s2+s3+s4 own = 0 stp = 0 size = s6 own = 1 stp = 1 size = a-(s1+s2+s3+s4+s6) own = 1 stp = 0 size = s1+s2+s3+s4 own = 0 stp = 0 size = s6 a = expected message size in bytes s1 = interrupt latency s2 = application call latency s3 = time needed for driver to write to third descriptor s4 = time needed for driver to copy data from buffer #1 to application buffer space s6 = time needed for driver to copy data from buffer #2 to application buffer space note that the times needed for tasks s1, s2, s3, s4, and s6 should be divided by 0.8 microseconds to yield an equivalent number of network byte times before subtracting these quantities from the expected message size a. 19364d-d2
d-6 AM79C971 descriptor, unless the previous stp descriptor in the ring is also owned by the software. when lappen = 1, then hardware will use a modified form of descriptor parsing as follows:  the controller will examine own and stp to deter- mine where to begin placing an rcv frame. a new rcv frame will only begin in a buffer that has own = 1 and stp =1.  the controller will always obey the own bit for de- termining whether or not it may use the next buffer for a chain.  the controller will always mark the end of a frame with either enp = 1 or err = 1. the controller will discard all descriptors with own = 1 and stp = 0 and move to the next descriptor when searching for a place to begin a new frame. it discards these descriptors by simply changing the ownership bit from own = 1 to own = 0. such a descriptor is unused for receive purposes by the controller, and the driver must recognize this. (the driver will recognize this if it follows the software rules.) the controller will ignore all descriptors with own = 0 and stp = 0 and move to the next descriptor when searching for a place to begin a new frame. in other words, the controller is allowed to skip entries in the ring that it does not own, but only when it is looking for a place to begin a new frame. some examples of lapp descriptor interaction choose an expected frame size of 1060 bytes. choose buffer sizes of 800, 200, and 200 bytes.  example 1 : assume that a 1060 byte frame arrives correctly, and that the timing of the early interrupt and the software is smooth. the descriptors will have changed from:  example 2 : assume that instead of the expected 1060 byte frame, a 900 byte frame arrives, either because there was an error in the network, or because this is the last frame in a file transmission sequence note that the AM79C971 controller might write a zero to enp location in the third descriptor. here are the two possibilities: 1. if the controller finishes the data transfers into buffer number 2 after the driver writes the application mod- ified buffer pointer into the third descriptor, then the controller will write a zero to enp for this buffer and will write a zero to own and stp. descriptor number before the frame arrives after the frame arrives comments (after frame arrival) own stp enp a own stp enp b 1 1 1 x 0 1 0 bytes 1-800 2 1 0 x 0 0 0 bytes 801-1000 3 0 0 x 0 0 1 bytes 1001-1060 4 1 1 x 1 1 x controller ? s cur- rent location 5 1 0 x 1 0 x not yet used 6 0 0 x 0 0 x not yet used etc. 1 1 x 1 1 x net yet used a. & b. enp or err. descriptor number before the frame arrives after the frame arrives comments (after frame arrival) own stp enp a own stp enp b 1 1 1 x 0 1 0 bytes 1-800 2 1 0 x 0 0 0 bytes 801-1000 3 0 0 x 0 0 ? * discarded buffer 4 1 1 x 1 1 x controller ? s cur- rent location 5 1 0 x 1 0 x not yet used 6 0 0 x 0 0 x not yet used etc. 1 1 x 1 1 x net yet used a. & b. enp or err.
AM79C971 d-7 2. if the controller finishes the data transfers into buffer number 2 before the driver writes the applications modified buffer point into the third descriptor, then the controller will complete the frame in buffer num- ber 2 and then skip the then unowned third buffer. in this case, the AM79C971 controller will not have had the opportunity to reset the enp bit in this descrip- tor, and it is possible that the software left this bit as enp = 1 from the last time through the ring. there- fore, the software must treat the location as a don ? t care. the rule is, after finding enp = 1 (or err = 1) in descriptor number 2, the software must ignore enp bits until it finds the next stp = 1.  example 3 : assume that instead of the expected 1060 byte frame, a 100 byte frame arrives, because there was an error in the network, or because this is the last frame in a file transmission sequence, or perhaps because it is an acknowledge frame. * same as note in example 2 above, except that in this case, it is very unlikely that the driver can respond to the interrupt and get the pointer from the application before the AM79C971 controller has completed its poll of the next descriptors. this means that for almost all occurrences of this case, the AM79C971 controller will not find the own bit set for this descriptor and, there- fore, the enp bit will almost always contain the old value, since the AM79C971 controller will not have had an opportunity to modify it. ** note that even though the AM79C971 controller will write a zero to this enp location, the software should treat the location as a don ? t care, since after finding the enp = 1 in descriptor number 2, the software should ig- nore enp bits until it finds the next stp = 1. buffer size tuning for maximum performance, buffer sizes should be ad- justed depending upon the expected frame size and the values of the interrupt latency and application call latency. the best driver code will minimize the cpu uti- lization while also minimizing the latency from frame end on the network to the frame sent to application from driver (frame latency). these objectives are aimed at increasing throughput on the network while decreas- ing cpu utilization. note: the buffer sizes in the ring may be altered at any time that the cpu has ownership of the corresponding descriptor. the best choice for buffer sizes will maxi- mize the time that the driver is swapped out, while min- imizing the time from the last byte written by the AM79C971 controller to the time that the data is passed from the driver to the application. in the dia- gram, this corresponds to maximizing s0, while mini- mizing the time between c9 and s8. (the timeline happens to show a minimal time from c9 to s8.) note: by increasing the size of buffer number 1, we increase the value of s0. however, when we increase the size of buffer number 1, we also increase the value of s4. if the size of buffer number 1 is too large, then the driver will not have enough time to perform tasks s2, s3, s4, s5, and s6. the result is that there will be delay from the execution of task c9 until the execution of task s8. a perfectly timed system will have the values for s5 and s7 at a minimum. an average increase in performance can be achieved, if the general guidelines of buffer sizes in figure 2 is fol- lowed. however, as was noted earlier, the correct sizing for buffers will depend upon the expected message size. there are two problems with relating expected message size with the correct buffer sizing: 1. message sizes cannot always be accurately pre- dicted, since a single application may expect differ- ent message sizes at different times. therefore, the buffer sizes chosen will not always maximize throughput. 2. within a single application, message sizes might be somewhat predictable, but when the same driver is to be shared with multiple applications, there may not be a common predictable message size. additional problems occur when trying to define the correct sizing because the correct size also depends upon the interrupt latency, which may vary from system to system, depending upon both the hardware and the software installed in each system. descriptor number before the frame arrives after the frame arrives comments (after frame arrival) own stp enp a own stp enp b 1 1 1 x 0 1 0 bytes 1-800 2 1 0 x 0 0 0** discarded buffer 3 0 0 x 0 0 ? discarded buffer 4 1 1 x 1 1 x controller ? s current location 5 1 0 x 1 0 x not yet used 6 0 0 x 0 0 x not yet used etc. 1 1 x 1 1 x net yet used a. & b.enp or err.
d-8 AM79C971 in order to deal with the unpredictable nature of the message size, the driver can implement a self-tuning mechanism that examines the amount of time spent in tasks s5 and s7. as such, while the driver is polling for each descriptor, it could count the number of poll oper- ations performed and then adjust the number 1 buffer size to a larger value, by adding ? t ? bytes to the buffer count, if the number of poll operations was greater than ? x. ? if fewer than ? x ? poll operations were needed for each of s5 and s7, then software should adjust the buffer size to a smaller value by subtracting ? y ? bytes from the buffer count. experiments with such a tuning mechanism must be performed to determine the best values for ? x ? and ? y. ? note whenever the size of buffer number 1 is adjusted, buffer sizes for buffer number 2 and buffer number 3 should also be adjusted. in some systems, the typical mix of receive frames on a network for a client application consists mostly of large data frames, with very few small frames. in this case, for maximum efficiency of buffer sizing, when a frame arrives under a certain size limit, the driver should not adjust the buffer sizes in response to the short frame. an alternative lapp flow: two-interrupt method an alternative to the above suggested flow is to use two interrupts, one at the start of the receive frame and the other at the end of the receive frame, instead of just looking for the srp interrupt as described above. this alternative attempts to reduce the amount of time that the software wastes while polling for descriptor own bits. this time would then be available for other cpu tasks. it also minimizes the amount of time the cpu needs for data copying. this savings can be applied to other cpu tasks. the time from the end of frame arrival on the wire to de- livery of the frame to the application is labeled as frame latency. for the one-interrupt method, frame latency is minimized, while cpu utilization increases. for the two-interrupt method, frame latency becomes greater, while cpu utilization decreases. see figure d3. note: some of the cpu time that can be applied to non-ethernet tasks is used for task switching in the cpu. one task switch is required to swap a non-ether- net task into the cpu (after s7a) and a second task switch is needed to swap the ethernet driver back in again (at s8a). if the time needed to perform these task switches exceeds the time saved by not polling descrip- tors, then there is a net loss in performance with this method. therefore, the lapp method implemented should be carefully chosen. figure d4 shows the buffer sizing for the two-interrupt method. note that the second buffer size will be about the same for each method. there is another alternative which is a marriage of the two previous methods. this third possibility would use the buffer sizes set by the two-interrupt method, but would use the polling method of determining frame end. this will give good frame latency but at the price of very high cpu utilization. and still, there are even more compromise positions that use various fixed buffer sizes and, effectively, the flow of the one-inter- rupt method. all of these compromises will reduce the complexity of the one-interrupt method by removing the heuristic buffer sizing code, but they all become less ef- ficient than heuristic code would allow.
AM79C971 d-9 figure d3. lapp timeline for two-interrupt method buffer #1 ethernet controller activity: software activity: buffer #2 buffer #3 s0: driver is idle. c1: controller is performing intermittent bursts of dma to fill data buffer #1. ethernet wire activity: n0: packet preamble, sfd and destination address are arriving. c3: srp interrupt is generated. c5: controller is performing intermittent bursts of dma to fill data buffer #2. s1: interrupt latency. s3: driver writes modified application pointer to descriptor #3. c8: controller is performing intermittent bursts of dma to fill data buffer #3. n1: 64th byte of packet data arrives. s4: driver copies data from buffer #1 to the application buffer. s5: driver polls descriptor #2. s7: driver polls descriptor of buffer #3. s8: driver calls application to tell application that packet has arrived. s6: driver copies data from buffer #2 to the application buffer. c9: controller writes descriptor #3. c0: lookahead to descriptor #2. c2: controller writes descriptor #1. s2: driver call to application to get application buffer pointer. { s9: application processes packet, generates tx packet. s10: driver sets up tx descriptor. packet data arriving c4: lookahead to descriptor #3 ( own ). c6: "last chance" lookahead to descriptor #3 (own). c7: controller writes descriptor #2. } }{ { n2: eom 19364d-d3
d-10 AM79C971 figure d4. lapp 3 buffer grouping for two-interrupt method note: this document demonstrates a 3-buffer per packet implementation of lapp. for pcnet-fast application with external srams enabled, a 2-buffer per packet implementation can be used. descriptor #1 descriptor #2 descriptor #3 descriptor #4 descriptor #5 descriptor #6 descriptor #7 descriptor #8 descriptor #9 own = 1 stp = 1 size = header_size (minimum 64 bytes) own = 1 stp = 0 size = s1+s2+s3+s4 own = 0 stp = 0 size = 1518 - (s1+s2+s3+s4+header_size) own = 1 stp = 1 size = header_size (minimum 64 bytes) own = 1 stp = 0 size = s1+s2+s3+s4 own = 0 stp = 0 size = 1518 - (s1+s2+s3+s4+header_size) own = 1 stp = 1 size = header_size (minimum 64 bytes) own = 1 stp = 0 size = s1+s2+s3+s4 own = 0 stp = 0 size = 1518 - (s1+s2+s3+s4+header_size) a = expected message size in bytes s1 = interrupt latency s2 = application call latency s3 = time needed for driver to write to third descriptor s4 = time needed for driver to copy data from buffer #1 to application buffer space s6 = time needed for driver to copy data from buffer #2 to application buffer space note that the times needed for tasks s1, s2, s3, s4, and s6 should be divided by 0.8 microseconds to yield an equivalent number of network byte times before subtracting these quantities from the expected message size a. 19364d-d4
appendix e AM79C971 e-1 auto-negotiation registers the following registers exist in the auto-negotiation block and are written or read by using registers mii ad- dress (bcr33) and mii data port (bcr34). these reg- isters are indirect read and write registers with the register offset specified by the regad (bcr33, bits 3- 0) portion of the mii address register (bcr33). the phyad (bcr33, bits 3-0) portion specifies the specific phy that you wish to communicate with. the internal phy on the AM79C971 controller has a phyad ad- dress of 1fh. the default external phy has a phyad address of 00h. the following is a table of these indirect registers and defaulted values for the internal registers. register 0: mii control register bit name default description 15 prphy reset. defaults to zero after power-up and after hardware resets (h_reset). this is normally only used to bring up the external phy into a known state. not used for the internal phy. use the normal AM79C971 reset mechanisms. 14 lb na (0) loop back. defaults to zero after power- up and after hardware resets (h_reset). loopback is supported only in an external phy. see the ? mii configuration ? section for more details.. 13 ss na (0) speed selection. defaults to zero after power-up and after hardware resets (h_reset). this is zero the entire time the internal phy is active. the external phy can be forced into 100mbps or 10mbps mode by manipulation of this bit. this bit is used only when the auto- negotiation enable bit is zero. 12 ane variable * auto-negotiation enable. defaults to one after power-up and after hardware resets (h_reset). this bit enables the internal or external phy ? s auto- negotiation capabilities. when this bit is zero the internal/external phy ? s must be forced into the correct state through software intervention. 11 pd na (0) power down. defaults to zero after power-up and after hardware resets (h_reset). this bit only applies to the external phy. use the sleep# or other power saving modes in the AM79C971 controller. * see text on auto negotiation.
e-2 AM79C971 10 is na (0) isolate. defaults to zero after power-up and after hardware resets (h_reset). this bit only applies to the external phy. this bit is used when multiple phy ? s can be attached to the AM79C971 mii. 9 ran 0 restart auto negotiation. defaults to zero after power- up and after hardware resets ( h_reset ). this bit is used when the software needs to reset the auto- negotiation process. for use with an external phy without software intervention. 8 dm 0 duplex mode. defaults to zero after power-up and after hardware resets (h_reset). this bit sets the full-duplex feature for the internal or external phy ? s. only valid when the auto-negotiation enable bit is not set. 7 ct 0 collision test. defaults to zero after power-up and after hardware resets (h_reset). this bit is only useful for testing the col pin on the mii and is not supported without software intervention. 0-6 res 0 reserved locations. defaults to all zeros after power-up and after hardware resets (h_reset). register 1: mii status register bit name default description 15 100t4 0 100base-t4. defaults to zero after power-up and after hardware resets (h_reset). indicates that the phy is 100base-t4 capable. not used on the internal phy. 14 100xfd 0 100base-x full duplex. defaults to zero after power-up and after hardware resets (h_reset). indicates that the phy is 100base-tx full-duplex capable. 13 100xhd 0 100base-x half duplex. defaults to zero after power-up and after hardware resets (h_reset). indicates that the phy is 100base-tx half-duplex capable. not used on the internal phy 12 10fd 1 10base full duplex. defaults to one after power-up and after hardware resets (h_reset). indicates that the phy is 10base-t full-duplex capable. 11 10hd 1 10base half duplex. defaults to one after power-up and after hardware resets (h_reset). indicates that the phy is 10base-t half-duplex capable. 10-7 res 0 reserved locations. these locations should be read and written as zeros.
AM79C971 e-3 6 mfps 0 management frame preamble suppression. defaults to zero after power-up and after hardware resets (h_reset). this is used by the AM79C971 controller to reduce the time delay overhead with processing the mii management frames. strips the 32 bit preamble off of each frame sent. 5 anc 0 auto-negotiation complete. defaults to zero after power-up and after hardware resets (h_reset). this bit indicates that the auto-negotiation process has completed and that the contents of registers 4-8 are valid. 4 rf 0 remote fault. defaults to zero after power-up and after hardware resets (h_reset). this is a indication that the remote node has detected a fault with your system. 3 ana 1 auto-negotiation ability. defaults to one after power-up and after hardware resets (h_reset). this bit indicates that phy ? s ability to do auto-negotiation. this bit is defaulted one on the AM79C971 controller. 2 ls0 0 link status. defaults to zero after power- up and after hardware resets (h_reset). this bit indicates the current status of the network link. 1 jd 0 jabber detect. defaults to zero after power-up and after hardware resets (h_reset). this bit indicates that a jabber event occurred on the network. 0 ec 1 extended capability. defaults to one after power-up and after hardware resets (h_reset). this bit indicates that the phy has auto- negotiation capability. if this bit is not set then the line must be forced. register 2: phy identifier bit name default description 15-0 oui 0000 organizationally unique identifier. administered by the ieee. register 3: phy identifier bit name default description 15-10 oui 68 organizationally unique identifier. administered by the ieee. 9-4 mmn 01 manufacturers model number. the AM79C971 controller will have a default model number of 1. 3-0 rn 1 revision number. initially zero.
e-4 AM79C971 register 4: auto negotiation advertisement ability register bit name description 15 np na (0) next page. defaults 0 to zero after power- up and after hardware resets (h_reset). this bit indicates the ability of the phy to send and receive message pages after the initial base code word has been sent. the AM79C971 controller does not support next pages currently. 14 res 0 read as zero always. 13 rf 0 remote fault. defaults to zero after power-up and after hardware resets (h_reset). this bit indicates that we have detected a remote fault with the other node. 12-5 taf 03 technology ability field. the AM79C971 controller will only support 10baset or 10baset full duplex with the internal phy device. when using the internal phy the taf will be set to 00000011b always. 4-0 sf 01 selector field. the AM79C971 controller will only currently support ieee 802.3 messages. when using the internal phy the sf will be set to 00001b always. register 5: auto negotiation link-partner ability register bit name description these fields are identical to the previous and are valid for the node in which we are currently engaged. 15 np 0 next page. defaults to zero after power- up and after hardware resets (h_reset). 14 ack 0 acknowledge. defaults to zero after power-up and after hardware resets (h_reset). 13 rf 0 remote fault. defaults to zero after power-up and after hardware resets (h_reset) 12-5 taf 03 technology ability field. defaults to all zeros after power- up and after hardware resets (h_reset) 4-0 sf 01 selector field. defaults to all zeros after power-up and after hardware resets (h_reset) register 6: auto negotiation expansion register bit name description this is the catch all register of odds and ends that did not fit in other registers. 15-5 res 0 reserved. read and written as zero ? s. 4 pdf 0 parallel detection fault. defaults to zero after power-up and after hardware resets (h_reset). this bit indicates that more than one phy has responded to a valid link or none have responded to a valid link. either way
AM79C971 e-5 we need to restart the process. 3 lpnp 0 link partner next page able. defaults to zero after power- up and after hardware resets (h_reset). this bit gets set if the link partner can do the next page function. 2 npa 0 next page able. defaults to zero after power-up and after hardware resets (h_reset). this bit indicates that the internal/external phy attached to the AM79C971 controller can do next pages. the AM79C971 controller will not support next pages without software support. 1 pr 0 page received. defaults to zero after power-up and after hardware resets (h_reset). this bit indicates that a valid page has been seen by the AM79C971 controller ? s phy or the external phy attached to the AM79C971 controller. 0 lpna 0 link partner auto- negotiation able. defaults to zero after power-up and after hardware resets (h_reset). this bit indicates whether or not the link partner can auto-negotiate. register 7: auto negotiation next page transmit register bit name description this resister is only used during next pages. this is the word that will be sent by the AM79C971 controller in re- sponse to a next page. 15 np 0 next page. defaults to zero after power- up and after hardware resets (h_reset). 14 ack 0 acknowledge. defaults to zero after power-up and after hardware resets (h_reset). 13 mp 0 message page. defaults to zero after power-up and after hardware resets (h_reset). 12 ack2 0 acknowledge 2. defaults to zero after power-up and after hardware resets (h_reset). 11 tog 0 toggle. defaults to zero after power-up and after hardware resets (h_reset) 10-0 mucf 0000 message/unformu- lated code field. de- faults to all zeros after power-up and after hardware resets (h_reset).
e-6 AM79C971
appendix f f-1 AM79C971a pcnet-fast 10/100 mbps pci ethernet controller rev a.6 errata rev a.6 status revision a.6 silicon is the current full production silicon. rev. a.6 has fixed rev. a.5 errata #13, #17 and #18. with revision a.6, the device part number has also been revised to AM79C971a in order to distinguish it from revision a.5 (AM79C971). rev a.6 errata summary the device has seventeen errata to date. the system-level impact of these errata on customers is minimal. all infor- mation below should be used in conjunction with the AM79C971 pcnet-fast preliminary data sheet, dated march 1999 (pid #20550d). this datasheet applies to all revisions of the pcnet-fast device. these errata do not affect operation with pcnet software drivers. important note: in 100 mb mode, the AM79C971a requires the use of sram. additionally, the sram clock (ebclk) should be driven with a 33 mhz clock, or if pulled up, the pci clock should be 33mhz. pcnet-fast rev. a.6 errata the symptom section gives an external description of the problem. the implication section explains how the device behaves and its impact on the system. the work around section describes a work around for the problem. the status section indicates when and how the problem will be fixed. 1) symptom: the default inter packet gap (ipg) value of 60h in csr125, bits 15-8, results in an actual ipg of 100 bit-times versus the expected 96 bit-times. implication: there is a 4 bit-time offset between the ipg value in csr125 and the actual ipg at the aui, 10base-t, and mii ports of the pcnet-fast device. workaround: write the value 5ch into the ipg field of csr125 to ensure an actual, minimum ipg of 96 bit- times. status: no current plan to fix this erratum . 2) symptom: the interrupt request pin (inta#, pin 142), and some of the analog pins (rxd-, pin 110, rxd+, pin 111, txp-, pin 113, txd-, pin 114, xtal2, pin 120, do-, pin 122, di-, pin 125, di+, pin 126, ci-, pin 127, ci+, pin 128) are not accessible through the ieee 1149.1 (jtag) test interface. implication: those pins are not included in the boundary-scan chain within the device. workaround: none. status: no current plan to fix this erratum . 3) symptom: at high temperature and low vcc (85 c, 4.75v) with a minimum pci clock low time of 12 ns, the tval timing for some pci interface signals exceeds the pci spec (11 ns max.) by up to 3 ns. the measured value is less than 14 ns maximum on the production tester for this specific corner case for frame# de-asser- tion, stop# assertion, perr# de-assertion, and devsel# assertion. implication: tval timing is well within the pci spec for nominal vcc and 50/50 pci clock duty cycle. typical pci systems should be able to tolerate tval timings of 14 ns. workaround: none. status: no current plan to fix this erratum .
f-2 4) symptom: part a - on the first attempt of reading csr30, the system will suffer a pci retry. a subsequent csr30 access will be allowed to read the correct csr30 data. part b - if the laainc (bcr29, bit 14) bit is set, and if a csr30 read access is in the middle of a series of continuous reads of bcr30 for sram/flash access, the csr30 access causes the sram/flash address to auto-increment. implication: part a - this is a minor erratum with no impact on the system. the pci retry does not cause any system errors and will automatically recover. part b - the system-level exposure to this problem is very minimal. there is no exposure or customers of amd ? s pcnet drivers, because amd ? s drivers do not perform csr30 reads. for those developing proprietary diagnostic software routines, please follow the workaround recommended below. workaround: part a - none needed and none available. part b - disable the laainc bit prior to executing the specific register access sequence outlined in the symptom statement; laainc bit may be enabled subse- quent to executing the csr30 read access. status: no current plan to fix this erratum . 5) symptom: in a high traffic network and with sram on and in 10mbps mode, the babble error bit occasionally gets set erroneously; no transmitter babbles are observed on the wire. implication: some diagnostics software will report false babbles. no impact for customers who utilize the pcnet family drivers since pcnet drivers do not report babble errors. workaround: ignore the babble errors. status: no current plan to fix this erratum . 6) symptom: in an excessively high collision network, the device occasionally set the lcol bit erroneously in 10mbps mode with external sram enabled. implication: no discernible performance impact. problem has only been observed in lab set up. some diag- nostics software will report false lcol errors. workaround: none. status: no current plan to fix this erratum . 7) symptom: when pcnet-fast receives a frame on the mii port with correct fcs followed by exactly one nib- ble with rx_er asserted, it does not report a fcs error. implication: none in an 802.3 compliant network. observable in custom diagnostic tests for end of shell de- limiter (esd) only. workaround: none. status: no current plan to fix this erratum . 8) symptom: when rcve bit (bit 2, csr4, 5, 6, and 7) is set and the mii port is selected, the led output does not indicate the correct receive status. this bit functions correctly for the internal 10 base-t and aui ports. implication: led output will not be asserted based on the receive activities at the mii port. workaround: use rcvme bit (bit 5, csr 4, 5, 6 and 7) in place of the rcve bit for proper led receive status indication. the rcvme bit enables the indication of all received packets which pass the address match func- tion for this node, whereas the rcve bit enables the indication of all packets received. status: no current plan to fix this erratum . 9) symptom: during reception of a packet, if the crs input to the device is de-asserted two rx_clk times be- fore the end of rx_dv, message byte counter (mcnt) will indicates one less byte and the last byte of the crc will be corrupt. if the crs is de-asserted three or more rx_clk times before the end of rx_dv, the crc error bit will be set and the packet will be lost. implication: network performance might vary from normal to sluggish to no connection depending on the se- verity and the rate of occurrence. workaround: the workaround for this problem is to or the rx_dv and csr signals from external phy and feed the output to the crs input of the pcnet-fast.
f-3 status: no current plan to fix this erratum . 10) symptom: when the device is connected to certain repeaters and hubs, there have been reports of receiving corrupted data and bad packets. the hubs and repeaters that are used when these problems occur do not comply with the ieee 802.3 specification. specifically they do not comply with the following tolerance: +/- 100 ppm. the problem is aggravated due to the fact that the device does not flag any error message as a result of this. in addition the transfers corrupted packets and continues the network activity. the received packets are corrupted but the crc error bit does not get set. implications: a) in situations where there is no upper-layer protocol to detect the error, there is a possibility that data may be corrupted when the device is used in conjunction with a non-ieee 802.3 compliant hub or repeater. b) in situations where the upper layer protocol detects the error (which is the most common situation there may be some degradation in network performance. there is also a possibility of failure of the link or an inability to maintain link status. workaround: it is suggested to adhere to ieee compliant hubs and repeaters. this will avoid the circum- stances that may compromise data integrity and or contribute to degradation of network performance status: there are no planned modifications for the device. however, modifications have been implemented in later devices in the pcnet family, such that they can tolerate non-compliant ieee 803.2 repeaters and hub. 11) symptom: when the rcvme bit in the led registers (bcr4-7) is set, the led output drives for one clock cycle, or longer if the pulse stretcher is on, due to reception of any packet. the expected behavior is that this led should be on only when there is an address match implications: led output will drive every time there is an incoming packet on the wire, even when there is no address match. workaround: none status: no current plan to fix this erratum . 12) symptom: setting the drcvbc bit (csr15, bit 14) does not prevent the reception of broadcast packets when the ladrf[47 (csr10, bit 15) is set. implications: broadcast packets will be received when the user wants them excluded as a logical packet. extra packet processing will be required. workaround: none status: no current plan to fix this erratum . 13) symptom: configuration space vendor id (vid) register can not a have a value other than 0x1022. implications: the configuration space vid is programmed indirectly through the bcr35. if any value other than 0x1022 is programmed in bcr35 either through software or thorough the eeprom, the bcr35 will have the correct data but the vid register will have a corrupted value. workaround: use only a value of 0x1022 status: no current plan to fix this erratum . 14) symptom: when using the advance parity mode, the occurrence of parity error in the last transfer of descrip- tor dma write does not stop the chip as indicated in the data sheet. implication: if customized or proprietary software relies on the chip to stop due to parity error in the advanced parity mode, then it is possible (though highly unlikely in a typical system) to get corrupted data in descriptors. pcnet software drivers do rely on the chip to stop the device upon parity error. workaround: use the interrupt generated by the sint as an indicator for parity error. status: no current plan to fix this erratum . 15) symptom: when using buffer (descriptor) chaining for transmit packets, buff errors are reported under cer- tain conditions. implication: transmit packets associated with this condition are truncated.
f-4 workaround: do not allow a chain of tx descriptors to include a descriptor which previously was an end of chain (eop) and which is the last tx eop descriptor for which the status has been returned. here is a sug- gested method for the workaround: the device driver ? s tx write pointer (tx_w) points to first tx descriptor with own = 0 the device driver ? s tx read pointer (tx_r) points to the last tx descriptor with own=0 as the tx_r pointer is advancing in the chain, if the eop bit is set then set a device driver tx_last eop pointer (tx_l) = current tx_r pointer then when a new frame is to be transmitted: 1) if a single descriptor is needed if tx_r >tx_w, then a descriptor is available 2) if buffer chaining if tx_l =tx_w, then tx_r -tx_w descriptors are available else only tx_l - tx_w descriptors are available status: no current plan to fix this erratum . 16) symptom: collision led does not show the collision status of the mii bus. implication: very minor, collision led will not show the status. workaround: none. status: no current plan to fix this erratum . 17) symptom: during the automatic read of the eeprom, such as after hardware reset or when the pread bit is set in the bcr19, the device drives the eecs and eesk signal pins simultaneously. the eecs is driven high at the same time when the eesk is driving low. this violates the eeprom clock low to chip select setup time (tsks) parameter, which should be 100ns. implication: none. even though the tsks parameter is technically violated, the relationship between eesk (clock), eecs (chip select), and eedi (data in) signals is such that the device will not detect a false opcode. this is how these signals relate to each other. eesk starts toggling from a high level. it clocks twice before the eecs is asserted and continues toggling. the eedi input is driven low at the same time that the eesk starts toggling and stay low for four clocks after the assertion of the eecs. since the eedi is low when the eecs is asserted, no false opcode is detected by the eeprom. workaround: none needed. an external circuit may be used to delay the eecs signal by 100ns from the fall- ing edge of the eesk signal status: no current plan to fix this erratum . AM79C971a system design hints 1) in 100 mb/s mode, if the device reports excessive transmit underflows, set the nouflo bit (bcr18, bit 11) to 1. bcr18 contents are programmable either through the eeprom or software driver. 2) in a system which does not use the reset pulse (rst#) for a warm boot reset (also known as ctrl-alt-del reset), the pci-sig recommends that the bios should disable bus mastering capability of the pci bus mastering de- vices early in the reboot cycle. the disabling of the bus mastering capability can be accomplished by resetting the bmen bit in the pci command register (bit 2, offset 04h) of the device ? s pci configuration space. this recommendation should be followed to avoid possible system hang. 3) in the 100mb/s full duplex mode, the expansion bus clock (which is typically connected to the pci bus clock) speed needs to be at 33mhz. any slower speed may cause under/over flow condition. 4) when in auto-polling mode and no receive descriptors are available, the transmitter will not transmit until either a receive descriptor is available or the transmit demand bit (tdmd, csr0, bit 3) is set. if there are no receive descriptors available, only one packet will be transmitted for every tdmd.
f-5 5) when using auto-polling (bcr32, bit11), the asel bit (bcr2, bit1) should be reset to one, in order for the mii auto-poll logic (this is not the same as the descriptor auto-polling) to correctly detect the link status change on the mii phy. 6) during the assertion of rst#, the eecs output becomes tri-stated. it is possible that the eecs may float to a logic high state during this time. in order to prevent a hazardous condition due to this inadvertent selection of the eeprom, connect a 10k pull-down resistor from eecs to ground. 7) it is recommended that each poll to the spnd bit be performed with a software implemented delay of approxi- mately 2-3 ms intervals. when the spnd bit (csr5, bit0) is set in the device, the time that it takes to enter the suspend mode is dependant on several factors. some of these factors are; the number of packets queued for transmission in the internal memory, the received packets still in the internal memory, the pci bus grant time, and the transmit channel availability in the half-duplex mode. to minimize unnecessary pci bus activity and allow access to the pci bus, it is recommended that each poll to the spnd bit be performed with a software implemented delay of approximately 2-3 ms intervals. successive polling or polling implemented with a hard- ware delay will inhibit the device from completing its rx/tx dma, causing longer delays before the device to enter suspend mode.
f-6
i-1 numerics index a absolute maximum ratings 200 advanced parity error handling 46 AM79C971 device, compatible with aui isolation transformers a-2 dc/dc converters a-2 media interface modules a-1 amd flash programming 89 AM79C971 compatible media interface modulesa-1 recommendation for power and ground decoupling b-1 alternative method for initialization c-1 look-ahead packet processing (lapp) conceptd-1 attachment unit interface 25, 72 automatic eeprom read operation 94 automatic network port selection 79 automatic network selection exceptions 79 external phy not present 80 external phy present and auto-negotiable 80 external phy present but not auto-negotiable 80 force external reset 81 working with the micro linear 6692 81 automatic pad generation 64 automatic pad stripping 67 auto-negotiation 79 b basic burst read transfer 37 basic burst write transfer 39 basic functions 29 network interfaces 29 software interface 29 system bus interface 29 basic non-burst read transfer 37 basic non-burst write transfer 39 block diagram 5 buffer management transmit descriptor table entry 57 buffer management unit 53 burst fifo dma transfers 52 burst transfer disconnect 34 bus acquisition 36 bus configuration registers 148 ? 180 bcr0 master mode read active 149 bcr16 i/o base address lower 163 bcr17 i/o base address upper 164 bcr18 burst and bus control register 164 bcr19 eeprom control and status 167 bcr2 miscellaneous configuration 150 bcr20 software style 170 bcr21 interrupt control 171 bcr22 pci latency register 171 bcr23 pci subsystem vendor id register 172 bcr24 pci subsystem id register 172 bcr25 sram size register 172 bcr26 sram boundary register 173 bcr27 sram interface control register 173 bcr28 expansion bus port address lower (used for flash/eprom and sram accesses) 175 bcr29 expansion port address upper (used for flash/eprom accesses) 175 bcr30 expansion bus data port register 176 bcr31 software timer register 176 bcr32 mii control and status register 177 bcr33 mii address register 179 bcr34 mii management data register 180 bcr35 pci vendor id register 180 bcr5 led1 status 155
i-2 bcr6 led2 status 157 bcr7 led3 status 160 bcr9 full-duplex control 163 bus master dma transfers 37 c carrier tracking and end of message 71 clock acquisition 71 collision detection 72 collision handling 63 compatible (with AM79C971 device) 10base-t filters and transformers a-1 aui isolation transformers a-2 dc/dc converters a-2 media interface modules a-1 control and status registers 115 ? 148 csr0 AM79C971 controller status and control register 115 csr1 initialization block address 0 118 csr10 logical address filter 2 129 csr100 bus timeout 146 csr11 logical address filter 3 129 csr112 missed frame count 147 csr114 receive collision count 147 csr12 physical address register 0 129 csr122 advanced feature control 147 csr124 test register 1 147 csr125 mac enhanced configuration control 147 csr13 physical address register 1 130 csr14 physical address register 2 130 csr15 mode 130 csr16 initialization block address lower 133 csr17 initialization block address upper 133 csr18 current receive buffer address lower 133 csr19 current receive buffer address upper 133 csr2 initialization block address 1 118 csr20 current transmit buffer address lower 133 csr21 current transmit buffer address upper 133 csr22 next receive buffer address lower 134 csr23 next receive buffer address upper 134 csr24 base address of receive ring lower 134 csr25 base address of receive ring upper 134 csr26 next receive descriptor address lower134 csr27 next receive descriptor address upper134 csr28 current receive descriptor address lower 134 csr29 current receive descriptor address upper 135 csr3 interrupt masks and deferral control 118 csr30 base address of transmit ring lower 135 csr31 base address of transmit ring upper 135 csr32 next transmit descriptor address lower135 csr33 next transmit descriptor address upper135 csr34 current transmit descriptor address lower 135 csr35 current transmit descriptor address 135 csr36 next next receive descriptor address 136 csr37 next next receive descriptor address upper 136 csr38 next next transmit descriptor address lower 136 csr39 next next transmit descriptor address upper 136 csr4 test and features control 121 csr40 current receive byte count 136 csr41 current receive status 136 csr42
i-3 current transmit byte count 137 csr43 current transmit status 137 csr44 next receive byte count 137 csr45 next receive status 137 csr46 transmit poll time counter 137 csr47 transmit polling interval 137 csr48 receive poll time counter 138 csr49 receive polling interval 138 csr5 extended control and interrupt 1 123 csr58 software style 139 csr6 rx/tx descriptor table length 125 csr60 previous transmit descriptor address lower 140 csr61 previous transmit descriptor address upper 140 csr62 previous transmit byte count 141 csr63 previous transmit status 141 csr64 next transmit buffer address lower 141 csr65 next transmit buffer address upper 141 csr66 next transmit byte count 141 csr67 next transmit status 141 csr7 extended control and interrupt 2 126 csr72 receive ring counter 142 csr74 transmit ring counter 142 csr76 receive ring length 142 csr78 transmit ring length 142 csr8 logical address filter 0 129 csr80 dma transfer counter and fifo threshold control 142 csr82 transmit descriptor address pointer lower 144 csr84 dma address register lower 145 csr86 buffer byte counter 145 csr88 chip id register lower 145 csr89 chip id register upper 146 csr9 logical address filter 1 129 csr92 ring length conversion 146 d data decoding 72 data registers, other 100 dc characteristics, over commercial operating ranges unless otherwise specified 200 decoupling/bypass capacitors b-1 descriptor dma transfers 47 rings 54 detailed functions 30 differential input termination 72 direct access to the interface 95 direct flash access 86 direct sram access 92 disconnect of burst transfer 34 without data transfer 41 distinctive characteristics 1 dma transfers fifo 50 e eeprom interface 22, 94 eeprom map 95 eeprom-programmable registers 95 expansion bus interface 22, 84 amd flash programming 89 direct flash access 86 direct sram access 92 expansion rom - boot device access 84 external sram configuration 90 frequency demands for network operation 94 low latency receive configuration 92 no sram configuration 92 sram accesses 93 sram interface bandwidth requirements 94 expansion rom - boot device access 84 expansion rom transfers 33 external address detection interface 81 internal phy 81 receive frame tagging 83 external address detection interface, eeprom interface 26
i-4 external sram configuration 90 f fifo dma transfers 50 framing transmit and receive message data encapsulation 60 frequency demands for network operation expansion bus interface 94 full-duplex link status led support 76 operation 75 functions basic 29 detailed 30 g general description 2 general purpose serial interface 75 i i/o resources 103 ieee 1149.1 (1990) test access port interface boundary scan register 99 instruction register and decoding logic 99 other data registers 100 supported instructions 99 tap finite state machine 99 initialization buffer management unit 53 initialization block description 180 dma transfers 47 ladrf 182 mode 183 padr 182 rdra and tdra 181 rlen and tlen 181 input signal conditioning, mendec 71 instruction register and decoding logic 99 j jabber function, twisted pair transceiver 74 l ladrf 182 lapp flow, outline of d-1 lapp setup d-1 late collision 65 led support 97 link test function, twisted pair transceiver 73 look-ahead packet processing (lapp) concept d-1 loopback features media independent interface 69 miscellaneous 69 loss of carrier 65 low latency receive configuration 92 m mac 60, 61, 62 magic packet mode, power saving 97, 98 manchester encoder/decoder 70 carrier tracking and end of message 71 clock acquisition 71 data decoding 72 external clock drive characteristics 70 external crystal characteristics 70 input signal conditioning 71 jitter tolerance definition 72 mendec transmit path 70 pll tracking 71 receiver path 71 transmitter timing and operation 70 manufacturer contact information a-2 master abort 43 master bus interface unit 36 bus acquisition 36 bus master dma transfers 37 basic burst read transfer 37 basic burst write transfer 39 basic non-burst write transfer 39 burst fifo dma transfers 52 descriptor dma transfers 47 disconnect with data transfer 40 disconnect without data transfer 41 fifo dma transfers 50 initialization block dma transfers 47 master abort 43 master initiated termination 42 non-burst fifo dma transfers 50 parity error response 43 preemption during burst transaction 42 preemption during non-burst transaction 42 master initiated termination 42 media access control 60 collision handling 63 destination address handling 61 error detection 61 framing 60 management 61 medium allocation 62 transmit and receive message data encapsulation 60 media independent interface auto-poll external phy status polling 78 described 76 loopback features 69 medium allocation 62 mii management frames 78
i-5 mii network port manager 79 mii network status interface 77 mii receive interface 76 mii transmit interface 76 transmit and receive message data encapsulation 60 mendec transmit path 70 mii 60 mii, see media independent interface miscellaneous loopback features 69 mode 183 modes aui 72 gpsi 75 t-mau 69 n network interfaces, basic functions 29 no sram configuration, amd flash programming 92 non-burst fifo dma transfers 50 o operating ranges 200 operating ranges, dc characteristics 200 operation automatic pad generation 64 transmit exception conditions 65 transmit fcs generation 64 transmit function programming 63 ordering information 4 outline, lapp flow d-1 p padr 182 parity error response 35, 43 pci (peripheral component interconnect) command register 108 expansion rom base address register 113 header type register 111 interrupt line register 114 interrupt pin register 114 latency timer register 111 max_lat register 114 memory mapped i/o base address register 112 min_gnt register 114 pci i/o base address register 111 programming interface register 111 revision id register 111 status register 109 sub-class register 111 subsystem id register 113 subsystem vendor id register 113 physical dimensions 229 pin designations listed by driver type 17 listed by group 15 listed by pin number 13 pll tracking 71 polarity detection and reversal 73 power savings modes 97 magic packet 98 sleep 97 power supply pins 28 preemption during non-burst transaction 42 r receive descriptor table entry 58 exception conditions 68 fcs checking 68 operation address matching 66 automatic pad stripping 67 exception conditions 68 fcs checking 68 function programming 66 receive descriptors 183 rmd0 183 rmd1 183 rmd2 185 rmd3 186 receiver path, manchester encoder/decoder 71 recommendation for power and ground decoupling b-1 register programming summary 196 AM79C971 bus configuration registers 198 AM79C971 control and status registers 196 AM79C971programmable registers 196 related amd products 10 reset 102 h_reset 102 rlen and tlen 181 stop 102 rmd0 183 rmd1 183 rmd2 185 rmd3 186 s signal quality error test function 74 slave bus interface unit 30 configuration transfers 30 slave i/o transfers 30 slave cycle termination disconnect of burst transfer 34 parity error response 35 sleep mode 97
i-6 software access 102 i/o resources 103 address prom space 103 double word i/o mode 104 i/o registers 103 reset register 104 word i/o mode 104 pci configuration registers 108 software interface, basic functions 29 software interrupt timer 59 sqe test error 65 sram accesses 93 configuration 90 sram interface bandwidth requirements 94 stop 102 supported instructions, ieee 1149.1 test access port interface 99 switching key to switching waveforms 211 test circuits 211 switching characteristics 10base-t interface 206 attachment unit interface 207 bus interface 203 external address detection interface 210 general-purpose serial interface 209 media independent interface 208 switching waveforms 214 10base-t interface 219 attachment unit interface 221 expansion bus interface 217 external address detection interface 227 general-purpose serial interface 226 media independent interface 224 receive frame tag 228 system bus interface 213 system bus interface, basic functions 29 t 10base-t interface connection 74 10base-t interface connection 74 tap finite state machine 99 t-mau loopback modes 69 tmd0 186 tmd1 187 tmd2 188 tmd3 189 transceiver 10base-t interface connection 74 collision detection 72 jabber function 74 link test function 73 polarity detection and reversal 73 signal quality error test function 74 twisted pair interface status 74 twisted pair receive function 73 twisted pair transmit function 72 transmit exception conditions 65 fcs generation 64 function programming 63 transmit and receive message data encapsulation 60 transmit descriptor table entry, buffer unit management 57 transmit descriptors described 186 tmd0 186 tmd1 187 tmd2 188 tmd3 189 transmit exception conditions late collision 65 loss of carrier 65 sqe test error 65 transmitter timing and operation 70 twisted-pair transceiver 72 u user accessible registers 106 interrupt line register 114 pci command register 108 pci configuration registers 108 pci expansion rom base address register113 pci header type register 111 pci i/o base address register 111 pci interrupt pin register 114 pci latency timer register 111 pci max_lat register 114 pci memory mapped i/o base address register 112 pci min_gnt register 114 pci programming interface register 111 pci revision id register 111 pci status register 109 pci sub-class register 111 pci subsystem id register 113 pci subsystem vendor id register 113
the contents of this document are provided in connection with advanced micro devices, inc. ( ? amd ? ) products. amd makes no representations or warranties with respect to the accuracy or completeness of the contents of this publication and reserves the right to make changes to speci-fic ations and product descriptions at any time without notice. no license, whether express, implied, arising by estoppel or otherwise, to any in-tellectual property righ ts is granted by this publication. except as set forth in am ? s standard terms and conditions of sale, amd assumes no liability whatsoever, and disclaims any express or implied warranty, re lating to its products including, but not limited to, the implied warranty of merchantability, fitness for a particular purpose, or infringement of an y intellectual property right. amd ? s products are not designed, intended, authorized or warranted for use as components in systems intended for surgical implant i nto the body, or in other appli- cations intended to support or sustain life, or in any other application in which the failure of amd's product could create a s ituation where personal injury, death, or severe property or environmental damage may occur. amd reserves the right to discontinue or make changes to its products at any time without notice. trademarks copyright ? 2000 advanced micro devices, inc. all rights reserved. amd, the amd logo and combinations thereof, himib, imr+, magic packet, pcnet, and pcnet- fast , are trademarks of advanced micro devices, inc. other product names used in this publication are for identification purposes only and may be trademarks of their respective com panies.


▲Up To Search▲   

 
Price & Availability of AM79C971

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X