Linear Feedback Shift Registers (LFSRs) 4-bit LFSR

Similar documents
EECS150 - Digital Design Lecture 27 - misc2

EECS150 - Digital Design Lecture 21 - Design Blocks

EECS150 - Digital Design Lecture 26 Error Correction Codes, Linear Feedback Shift Registers (LFSRs)

EECS Components and Design Techniques for Digital Systems. Lec 26 CRCs, LFSRs (and a little power)

EECS150 - Digital Design Lecture 23 - FFs revisited, FIFOs, ECCs, LSFRs. Cross-coupled NOR gates

Outline. EECS Components and Design Techniques for Digital Systems. Lec 18 Error Coding. In the real world. Our beautiful digital world.

Outline. EECS150 - Digital Design Lecture 26 Error Correction Codes, Linear Feedback Shift Registers (LFSRs) Simple Error Detection Coding

EECS150 - Digital Design Lecture 26 - Faults and Error Correction. Types of Faults in Digital Designs

Review. EECS Components and Design Techniques for Digital Systems. Lec 26 CRCs, LFSRs (and a little power)

EECS150 - Digital Design Lecture 26 Faults and Error Correction. Recap

ECE 4450:427/527 - Computer Networks Spring 2017

Cyclic codes: overview

A field F is a set of numbers that includes the two numbers 0 and 1 and satisfies the properties:

How does the computer generate observations from various distributions specified after input analysis?

B. Cyclic Codes. Primitive polynomials are the generator polynomials of cyclic codes.

Dual-Field Arithmetic Unit for GF(p) and GF(2 m ) *

PSEUDORANDOM BINARY SEQUENCES GENERATOR

Error Detection & Correction

Cryptography Lecture 3. Pseudorandom generators LFSRs

Information redundancy

EECS150 - Digital Design Lecture 11 - Shifters & Counters. Register Summary

L9: Galois Fields. Reading material

COMPUTER ARITHMETIC. 13/05/2010 cryptography - math background pp. 1 / 162

The goal differs from prime factorization. Prime factorization would initialize all divisors to be prime numbers instead of integers*

COMPUTERS ORGANIZATION 2ND YEAR COMPUTE SCIENCE MANAGEMENT ENGINEERING UNIT 3 - ARITMETHIC-LOGIC UNIT JOSÉ GARCÍA RODRÍGUEZ JOSÉ ANTONIO SERRA PÉREZ

EECS150 - Digital Design Lecture 23 - FSMs & Counters

Fault Tolerance & Reliability CDA Chapter 2 Cyclic Polynomial Codes

EECS150 - Digital Design Lecture 25 Shifters and Counters. Recap

Latches. October 13, 2003 Latches 1

Fault Tolerant Computing CS 530 Information redundancy: Coding theory. Yashwant K. Malaiya Colorado State University

Mathematical Foundations of Cryptography

x n k m(x) ) Codewords can be characterized by (and errors detected by): c(x) mod g(x) = 0 c(x)h(x) = 0 mod (x n 1)

Solutions for Appendix C Exercises

Dividing Polynomials: Remainder and Factor Theorems

Binary addition example worked out

ALU (3) - Division Algorithms

GF(2 m ) arithmetic: summary

FPGA BASED DESIGN OF PARALLEL CRC GENERATION FOR HIGH SPEED APPLICATION

Maximum Length Linear Feedback Shift Registers

Finite Fields. SOLUTIONS Network Coding - Prof. Frank H.P. Fitzek

Chapter 4 Finite Fields

Some math for embedded algorithms

Review: Designing with FSM. EECS Components and Design Techniques for Digital Systems. Lec 09 Counters Outline.

Review: Designing with FSM. EECS Components and Design Techniques for Digital Systems. Lec09 Counters Outline.

Getting Connected. Chapter 2, Part 2. Networking CS 3470, Section 1 Sarah Diesburg

