IP Library Granted Patent US 10,019,306
Granted Patent B2
US 10,019,306 · App. 15/139,988 · Granted Jul 10, 2018

Collision detection for slave storage devices

Inventors: Mark Robert Hicks (Anaheim, CA); George Christopher Sneed (Irvine, CA)
Assignee: WESTERN DIGITAL TECHNOLOGIES, INC.
G06F11/079G06F5/14G06F11/0727G06F11/0751G06F11/0793G06F13/4282G06F2205/126
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,019,306
App. No.
15/139,988
Granted
Jul 10, 2018
Kind
B2
Abstract

A method includes transmitting, by a controller of a storage device, a first bit on a data line. The method further includes responsive to transmitting the first bit on the data line, determining, by the controller, a line level of the data line. The method further includes responsive to determining the line level of the data line, determining, by the controller, whether the line level of the data line corresponds to the first bit and responsive to determining that the line level of the data line does not correspond to the first bit, determining, by the controller, that a collision has occurred on the data line.

Claims (72)

1. A method comprising:

transmitting, by a controller of a storage device, a first bit on a data line;

responsive to transmitting the first bit on the data line, determining, by the controller, a line level of the data line;

responsive to determining the line level of the data line, determining, by the controller, whether the line level of the data line corresponds to the first bit;

responsive to determining that the line level of the data line does not correspond to the first bit, determining, by the controller, that a collision has occurred on the data line;

receiving, by firmware executing at a processor of the controller and from a bus communication unit of the controller, an indication of a transmit buffer empty event; and

in response to receiving the indication of the transmit buffer empty event, outputting, by the firmware, the first bit into a transmit holding register of the controller, wherein transmitting the first bit on the data line is in response to outputting the first bit into the transmit holding register.

2. The method of claim 1 , comprising:

responsive to determining that the collision has occurred on the data line:

determining, by the controller, whether a start condition has occurred on the data line; and

ceasing, by the controller, transmission of data on the data line; and

responsive to determining that the start condition has occurred on the data line, transmitting, by the controller, the first bit on the data line.

3. The method of claim 1 , comprising:

determining, by the controller, a rising edge of a clock signal on a clock line, wherein transmitting the first bit on the data line comprises transmitting the first bit on the data line during the rising edge.

4. The method of claim 3 , wherein:

determining that the line level corresponds to the first bit is prior to a falling edge of the clock signal on the clock line, and

the rising edge and the falling edge are within a single clock cycle of the clock signal on the clock line.

5. The method of claim 1 , wherein:

determining whether the line level corresponds to the first bit comprises determining, by the firmware, whether the line level corresponds to the first bit output into the transmit holding register, and

determining that the collision has not occurred on the data line comprises determining, by the firmware, that the collision has not occurred on the data line in response to the firmware determining that the line level corresponds to the first bit output into the transmit holding register.

6. The method of claim 1 , wherein:

transmitting the first bit on the data line drives the line level of the data line to indicate a first logical level; and

determining that the line level does not correspond to the first bit comprises, determining, by the controller and after transmitting the first bit on the data line, that the line level of the data line indicates a second logical level that is different from the first logical level.

7. A storage device comprising:

a storage element;

an interface coupled to a bus; and

a controller configured to:

transmit a first bit on a data line of the bus;

responsive to transmitting the first bit on the data line, determine a line level of the data line;

responsive to determining the line level of the data line, determine whether the line level of the data line corresponds to the first bit; and

responsive to determining that the line level of the data line does not correspond to the first bit, determine that a collision has occurred on the data line, wherein the controller comprises firmware executing at a processor of the controller and a bus communication unit, the firmware being configured to:

receive an indication of a transmit buffer empty event; and

in response to receiving the indication of the transmit buffer empty event, output the first bit into a transmit holding register of the controller, wherein transmitting the first bit on the data line is in response to outputting the first bit into the transmit holding register.

8. The storage device of claim 7 , wherein the controller is further configured to:

responsive to determining that the collision has occurred on the data line:

determine whether a start condition has occurred on the data line; and

cease transmission of data on the data line; and

responsive to determining that the start condition has occurred on the data line, transmit the first bit on the data line.

9. The storage device of claim 7 , wherein the controller is further configured to:

determine a rising edge of a clock signal on a clock line of the bus, wherein transmitting the first bit on the data line comprises transmitting the first bit on the data line during the rising edge.

10. The storage device of claim 9 , wherein:

the controller is further configured to determine that the line level corresponds to the first bit prior to a falling edge of the clock signal on the clock line, and

the rising edge and the falling edge are within a single clock cycle of the clock signal on the clock line.

11. The storage device of claim 7 , wherein the firmware is further configured to:

determine whether the line level corresponds to the first bit output into the transmit holding register; and

determine that the collision has not occurred on the data line in response to the firmware determining that the line level corresponds to the first bit output into the transmit holding register.

12. A non-transitory computer-readable storage medium encoded with instructions that, when executed, cause one or more processors of a storage device to:

transmit a first bit on a data line;

responsive to transmitting the first bit on the data line, determine a line level of the data line;

responsive to determining the line level of the data line, determining whether the line level of the data line corresponds to the first bit;

responsive to determining that the line level of the data line does not correspond to the first bit, determine that a collision has occurred on the data line;

receiving, by firmware executing at a processor of a controller and from a bus communication unit of the controller, an indication of a transmit buffer empty event; and

in response to receiving the indication of the transmit buffer empty event, outputting, by the firmware, the first bit into a transmit holding register of the controller, wherein transmitting the first bit on the data line is in response to outputting the first bit into the transmit holding register.

13. The non-transitory computer-readable storage medium of claim 12 , further encoded with instructions that, when executed, cause the one or more processors of the storage device to:

responsive to determining that the collision has occurred on the data line:

determine whether a start condition has occurred on the data line; and

cease transmission of data on the data line; and

responsive to determining that the start condition has occurred on the data line, transmit the first bit on the data line.

14. The non-transitory computer-readable storage medium of claim 12 , further encoded with instructions that, when executed, cause the one or more processors of the storage device to:

responsive to determining that the line level of the data line corresponds to the first bit, determine that a collision has not occurred on the data line; and

responsive to determining that the collision has not occurred on the data line, transmit a second bit on the data line.

15. A system comprising:

means for transmitting a first bit on a data line;

means for determining a line level of the data line in response to transmitting the first bit on the data line;

means for determining whether the line level of the data line corresponds to the first bit in response to determining the line level of the data line; and

means for determining that a collision has occurred on the data line in response to determining that the line level of the data line does not correspond to the first bit;

means for receiving, by firmware executing at a processor of a controller and from a bus communication unit of the controller, an indication of a transmit buffer empty event; and

means for outputting by the firmware in response to receiving the indication of the transmit buffer empty event, the first bit into a transmit holding register of the controller, wherein transmitting the first bit on the data line is in response to outputting the first bit into the transmit holding register.

16. The system of claim 15 , further comprising:

means for determining whether a start condition has occurred on the data line;

means for ceasing transmission of data on the data line; and

means for transmitting the first bit on the data line in response to determining that the start condition has occurred on the data line.

Assignments (12)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT SERIAL NO 15/025,946 PREVIOUSLY RECORDED AT REEL: 040831 FRAME: 0265. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 15, 2017
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 043973/0762 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 6, 2016
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 040831/0265 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 27, 2016
From: HICKS, MARK ROBERT; SNEED, GEORGE CHRISTOPHER
To: HGST NETHERLANDS B.V.
Reel/Frame 038396/0259 →
Continuity (1)
Related Publication 20170315851A1 · Nov 2, 2017