# US 10,372,948 B2 · Scrambling apparatus and method thereof

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,948 B2
- Document ID: US10372948B2
- Status: Granted
- Kind: B2
- Application number: 14/969,621
- Filed: 2015-12-15
- Published: 2017-06-15
- Granted: 2019-08-06
- Earliest claimed: 2015-12-15
- Assignees: Taiwan Semiconductor Manufacturing Company, Ltd.
- Applicants: Taiwan Semiconductor Manufacturing Company Ltd.
- Inventors: Kai-Chun Lin; Ku-Feng Lin; Hung-Chang Yu; Yu-Der Chih
- Web page: https://patentgrep.com/patent/US10372948B2

## CPC

- G06F 21/79: in semiconductor storage media, e.g. directly-addressable memories
- G06F 12/14: Protection against unauthorised use of memory {or access to memory}
- G06F 12/1408: {by using cryptography (for digital transmission H04L9/00)}
- G06F 2211/007: Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
- G06F 2212/1052: Security improvement
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A memory device is provided which comprises a memory array, a first scrambling circuit and a second scrambling circuit. The first scrambling circuit is configured to provide first scrambled data with a first scrambling pattern in response to input data. The second scrambling circuit is configured to provide second scrambled data with a second scrambling pattern in response to the first scrambled data.

## Claims

### Claim 1

A memory device, comprising:
a memory array configured to store a first scrambling configuration comprising an index of a data block in input data;
a first scrambling circuit coupled to the memory array and configured to provide first scrambled data with a first scrambling pattern in response to the input data and the first scrambling configuration and store the first scrambled data into the memory array, the first scrambling configuration causing the first scrambled data to comprise a same data content as but a different data sequence from the input data;
a second scrambling circuit coupled to the memory array and configured to provide second scrambled data with a second scrambling pattern in response to the first scrambled data in the memory array;
a storage unit coupled to the first scrambling circuit and the second scrambling circuit and configured to store the first scrambling configuration from the memory array when an access operation is activated, and
a first pattern generation circuit configured to provide the first scrambling pattern and the second scrambling pattern based on the first scrambling configuration and a second scrambling configuration, respectively.

### Claim 2 (depends on 1)

The memory device according to claim 1, wherein the first scrambling configuration further comprises a first scrambling code.

### Claim 3 (depends on 1)

The memory device according to claim 1, wherein the second scrambling configuration is stored in the memory array when the access operation is activated.

### Claim 4 (depends on 1)

The memory device according to claim 1, wherein the first scrambling configuration and the second scrambling configuration are erased from the memory array after completion of the access operation.

### Claim 5 (depends on 1)

The memory device according to claim 1, wherein the storage unit is further configured to store the second scrambling configuration, which are available from the memory array in an access operation.

### Claim 6 (depends on 1)

The memory device according to claim 1, wherein the first pattern generation circuit comprises a lookup table or a linear feedback shift register.

### Claim 7 (depends on 1)

The memory device according to claim 1, wherein the first scrambling circuit comprises:
a data buffer configured to form the data block in response to the input data; and
a plurality of multiplexers configured to provide the first scrambled data in response to the data block from the data buffer, each multiplexer selecting one bit from the data block based on the first scrambling configuration.

### Claim 8 (depends on 1)

The memory device according to claim 1, further comprising:
a second pattern generation circuit configured to generate a third scrambling pattern based on a third scrambling configuration; and
a third scrambling circuit configured to provide a scrambled address, for an access operation, with the third scrambling pattern.

### Claim 9 (depends on 8)

The method according to claim 8, wherein the second pattern generation circuit comprises a lookup table or a linear feedback shift register.

### Claim 10 (depends on 1)

The method according to claim 1, wherein the second scrambling circuit comprises
a plurality of multiplexers configured to provide a second data block in response to the first scrambled data in the memory array, each multiplexer selecting one bit from the first scrambled data based on the second scrambling configuration; and
a data buffer configured to form the second scrambling data in response to the second data block.

### Claim 11 (depends on 10)

The method according to claim 10, further comprising a plurality of sense amplifies configured to receive the outputs of the multiplexers in the second scrambling circuit and detect logic states of data read from the memory array.

### Claim 12

A method for operating a memory array associated with a first scrambling pattern and a second scrambling pattern, the memory array being configured to store a first scrambling configuration and a second scrambling configuration, the method comprising:
receiving input data;
storing the first scrambling configuration and the second scrambling configuration from the memory array into a storage unit external to the memory array when the input data is received;
generating the second scrambling pattern based on the second scrambling configuration;
providing first data based on the second scrambling pattern in response to the input data;
writing the first data into the memory array;
erasing the second scrambling configuration from the memory array after writing the first data;
generating the first scrambling pattern based on the first scrambling configuration;
providing first scrambled data based on the first data and the first scrambling pattern in response to a read operation, and
erasing the first scrambling configuration from the memory array after providing the first scrambled data.

### Claim 13 (depends on 12)

The method according to claim 12, further comprising receiving the first scrambling configuration from an external controller prior to storing the first scrambling configuration.

### Claim 14 (depends on 12)

The method according to claim 12, further comprising:
de-scrambling the first scrambled data based on the first scrambling configuration and the second scrambling configuration.

### Claim 15 (depends on 12)

The method according to claim 12, wherein the second scrambling configuration included a scrambling code and an index of a data block in the input data.

### Claim 16 (depends on 12)

The method according to claim 12, further comprising providing a scrambled address signal for providing the first data or the first scrambled data, in response to an address signal, with a third scrambling pattern based on a third scrambling configuration.

### Claim 17

A method for accessing a memory array, the memory array being configured to store a first scrambling configuration, the method comprising:
receiving input data having a first portion and a second portion;
storing the first scrambling configuration for the first portion from the memory array into a storage unit external to the memory array when the input data is received, the first scrambling configuration comprising a first scrambling code and an index of a data block in the first portion of the input data;
receiving a first address of the memory array;
generating a first scrambling pattern based on the first scrambling configuration;
providing first scrambled data based on the first scrambling pattern in response to the first portion;
writing the first scrambled data to the memory array at the first address;
reading the first scrambled data from the memory array;
providing second scrambled data based on the first scrambled data and a second scrambling pattern in response to the reading, wherein the second scrambling pattern is generated based on a second scrambling configuration; and
storing the first scrambling configuration and the second scrambling configuration in the memory array after writing the first scrambled data and the second scrambled data.

### Claim 18 (depends on 17)

The method according to claim 17, further comprising:
receiving a third scrambling configuration for the second portion;
receiving a second address of the memory array;
generating a third scrambling pattern based on the third scrambling configuration;
providing third scrambled data based on the third scrambling configuration in response to the second portion; and
writing the third scrambled data to the memory array at the second address.

### Claim 19 (depends on 17)

The method according to claim 17, further comprising:
receiving a fourth scrambling configuration;
generating a fourth scrambling pattern based on the fourth scrambling configuration;
generating a scrambled address in response to the first address; and
writing the first scrambled data to the memory array at the scrambled address.

### Claim 20 (depends on 17)

The method according to claim 17, further comprising receiving the first scrambling configuration and the second scrambling configuration from an external controller prior to storing the first scrambling configuration and the second scrambling configuration.