Galois Field Algebra and RAID6. By David Jacob

A VLSI Algorithm for Modular Multiplication/Division

Boolean Algebra and Digital Logic 2009, University of Colombo School of Computing

Adders, subtractors comparators, multipliers and other ALU elements

ZEROS OF POLYNOMIAL FUNCTIONS ALL I HAVE TO KNOW ABOUT POLYNOMIAL FUNCTIONS

ELCT201: DIGITAL LOGIC DESIGN

EECS Components and Design Techniques for Digital Systems. FSMs 9/11/2007

NUMBERS AND CODES CHAPTER Numbers

Design of Sequential Circuits

EECS 270 Midterm Exam 2 Fall 2009

Fields in Cryptography. Çetin Kaya Koç Winter / 30

EECS150 - Digital Design Lecture 18 - Counters

EECS150 - Digital Design Lecture 18 - Counters

SECTION 2.3: LONG AND SYNTHETIC POLYNOMIAL DIVISION

More Polynomial Equations Section 6.4

ECEN 5022 Cryptography

CSE 20 Discrete Math. Algebraic Rules for Propositional Formulas. Summer, July 11 (Day 2) Number Systems/Computer Arithmetic Predicate Logic

EECS150 - Digital Design Lecture 16 Counters. Announcements

Arithmetic in Integer Rings and Prime Fields

A Brief Encounter with Linear Codes

L1 2.1 Long Division of Polynomials and The Remainder Theorem Lesson MHF4U Jensen

Chapter 4 Mathematics of Cryptography

Parity Checker Example. EECS150 - Digital Design Lecture 9 - Finite State Machines 1. Formal Design Process. Formal Design Process

Objective: To become acquainted with the basic concepts of cyclic codes and some aspects of encoder implementations for them.

Adders, subtractors comparators, multipliers and other ALU elements

Hakim Weatherspoon CS 3410 Computer Science Cornell University

COE 202: Digital Logic Design Sequential Circuits Part 4. Dr. Ahmad Almulhem ahmadsm AT kfupm Phone: Office:

A number that can be written as, where p and q are integers and q Number.

EECS150 - Digital Design Lecture 17 - Sequential Circuits 3 (Counters)

Appendix: Synthetic Division

Modular numbers and Error Correcting Codes. Introduction. Modular Arithmetic.

Error Correction and Trellis Coding

3 The fundamentals: Algorithms, the integers, and matrices

Discrete Mathematics and Probability Theory Spring 2016 Rao and Walrand Discussion 6A Solution

L1 2.1 Long Division of Polynomials and The Remainder Theorem Lesson MHF4U Jensen

CSCE 564, Fall 2001 Notes 6 Page 1 13 Random Numbers The great metaphysical truth in the generation of random numbers is this: If you want a function

3.3 Dividing Polynomials. Copyright Cengage Learning. All rights reserved.

14:332:231 DIGITAL LOGIC DESIGN. 2 s-complement Representation

New Implementations of the WG Stream Cipher

1 Introduction. 2 Calculation of the output signal

Lecture 10 - MAC s continued, hash & MAC

Cyclic Codes. Saravanan Vijayakumaran August 26, Department of Electrical Engineering Indian Institute of Technology Bombay

Menu. Review of Number Systems EEL3701 EEL3701. Math. Review of number systems >Binary math >Signed number systems

Decimal Addition: Remember to line up the decimals before adding. Bring the decimal straight down in your answer.

Algebra for error control codes

We say that a polynomial is in the standard form if it is written in the order of decreasing exponents of x. Operations on polynomials:

Design and Implementation of High Speed CRC Generators

Chapter 8. Exploring Polynomial Functions. Jennifer Huss

Chapter 6. BCH Codes

Logic BIST. Sungho Kang Yonsei University

ELCT201: DIGITAL LOGIC DESIGN

Commutative Rings and Fields

Multimedia Systems WS 2010/2011

