Pseudorandom binary sequence

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

A pseudorandom binary sequence (PRBS) is a binary sequence that, while generated with a deterministic algorithm, is difficult to predict[1] and exhibits statistical behavior similar to a truly random sequence. PRBS generators are used in telecommunication, such as in analog-to-information conversion,[2] but also in encryption, simulation, correlation technique and time-of-flight spectroscopy.


A binary sequence (BS) is a sequence of bits, i.e.

for .

A BS consists of ones and zeros.

A BS is a pseudorandom binary sequence (PRBS) if[3] its autocorrelation function, given by

has only two values:


is called the duty cycle of the PRBS, similar to the duty cycle of a continuous time signal. For a maximum length sequence, where , the duty cycle is 1/2.

A PRBS is 'pseudorandom', because, although it is in fact deterministic, it seems to be random in a sense that the value of an element is independent of the values of any of the other elements, similar to real random sequences.

A PRBS can be stretched to infinity by repeating it after elements, but it will then be cyclical and thus non-random. In contrast, truly random sequence sources, such as sequences generated by radioactive decay or by white noise, are infinite (no pre-determined end or cycle-period). However, as a result of this predictability, PRBS signals can be used as reproducible patterns (for example, signals used in testing telecommunications signal paths).[4]

Practical implementation[edit]

Pseudorandom binary sequences can be generated using linear-feedback shift registers.[5]

Some common[6][7][8][9][10] sequence generating monic polynomials are

PRBS11 =
PRBS15 =
PRBS20 =
PRBS23 =
PRBS31 =

An example of generating a "PRBS-7" sequence can be expressed in C as

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
    uint8_t start = 0x02;
    uint8_t a = start;
    int i;    
    for (i = 1;; i++) {
        int newbit = (((a >> 6) ^ (a >> 5)) & 1);
        a = ((a << 1) | newbit) & 0x7f;
        printf("%x\n", a);
        if (a == start) {
            printf("repetition period is %d\n", i);

In this particular case, "PRBS-7" has a repetition period of 127 values.


The PRBSk or PRBS-k notation (such as "PRBS7" or "PRBS-7") gives an indication of the size of the sequence. is the maximum number[4]:§3 of bits that are in the sequence. The k indicates the size of a unique word of data in the sequence. If you segment the N bits of data into every possible word of length k, you will be able to list every possible combination of 0s and 1s for a k-bit binary word, with the exception of the all-0s word.[4]:§2 For example, PRBS3 = "1011100" could be generated from .[6] If you take every sequential group of three bit words in the PRBS3 sequence (wrapping around to the beginning for the last few three-bit words), you will find the following 7 word arrangements:

  "1011100" → 101
  "1011100" → 011
  "1011100" → 111
  "1011100" → 110
  "1011100" → 100
  "1011100" → 001 (requires wrap)
  "1011100" → 010 (requires wrap)

Those 7 words are all of the possible non-zero 3-bit binary words, not in numeric order. The same holds true for any PRBSk, not just PRBS3.[4]:§2

See also[edit]


  1. ^ "PRBS Pseudo Random Bit Sequence Generation". TTi. Retrieved 21 January 2016.
  2. ^ Daponte, Pasquale; De Vito, Luca; Iadarola, Grazia; Rapuano, Sergio. "PRBS non-idealities affecting Random Demodulation Analog-to-Information Converters" (PDF).
  3. ^ Naszodi, Laszlo. "Articles on Correlation and Calibration". Archived from the original on 11 November 2013.
  4. ^ a b c d "ITU-T Recommendation O.150". October 1992.
  5. ^ Paul H. Bardell, William H. McAnney, and Jacob Savir, "Built-In Test for VLSI: Pseudorandom Techniques", John Wiley & Sons, New York, 1987.
  6. ^ a b Tomlinson, Kurt (4 February 2015). "PRBS (Pseudo-Random Binary Sequence)". Bloopist. Retrieved 21 January 2016.
  7. ^ Koopman, Philip. "Maximal Length LFSR Feedback Terms". Retrieved 21 January 2016.
  8. ^ "What are the PRBS7, PRBS15, PRBS23, and PRBS31 polynomials used in the Altera Transceiver Toolkit?". Altera. 14 February 2013. Retrieved 21 January 2016.
  9. ^ Riccardi, Daniele; Novellini, Paolo (10 January 2011). "An Attribute-Programmable PRBS Generator and Checker (XAP884)" (PDF). Xilinx. Table 3:Configuration for PRBS Polynomials Most Used to Test Serial Lines. Retrieved 21 January 2016.
  10. ^ "O.150 : General requirements for instrumentation for performance measurements on digital transmission equipment". 1997-01-06.

External links[edit]