IP Library Granted Patent US 8,060,784
Granted Patent B1
US 8,060,784 · App. 12/630,163 · Granted Nov 15, 2011

Programmable logic device and methods for providing multi-boot configuration data support

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 8,060,784
App. No.
12/630,163
Granted
Nov 15, 2011
Kind
B1
Abstract

In one embodiment of the invention, a programmable logic device includes configuration memory and a controller. The controller can read a first bitstream from a first memory block of non-volatile memory and detect whether the first bitstream contains a valid preamble as the first bitstream is read from the non-volatile memory and before configuration data in the first bitstream is programmed into the volatile configuration memory. If a valid preamble is detected in the first bitstream, the controller programs the configuration memory with configuration data in the first bitstream. If a valid preamble is not detected in the first bitstream, the controller reads a second bitstream from a second memory block of the non-volatile memory.

Claims (40)

1. A method of configuring a programmable logic device having volatile configuration memory, the method comprising:

reading a first bitstream from a first memory block of non-volatile memory;

detecting whether the first bitstream contains a valid preamble as the first bitstream is read from the non-volatile memory and before configuration data in the first bitstream is programmed into the volatile configuration memory;

if a valid preamble is detected in the first bitstream, programming the volatile configuration memory with configuration data in the first bitstream; and

if a valid preamble is not detected in the first bitstream, reading a second bitstream from a second memory block of the non-volatile memory.

2. The method of claim 1 including:

detecting whether the second bitstream contains a valid preamble as the second bitstream is read from the non-volatile memory and before configuration data in the second bitstream is programmed into the volatile configuration memory; and

programming the volatile configuration memory with configuration data in the second bitstream if a valid preamble is detected in the second bitstream.

3. The method of claim 1 , wherein a valid preamble is determined not detected in the first bitstream when no valid preamble is received from the first bitstream a certain number of clock cycles after the detecting is initiated.

4. The method of claim 1 including:

if a valid preamble is detected in the first bitstream:

checking the first bitstream for errors as the configuration data is programmed into the volatile configuration memory; and

if an error is detected by the checking of the first bitstream, reading the second bitstream from the second memory block of the non-volatile memory.

5. The method of claim 1 , wherein the first bitstream comprises primary boot data and the second bitstream comprises default boot data for the programmable logic device.

6. The method of claim 1 , wherein if a valid preamble is not detected in the first bitstream:

prior to reading of the second bitstream, reading a third bitstream from a third memory block of the non-volatile memory, wherein the third bitstream contains a jump command to the address of the second memory block;

detecting whether the third bitstream contains a valid preamble as the third bitstream is read from the non-volatile memory and before executing the jump command; and

executing the jump command if a valid preamble is detected in the third bitstream.

7. The method of claim 1 , wherein the method is performed in response to one of a powering up of the programmable logic device and an instruction received by the programmable logic device.

8. The method of claim 1 , wherein the non-volatile memory is an external memory device.

9. A programmable logic device comprising:

configuration memory adapted to store configuration data to configure the programmable logic device for its intended function; and

a controller adapted to:

read a first bitstream from a first memory block of non-volatile memory;

detect whether the first bitstream contains a valid preamble as the first bitstream is read from the non-volatile memory and before configuration data in the first bitstream is programmed into the volatile configuration memory;

program the volatile configuration memory with configuration data in the first bitstream if a valid preamble is detected in the first bitstream; and

read a second bitstream from a second memory block of the non-volatile memory if a valid preamble is not detected in the first bitstream.

10. The programmable logic device of claim 9 , wherein the controller is further adapted to determine that a valid preamble is not detected in the first bitstream when no valid preamble is received from the first bitstream a certain number of clock cycles after the detecting is initiated.

11. The programmable logic device of claim 9 , wherein the controller is further adapted to:

detect whether the second bitstream contains a valid preamble as the second bitstream is read from the non-volatile memory and before configuration data in the second bitstream is programmed into the volatile configuration memory; and

program the volatile configuration memory with configuration data in the second bitstream if a valid preamble is detected in the second bitstream.

12. The programmable logic device of claim 9 , wherein the controller is further adapted to:

if a valid preamble is detected in the first bitstream, check the first bitstream for errors as the configuration data is programmed into the volatile configuration memory; and

if an error is detected by the checking of the first bitstream, read the second bitstream from the second memory block of the non-volatile memory.

13. The programmable logic device of claim 9 , wherein the controller is further adapted to:

prior to reading the second bitstream, read a third bitstream from a third memory block of the non-volatile memory, wherein the third bitstream contains a jump command to the address of the second memory block;

detect whether the third bitstream contains a valid preamble as the third bitstream is read from the non-volatile memory and before executing the jump command; and

execute the jump command if a valid preamble is detected in the third bitstream.

14. The programmable logic device of claim 9 , wherein the non-volatile memory is an external memory device.

15. The programmable logic device of claim 9 , wherein the controller is a bus interface controller.

Assignments (4)
SECURITY INTEREST Recorded May 21, 2019
From: LATTICE SEMICONDUCTOR CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
Reel/Frame 049980/0786 →
RELEASE OF SECURITY INTEREST Recorded May 21, 2019
From: JEFFERIES FINANCE LLC
To: LATTICE SEMICONDUCTOR CORPORATION; SILICON IMAGE, INC.; SIBEAM, INC.; DVDO, INC.
Reel/Frame 049827/0326 →
SECURITY INTEREST Recorded Mar 24, 2015
From: LATTICE SEMICONDUCTOR CORPORATION; SIBEAM, INC; SILICON IMAGE, INC.; DVDO, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 035308/0345 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 3, 2009
From: SPINTI, ROGER; TANG, HOWARD; KOW, SAN-TA; WU, ANN
To: LATTICE SEMICONDUCTOR CORPORATION
Reel/Frame 023599/0713 →