FPGA Resource Utilization Estimates for NI crio LabVIEW FPGA Version: 8.6 NI-RIO Version: 3.0 Date: 8/5/2008

Fully-parallel linear error block coding and decoding a Boolean approach

Transcription:

Linear Feedback Shift Registers (LFSRs) These are n-bit counters exhibiting pseudo-random behavior. Built from simple shift-registers with a small number of xor gates. Used for: random number generation counters error checking and correction Advantages: very little hardware high speed operation Example 4-bit LFSR: Q4 CLK Q3 Q2 Q1 Spring 2003 EECS150 Lec26-ECC Page 1 4-bit LFSR Q4 Q3 Q2 Q1 0001 0010 CLK 0100 Circuit counts through 2 4-1 different 0 0 0 1 0 1000 non-zero bit patterns. 0011 Leftmost bit decides whether the 0 0 0 1 0 0 0110 10011 xor pattern is used to 1100 compute the next value or if the 0 0 1 0 0 0 1011 register just shifts left. 0101 0 1 0 0 0 0 Can build a similar circuit with any 1010 xor 1 0 0 1 1 number of FFs, may need more xor 0111 0 0 0 1 1 0 gates. 1110 In general, with n flip-flops, 2 n -1 0 0 1 1 0 0 1111 different non-zero bit patterns. 1101 0 1 1 0 0 0 1001 Q4 Q3 Q2 Q1 (Intuitively, this is a counter that xor 1 0 0 1 1 0001 wraps around many times and in a 0 1 0 1 1 strange way.) Spring 2003 EECS150 Lec26-ECC Page 2

Applications of LFSRs Performance: In general, xors are only ever 2-input and never connect in series. Therefore the minimum clock period for these circuits is: T > T 2-input-xor + clock overhead Very little latency, and independent of n! This can be used as a fast counter, if the particular sequence of count values is not important. Example: micro-code micro-pc Can be used as a random number generator. Sequence is a pseudorandom sequence: numbers appear in a random sequence repeats every 2 n -1 patterns Random numbers useful in: computer graphics cryptography automatic testing Used for error detection and correction CRC (cyclic redundancy codes) ethernet uses them Galois Fields - the theory behind LFSRs LFSR circuits performs multiplication on a field. A field is defined as a set with the following: two operations defined on it: addition and multiplication closed under these operations associative and distributive laws hold additive and multiplicative identity elements additive inverse for every element multiplicative inverse for every non-zero element Example fields: set of rational numbers set of real numbers set of integers is not a field (why?) Finite fields are called Galois fields. Example: Binary numbers 0,1 with XOR as addition and AND as multiplication. Called GF(2). Spring 2003 EECS150 Lec26-ECC Page 3 Spring 2003 EECS150 Lec26-ECC Page 4

Galois Fields - The theory behind LFSRs Consider polynomials whose coefficients come from GF(2). Each term of the form x n is either present or absent. Examples: 0, 1, x, x 2, and x 7 + x 6 + 1 = 1 x 7 + 1 x 6 + 0 x 5 + 0 x 4 + 0 x 3 + 0 x 2 + 0 x 1 + 1 x 0 With addition and multiplication these form a field: Add : XOR each element individually with no carry: x 4 + x 3 + + x + 1 + x 4 + + x 2 + x x 3 + x 2 + 1 Multiply : multiplying by x n is like shifting to the left. x 2 + x + 1 x + 1 x 2 + x + 1 x 3 + x 2 + x x 3 + 1 Spring 2003 EECS150 Lec26-ECC Page 5 Galois Fields - The theory behind LFSRs These polynomials form a Galois (finite) field if we take the results of this multiplication modulo a prime polynomial p(x). A prime polynomial is one that cannot be written as the product of two non-trivial polynomials q(x)r(x) Perform modulo operation by subtracting a (polynomial) multiple of p(x) from the result. If the multiple is 1, this corresponds to XOR-ing the result with p(x). For any degree, there exists at least one prime polynomial. With it we can form GF(2 n ) Additionally, Every Galois field has a primitive element, α, such that all non-zero elements of the field can be expressed as a power of α. By raising α to powers (modulo p(x)), all non-zero field elements can be formed. Certain choices of p(x) make the simple polynomial x the primitive element. These polynomials are called primitive, and one exists for every degree. For example, x 4 + x + 1 is primitive. So α = x is a primitive element and successive powers of α will generate all non-zero elements of GF(16). Example on next slide. Spring 2003 EECS150 Lec26-ECC Page 6

