mirror of
https://git.k-space.ee/arti/vt1200.git
synced 2026-10-31 12:05:05 +02:00
reference: LANCE loopback-FCS datasheet evidence (MAME condition is right)
Add the Am7990 Technical Manual and Am79C90 datasheet to reference/lance-datasheet/ and a report, reference/lance-loopback-fcs.md, that answers whether MAME's am79c90 receive() FCS condition (!(MODE_LOOP) || MODE_DTCR) is inverted. Verdict: MAME is right. The CRC generator and checker share one circuit, so with LOOP=1 the receiver can only check the FCS when DTCR=1 -- exactly what MAME does. The proposed inversion would be wrong in both loopback cases. No MAME change made.
This commit is contained in:
1 parent
60b0b02e3c
commit
7612fcbda9
14 files changed
+41190
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,651 @@
|
||||
Am7990 Ethemetl Reference Guide
|
||||
Cheapemet Family • Overview
|
||||
• Software
|
||||
• Design Consideration
|
||||
• Training
|
||||
|
||||
|
||||
|
||||
|
||||
Order # 08496A
|
||||
TABLE OF CONTENTS
|
||||
I. Overview of Am7990 EtherneVCheapernet Family
|
||||
II. Software Support & Evaluation Boards
|
||||
III. Miscellaneous Components
|
||||
IV. Design Considerations
|
||||
V. Ethernet Training Courses
|
||||
|
||||
|
||||
|
||||
|
||||
Am7990 ETHERNET /CHEAPERNET
|
||||
FAMILY TECHNICAL LITERATURE
|
||||
The following publications are available from your local
|
||||
AMD sales office or AMD authorized distributors.
|
||||
|
||||
|
||||
|
||||
|
||||
TITLE DESCRIPTION ORDER #
|
||||
• The Am7990 • General Overview of 03394C
|
||||
Family EtherneV Am7990 Family and
|
||||
Cheapernet EtherneVCheapernet
|
||||
IEEE-802.3 Node LANS.
|
||||
Grid Brochure
|
||||
• Am7990 Local • LANCE Data Sheet- 05698B
|
||||
Area Network Product specifications
|
||||
Controller for and functional
|
||||
Ethernet (LANCE) description of
|
||||
controller chip.
|
||||
• Am7992B Seri!!1 • SIA Data Sheet- 03378A
|
||||
Interface Adaptor Product specifications
|
||||
(SIA) and functional
|
||||
description of
|
||||
encoder/decoder
|
||||
chip.
|
||||
• Am7996 • Transceiver Data 07506A
|
||||
IEEE-802.3/ Sheet-Product
|
||||
EtherneV specifications and
|
||||
Cheapernet functional description
|
||||
Transceiver of transceiver
|
||||
chip.
|
||||
• Local Area • Technical Manual- 06363A
|
||||
Network Controller Considerations of
|
||||
Am7990 (LANCE) LANCE hardware
|
||||
and software
|
||||
interface.
|
||||
• InterfaCing the • Application Note- 07422A
|
||||
Am7990 LANCE Implementation of
|
||||
to 8-Bit Am7990 LANCE with
|
||||
Microprocessors 8-bit microprocessors.
|
||||
• Am7996 • Application Note- 08031 A
|
||||
Application Functional description
|
||||
Note and board layout
|
||||
considerations.
|
||||
|
||||
|
||||
|
||||
|
||||
2
|
||||
OVERVIEW provides the same 10M bits/sec performance. This high-
|
||||
This reference guide provides design consideration notes performance chip family is compatible with IEEE 802.3, the
|
||||
relating to the Am7990 IEEE 802.3 (EthernetiCheapernet) industry standard for EthernetiCheapernel.
|
||||
family of products. Consult you local AMD sales office, The Am7990 Family was produced through joint devel-
|
||||
AMD representative or AMD authorized distributor for any opment work with Digital Equipment Corporation (Am7990
|
||||
questions concerning device price and/or availability. LANCE and Am7992B SIA) and 3COM (Am7996). Op-
|
||||
timum performance of this family has been assured
|
||||
DEVICE NOMENCLATURE through rigorous testing in various network configurations.
|
||||
The following denotes the current device nomenclature: The Am7990 LANCE features buffer management with
|
||||
descriptor rings to substantially reduced CPU overhead. Its
|
||||
Am7990DCnO (LANCE) - Replaced Am7990DC/60 24-bit-wide linear address provides direct memory address
|
||||
Rev. D product (DMA) into the entire memory space of all major 16-bit
|
||||
Am7992BDC (SIA) - Replaced Am7992ADC and microprocessors.
|
||||
wide package Am7991 ADC
|
||||
Am7996DC (Transceiver) - Replaced Am7995DC The Am7992B SIA is a Manchester encoder-decoder
|
||||
that provides the connection between the LANCE and the
|
||||
Ethernet transceiver. The SIA features include transient
|
||||
I. OVERVIEW OF Am7990 noise suppression and guaranteed signal threshold limits
|
||||
ETHERNET/CHEAPERNET FAMILY in both data and collision paths.
|
||||
The implementation of 10M bits/sec baseband networking The Am7996 Transceiver provides all the transmit,
|
||||
referred to as Ethernet or Cheapernet has been simplified receive and collision detection functions with respect to the
|
||||
by the availability of three devices-the Am7990 Local coax transmiSSion media. The Am7996 features include an
|
||||
Area Network Controller for Ethernet (LANCE), the optional Signal Quality Error (SQE) test function, and noise
|
||||
Am7992B Serial Interface Adapter (SIA) and the Am7996 rejection filters on both transmit and receive data.
|
||||
Transceiver.
|
||||
Together, these three devices provide a complete inte-
|
||||
Devices in the Am7990 Family support both Ethernet grated solution for IEEE 802.3, Ethernet, and Cheapernet
|
||||
and Cheapernet configurations. Cheapernet is Ethernet on networking applications.
|
||||
cheaper cables, has fewer nodes, and shorter distance but
|
||||
|
||||
|
||||
|
||||
|
||||
Ethernet/IEEE 802.3 Type A Ethernet
|
||||
COAX
|
||||
I
|
||||
1-;::===:::;" --- ~
|
||||
~
|
||||
~
|
||||
~
|
||||
~
|
||||
~
|
||||
Iii
|
||||
~.
|
||||
~
|
||||
Iii
|
||||
I
|
||||
Iii
|
||||
••-Iii
|
||||
DTE • Data Terminal Equipment ~
|
||||
AUI - Attachment Unit Interface
|
||||
MAU - Media Attachment Unit
|
||||
|
||||
|
||||
• High AC/DC impedance tap
|
||||
• AUI drop cable «50 meters)
|
||||
• Very low loss COAX
|
||||
• Nonintrusive Node attachment
|
||||
|
||||
08496A-1
|
||||
|
||||
Figure 1A.
|
||||
|
||||
|
||||
|
||||
|
||||
3
|
||||
Cheapernet/lEEE 802.3 Type B
|
||||
DTE
|
||||
|
||||
IEI RGSS
|
||||
COAX
|
||||
Local Local Am7990 Am7992B
|
||||
CPU Memory LANCE SIA BNC'T'
|
||||
|
||||
|
||||
|
||||
|
||||
• Standard BNC Tee tap
|
||||
• Inexpensive configuration and cable
|
||||
• Same bandwidth as Type A
|
||||
|
||||
|
||||
|
||||
|
||||
Figure 1B,
|
||||
|
||||
|
||||
|
||||
|
||||
II. SOFTWARE SUPPORT board which provides a 15 pin AUI (Attachment Unit Inter-
|
||||
face) female connector, specified by IEEE-802.3.
|
||||
& EVALUATION BOARDS
|
||||
Demo board 1, Multibus Ethernet!
|
||||
AMD IEEE·802,3 (ETHERNET/CHEAPERNET)
|
||||
Cheapernet board
|
||||
DEMO BOARDS AND SOFTWARE
|
||||
This is a stand-alone 80186 based board which requires
|
||||
AMD provides hardware and software support for the an RS-232 terminal and a Multibus chassis to operate. The
|
||||
Am7990 Family (Am7990/92B/96). The evaluation/demo Multibus chassis is used only as a source for power. This
|
||||
boards are available along with the LANCE/network diag- board integrates the Am7990 Family chipset (Am7990/
|
||||
nostic and network demonstrations software. 92B/96) along with some RAM, EPROM, and 2 communi-
|
||||
cation channels. In summary, the hardware components
|
||||
HARDWARE SUPPORT are as follows:
|
||||
|
||||
There are three different evaluation boards available as -8018610 MHz CPU
|
||||
follows: -64K byte SRAM (upgradable to 128K bytes)
|
||||
- 32K byte EPROM (upgradable to 64K bytes)
|
||||
Demo board 1. Multibus* Ethernet/Cheapernet board, - Two serial-port communication channels (via Am8530)
|
||||
stand-alone - Am7990n992Bn996
|
||||
Demo board 2. IBM* PC EthernetlCheapernet board - Supports both Ethernet and Cheapernet connection
|
||||
package - Optimum PC layout for the Am7996
|
||||
Demo board 3. Am7996 stand-alone evaluation board AMD will provide the hardware manual and schematic as
|
||||
There are software packages available which will run on part of this demo board package.
|
||||
Demo board 1 and 2. Demo board 3 can be used in con- *Multibus is a trademark of Intel Corporation. IBM is a reg-
|
||||
junction with Demo board 1 & 2, or any Ethernet controller istered trademark of International Business Machines.
|
||||
|
||||
|
||||
|
||||
|
||||
4
|
||||
Demo Board 1. Multibus Ethernetl Cheapernet Board
|
||||
|
||||
|
||||
Demo board 2. IBM PC EthernetlCheapernet PCturbo-186 board has a 50 pin connector which carries
|
||||
board package all the 80186 signals for external use. A daughter card can
|
||||
use the PCturbo-186 board as a node processor via the
|
||||
This is a two board solution . The first board is a 80186 IBM above mentioned connector. The AMD designed daughter
|
||||
PC plug-in board whose commercial purpose, as stand- card integrates the Am7990/92B/96, along with the glue
|
||||
alone, is to speed-up the application programs running in logic for interfacing to the 80186 connector.
|
||||
an IBM PC and to supp ly 16 bit bus memory for the
|
||||
Am7990 interface. This board has been developed by Or- AMD will provide the hardware schematic of the daughter
|
||||
chid Technology and is known as PCturbo-186. The card only. Any inquiry to the PCturbo-186 board schematic
|
||||
should be directed to Orchid Technology.
|
||||
|
||||
|
||||
|
||||
|
||||
Demo Board 2. IBM PC Ethernetl Cheapernet Board
|
||||
|
||||
|
||||
|
||||
|
||||
5
|
||||
Demo board 3. Am7996 Stand-Alone 1. Demo board 1 & 2 software
|
||||
Evaluation Board (LANCE Debug Monitor)
|
||||
This is a 3 x 3 inch stand-alone evaluation board which This software package is an educational tool for both
|
||||
integrates the IEEE-802.3 transceiver, Am7996 along with hardware and software engineers to learn about AMD 's
|
||||
external components and a DC-DC converter. The board Ethernet chipset. It also gives an inside look to the opera-
|
||||
interfaces to an Ethernet controller (Demo boards 1,2 or tion of the LANCE (Am7990) and its companion parts, the
|
||||
equivalent) via a 15-pin connector. It also interfaces to the Am7992 and Am7996. This software is useful for creating
|
||||
coax cable, a terminated RG 58 (NU or C/U) cable seg- different boundary conditions and serves as a tool for
|
||||
ments, via a BNC connector for communicating with other observing different signals in a controlled environment with
|
||||
nodes in the network. This board utilizes an optimized PC scope loop capability.
|
||||
layout for the Am7996. This board is recommended as a learning tool in the initial
|
||||
stage of design development. The software will also be
|
||||
SOFTWARE SUPPORT useful for correlation in duplicating the user's system envi-
|
||||
The following outlines the· purpose of each software pack- ronment. One Demo board is sufficient at initial stage
|
||||
age so that the user can get the board and software pack- when using this software for learning about the chipset and
|
||||
age which suits his application. exercising some limited functions (accessing the LANCE
|
||||
|
||||
|
||||
|
||||
|
||||
Demo Board 3. Am7996 Stand-Alone Evaluation Board
|
||||
|
||||
|
||||
|
||||
|
||||
6
|
||||
IBM PC Ethernet/Cheapernet Board Package
|
||||
|
||||
• Coax Tee Connector
|
||||
• son Coax Terminator
|
||||
(2 each)
|
||||
|
||||
up to 185 meters
|
||||
(600 feet)
|
||||
of Cheapernet Cable
|
||||
(RG58 AlU, C/U)
|
||||
|
||||
|
||||
|
||||
|
||||
PC-turbo
|
||||
'-----186 cards
|
||||
AUI
|
||||
• APP2005Rev.1 Cable
|
||||
|
||||
''User Supplied Ethernet Connection"
|
||||
|
||||
|
||||
08496A-2
|
||||
Figure 2.
|
||||
|
||||
|
||||
|
||||
registers, initialization, transmit, internal/external loopback - LANCE data structure construction
|
||||
test, etc). Having two boards on hand will provide addi- - Routines to show how to implement the LANCE's
|
||||
tional testing of the chipset in a network environment. This initialization block
|
||||
board can also be used for monitoring the network and - Accessing the LANCE registers
|
||||
gathering statistics. - Setup procedures for transmit & receive
|
||||
- Test: internal/external loopback test, CSRO - CSR3 test
|
||||
Some of those statistics are as follows: - Batch executable capability to ease user's interface for
|
||||
- No. of received packets specific sequence of command executions.
|
||||
- No. of transmitted packets - User's specific program execution residing in SRAM
|
||||
- No. of receive errors (e.g., CRC, frame, overflow, etc.) - Fill/Set memory
|
||||
- No. of transmit errors (e.g., Late collision, underflow, - Echo test: Echo packets between two nodes in the
|
||||
etc.) network.
|
||||
- No. of fatal errors (e.g., Missed packets, memory Keeps track of sequence number of trans-
|
||||
timeout error, etc.) mitted and received packets.
|
||||
- Network traffic - Software control switches:
|
||||
(measuring the rate of collision occurrence in network) - Speed up/slow down transmit packets
|
||||
- Speed up/slow down the LANCE polling time
|
||||
This software package has been structured as a command
|
||||
- Enable/disable transmitter or receiver
|
||||
level driver software. The user can get the list of com-
|
||||
- Enable/disable CRC generator
|
||||
mands via the "HELP" command. The following is a brief
|
||||
- Enable/disable output to monitor screen
|
||||
summary of the functions under user control:
|
||||
- Stop/continue on transmit errors
|
||||
- Driver: Implementing the low level data packet on cap- - Stop/continue on receive errors
|
||||
sulation and decapsulation of the data link. - Loop on command (scope loop)
|
||||
|
||||
|
||||
|
||||
|
||||
7
|
||||
- Display commands: CONFIGURE: Set up general parameters (e.g.,
|
||||
- Display Transmit ring buffers) in the Data-Link system
|
||||
- Display Receive ring for the purposes of network
|
||||
- Display the LANCE Initialization block management.
|
||||
- Display node status IA SETUP: Establish the node's physical net-
|
||||
- Display the LANCE registers (CSRs) work address.
|
||||
- Display memory
|
||||
MC ADD: Add a multicast address for the
|
||||
There is a user manual which is the specification for this node to the LANCE's Logical Ad-
|
||||
software package and Demo board 1 hardware spec. This
|
||||
dress Filter.
|
||||
software package is included in EPROM in Demo board 1
|
||||
and is available on diskette for Demo board 2. MC REMOVE: Remove a multicast address.
|
||||
• The protocol defined for communicating these com-
|
||||
2. Demo board 2 Software mands from Client to Data Link provides for the
|
||||
(Data Link Layer Software) possibilities of:
|
||||
|
||||
Ethernet Data-Link Software for the Am7990T PCturbo- - Multiple requests (Client processes).
|
||||
186 Evaluation Board -Individual command status and error reporting.
|
||||
• The combination of an AMD Ethernet Daughter Card - Indirect control management via Request and Base
|
||||
and an Orchid PCturbo-186 expansion board for an COntrol Blocks shared between the client and Data-
|
||||
IBM PC can, with this Data-Link software, create an Link processes.
|
||||
EthernetlCheapernet node in an IBM PC or compatible. - Two mediating routines: the Host Message-Delivery
|
||||
The combination is referred to as the Am7990T Evalua- Mechanism (HMDM); and the Data-Link Message-
|
||||
tion board. Delivery Mechanism (DLMDM)-the HMDM provides
|
||||
• The software is structured to provide Data-Link services control access for the Client, while DLMDM does so
|
||||
to a Client Layer corresponding to ISO Network and for the Data-Link itself.
|
||||
higher layers. It is written in C and its source code is • In normal use, the CONFIGURE command first sets up
|
||||
included with the Am7990T and Am7990 (Multibus) the LANCE and associated Data-Link parameters.
|
||||
Evaluation Boards to serve as an example of Physical Then a Client process establishes its LSAP and form-
|
||||
and Data-Link Layer implementations for LANCE-based ulates a REQUEST BLOCK to perform actual transmis-
|
||||
Ethernet systems. The software offers: sion of a packet. This is all done by calling HMDM from
|
||||
- Message-transfer and delivery for the Client Layer the Client with an associated REQUEST BLOCK
|
||||
via Data Link service calls (CONNECT, DISCON- containing the necessary command code, parameters
|
||||
NECT, TRANSMIT, etc.) for more than one client and addresses. As currently defined, the software is not
|
||||
process at a time. multiprocess, so pOlling for status (e.g., received pack-
|
||||
ets) is used.
|
||||
- Example Physical and Data-Link Layer procedures
|
||||
for LANCE initialization, memory management, error
|
||||
handling and Client servicing. 3. LANCE Diagnostic Software
|
||||
• The 9 Data-Link Services provided are: (not related to any of the DEMO boards)
|
||||
CONNECT: Set up a pairing between a Client The LANCE Diagnostic program has been ported to
|
||||
process and a unique Data-Link an IBM-XT and compiled with the Lattice C Compiler.
|
||||
Service-Access-Point identifier This program is menu driven and is comprised of six
|
||||
(LSAP). major tests with increasing complexity. The code is
|
||||
DISCONNECT: Remove a CONNECTion to an available in C source code on 3 IBM PC diskettes and
|
||||
LSAP. is well documented and very readable. It consists of the
|
||||
following modes.
|
||||
TRANSMIT: Send a designated set of packet
|
||||
buffers to a destination (DLSAP). Note: Only the first four items in the following list have
|
||||
This is implemented as a Datagram been checked out-other items have not been
|
||||
service, not a guaranteed, virtual- checked for errors.
|
||||
circuit service. Such reliable serv- LANCE The user-interface control program. It
|
||||
ices would have to be implemented provides menu-driven options and er-
|
||||
at the Client Layer. ror reporting.
|
||||
POST RPD: Post a Receive Packet Descriptor CSRTST A test program for verifying that
|
||||
and up to 4 packet buffers for the LANCE control and status registers
|
||||
Data Link to use when receiving can be read or write and bits can be
|
||||
packets for the calling process set or reset according to specs.
|
||||
LSAP. INITTST A test program to verify the correct ini-
|
||||
POST RBD: Post an additional packet buffer for tialization and correct status reporting
|
||||
the caller's LSAP.. of the LANCE.
|
||||
|
||||
|
||||
|
||||
|
||||
8
|
||||
INTLOOP Internal loop test to verify packet AVAILABILITY
|
||||
transmission/reception, chaining, and
|
||||
- Board Purchase Contact your local AMD Sales
|
||||
CRCs. It also verifies promiscuous, - Board Artwork/Films office for availability and/or
|
||||
normal and collision-test modes. pricing.
|
||||
- Ethernet Software
|
||||
EXTLOOP - Verifies that packets can go out on the
|
||||
Ethernet cable and be received in both ETHERNET PROTOCOL SUPPORT
|
||||
the promiscuous and normal mode. It (TRANSPORT LAYER)
|
||||
also verifies disabling of the receiver or
|
||||
transmitter. Contact your local AMD Sales Office for current
|
||||
arrangements.
|
||||
ETHERTST - Allows the user to configure the size of
|
||||
ring buffers and transmit packets, it The following software firm has Transport layer soft-
|
||||
then transmits packets and accumu- ware available:
|
||||
lates statistics on number of trans- SYROS
|
||||
missions, receptions, and errors on an 2810 South Evergreen
|
||||
individual basis. Tempe, AZ 85282
|
||||
ECHO When executed on a second LANCE (602) 897-2399
|
||||
board it switches source and destina-
|
||||
tion addresses and retransmits any III. MISCELLANEOUS COMPONENTS
|
||||
packets received. It also accumulates SOURCES & CONTACTS
|
||||
statistics. A) DC-DC Power Converters
|
||||
UTILS A set of general purpose utility mod- Partial List-Can use any equivalent IEEE 802.3
|
||||
ules that build initialization blocks, (10Base5, 10Base2) Compatible
|
||||
build ring buffers, calculate or verify Power Transformer.
|
||||
CRCs, and reads or writes CSR regis-
|
||||
ters (5600 bytes). Manufacturer Ordering Part No,
|
||||
|
||||
DEF Definitions of structures for initblock, Pulse Engineering PE64430 (Ethernet)
|
||||
ring buffers, etc. P. O. Box 12235
|
||||
San Diego, CA 92112 PE64381 (Cheapernet)
|
||||
BUFFER Allocate RAM space. Tel. (619) 268-2400
|
||||
SYSTEM Character read/write routine, interrupt Reliability Inc. 2E12R9 (Ethernet)
|
||||
handler in 8086 assembly language P. O. Box 218370
|
||||
(only 144 bytes of code). Houston, TX 77218 2VP5U9 (Cheapernet)
|
||||
The last 4 modules described above are modules for Tel. (713) 492-0550
|
||||
writing code for the LANCE. They can easily be studied TWX 910-881-1739
|
||||
and understood. The .DOC file on the diskette provides B) Isolation Coupling Transformers
|
||||
additional comments on programming techniques for
|
||||
the LANCE and also for porting this code to another Partial list-Can use any equivalent IEEE 802.3
|
||||
hardware configuration. (10Base5, 10BASE2) compatible Iso-
|
||||
lation Transformers.
|
||||
The code for the test modules show how to call the
|
||||
various utility functions to incorporate them into another Manufacturer Ordering Part No.
|
||||
program. Studying CSRTST & INITTST in conjuction Pulse Engineering 64102 or 64107
|
||||
with UTILs, DEF and 10 will give the programmer a P.O. Box 12235
|
||||
good insight into the entire program. San Diego, CA 92112
|
||||
Embedded into the code are many compiler conditional Tel. (619) 268-2400
|
||||
print statements that trace the execution of the pro- C) 20MHz Fundamental Mode Crystal
|
||||
gram. These are very useful for debugging; however, Partial list-Can use any equivalent crystal to the
|
||||
they have a penalty of using more RAM space. The specifications listed in the Am7992B
|
||||
following is a tabulation of memory utilization. Data Sheet (page 4).
|
||||
Code space without ETHERTST & ECHO 21 K bytes Manufacturer Ordering Part No.
|
||||
Entire Code Space 26K bytes
|
||||
Code Space with Debug Trace 40K bytes Reeves-Hoffman 04-20423-312
|
||||
RAM Space Max 16K bytes 400 W. North Street
|
||||
RAM Space w/o ETHERTST & ECHO 6K bytes Carlisle, PA 17013
|
||||
(717) 243-5929
|
||||
This code space will vary depending upon the C com-
|
||||
piler used. AMD does not manufacture or sell any of the above
|
||||
There is a user manual which is the specification for items. Interested customers should call the manufac-
|
||||
this software package which is available in C source turer directly for the location of the nearest representa-
|
||||
code on 3 IBM PC diskett9S. tives.
|
||||
|
||||
|
||||
|
||||
|
||||
9
|
||||
IV. DESIGN CONSIDERATIONS to ICRS go inactive (end of packet
|
||||
receive) for the 82586.
|
||||
Interfacing the Am7992B to Intel's 82586 • AX is resynchronized with RCLK to become
|
||||
Ethernet Controller RXD
|
||||
The AMD and Intel's Ethernet Controllers Serial Link in- • RENA is inverted and delayed for ICRS. A load
|
||||
terfaces are functionally similar. The interfacing glue logic capacitance is added to increase the mini-
|
||||
for the Am7992B and the 82586 shown here accom- mum delay of the SIA's RENA with
|
||||
modates the active voltage levels, set-up and hold timing respect to the last data bit.
|
||||
requirement of the two devices.
|
||||
• CLSN is inverted for ICDT and also enables the
|
||||
- Transmit Circuit: 82586 --> Am7992B ICRS. Intel's 586 requires ICRS active
|
||||
with ICDT.
|
||||
• IRTS is inverted for TENA • Modified RCLK (M-RCLK) is used to reassert
|
||||
RENA asynchronously as required by the
|
||||
• TXD is acceptable for TX
|
||||
82586 at the end of packet. Start of
|
||||
• /TXC requires continuous clock; therefore, SIA's packet synchronization has no problem.
|
||||
/TEST pin is grounded.
|
||||
• CLSN active or RENA inactive disable Receive
|
||||
path to RXD.
|
||||
- Receive Circuit: Am7992B --> 82586
|
||||
Note: The inverters must have fast and symmetrical rise
|
||||
• RCLK is inverted twice to reduce skew and to
|
||||
and fall time. The Am2965 meets these require-
|
||||
ensure the required delay of 10 to 40ns
|
||||
ments and outputs MOS compatible logic levels.
|
||||
from the time of IRXC goes inactive (high)
|
||||
|
||||
|
||||
|
||||
|
||||
82586 and Am7992B Interface
|
||||
VCC
|
||||
82586 Am7992B
|
||||
680pF
|
||||
TXC~6---------------------o~------~1"11 TCLK
|
||||
RTS 28 12 TENA XMT_t-1:.;:3:.-_ _ _ _ __
|
||||
X1 8
|
||||
TXD 27 ~o TX
|
||||
9 Cl20MHz
|
||||
SIA X2:~~---~~~~
|
||||
|
||||
RXC:~2~3~----~M=-~R~C~L~K~----~~~~~--~4 RCLK COL 24 40.2
|
||||
|
||||
|
||||
3 RENA COL~2~3~~~~
|
||||
t-t---t--4
|
||||
29 C'i'S
|
||||
S74
|
||||
RX 22
|
||||
L-+-O<:.l-f-o<:.t-+t Q CLK
|
||||
r----+-~2~RX RXJ--21--~~~
|
||||
CDT 30 .---+--,-!CLSN VCC
|
||||
S74
|
||||
'---il---~U-----t Q CLK
|
||||
6 GND1 F
|
||||
7 GND2 5.0jlF
|
||||
|
||||
GND3~-------t
|
||||
Inverters: Am2965 (one package) '---------
|
||||
or: 74AS04 (two packages) DTE Ground
|
||||
F/F: 74S74 (one package)
|
||||
|
||||
Figure 3. 08496A-3
|
||||
|
||||
|
||||
|
||||
|
||||
10
|
||||
v. ETHERNET TRAINING COURSES • Standards
|
||||
The ISO 7-Layer Network Model-Physical through Ap-
|
||||
EDUCATIONAL SUPPORT plication Layers.
|
||||
1. E7900B Understanding and The IEEE 802 Series-CSMA/CD bus (Ethernetl
|
||||
Implementing Local Networks Cheapernet), token ring (IBM), token bus (MAP).
|
||||
The CCITT X.25 Standard, HDLC, LAP and their rela-
|
||||
This 2-day lecture and laboratory course covers the
|
||||
AMD EthernetlCheapernet family as well as devices tionship.
|
||||
(Am7960, Am7968/9, etc.) useful in implementing other Protocols for implementing services, flow control, error
|
||||
forms of computer networks. A companion course, handling and reliability.
|
||||
E7900A, covers AMD devices more oriented toward the • General AMD Network Devices
|
||||
telecommunications market (PABX, ISDN, etc.). Both
|
||||
Am7960, Coded Data Transceiver (CDT) and Am8530
|
||||
classes are scheduled throughout the year or, on spe-
|
||||
cial request, at customer sites. Serial Communications Controller (SCC)-applications
|
||||
to .5-3Mb/s LANs.
|
||||
E7900B introduces those unfamiliar with networks to
|
||||
Am7968/69, Transparent, Asynchronous Transceivers
|
||||
the basic concepts and historical developments that
|
||||
(TAXI)-high-speed, intrasystem communications and
|
||||
have led to the various types of computer networks now
|
||||
bus-width conversion.
|
||||
available (Ethernet, Starlan, etc.). This allows the stu-
|
||||
dent to understand the reasons why different network • AMD Ethernet Devices
|
||||
forms can exist and where each has merit in particular Ethernet structure and review of IEEE 802 Definitions
|
||||
applications. for the Physical and Data-Link Layers.
|
||||
The class then explains international standards (ISO), The AMD Ethernet Family:
|
||||
completed or now in progress, that are relevant to AMD - Am7996, Transceiver (XCVR)
|
||||
products now available (Ethernet, etc.) or soon to be - Am7992B, Serial Interface Adaptor (SIA)
|
||||
available (Starlan, FDDI, etc.). Generally related - Am7990, Local Area Network Controller (LANCE)
|
||||
devices (encryption, data compression, etc.) are out-
|
||||
lined to provide an overall system-application view. This Connection, timing, memory organization and program-
|
||||
constitutes the class' first day. ming details for Ethernet and Cheapernet applications.
|
||||
|
||||
The second day covers the AMD Am7900 Family in • AMD Network Hardware/Software Support
|
||||
detail, including work with the Am7990 Ether- Evaluation Boards-the stand-alone Am7990 Multibus
|
||||
net/Cheapernet evaluation board. Programming and Evaluation Board, including laboratory exercise in pro-
|
||||
application details are discussed, from the bit level to gramming the LANCE and monitoring the LAN; the
|
||||
typical Data-Link Layer software, as used in the Am7990 IBM PC Demonstration board and its services
|
||||
Am7990T, PC-Turbo Evaluation Board. (file transfer, etc.).
|
||||
Example Data-Link Layer software used in the PC host
|
||||
Course Outline for the Am7990 IBM PC demo board-defining Service
|
||||
Access points, packet buffers and other memory
|
||||
structures.
|
||||
• Introduction
|
||||
Purposes, economics and history of networks-
|
||||
ARPANET, Ethernet and the development of commer-
|
||||
cial networks, standards and services.
|
||||
• Network Structures
|
||||
Inquiries regarding AMD's Educational Support pro-
|
||||
Topologies and Media-Bus, Star, Ring, Tree; guidedl gram should be directed as follows:
|
||||
unguided radio/light.
|
||||
Advanced Micro Devices, Inc.
|
||||
Services, Access Methods and Performance- Pack- Customer Education Center
|
||||
etization, virtual circuits, datagrams and other services; P.O. Box 3453 MIS 71
|
||||
slotting, CSMAlCD, token passing; stability and com- Sunnyvale, CA 94088
|
||||
parative performance under load. (408) 749-3665
|
||||
Internetwork Connections-gateways, routing, flow or
|
||||
control and error handling. (800)538-8450 x3665
|
||||
|
||||
|
||||
|
||||
|
||||
11
|
||||
ADVANCED MICRO DEVICES
|
||||
DOMESTIC SALES OFFICES
|
||||
ALABAMA .............................. (205) 882-9122 MASSACHUSETTS .................... . (617j273-3970
|
||||
ARIZONA, MINNESOTA .......................... . (612 938-0001
|
||||
Tempe ............................... (602) 242-4400 NEW JERSEY ......................... . (201) 299-0002
|
||||
Tucson ............................... (602) 792-1200 NEW YORK,
|
||||
CALIFORNIA, Liverpool ............................ . (315) 457-5400
|
||||
EI Segundo ......................... . (213) 640-3210 Poughkeepsie (IBM only) ............. . 9141471-8180
|
||||
Newport Beach ...................... . (714) 752-6262 Woodbury ........................... . 516 364-8020
|
||||
San Diego .......................... . (619) 560-7030 NORTH CAROLINA .................... . 1919 847-8471
|
||||
Sunnyvale ........................... . (408) 720-8811 OREGON ............................. . 503 245-0080
|
||||
Woodland Hills ....................... . (818) 992-4155 OHIO,
|
||||
COLORADO ........................... . (303) 741-2900 Columbus ........................... . (614) 891-6455
|
||||
CONNECTICUT ....................... . (203) 264-7800 PENNSYLVANIA,
|
||||
FLORIDA, Allentown (AT&T only) ................ . (215) 398-8006
|
||||
Altamonte Springs ................... . (305) 339-5022 Willow Grove ........................ . (215) 657-3101
|
||||
|
||||
!
|
||||
Clearwater .............•............. 813! 530-9971
|
||||
Ft Lauderdale ....................... . 305 484-8600
|
||||
Melbourne ........................... . 305 729-0496
|
||||
GEORGIA ............................. . (404) 449-7920
|
||||
PUERTO RICO ........................ .
|
||||
TEXAS,
|
||||
Austin .............................. .
|
||||
Dallas .............................. .
|
||||
(809) 764-4524
|
||||
|
||||
(512) 346-7830
|
||||
(214) 934-9099
|
||||
ILLINOiS .............................. . (312) 773-4422 Houston ............................. . (713) 785-9001
|
||||
INDIANA .............................. . (317) 244-7207 WASHINGTON .................... '.' .. . (206) 455-3600
|
||||
KANSAS .............................. . (913) 451-3115 WISCONSIN .................... , ..... . (414) 782-7748
|
||||
MARYLAND ........................... . (301) 796-9310
|
||||
|
||||
INTERNATIONAL SALES OFFICES
|
||||
BELGIUM,
|
||||
Bruxelles ...................... TEL: . (02) 771 99 93 HONG KONG,
|
||||
FAX: .. (02) 762-3716 Kowloon ................ TEL: ............. 3-695377
|
||||
TLX: ......... 61028 FAX: .............. 1234276
|
||||
CANADA, Ontario, TLX: ................ 50426
|
||||
Kanata ........................ TEL: . (613) 592-0090 ITALY, Milano .............. TEL: .......... (02j3390541
|
||||
Willowdale ..................... TEL: . (416) 224-5193 FAX: . . . . . . . . .. (02 3498000
|
||||
FAX: . (416) 224-0056 TLX: ............... 315286
|
||||
FRANCE, JAPAN, Tokyo ............. TEL: ......... (03) 345-8241
|
||||
Paris .......................... TEL: (01) 45 60 00 55 FAX: .............. 3425196
|
||||
FAX: (01) 468621 85 TLX: ..... J24064AMDTKOJ
|
||||
TLX: ....... 202053F LATIN AMERICA,
|
||||
GERMANY, Ft. Lauderdale ... . . . . . . .. TEL: ........ (305) 484-8600
|
||||
Hannover area ................. TEL: " (05143) 50 55 FAX: ........ (305) 485-9736
|
||||
FAX: .. (05143) 55 53 TLX: .. 5109554261 AMDFTL
|
||||
TLX: ........ 925287 SWEDEN, Stockholm ...... TEL: ........ (08) 733 03 50
|
||||
MOnchen ...................... TEL: .. (089) 41 14-0 FAX: ........ (08) 733 22 85
|
||||
FAX: ... (089) 406490 TLX: ................ 11602
|
||||
TLX: ........ 523883 UNITED KINGDOM,
|
||||
Stuttgart ....................... TEL: Manchester area ......... TEL: ........ (0925) 828008
|
||||
(0711) 623377 FAX: ........ (0925) 827693
|
||||
FAX: .. (0711) 625187 TLX: ............... 628524
|
||||
TLX: ........ 721882 London area ............ TEL: ........ (04862) 22121
|
||||
FAX: ........ (04862) 22179
|
||||
TLX: ............... 859103
|
||||
|
||||
NORTH AMERICAN REPRESENTATIVES
|
||||
CALIFORNIA NEW MEXICO
|
||||
12 INC .......................... OEM (408l988-3400 THORSON DESERT STATES .......... (505) 293-8555
|
||||
DISTI (408 496-6868 NEW YORK
|
||||
IDAHO NYCOM, INC . . . . . . . . . . . . . . . . . . . . . . . .. (315) 437-8343
|
||||
INTERMOUNTAIN TECH MKGT .... . . .. (208) 888-6071 OHIO
|
||||
INDIANA Dayton
|
||||
SAl MARKETING CORP ............... (317) 241-9276 DOLFUSS ROOT & CO ............... (513) 433-6776
|
||||
IOWA Strongsville
|
||||
LORENZ SALES ...................... (319) 377-4666 DOLFUSS ROOT & CO ............... (216) 238-0300
|
||||
MICHIGAN PENNSYLVANIA
|
||||
SAl MARKETING CORP ............... (313) 227-1786 DOLFUSS ROOT & CO ............... (412) 221-4420
|
||||
NEBRASKA UTAH
|
||||
LORENZ SALES. . . . . . . . . . . . . . . . . . . . .. (402) 475-4660 R2 MARKETING ...................... (801) 595-0631
|
||||
Advanced Micro Devices reserves the right to make changes in its product without notice in order to improve design or performance
|
||||
characteristics. The performance characteristics listed in this document are guaranteed by specific tests, guard banding, design and
|
||||
other practices common to the industry. For specific testing details, contact your local AMD sales representative. The company
|
||||
assumes no responsibility for the use of any circuits described herein.
|
||||
|
||||
~ ADVANCED MICRO DEVICES 901 Thompson PI., P.O. Box 3453, Sunnyvale, CA 94088, USA © 1986 Advanced Micro Devices, Inc.
|
||||
. . ~ TEL: (408) 732-2400 • TWX: 910-339-9280 • TELEX: 34-6306 • TOLL FREE: (800) 5388450 Printed in U.S.A. CBM-WCP-10M-8/86-0
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large.
Load diff
Binary file not shown.
@@ -0,0 +1 @@
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,46 @@
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
Powered by ICminer.com Electronic-Library Service CopyRight 2003
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large.
Load diff
Binary file not shown.
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,38 @@
|
||||
# LANCE datasheets (Am7990 / Am79C90)
|
||||
|
||||
Downloaded 2026-10-16 for the "loopback FCS" question
|
||||
(`../lance-loopback-fcs.md`). Originals are preserved unmodified; `*.txt` are
|
||||
`pdftotext -layout` extractions made here. Nothing was edited.
|
||||
|
||||
| file | source | notes |
|
||||
|---|---|---|
|
||||
| `Am7990-TechnicalManual-1986.pdf` | bitsavers `components/amd/Am7990/1986_Am7990_Local_Area_Network_Controller_LANCE_Technical_Manual.pdf` | **primary**. Searchable text. §1.9.3 mode register (DTCR p. 1-24), §1.8.3 CRC (p. 1-12), §4.3.3 (p. 4-4). |
|
||||
| `Am7990-ReferenceGuide-Aug1986.pdf` | bitsavers `components/amd/Am7990/08496A_Am7990_Reference_Guide_Aug1986.pdf` | supporting; no DTCR/LOOP detail beyond the above. |
|
||||
| `Am79C90-bitsavers.pdf` | bitsavers `components/amd/Am7990/Am79c90.pdf` | **primary** for the C-LANCE. DTCR bit p. 24, CRC requirements p. 35. Searchable text. |
|
||||
| `Am79C90-theretroweb.pdf` | theretroweb `chip/documentation/am79c90-66f085c9c1098806690232.pdf` | independent copy of the same datasheet; same page mapping. |
|
||||
| `Am7990-bitsavers.pdf` | bitsavers `components/amd/Am7990/Am7990.pdf` | standalone datasheet **scan without OCR** (0 bytes of text). Kept for completeness. |
|
||||
| `Am7990-ardent.pdf` | `ardent-tool.com/datasheets/AMD_Am7990.pdf` | alternative standalone datasheet **scan without OCR**. |
|
||||
|
||||
`*.txt` are the extractions of the two searchable PDFs.
|
||||
|
||||
## SHA-256
|
||||
|
||||
```
|
||||
bef9659c8c7fcae50630ea779616b01c6b34147125e3a6239300d18409c0d45b Am7990-ardent.pdf
|
||||
c625457bce8c6b88edba18cc131279730e32d10359dbc3c242a687263b4b1857 Am7990-bitsavers.pdf
|
||||
d3dfb8a675370068397cc233420db01d0a80e4e5545d6d4eb580e5a218c6455c Am7990-ReferenceGuide-Aug1986.pdf
|
||||
01be92c5c7a9e90b8319f46f9fed52b446a2676e9b1c362d10e4214b8f9cef72 Am7990-TechnicalManual-1986.pdf
|
||||
1dbd36baa54ccea3efde4ef8cddb320d07ed84760b4cc547ef804ffe03a76f40 Am79C90-bitsavers.pdf
|
||||
dd54b5a71cfe59e8ebebcd274b0f06c14ac7591183409f775b356a44bd8fd370 Am79C90-theretroweb.pdf
|
||||
```
|
||||
|
||||
## Key locations (printed page / PDF page)
|
||||
|
||||
Am7990 Technical Manual 1986:
|
||||
* Mode register, bit `03 DTCR` / bit `02 LOOP` — printed **1-24**, PDF p. 31
|
||||
* `CYCLIC REDUNDANCY CHECK (CRC)` four requirements — printed **1-12**, PDF p. 19
|
||||
* `4.3.3 CRC GENERATOR/CHECKER LOGIC TEST` — printed **4-4**, PDF p. 51
|
||||
|
||||
Am79C90 datasheet:
|
||||
* Mode register, bit `03 DTCR` — printed **24**, PDF p. 24
|
||||
* `Cyclic Redundancy Check (CRC)` four requirements — printed **35**, PDF p. 35
|
||||
@@ -0,0 +1,310 @@
|
||||
# LANCE loopback FCS: is MAME's `MODE_DTCR` term inverted?
|
||||
|
||||
Date: 2026-10-16. Investigation only. ROM `vt1200_v22.bin` md5
|
||||
`b46a3e442ccb86134d2356bd70d22fd2` (untouched). Nothing in the MAME tree or in
|
||||
`harness/mame/` was changed. Datasheets downloaded to
|
||||
`reference/lance-datasheet/` (originals + `pdftotext` extractions).
|
||||
|
||||
## Verdict (short)
|
||||
|
||||
**MAME is right. The condition is NOT inverted.**
|
||||
|
||||
`src/devices/machine/am79c90.cpp:263`
|
||||
|
||||
```c
|
||||
if (!(m_mode & MODE_LOOP) || (m_mode & MODE_DTCR))
|
||||
```
|
||||
|
||||
is a byte-for-byte implementation of what both the Am7990 and the Am79C90
|
||||
datasheets say. The reason it "reads" as inverted is that the CRC generator and
|
||||
the CRC checker are **one shared circuit**, so the receiver can only check the CRC
|
||||
when the transmitter is **not** using the generator — i.e. exactly when `DTCR = 1`.
|
||||
The proposed "fix" (`(m_mode & MODE_DTCR)` → `!(m_mode & MODE_DTCR)`) would be
|
||||
wrong in **both** loopback cases.
|
||||
|
||||
The `LANCE_REPORT.md` §5 diagnosis is a misreading of the hardware. See
|
||||
[Consequence for the VT1200](#consequence-for-the-vt1200) below.
|
||||
|
||||
---
|
||||
|
||||
## The two parts, and whether they differ
|
||||
|
||||
| part | document used | loopback-CRC rule |
|
||||
|---|---|---|
|
||||
| **Am7990** LANCE | Am7990 Technical Manual, Aug 1986 | "no CRC check ... since the CRC logic is shared"; with DTCR=1 the receiver checks |
|
||||
| **Am79C90** C-LANCE | Am79C90 datasheet | identical wording |
|
||||
|
||||
They do **not** differ on this question. They differ in one other place only:
|
||||
the C-LANCE adds the `ADD_FCS` bit (TMD1 bit 13) that can override `DTCR=1` on a
|
||||
per-packet basis ("The ADD_FCS bit (bit 13, TMD1) can be used to override a
|
||||
DTCR=1 setting on a per packet basis."). MAME already gates that on
|
||||
`type() == AM79C90` (`transmit()`). The unsettled Am7990-vs-Am79C90 question does
|
||||
**not** affect the loopback-FCS verdict. (Neither part is settled for the VT1200;
|
||||
that is out of scope here.)
|
||||
|
||||
---
|
||||
|
||||
## The decisive quotes
|
||||
|
||||
### Am7990 Technical Manual (1986), Mode register, printed p. 1-24 (PDF p. 31)
|
||||
|
||||
> **03 DTCR** DISABLE TRANSMIT CRC. When DTCR = 0, the transmitter generates and
|
||||
> appends a CRC to the transmitted packet. When DTCR = 1, the CRC logic is
|
||||
> allocated to the receiver and no CRC is generated or sent with the transmitted
|
||||
> packet.
|
||||
>
|
||||
> During loopback, DTCR = O will cause a CRC to be generated on the transmitted
|
||||
> packet, but **no CRC check is done by the receiver since the CRC logic is shared
|
||||
> and cannot generate and check CRC at the same time.** The generated CRC is
|
||||
> written into memory with the data and can be checked by the host software.
|
||||
>
|
||||
> **If DTCR = 1 during loopback, the host software must append a CRC value to the
|
||||
> transmit data. The receiver checks the CRC on the received data and reports any
|
||||
> errors.** Since the CRC generator is used to generate the hash filter, the
|
||||
> multicast addressing cannot be used when DTCR = 1.
|
||||
|
||||
> **02 LOOP** LOOPBACK allows the LANCE to operate in full duplex mode for test
|
||||
> purposes. The packet size is 8-32 bytes. The received packet can be up to 36
|
||||
> bytes (32 + 4 bytes CRC) **when DTCR=O**. During loopback, the runt packet filter
|
||||
> is disabled because the packet is smaller than the minimum size Ethernet packet
|
||||
> (64 bytes).
|
||||
|
||||
### Am7990 Technical Manual (1986), §1.8.3 "CYCLIC REDUNDANCY CHECK (CRC)",
|
||||
printed p. 1-12 (PDF p. 19)
|
||||
|
||||
> The LANCE requirements for the CRC logic are:
|
||||
>
|
||||
> 1. **TRANSMISSION - Mode bit 2 (LOOP) = 0, Mode bit 3 (DTCR) = 0.** The LANCE
|
||||
> calculates the CRC from the first bit following the Start bit to the last bit
|
||||
> of the data field. The CRC value inverted is appended to the transmission in
|
||||
> one unbroken bit stream.
|
||||
> 2. **RECEPTION - Mode bit 2 (LOOP) = 0.** The LANCE performs a check on the input
|
||||
> bit stream from the first bit following the Start bit to the last bit in the
|
||||
> frame. The LANCE continually samples the state of the CRC check on framed byte
|
||||
> boundaries and, when the incoming bit stream stops, the last sample determines
|
||||
> the state of the CRC error. Framing error (FRAM) is not reported if there is
|
||||
> no CRC error.
|
||||
> 3. **LOOPBACK - Mode bit 2 (LOOP) = 1, Mode bit 3 (DTRC) = 0.** The LANCE generates
|
||||
> and appends the CRC value to the outgoing bit stream as in transmission but
|
||||
> **does not perform the CRC check of the incoming bit stream.**
|
||||
> 4. **LOOPBACK - Mode bit 2 (LOOP) = 1, Mode bit 3 (DTRC) = 1.** The LANCE
|
||||
> **performs the CRC check on the incoming bit stream as in reception** but does
|
||||
> not generate or append the CRC value to the outgoing bit stream during
|
||||
> transmission.
|
||||
|
||||
(Note the OCR/typo `DTRC` for `DTCR` in bullets 3–4; the bit is DTCR.)
|
||||
|
||||
And, from the LOOPBACK constraints (§1.8.3, item 4):
|
||||
|
||||
> CRC may be either generated and appended to the output serial bit stream or may
|
||||
> be checked on the input serial bit stream **but not both in the same
|
||||
> transaction.**
|
||||
|
||||
### Am7990 Technical Manual (1986), §4.3.3 "CRC GENERATOR/CHECKER LOGIC TEST",
|
||||
printed p. 4-4 (PDF p. 51)
|
||||
|
||||
> During the loopback test (internal or external), the CRC logic may be tested.
|
||||
> Since the LANCE operates in half-duplex mode, the CRC generator or checker must
|
||||
> be tested separately as follows. The Transmit CRC Generator is tested by
|
||||
> programming DTCR=O in the Mode Register. This enables the transmit CRC
|
||||
> generation and **disables the Receive CRC Checker.** ...
|
||||
>
|
||||
> The Receive CRC Checker is tested by setting the DTCR bit in the Mode Register.
|
||||
> The user then calculates the CRC for the test packet **and appends it to the end
|
||||
> of the test packet for transmission** (test packet max size= 32 + 4 bytes CRC).
|
||||
> The Receive CRC Checker checks the last four bytes of the packet for CRC error
|
||||
> and updates the receive descriptors accordingly.
|
||||
|
||||
### Am79C90 C-LANCE datasheet, Mode register bit 03 DTCR, printed p. 24 (PDF p. 24)
|
||||
|
||||
> **03 DTCR** DISABLE TRANSMIT CRC. When DTCR = 0, the transmitter will generate
|
||||
> and append a CRC to the transmitted packet. When DTCR = 1, the CRC logic is
|
||||
> allocated to the receiver and no CRC is generated and sent with the transmitted
|
||||
> packet. The ADD_FCS bit (bit 13, TMD1) can be used to override a DTCR=1 setting
|
||||
> on a per packet basis.
|
||||
>
|
||||
> During loopback, DTCR = 0 will cause a CRC to be generated on the transmitted
|
||||
> packet, but **no CRC check will be done by the receiver since the CRC logic is
|
||||
> shared and cannot generate and check CRC at the same time.** The generated CRC
|
||||
> will be written into memory with the data and can be checked by the host
|
||||
> software.
|
||||
>
|
||||
> **If DTCR = 1 during loopback, the host software must append a CRC value to the
|
||||
> transmit data. The receiver will check the CRC on the received data and report
|
||||
> any errors.**
|
||||
|
||||
### Am79C90 C-LANCE datasheet, "Cyclic Redundancy Check (CRC)", printed p. 35
|
||||
|
||||
> 2. **RECEPTION – MODE <02> LOOP = 0.** The C-LANCE performs a check on the input
|
||||
> bit stream from the first bit following the SFD to the last bit in the frame. ...
|
||||
> 3. **LOOPBACK – MODE <02> LOOP =1, MODE <03> DTRC = 0.** The C-LANCE generates and
|
||||
> appends the CRC value to the outgoing bit stream as in Transmission but **does
|
||||
> not perform the CRC check of the incoming bit stream.**
|
||||
> 4. **LOOPBACK – MODE <02> LOOP = 1 MODE <03> DTRC = 1.** C-LANCE **performs the CRC
|
||||
> check on the incoming bit stream as in Reception**, but does not generate or
|
||||
> append the CRC value to the outgoing bit stream during transmission.
|
||||
|
||||
> CRC may not be used for both transmission and reception simultaneously.
|
||||
|
||||
---
|
||||
|
||||
## Question 2 — does the receiver's CRC check apply to a frame that carries no FCS?
|
||||
|
||||
**The check is tied to the MODE bits, not to whether the frame's bytes happen to
|
||||
look like they end in an FCS.** The hardware has one shared CRC circuit, so the
|
||||
rule is purely `(LOOP, DTCR)`:
|
||||
|
||||
| LOOP | DTCR | chip checks RX FCS? | which datasheet bullet |
|
||||
|---|---|---|---|
|
||||
| 0 | 0 | **yes** | 2 (RECEPTION, `LOOP=0`) |
|
||||
| 0 | 1 | **yes** | 2 (RECEPTION, `LOOP=0`; DTCR only affects the transmitter) |
|
||||
| 1 | 0 | **no** | 3 (LOOPBACK, generator owns the shared circuit) |
|
||||
| 1 | 1 | **yes** | 4 (LOOPBACK, checker owns the shared circuit) |
|
||||
|
||||
In the one loopback case where the chip checks (`LOOP=1, DTCR=1`) the datasheet
|
||||
**requires the host to put the FCS there** ("the host software must append a CRC
|
||||
value to the transmit data"). So the chip is not "checking a frame with no FCS"
|
||||
by design — it is checking a frame the host was required to FCS-terminate. If the
|
||||
host breaks that contract, the chip reports a CRC error, correctly.
|
||||
|
||||
MAME's condition reproduces the table exactly:
|
||||
|
||||
| LOOP | DTCR | MAME `!(LOOP) \|\| DTCR` | chip (per datasheet) |
|
||||
|---|---|---|---|
|
||||
| 0 | 0 | check | check |
|
||||
| 0 | 1 | check | check |
|
||||
| 1 | 0 | skip | skip |
|
||||
| 1 | 1 | check | check |
|
||||
|
||||
MAME's FCS arithmetic was also checked independently. `FCS_RESIDUE = 0xdebb20e3`
|
||||
(`am79c90.h:50`) and `crc32_creator::simple()` is zlib's `crc32()` (init
|
||||
`0xffffffff`, final complement). Over a frame `M || FCS` with a correct
|
||||
little-endian FCS, zlib returns `0x2144df1c`, and `~0x2144df1c == 0xdebb20e3`.
|
||||
So `~crc != FCS_RESIDUE` **passes a correctly-terminated frame** and fails one
|
||||
that is not. There is nothing wrong with the arithmetic either.
|
||||
|
||||
---
|
||||
|
||||
## Question 3 — upstream MAME history
|
||||
|
||||
The shallow 0.289 checkout has no file history, so the history was read from the
|
||||
upstream GitHub repository (`mamedev/mame`).
|
||||
|
||||
* Condition **introduced** in `3349e3e990ab` (2018-11-22, *"am79c90: fixes
|
||||
(nw)"*): `!(LOOP) || !(INTL) || DTCR`.
|
||||
* **Changed** in `67f9c842e9f2` (2018-11-25, *"am79c90: many fixes (nw)"*), whose
|
||||
message says **"corrected internal loopback behaviour"**, to the current
|
||||
`!(LOOP) || DTCR`. The diff drops the `!(INTL)` term:
|
||||
|
||||
```diff
|
||||
- if (!(m_mode & MODE_LOOP) || !(m_mode & MODE_INTL) || (m_mode & MODE_DTCR))
|
||||
+ if (!(m_mode & MODE_LOOP) || (m_mode & MODE_DTCR))
|
||||
```
|
||||
|
||||
Dropping `!(INTL)` makes external loopback follow the same rule as internal
|
||||
loopback — which is what the datasheet bullets 3/4 describe (they are written
|
||||
for `LOOP`, not `INTL`). So the change moved MAME **toward** the datasheet, not
|
||||
away from it.
|
||||
|
||||
The commit message does not quote a datasheet, but the resulting term matches
|
||||
both datasheets exactly, so no further history is needed to accept it.
|
||||
|
||||
---
|
||||
|
||||
## Question 4 — verdict
|
||||
|
||||
**MAME is right; the check is not inverted.** No change is warranted.
|
||||
|
||||
The change proposed in `LANCE_REPORT.md` §5 —
|
||||
|
||||
```c
|
||||
// PROPOSED, DO NOT APPLY
|
||||
if (!(m_mode & MODE_LOOP) || !(m_mode & MODE_DTCR))
|
||||
```
|
||||
|
||||
— would be wrong in both loopback cases: it would **skip** the check for
|
||||
`LOOP=1, DTCR=1` (datasheet bullet 4: the chip checks) and **perform** it for
|
||||
`LOOP=1, DTCR=0` (datasheet bullet 3: the chip does not check).
|
||||
|
||||
**Revert note (if anyone applies that change anyway):** it contradicts the four
|
||||
`MODE`-bit CRC requirements quoted above from the Am7990 Technical Manual
|
||||
p. 1-12 and the Am79C90 datasheet p. 35, and it would make MAME's receiver
|
||||
diverge from the part in both loopback modes. Revert to
|
||||
`!(m_mode & MODE_LOOP) || (m_mode & MODE_DTCR)` and keep the citation.
|
||||
|
||||
---
|
||||
|
||||
## Question 6 — when is the check skipped in normal (non-loopback) receive?
|
||||
|
||||
**Never, on this chip.** Datasheet bullet 2 is `RECEPTION - Mode bit 2 (LOOP) = 0`
|
||||
with **no DTCR term**: outside loopback the receiver always runs the FCS check,
|
||||
and `DTCR` speaks only about the *transmitter*. The FCS's presence in a normal
|
||||
frame is the remote sender's business; the local `DTCR` bit says nothing about it.
|
||||
So `!(m_mode & MODE_LOOP)` (check whenever `LOOP=0`) is the correct half of the
|
||||
condition, and it must not be tightened to `!(LOOP) && !(DTCR)` or similar.
|
||||
|
||||
---
|
||||
|
||||
## Consequence for the VT1200
|
||||
|
||||
`harness/mame/LANCE_REPORT.md` §4.1 records the firmware's own `C - LANCE TEST`
|
||||
init block as:
|
||||
|
||||
```
|
||||
mode = 0x004C = MODE_LOOP | MODE_INTL | MODE_DTCR
|
||||
```
|
||||
|
||||
Per the datasheet, `LOOP=1, DTCR=1` is **bullet 4**: the receiver **does** check
|
||||
the FCS, and the host is **required** to append it. MAME therefore behaves like
|
||||
the part when it reports `RCV DESCR 1 = 0x4B00` (`ERR|CRC|STP|ENP`). The §5
|
||||
inference — "the real chip must not fail the receive CRC ... i.e. the check should
|
||||
be skipped whenever the frame carries no FCS" — does **not** follow from the
|
||||
hardware; it assumes the frame carries no FCS, which is exactly the contract the
|
||||
datasheet forbids when `DTCR=1`.
|
||||
|
||||
So the open question is really: **does the firmware's test frame carry a
|
||||
4-byte FCS or not?**
|
||||
|
||||
* If it does **not**, the real LANCE flags a CRC error too, the `C - LANCE TEST`
|
||||
fails on real hardware, and MAME is faithful (the failure is the test's, and a
|
||||
level-1/self-test failure is non-fatal, per `LEVEL1_CONTINUE_REPORT.md`).
|
||||
* If it **does**, then MAME's FCS arithmetic (verified above) should pass it, and
|
||||
any mismatch is a **different** MAME bug — not this condition — worth chasing
|
||||
separately.
|
||||
|
||||
`LANCE_REPORT.md` §5 assumed the first bullet ("DTCR means no FCS was appended")
|
||||
without checking whether the *firmware* appends one; the datasheet says the
|
||||
firmware is obliged to. That is the gap, and it is the thing to observe on the
|
||||
real machine.
|
||||
|
||||
### What the real machine would have to show to settle it
|
||||
|
||||
A boot does **not** settle it: a level-1/self-test failure is reported and the
|
||||
boot continues (`LEVEL1_CONTINUE_REPORT.md`, and `README.md` "How far the OS
|
||||
gets"), so "the terminal boots" proves nothing about the LANCE test.
|
||||
|
||||
To demonstrate it, read the **LANCE test's own result**, not the boot outcome:
|
||||
|
||||
1. **Run the terminal's on-board diagnostics and read the specific LANCE result**
|
||||
(the `C - LANCE TEST` / "Ethernet port (LANCE) test", error 24). A displayed
|
||||
**pass** means the loopback frame the chip received was FCS-terminated (the
|
||||
host appended it, as the datasheet requires) — which is consistent with the
|
||||
datasheet and with MAME being right, and would mean MAME's failure is a
|
||||
different bug. A displayed **CRC error** means MAME is not only right about the
|
||||
rule, it is faithful about this very test.
|
||||
2. **Stronger and independent of the firmware's verdict:** capture what the chip
|
||||
actually receives. Dump the transmit buffer the test builds (or watch the RX
|
||||
descriptor / bus on a real machine) and check for **4 trailing FCS bytes**. If
|
||||
present, the chip checks a terminated frame; if absent, the chip flags CRC.
|
||||
|
||||
Note: the task's premise "if it passes ... then the real chip does not reject a
|
||||
loopback frame that carries no FCS" is backwards for this part. The datasheet says
|
||||
the chip **does** check when `DTCR=1`; a real-hardware *pass* would therefore
|
||||
prove the frame **carries** an FCS, not that the check is disabled.
|
||||
|
||||
---
|
||||
|
||||
## Assets
|
||||
|
||||
Downloaded originals and extractions in `reference/lance-datasheet/` — see that
|
||||
directory's `README.md` for provenance and SHA-256 checksums.
|
||||
Reference in new issue
Block a user