`
`ORACLE EXHIBIT 1002
`
`ORACLE EXHIBIT 1002
`
`PART 3
`
`
`
`“K)9UW3flB
`
`PCT/US90/04711
`
`-80-
`
`To commence the transfer of the next segment of the
`block of data to be transferred,
`the master drives
`Ds0* low 739 and, after a predetermined period of
`time, drives DSO* high 741.
`'-In response to the
`transition of DSO* from high to low, respectively 739
`and 741, the slave latches the data being broadcast by
`the master over data lines D00 through D31, 743.
`The
`master places the next
`segment of
`the data to be
`transferred on data lines D00 through D31, 745,
`,
`awaits receipt of a DTACK* signal
`in the form of a
`high to low transition, 747.
`The slave then drives DTACK* low, 749, and,
`after
`a predetermined period of time, drives DTACK* high,
`751.
`The data latched by the slave, 743,
`is written
`to the device selected to store the data and the
`device address is incremented 753.
`The slave waits
`for another transition of Ds0* from high to low 737.
`The transfer of data will continue in the above-
`described manner until. all of
`the data has been
`transferred from the master to the slave.
`After all-
`of
`the data has been transferred,
`the master will
`release the address lines, address modifier lines,
`data lines,
`IACK* line, LWORD*
`line and DSO*
`line,
`755.
`"The master will
`then wait for 3
`receipt of a
`DTAcK* high to low transition 757.
`The slave will
`drive DTACK*
`low,
`759 and, after
`a predetermined
`period of time, drive DTACK* high 761.
`In response to
`the receipt of the DTACK* high to low transition, the
`master will drive As* high 763 and then release the
`AS* line 765.
`
`Fig.
`is
`a
`flowchart
`through C,
`A
`8, parts
`illustrating the operations involved in accomplishing
`the fast
`transfer protocol BLOCK READ cycle.
`To
`initiate-a BLOCK READ cycle, the master broadcasts the
`memory address of the data to be transferred and the
`address modifier across the DTB bus 801.
`The master
`sussmure sum
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1201
`
`
`
`W0 91/03788
`
`PCl'/US90/0471 1
`
`-81-
`
`drives the LWORD* signal low and the IACK* signal high
`801.
`
`As noted previously, a special address modifier
`indicates to the slave module that the fast transfer
`
`'protocol will be used to accomplish the BLOCK READ.
`The slave modules connected to the DTB receive the
`address and the address modifier broadcast by the
`
`master across the bus and receive LWORD* low and IACK*
`
`shortly after broadcasting the address and
`high 803.
`address modifier 801, the master drives the AS* signal
`low 805.
`
`The slave modules receive the As* low signal
`
`807.
`
`Each slave individually determines whether it
`
`will participate in the data transfer by determining
`whether the broadcasted address is valid for the slave
`
`in question 809.
`
`If the address is not valid,
`
`the
`
`data transfer does not involve that particular slave
`
`and it ignores the remainder of
`
`the data transfer
`
`cycle.
`
`‘
`
`The master drives WRITE* high to indicate that the
`
`transfer cycle about to occur is a READ operation 811.
`The slave receives the WRITE* high signal 813 and,
`knowing that the data transfer operation is a READ
`operation, places the first segment of the data to be
`transferred on data lines D00 through D31 819.
`The
`master will wait until both DTACK* and BERR* are high
`
`818, which indicates that the previous slave is no
`
`longer driving the DTB.
`
`The raster then drives DSO* low 821 and, after a
`The »
`drives DSO* high 823.
`
`predete mined interval,
`master then awaits a high to low transition on the
`
`the
`8B,
`line 824.
`DTACK* signal
`slave then drives the DTACK* signal low 825 and, after
`a predetermined period of
`time, drives the DTAcK*
`signal high 827.
`
`shown in Fig.
`
`As
`
`In response to the transition of DTACK* from high
`to low, respectively 825 and 827,
`the master latches"
`the data being transmitted by the slave over data
`
`SUBSTITUTE SHEET
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1202
`
`
`
`wo'91/o37ss
`
`PCT/US90/0471]
`
`-82-
`
`The data latched by the
`lines 1500 through D31, 331.
`master, 831,
`is written to a device, which has been
`selected to store. the data the device address
`is
`incremented 833.
`'
`
`The slave places the next segment of the data to be
`
`transferred on data lines D00 through D31, 829, and
`then waits for another transition of DSO* from high to
`low 837.
`‘
`.
`
`To commence the transfer of the next segment of the
`block of data to be transferred,
`the master drives
`
`low 839 and, after a predetermined period of
`DSO*
`time, drives DSO* high 841. The master then waits for
`the DTACK* line to transition from high to low, 843.
`_The )slave drives DTACK*
`law, 845, and, after a
`predetermined period of time, drives DTACK* high, 847.
`In response to the transition of DTACK* from high to
`low, respectively 839 and 841,
`the master latches the
`
`data being transmitted by the slave over data lines
`D00 through D31, 845. The data latched by the master,
`845,
`is written to the device selected to store the
`data,
`851
`in Fig.
`8C,
`and the device address
`is
`
`incremented. The slave places the next segment of the
`data to be transferred on data lines D00 through D31,
`849.
`4
`The transfer of data will continue in the above-
`
`described manner until all of
`
`the data
`
`to be
`
`transferred from the slave to the master has been
`written into the device selected to store the data.
`
`After all of
`
`the data to be transferred has been
`the master will
`
`written into the storage device,
`release the address lines, address modifier lines,
`data lines,
`the IhCK* line,
`the LWORD line and DSO*
`line 852.
`The master will then wait for receipt of a
`DTACK* high to low transition 853.
`The slave will
`drive DTACK* low 855 and, after a predetermined period
`.of time, drive DTACK* high 857.
`In response to the
`
`sunsrnure smear
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1203
`
`
`
`WO 91103788
`
`PCT/US90/0471 1
`
`-33-
`
`receipt of
`
`the DTACK* high to low transition,
`
`the
`
`master will drive AS* high 859 and release the AS*
`line 861.
`
`To
`
`fast
`
`implement
`the
`transfer protocol,
`a
`conventional 64 mA tri-state driver is substituted for
`
`the 48 mA open collector driver conventionally used in
`
`VME slave modules to drive DTACK*.
`
`Similarly,
`
`the
`
`conventional VMEbus data drivers are replaced with 64
`The latter
`
`.mA tri—state drivers in SO-type packages.
`
`modification reduces the ground lead inductance of the
`and,
`reduces
`actual driver package
`itself
`thus,
`skew
`“ground bounce“ effects which contribute to
`
`between data,
`
`DSO* and DTACK*,
`
`In addition,
`
`signal
`
`return inductance along the bus backplane is reduced
`
`by using a connector system having a greater number of
`
`ground pins so as to minimize signal return and mated-
`
`pair pin inductance.
`
`One such connector system is the
`Model No. 420-8015-
`“High Density Plus” connector,
`
`OOO, manufactured by Teradyne Corporation.
`1
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1204
`
`
`
`wo 91103788
`
`A
`
`'
`
`‘
`
`Pcr/U590/o4711~
`
`The parity PIFOS 240, 260 and 270 (on the network
`pcontrollers
`110),
`and
`544
`and
`554
`(on
`storage
`
`processors 114) are each implemented as an ASIC. All
`
`the parity FIPOs are identical, and are configured on
`power-up or during normal operation for the particular
`function desired.
`The parity FIFO is designed to
`
`allow speed matching between buses of different speed,
`
`and to perform the parity generation and correction
`
`for the parallel SCSI drives.
`
`The FIFO comprises two bidirectional data ports,
`Port A and Port 3, with 36 x 64 bits of RAM buffer
`
`between them. Port A is 8 bits wide and Port B is 32
`
`bits wide.
`
`The RAM buffer is divided into two parts,
`
`each 36 x 32 bits, designated RAM X and RAM Y.
`
`The
`
`two ports access different halves of
`the buffer
`alternating to the other half when available. when
`the chip is configured as a parallel parity chip (e.g.
`
`one of the«FIFOs 544 on SP 114a), all accesses on Port
`
`B are monitored and parity is accumulated in RAM X
`
`A
`
`and RAM Y alternately.
`The chip also has a CPU interface, which may be 8
`or 16 bits wide.
`In 16 bit mode the Port A pins are‘
`
`used as the most significant data_bits of the CPU
`interface and are only actually used when reading or
`
`writing to the Pifo Data Register inside the chip.
`
`A REQ, ACK handshake is used for data transfer on
`
`The chip may be configured as
`both Ports A and.B.
`either a master or a slave on Port A in the sense
`
`that,
`
`in master_mode the Port A ACK / RDY output
`
`signifies that the chip is ready to transfer data on
`
`Port A, and the Port A REQ input specifies that the
`
`In slave made, however, the Port
`slave is responding.
`A BBQ input specifies that the master requires a data
`
`8!JB_8_TlTUTE SHEET
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1205
`
`
`
`W0 91/03788
`
`PCTIUS90/0471 1
`
`-35-
`
`transfer, and the chip responds with Port A ACK / RDY
`
`when data is available.
`
`The chip is a master on Port
`
`B since it raises Port B REQ and waits for Port B ACK
`
`to indicate completion of the data transfer.
`
`§l£NAL_D££QBI2IIQN&
`
`Port A 0-7, P
`
`Port‘A is the 8 bit data port. Port A P, if used,
`
`is the odd parity bit for this port.
`
`A Req,
`
`A Ack/Edy
`
`These two signals are used in the data transfer
`mode to control the handshake of data on Port A.
`
`u? Data 0-7, uP Data P, uPAdd 0-2,
`
`CS
`
`These
`
`signals are used by a microprocessor
`
`to
`
`address the programmable registers within the chip.
`
`The odd parity signal uP Data P is only checked when
`data is written to the Fifo Data or Checksum Registers
`
`and microprocessor parity is enabled.
`
`Clk
`
`The clock input
`
`is used to generate some of the
`
`is expected to he in the 10-20 Mmz
`
`chip timing. It
`range.
`
`Read En, Write En
`
`During microprocessor accesses, while CS is true,
`determine
`
`these
`
`signals
`
`the direction of
`
`the
`
`microprocessor accesses. During data transfers in the
`
`these signals are data 'strobes used in
`WD mode
`conjunction with Port A Ack.
`'
`
`SUBSTITUTE SHEET
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1206
`
`
`
`W0 91/03788
`
`PCTIUS90/0471 1
`
`-35-
`
`Port B 60-07, 10-17, 20-27, 30-37,
`Port B is a 32 bit data port.
`
`OP-3P
`
`There is one odd
`
`parity bit for each byte. Port B OP is the parity of
`
`bits 00-07, PortB IP is the parity of bits 10-17, Port-
`
`B 2P is the parity of bits 20-27, and Port B 3P is the
`
`parity of bits 30-37.
`
`B select, B Reg, E Ack, Parity Sync, B Output Enable
`These signals are used in the data transfer mode to
`control the handshake of data on Port B. Port B Reg
`
`and Port B Ack are both gated with Port B Select.
`
`The Port 8 Ask signal is used to strobe the data on
`the Port B data lines.
`The parity sync signal
`is
`
`used to indicate to a chip configured as the parity
`
`chip to indicate that-the last words of data involved
`in the parity accumulation are on Port B.
`The Port B
`data lines will only be driven by the Fifo chip if all
`
`of the following conditions are met:
`a.
`the data transfer is from Port A to Port B;
`
`h.
`c.
`
`d.
`
`Reset
`
`the Port B select signal is true;
`
`the Port B output enable signal is true; and
`the
`chip is not configured as the parity chip
`the Parity
`or it is in parity correct mode and
`.sync signal is true.
`
`This signal resets all the registers within the
`
`chip and causes all bidirectional pins to be in a high
`impedance state}
`
`DE§§BIEIIQN_Q£_QEEEAIlQH
`
`flg;maL_Qn§:a:;gn.
`‘simple rxro chip.
`RAM buffers
`in a
`
`Normally the chip acts as
`
`a
`
`A FIFO is simulated by using two
`
`simple ping-pong mode.
`
`It
`
`is
`
`that data is burst into
`intended, but not mandatory,
`or out of the FIFO on Port B. This is done by holding
`
`low and pulsing the Port B Ark
`Port 8 sel signal
`signal. When transferring data from Part B to Port A,
`
`psuB_spnT1m-; sum s
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1207
`
`
`
`W0 91/03788
`
`PCI'/US90/047 1 1
`
`-87..
`
`data is first written into RAM X and when this is
`
`full,
`
`the data paths will be switched such that Port
`
`3 may start writing to RAM Y. Meanwhile the chip will
`begin emptying RAM X to Port A.
`When RAM Ylis full
`
`and RAM X empty the data paths will be switched again
`such that Port 3 may reload RAM X and
`Port A may
`
`empty RAM Y.
`
`.
`
`2g;t_A_§lage_Mg§g.
`
`This is the default mode and
`
`In this mode the
`the chip is reset to this condition.
`chip waits for a master
`such as one of
`the SCSI
`
`adapter chips 542 to raise Port A Request for data
`transfer.
`
`If data is available the Fifo chip will
`respond with Port A Ack/Rdy.
`.29£I_A_fl2_MQ§e.
`The chip may be configured to run
`in the WD or Western Digital mode.
`In this mode the
`chip must be configured as a slave on Port A.
`
`It
`
`differs from the default slave mode in that the chip
`responds
`Write
`with Read Enable
`or
`Enable
`as
`
`appropriate together with Port A Ack/Rdy. This mode
`is intended to allow the chip to be interfaced to the
`
`Western Digital 33C93A SCSI chip or the NCR 53C9O SCSI
`chip.
`
`Egr;_A_fia§ter_Mgde. When the chip is configured as
`
`a master, it will raise Port A Ack/Rdy when it is
`ready for data transfer.
`
`This signal is expected to
`
`be tied to the Request input of a DMA controller which
`
`will respond with Port A Req when data is available.
`the
`
`In order to allow the DMA controller to burst,
`
`Port A Ack/Rdy signal will only be negated after every
`8 or 16 bytes transferred.
`
`In parallel write
`mode, the chip is configured to be the parity chip for
`a parallel transfer from Port B to Port A.-
`In this
`mode,
`
`when Port B Select and Port B Request are
`asserted, data is
`written into RAM X or RAM Y each
`
`time the Port B Ack signal is received. For the first
`
`_8_U_LTlTl|TE SHEET
`
`i
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1208
`
`
`
`W0 91/03788
`
`PC!‘IUS90l04711
`
`.33.
`
`black of
`
`128 bytes data is simply.copied into the
`
`selected RAM. The next 128 bytes driven on Port B will
`
`be exclusive-0Red with the first
`
`128 bytes.
`
`This
`
`procedure will be repeated for all drives such that
`the parity is accumulated in this chip.
`The Parity
`
`Sync signal should he asserted to the parallel chip
`
`together with the last block of
`
`128 bytes.
`
`This
`
`enables the chip to switch access to the other RAM and
`start accumulating a new 128 bytes of parity.
`V
`E2rI_E_2arallsl_Bsad_Meds_:_Qhssk_Data. This mode
`
`is set if all drives are being read and parity is to
`be checked.
`‘
`In this case the Parity Correct bit in
`
`the Data Transfer Configuration Register is not set.
`
`The parity chip will first read 128 bytes on Port A as
`in a normal read mode and then raise Port 3 Request.
`
`this signal .asserted the chip will
`it has
`While
`monitor the Port B Ack signals and exclusive-or the
`data on Port 3 with the data in its selected RAM. The
`
`Parity Sync should again be asserted with the last
`
`In this mode the chip will not
`block of 128 bytes.
`drive the Port B data lines but will check the output
`
`If any bits are
`of its exclusive-or logic for zero.
`set at
`this time a parallel parity error will be
`
`flagged.
`
`RQIL_E_EE£11L2L_B&§i_MQi§_;_QQI£§2L_D§£a.
`
`This
`
`mode is set by setting the Parity Correct hit in the
`
`In this case
`Data Transfer Configuration Register.
`the chip will work exactly as in the check node except
`
`that when Port B Output Enable, Port B select and
`
`Parity Sync are true the data is driven onto the Port
`
`B data lines and a parallel parity check for zero is
`
`V not performed.
`Eyte_§wap.
`
`In the normal mode it is expected that
`
`Port B bits 00-07 are the first byte, bits 10-17 the
`
`second byte, bits 20-27 the third byte, and bits 30-37
`
`the last byte of each word.
`
`The order of these bytes
`
`sus_s_nIur:%suezr
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1209
`
`
`
`W0 91 I03788
`
`5
`
`PCT/US90/04711
`
`-39-
`
`may be changed by writing to the byte swap bits in the
`configuration register such that the byte address bits
`
`are inverted.
`The way the bytes are written and read
`also depend on whether the CPU interface is configured
`as 16 or 8 bits.
`
`The following table shows the byte
`alignments for the different possibilities for data
`
`/ “Acknowledge
`
`transfer using the Port A Request
`handshake:
`cpu
`
`Invert
`Addr 1
`
`Invert
`Addr 0
`
`Part B
`00-07
`
`Port 8
`10-17
`
`Part B
`20-27
`
`Port 3
`30-37
`
`Port A
`byte 1
`
`Port A
`byte 2
`
`Port A
`byte 1
`
`Port A
`byte 0
`
`uProc
`byte 1
`
`Port A
`byte 1
`
`uProc
`byteo
`
`Port A
`
`byte 0
`
`I/F
`
`8
`
`False
`
`False
`
`False
`
`True
`
`True
`
`False
`
`True
`
`True
`
`False
`
`False
`
`False
`
`True
`
`True
`
`False
`
`True
`
`True
`
`Port A
`byte 0
`
`Port A
`byte 1
`
`Port A »
`byte 2
`
`Port A
`byte 3
`
`Port A
`byte 0
`
`uProc
`
`byte 0_
`Port A
`byte 1
`
`uProc
`byte 1
`
`Port A
`byte 1
`
`Port A
`byte 0
`
`Port A
`byte 3
`
`Port A
`byte 2
`
`uProc
`byte 0
`
`Port A
`byte 0
`
`uProc
`bytel
`
`Port A
`byte 1
`
`Port A
`byte 2
`
`Port A
`byte 3
`
`Port A
`byte 0
`
`Port A
`byte 1
`
`Port A
`byte 1
`
`uProc
`byte 1
`
`Port A
`byte 0
`
`uProc
`byte 0
`
`When the Fifo is accessed by reading or writing the
`Fife Data Register through the microprocessor port in
`8 bit mode,
`the bytes are in the same order as the
`
`table above but the uProc data port is used instead of
`
`In 16 bit mode the table above applies.
`Port A.
` . If the data transfer is not
`
`a
`
`niultiple
`
`of
`
`32 words,
`
`or
`
`128
`
`bytes,
`
`the
`
`microprocessor must manipulate the internal registers
`of the chip to ensure all data is transferred. Port
`3 Ac}: and Port B Reg are normally not asserted until
`
`SUBSTITUTE SHEET
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1210
`
`
`
`W0 91/03788
`
`PCTIUS90/047] I
`
`-90-
`
`all 32 words of the selected RAM are available. These
`signals may be forced by writing to the appropriate
`RAM status bits of the Data Transfer status Register.
`
`When an odd length transfer has taken place the
`wait until
`both ports
`are
`microprocessor must
`
`It
`quiescent before manipulating any registers.
`should then reset both of the Enable Data Transfer
`
`bits for Port A and Port B in the Data Transfer
`
`Control Register.
`
`It must then determine by reading
`
`their Address Registers and the RAM Access Control
`
`Register whether RAM X or RAM Y holds the odd length
`data.
`It should then set the corresponding Address
`
`Register to a value of 20 hexadecimal, forcing the RAM
`full bit and setting the address to the first word.
`Finally the microprocessor should set the Enable Data‘
`
`Transfer bits to allow the chip to complete the
`transfer.
`
`At this point the Fifo chip will think that there
`
`are now a full 128 bytes of data in the RAM and will
`transfer 128 bytes if allowed to do so. The fact that
`some of
`these
`128 bytes are not valid must be
`
`‘recognized externally to the FIFO chip.
`
`EL
`f
`
`'1'
`‘
`
`'
`
`'
`
`V
`
`r
`
`W
`
`Register Address 0.
`
`This register is cleared by
`
`the reset signal.
`
`Bit
`
`0
`
`Set if data transfers are to
`ET_l2_H_9E-
`use
`the Western Digital . WD33C93A
`protocol,
`otherwise
`the Adaptec
`6250
`protocol will be used.
`
`if this chip is to
`Set
`garity Chip.
`accumulate Port B parities.
`
`if the parity
` . Set
`chip is to correct parallel parity on
`Port B.
`.
`
`SUBSTITUTE 3”“
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1211
`
`
`
`W0 91/023788
`
`PCI‘IUS90/047-I 1 ~
`
`-91-
`
` . If set; the
`microprocessor data bits are combined
`with the Port A data bits to effectively
`produce a 16 bit Port. All accesses by
`the microprocessor as well as all data
`transferred using the Port A Request and
`Acknowledge handshake will
`transfer 16
`bits.
`
`to
` . Set
`invert the least significant bit of Port
`A byte address.
`
`to
` . Set
`invert the most significant bit of Port
`A byte address.
`-
`
` - Set to enable the
`carry out of the 16 bit checksum adder to
`carry back into the least significant bit
`of the adder.
`
`to this bit will
`39.131. Writing a 1
`reset
`the other
`registers. This bit
`resets itself after a maximum of 2 clock
`cycles and will
`therefore normally be
`read as a O. No other register should be
`written for a minimum of 4 clock cycles
`after writing to this bit.
`
` tfl
`
`Register Address 1.
`
`This register is cleared by
`
`the reset signal or by writing to the reset bit.
`
`Bit
`
`Bit
`
`Bit
`
`0 . Set to
`enable the Port A Req/Ack handshake.
`
`1
`
`2
`
` .» Set to
`enable the Port B Req/Ack handshake.
`
`If set, data transfer,
`£gr:_A_;g_2g;t_E.
`is from Port A to Port B.
`If reset, data
`transfer is from Port 3 to Port A.
`In
`order
`to avoid any glitches
`on
`the
`request
`lines,
`the state of
`this bit
`should not be altered at the same time as
`the enable data transfer bits 0 or
`1
`above.
`
`suasntufe sum
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1212
`
`
`
`W0 91/037
`
`1
`
`~
`
`PCT/US90/04711 »
`
`-92-
`
`u2r22sss9r_2arit2_Enahls. Set if parity
`is to be checked on the microprocessor
`interface.
`It will only be checked when
`writing to the Fifo Data Register or
`reading from the Eifo Data or Checksum
`Registers,
`or
`during
`a
`Port
`A
`Request/Acknowledge transfer in 16 bit
`mode.
`The chip will, however, always
`re-generate parity ensuring that correct
`parity is written to the RAM or read on
`the microprocessor interface.
`
` . Set if parity 16
`to be checked on Port A.
`It is checked
`when accessing the Fifo Data Register in
`16 bit mode,
`or during
`a Port A
`Request/Acknowledge transfer.
`The chip
`will, however, always re—generate parity
`ensuring that correct parity is written
`to the
`RAM or
`read on.
`the Port A
`interface.
`
`Port B
` . Set if
`If it is
`data has valid byte parities.
`generated
`not
`set, _byte parity is
`internally to the chip when writing to
`the RAMs.
`Byte parity is not checked
`when writing from Port B, but always
`checked when reading to Port B.
`
`set to enable writing
`Qhgg3§ng_£na§;e.
`to the 16 bit checksum register.
`This
`register accumulates a 16 bit checksum
`for all RAM accesses, including accesses
`to the Fifo Data Register, as well as all
`writes to the checksum register.
`This
`bit must be reset before reading from the
`Checksum Register.
`
`Bit
`
`if Port A is to
`7 . set
`operate in the master node on Port A
`during the data transfer.
`
`.I;ata_T_ra.mf 1ly.).
`Register Address 2.
`This register is cleared hy
`the reset signal or by writing to the reset bit.
`
`Bit
`
`0
`
`Y. Set if any bits
`r
`i
`are true in the RAM X, RAM Y, or Port A
`byte address registers.
`
`sussmure sneer
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1213
`
`
`
`“K)9U@3788
`
`PCI7U590/0471 1
`
`-93-
`
`if the
` . Set
`uProc Parity Enable bit
`is set and a
`parity
`error
`is
`detected
`on
`the
`microprocessor interface during any RAM
`access or write to the Checksum Register
`in 16 bit mode.
`
`set if the Port A
`is set and a parity
`Parity Enable bit
`error is detected on the Port A interface
`during any RAM access or write to the
`Checksum Register.
`
`Set if
`.
`29;; B garallel Rarity Ergo:
`the‘ parity
`the chip is configured as
`chip, is not in parity correct mode, and
`a non zero result is detected when the
`Parity Sync signal is true.
`It is also
`set whenever data is read out onto Port
`B and the data being read back through
`the
`bidirectional
`buffer
`does
`not
`compare.
`
` . Set
`whenever the data being read out of the
`RAMs on the Port B side has bad parity.
`
`
`
`‘This register is cleared by
`Register Address 3.
`the reset signal or-by writing to the reset bit.
`The
`
`Enable Data Transfer bits in the Data Transfer Control
`Register must be reset before attempting to write to
`
`this register, else the write will be ignored.
`Bit
`0 . This bit is the
`'
`least significant byte address bit.
`It
`is read directly bypassing any inversion
`done by the invert bit
`in the Data
`Transfer Configuration Register.
`
` - This bit is the
`most significant byte address bit.
`It is
`read directly bypassing any inversion
`done by the invert bit
`in the Data
`Transfer Configuration Register.
`
`Pgr; A ;g 33M 2.
`accessing RAM Y,
`accessing RAM X .
`
`if Port A is
`Set
`and reset
`if it
`is
`
`SUBSTITUTE SHEET
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1214
`
`
`
`W0 91/03788
`
`.
`
`PCTIU590/0471 1
`
`'
`
`-94-
`
`if Port 3 is
`set
`£zu:;_1L_sxL_3anL_x.'
`accessing RAM Y,
`and reset
`if
`it is
`accessing RAM X .
`
`If the chip is configured to
`Lgng_§g;§;.
`transfer data on Port A as a master, and
`this bit is reset,
`the chip will only
`negate Port A Ack/Rdy after every 8
`bytes, or 4 words in 16 bit mode, have
`been transferred.
`If this bit is set,
`Port A Ack/Rdy will be negated every 16
`bytes, or 8 words in 16 bit mode.
`'
`
`Bits 5-7 ngt_uasn.
`
`Emxm,
`
`E
`
`.!
`
`[E
`
`:m.|]
`
`"Register Address 4.
`
`This register is cleared by
`
`The
`the reset signal or by writing to the reset bit.
`Enable Data Transfer bits in the Data Transfer Control
`
`Register must be reset before attempting to write to
`
`this register, else the write will be ignored.
`Bits 0-4
`RAM X word address
`
`Bit
`
`5
`
`Bits 6-7
`
`RAM X full
`
`Not Used
`
` r3el
`
`Register Address 5.
`
`This register is cleared by
`
`the reset signal or by writing to the reset hit. The
`Enable Data Transfer bits in the Data Transfer Control
`
`Register must_be reset before attempting to write to
`
`this register, else the write will be ignored.
`Bits 0-4
`RAM Y word address
`Bit
`5
`RAM Y full
`
`Bits 6-7
`
`Not Used
`
`
`
`Register Address 6. The Enable Data Transfer bits
`
`in the Data Transfer Control Register must be reset
`
`before attempting to write to this register, else the
`write will be ignored.
`The Rort A to Port B bit in
`
`SUBSTHUTE SHEET
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1215
`
`
`
`wo 9_1/03788
`
`PC!‘IUS90/0471 1
`
`-95-
`
`the Data Transfer Control register must also be set
`
`the RAM
`If it is not,
`before writing this register.
`controls will be incremented but no data will be
`
`written to the RAM.
`
`For consistency,
`
`the Port A to
`
`PortB should be reset prior to reading this register.
`Bits 0-7 are Fifo Data.
`The microprocessor may
`
`vaccess the FIFO by reading or writing this register.
`
`The RAM control registers are updated as if the access
`
`If the chip is configured with a 16
`was using Port A.
`bit CPU Interface the most significant byte will use
`the Port A 0-7 data lines, and each Port A access will
`
`increment the Port A byte address by 2.
`
`
`
`Register Address 7.
`
`This register is cleared by
`
`the reset signal or by writing to the reset bit.
`Bits
`The
`0-7
`are Checksum Data.
`chip will
`
`accumulate a 16 bit checksum for all Port A accesses.
`
`If the chip is configured with a 16 bit CPU interface,
`
`the most significant byte is read on the Port A 0-7
`If data is written directly
`to this
`
`data lines.
`
`register it is added to the current contents rather
`
`It is important to note that
`than overwriting them.
`the Checksum Enable bit in the Data.Transfer Control
`
`Register must be set to write this register and reset
`to read it.
`
`EBQQRAMMING IHE FIEQ Qfllz
`
`In general the fifo chip is programmed by writing
`to the data
`transfer
`configuration and
`control
`
`registers to enable a data transfer, and by reading
`
`the data transfer status register at the end of the
`
`transfer to check the completion status. Usually the
`
`data transfer itself will
`
`take place with both the
`
`Port A and the Port 8 handshakes enabled, and in this
`
`case the data transfer itself should be done without
`
`SUBSIITUTESHEET
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1216
`
`
`
`wo 9&1/03733
`
`PCl‘lUS90/04711”
`
`any other microprocessor.
`
`interaction.
`
`In
`
`some
`
`-96..
`
`the Port A handshake may not be
`applications, however,
`and
`it will
`be
`for
`the
`
`necessary
`
`enabled,
`
`microprocessor to fill or empty the fifo by repeatedly
`
`writing or reading the Fifo Data Register.
`
`since the fifo chip has no knowledge-of any byte
`counts,
`
`telling when any data
`
`there is no way of
`
`transfer is complete by reading any register within
`this chip itself. Determination of whether the data
`
`transfer has been completed must therefore be done by
`
`some other circuitry outside this chip.
`
`The following C language routines illustrate how
`
`the parity FIFO chip may be programmed.
`
`The routines
`
`assume that both Port A and the microprocessor port
`
`are connected to the system microprocessor, and return
`
`a
`
`size code of
`
`16 bits, but
`
`that
`
`the hardware
`
`addresses the Fifo chip as long 32 bit registers.
`
`struct FlF0__regs {
`unsigned char ccnfig,a1,a2,a3 ;
`unsigned char ccntrol,b1,b2,b3;
`unsigned char status.c1,c2,c3;
`unsigned char ram access__control.d1,d2,d3;
`unsigned char ram:X addr,e1,e2,e3;
`unsigned char ram_Y_-_addr,f1,f2,f3;
`unsigned long data;
`unsigned int checksurn.h1;
`
`#define FIFO1 ((struct F|F0_regs*) 1=n=o_aAssgAoonEss)
`I #deflne FIFO RESET 0x80
`#define FIFO"16 BITS 0x08
`#define F|FO:CKRRY_WRAP 0x40
`#define FlFO_PORT A_ENABLE 0x01
`#define FlFO__PORT_B_ENABLE 0x02
`#define F|FO_PORT:ENABLES 0x03
`#define F|FO__PORT A TO B 0x04 -
`#define Fu=o_cHEcT<sTJM‘ENABLE 0x40
`#define FlFO_DATA_IN_R/-TM 0x01
`#define FlF0_FORCE_RAM_FULL 0x20
`
`#define PORT A__TO PORT B(fifc) («mp control) & 0x04)
`#define POR‘l’_'A_BYTE_AD5RESS(fifo) ’ ((fifo-> ram_aocess__oontrol) &
`0x03)
`‘
`‘
`#define PORT A_TO__RAM Y(fifo)
`#define POR1:B__T0_RAM](fifo)
`
`0x04)
`((fifo->ram_aooess_oontrol) &
`((fifo-> ram_awess_control) & 0x08)
`
`suasmure sum
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1217
`
`
`
`W0 91/03788
`
`PCT/US90/0471 I
`
`The following routlne Initiates a Flfo data transfer using two
`values passed to it.
`
`config_data
`
`This is the data to be written to the configuration register.
`
`control_data This is the data to be written to the Data Transfer Control
`Register.
`If the data transfer is to take place
`automatically using both the Port Aand Port B
`handshakes. both data transfer enables bits should be
`set in this parameter.
`it***i*fitktttt*i13*ifi*it**IitIttQifltitflflttittttifitfitittttifil
`
`FlFO__initiate__data_transfer(conflg_data. oontrol_data)
`l{msigned char config__data. control_data;
`~
`FIFO1->oonfig = oonfig data | FlFO_FiESEi';
`Configuration value & Reset 7/
`FIFO1->control = control data & (~FlF0_POFiT__lENABLES);
`everything but enaBles */
`FlFO1->control = control_data;
`enables */
`
`/* Set
`
`/* Set
`
`T
`
`/* Set data transfer
`
`} I
`
`tt**ii*i****t**i*#****t*t*fififiiititiiiitttitl1§l§t&**fl*kt*t*
`The following routine forces the transfer of any odd bytes that
`have been left in the Frfo at the end of a data transfer.
`It first disables both ports, then forces the Ram Full bits, and then
`re-enables the appropriate Port.
`fiifltiiI*t**tiitttiiiflitiititttflttfiitfitfiitfltfittttttiitiitttl
`
`FlFO_force_odd_length_transfer0
`{
`t
`
`.
`A
`.
`FIFO!->cont’rol &= ~FlFO_PORT_ENABLES; /* Disable Ports A & B
`
`if (PORT A TO PORT_B(FlFO1)) {
`{
`HTPDRT‘A TO_FiAM__Y(FlFO1))
`FTF51->ram_Y_addr = FlFO__FORCE_RAM_FULL: /*
`
`Set RAM Y full */
`
`} e
`
`} e
`
`lse {
`
`lse FIFO1->ram_X_addr = FlFO_FOFlCE_RAM_FULL;
`RAM x full */
`FIFO1->contro| l= FlFO_PORT_B_ENABLE;
`Re-Enable Port B */
`
`/* Set
`
`/*
`
`if (PORT_B T0_RAM Y(FlFOf)) {
`FIF61->ram_Y_addr = FlFO_FORCE_FlAM__FULL;
`V
`Set RAM Y run */
`else FIFO1->ram_X_addr = FlF0_FOFlCE_RAM_FULL:
`RAM x fufl */
`
`/*
`
`/* Set
`
`£3-ZSBSTITIETE SHEET
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1218
`
`
`
`W0 91/03788
`
`PCFIUS90/0471 I
`
`-93-
`
`I FIFO1->control |= FlFO__PORT_A'__ENABLE;
`Re-Enable Port A */
`}
`
`/*
`
`} !
`
`**f*tfii**i%t K§t§§iCi*i***ttf*fif*#ti#Qttt*fiKR
`The following routine returns how many odd bytes have been
`left in the Fifo at the end of a data transfer.
`'k*ktti**tttRt**t#*tfi'*#I'i***t*ttt*I‘i*****'i'i’*ii'**'k****‘k****fi**!
`
`Ti FIFO_oount_odd_bytes0
`int number_odd_bytes;
`number_odd_bytes=0;
`if (FIFO1->status & FIFO DATA IN RAM)
`lf (PORT_A TO_PURT_B'(Fli‘-'01)) {
`num'ber odd bytes =
`(PORT_A_BYTE_ADDFtES§(FiF(".'>1)) ;
`if (PORT_A TO_RAM Y(FlFO1))
`num'ber__odd_Bytes + = (FIFO1->ram_Y_addr) *
`
`4:
`
`else number_odd__bytes + = (FIFO1->ram_X_addr) * 4;
`
`else {
`
`if (PORT_B TO_RAM Y(FlFO1))
`nurfiber odd_Bytes = (FIFO1->ramr_Y_‘addr) * 4 ;
`else number_o3d_bytes = (FIFO1->ram_X_addr) " 4 ;
`I
`
`}
`}
`return (number_odd_bytes);
`
`} !
`
`*#kQ*t********fi****i*fit**t**tt**IԤQ*tfiftt**tit**ii***fi*itfi*
`The following routine tests the microprocessor interface of the
`It first writes and reads the first 6 registers.
`It then writes 1s. Os. and
`chip.
`an address pattern to the RAM, reading the data back and checking it.
`
`The test returns a bit significant error code where each bit
`represents the address of the registers that failed.
`
`Bit 0 = oonfig register failed
`Bit 1 = control register failed
`Bit 2 = status register failed
`Bit 3 = ram aooess control register failed
`Bit 4 = ram X address register failed
`Bit 5 = ram Y address register failed
`Bite = data register failed
`Bit 7 = cheoksum register failed
`i*tt**i't**k*t*t*tttt*i***#t*t*fi*fk*fii***I‘Ii*t*Ik*fl***f***i*!
`
`#deline RAM_DEPTH s4
`
`/* number of long words in Fife Ram‘ */_
`
`reg_expected_data[6] = { 0x7F. QxFF. 0x00, 0x1F. 0x3F. 0x3F };
`
`8llli_SIlTllTE SHEET
`
`Oracle-Huawei-NetApp Ex. 1002, pg. 1219
`
`
`
`W0 91/03788
`
`'
`
`PC!"IUS90/04711
`
`-99..
`
`<{:har FlFO_uprocessor_interiace__test0
`unsigned long test_data;
`char *register_addr;
`int I;
`char j,error;
`FlF01~>oonfig = FiFO_F{ESEi’;
`error=O;
`jregister_addr =(char *) FIFO1;
`=: 1;
`
`/* first test registers O thm 5 */
`
`for 0:0; i<6; i++) {
`/* write test data */
`*register_addr = OxFF;
`it (‘register addr l= reg_expected data[I]) error. | = J;
`*register_aEidr = 0;
`/* wn'fe Os to register */
`it (*register_addr) error |= j;
`'
`/* write test data again */
`*register_addr = OxFF;
`if (*register_addr l= reg_expected_data[i]) error |= ];
`_
`FIFO1->oonfig = FIFO RESET;
`/* reset the chip */
`if (*register_addr) error'| = 1; /* register should be 0 */
`register_addr+ +;
`/* go to next register */
`]<<=h
`
`/* now test Ram data & checksum registers
`test 1s throughout Ram & then test Os */
`
`tor (test_data = -1; test_data l= 1; test_data+ +)
`& Os */
`
`{
`
`/’ test for 1s
`
`FIFO1->oonfig = FIFOHESET | FIFO 16_BlTS;
`FIFO1-> control = FIFO‘ POFiT_A_TO_E;
`for G=O;i<RAM_DEPTH?i++)
`
`/* write data to RAM
`
`*/
`
`FIFO1->data = test_data;
`FIFO1->eontroi = 0;
`for G=O;i<RAM_DEPT