Galois Fields - The theory behind LFSRs α 0 = 1 α 1 = x α 2 = x 2 α 3 = x 3 α 4 = x + 1 α 5 = x 2 + x α 6 = x 3 + x 2 α 7 = x 3 + x + 1 α 8 = x 2 + 1 α 9 = x 3 + x α 10 = x 2 + x + 1 α 11 = x 3 + x 2 + x α 12 = x 3 + x 2 + x + 1 α 13 = x 3 + x 2 + 1 α 14 = x 3 + 1 α 15 = 1 Note this pattern of coefficients matches the bits from our 4-bit LFSR example. α 4 = x 4 mod x 4 + x + 1 = x 4 xor x 4 + x + 1 = x + 1 In general finding primitive polynomials is difficult. Most people just look them up in a table, such as: Spring 2003 EECS150 Lec26-ECC Page 7 x 2 + x +1 x 3 + x +1 x 4 + x +1 x 5 + x 2 +1 x 6 + x +1 x 7 + x 3 +1 x 8 + x 4 + x 3 + x 2 +1 x 9 + x 4 +1 x 10 + x 3 +1 x 11 + x 2 +1 Primitive Polynomials x 12 + x 6 + x 4 + x +1 x 13 + x 4 + x 3 + x +1 x 14 + x 10 + x 6 + x +1 x 15 + x +1 x 16 + x 12 + x 3 + x +1 x 17 + x 3 + 1 x 18 + x 7 + 1 x 19 + x 5 + x 2 + x+ 1 x 20 + x 3 + 1 x 21 + x 2 + 1 x 22 + x +1 x 23 + x 5 +1 x 24 + x 7 + x 2 + x +1 x 25 + x 3 +1 x 26 + x 6 + x 2 + x +1 x 27 + x 5 + x 2 + x +1 x 28 + x 3 + 1 x 29 + x +1 x 30 + x 6 + x 4 + x +1 x 31 + x 3 + 1 x 32 + x 7 + x 6 + x 2 +1 Galois Field Hardware Multiplication by x shift left Taking the result mod p(x) XOR-ing with the coefficients of p(x) when the most significant coefficient is 1. Obtaining all 2 n -1 non-zero Shifting and XOR-ing 2 n -1 times. elements by evaluating x k for k = 1,, 2 n -1 Spring 2003 EECS150 Lec26-ECC Page 8

Building an LFSR from a Primitive Polynomial Error Correction with LFSRs For k-bit LFSR number the flip-flops with FF1 on the right. The feedback path comes from the Q output of the leftmost FF. Find the primitive polynomial of the form x k + + 1. The x 0 = 1 term corresponds to connecting the feedback directly to the D input of FF 1. Each term of the form x n corresponds to connecting an xor between FF n and n+1. 4-bit example, uses x 4 + x + 1 x 4 FF4 s Q output x xor between FF1 and FF2 1 FF1 s D input Q4 Q3 Q2 Q1 To build an 8-bit LFSR, use the primitive polynomial x 8 + x 4 + x 3 + x 2 + 1 and connect xors between FF2 and FF3, FF3 and FF4, and FF4 and FF5. Q8 Q7 Q6 Q5 CLK Q4 Q3 Q2 Q1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 1 xor 1 0 0 1 1 0 1 0 1 0 0 xor 1 0 0 1 1 0 0 1 1 1 11 message bits 4 check bits bit sequence: 1 1 0 0 1 0 0 0 1 1 1 0 0 0 0 Q4 CLK Q3... 1 0 1 0 Q2 Q1 serial_in CLK Spring 2003 EECS150 Lec26-ECC Page 9 Spring 2003 EECS150 Lec26-ECC Page 10

Error Correction with LFSRs XOR Q4 with incoming bit sequence. Now values of shift-register don t follow a fixed pattern. Dependent on input sequence. Look at the value of the register after 15 cycles: 1010 Note the length of the input sequence is 2 4-1 = 15 (same as the number of different nonzero patters for the original LFSR) Binary message occupies only 11 bits, the remaining 4 bits are 0000. They would be replaced by the final result of our LFSR: 1010 If we run the sequence back through the LFSR with the replaced bits, we would get 0000 for the final result. 4 parity bits, neutralize the sequence with respect to the LFSR. 1 1 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 0 1 0 0 0 0 0 If parity bits not all zero, an error occurred in transmission. If number of parity bits = log total number of bits, then single bit errors can be corrected. Using more parity bits allows more errors to be detected. Ethernet uses 32 parity bits per frame (packet) with 16-bit LFSR. Spring 2003 EECS150 Lec26-ECC Page 11 Division 1001 Quotient Divisor 1000 1001010 Dividend 1000 10 101 1010 1000 10 Remainder (or Modulo result) See how big a number can be subtracted, creating quotient bit on each step Binary 1 * divisor or 0 * divisor Dividend = Quotient x Divisor + Remainder sizeof(dividend) = sizeof(quotient) + sizeof(divisor) 3 versions of divide, successive refinement Spring 2003 EECS150 Lec26-ECC Page 12

DIVIDE HARDWARE Version 1 64-bit Divisor register, 64-bit adder/subtractor, 64-bit Remainder register, 32-bit Quotient register Divide Algorithm Version 1 Takes n+1 steps for n-bit Quotient & Rem. Remainder Quotient Divisor 00000111 0000 00100000 Start: Place Dividend in Remainder 1. Subtract the Divisor register from the Remainder register, and place the result in the Remainder register. add/sub Divisor 64 bits Shift Right Quotient 32 bits Shift Left 7 10 2 10 Remainder 0 Test 2a. Shift the Quotient register to the left setting the new rightmost bit to 1. Remainder Remainder < 0 2b. Restore the original value by adding the Divisor register to the Remainder register, & place the sum in the Remainder register. Also shift the Quotient register to the left, setting the new least significant bit to 0. Remainder Write Control 64 bits Spring 2003 EECS150 Lec26-ECC Page 13 3. Shift the Divisor register right 1 bit. n+1 repetition? No: < n+1 repetitions Yes: n+1 repetitions (n = 4 here) Spring 2003 EECS150 Lec26-ECC Page 14 Done

Version 1 Division Example 7/2 Iteration step quotient divisor remainder 0 Initial values 0000 0010 0000 0000 0111 1 1: rem=rem-div 0000 0010 0000 1110 0111 2b: rem<0 +div, sll Q, Q0=0 0000 0010 0000 0000 0111 3: shift div right 0000 0001 0000 0000 0111 2 1: rem=rem-div 0000 0001 0000 1111 0111 2b: rem<0 +div, sll Q, Q0=0 0000 0001 0000 0000 0111 3: shift div right 0000 0000 1000 0000 0111 3 1: rem=rem-div 0000 0000 1000 1111 1111 2b: rem<0 +div, sll Q, Q0=0 0000 0000 1000 0000 0111 3: shift div right 0000 0000 0100 0000 0111 4 1: rem=rem-div 0000 0000 0100 0000 0011 2a: rem 0 sll Q, Q0=1 0001 0000 0100 0000 0011 3: shift div right 0001 0000 0010 0000 0011 5 1: rem=rem-div 0001 0000 0010 0000 0001 2a: rem 0 sll Q, Q0=1 0011 0000 0010 0000 0001 3: shift div right 0011 0000 0001 0000 0001 Observations on Divide Version 1 1/2 bits in divisor always 0 1/2 of 64-bit adder is wasted 1/2 of divisor is wasted Instead of shifting divisor to right, shift remainder to left? 1 st step cannot produce a 1 in quotient bit (otherwise quotient 2 n ) switch order to shift first and then subtract, can save 1 iteration Spring 2003 EECS150 Lec26-ECC Page 15 Spring 2003 EECS150 Lec26-ECC Page 16

DIVIDE HARDWARE Version 2 32-bit Divisor register, 32-bit ALU, 64-bit Remainder register, 32-bit Quotient register Divide Algorithm Version 2 Remainder Quotient Divisor 00000111 0000 0010 7 10 2 10 Start: Place Dividend in Remainder 1. Shift the Remainder register left 1 bit. 2. Subtract the Divisor register from the left half of the Remainder register, & place the result in the left half of the Remainder register. Divisor Remainder 0 Test Remainder Remainder < 0 32 bits add/sub Remainder 64 bits Shift Left Write Quotient 32 bits Control Shift Left 3a. Shift the Quotient register to the left setting the new rightmost bit to 1. 3b. Restore the original value by adding the Divisor register to the left half of the Remainder register, &place the sum in the left half of the Remainder register. Also shift the Quotient register to the left, setting the new least significant bit to 0. nth repetition? No: < n repetitions Spring 2003 EECS150 Lec26-ECC Page 17 Yes: n repetitions (n = 4 here) Spring 2003 EECS150 Lec26-ECC Done Page 18

Observations on Divide Version 2 Eliminate Quotient register by combining with Remainder as shifted left. Start by shifting the Remainder left as before. Thereafter loop contains only two steps because the shifting of the Remainder register shifts both the remainder in the left half and the quotient in the right half The consequence of combining the two registers together and the new order of the operations in the loop is that the remainder will shifted left one time too many. Thus the final correction step must shift back only the remainder in the left half of the register DIVIDE HARDWARE Version 3 32-bit Divisor register, 32-bit adder/subtractor, 64-bit Remainder register, (0-bit Quotient reg) Divisor 32-bit ALU HI 32 bits Remainder (Quotient) 64 bits LO Shift Left Write Control Spring 2003 EECS150 Lec26-ECC Page 19 Spring 2003 EECS150 Lec26-ECC Page 20

Divide Algorithm Version 3 Remainder Divisor 0000 0111 0010 7 10 2 10 3a. Shift the Remainder register to the left setting the new rightmost bit to 1. Remainder 0 Start: Place Dividend in Remainder 1. Shift the Remainder register left 1 bit. 2. Subtract the Divisor register from the left half of the Remainder register, & place the result in the left half of the Remainder register. Test Remainder Remainder < 0 3b. Restore the original value by adding the Divisor register to the left half of the Remainder register, &place the sum in the left half of the Remainder register. Also shift the Remainder register to the left, setting the new least significant bit to 0. Observations on Divide Version 3 Same Hardware as shift and add multiplier: just 63-bit register to shift left or shift right Signed divides: Simplest is to remember signs, make positive, and complement quotient and remainder if necessary Note: Dividend and Remainder must have same sign Note: Quotient negated if Divisor sign & Dividend sign disagree e.g., 7 2 = 3, remainder = 1 Possible for quotient to be too large: if divide 64-bit integer by 1, quotient is 64 bits ( called saturation ) *upper-half nth repetition? No: < n repetitions Yes: n repetitions (n = 4 here) Spring 2003 Done. Shift left EECS150 half of Lec26-ECC Remainder right 1 bit. Page 21 Spring 2003 EECS150 Lec26-ECC Page 22