/*
 * R. Winters 7/22/06 lfsr.c
 * Create a Pseudo Random Bit Stream using a 
 * Linear Feeback Shift Register
 * compile: g++ -o lfsr.exe lfsr.c
 */
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7;
    int D0, D1, D2, D3, D4, D5, D6, D7;
    int feedback = 1;

// initialize the flop data at time zero.
    D0 = 1;
    D1 = 0;
    D2 = 1;
    D3 = 0;
    D4 = 1;
    D5 = 0;
    D6 = 1;
    D7 = 0;

// Create a Clock, shift data each time through loop.
    int cycles=512;

    for (int t=0; t<cycles; t++)
    {
	Q0 = D0;
	Q1 = D1;
	Q2 = D2;
	Q3 = D3;
	Q4 = D4;
	Q5 = D5;
	Q6 = D6;
	Q7 = D7;

// XOR feedback function.
	if (Q6 != Q7 ) { feedback = 1; } else { feedback = 0; }

	D0=feedback;
	D1=Q0;
	D2=Q1;
	D3=Q2;
	D4=Q3;
	D5=Q4;
	D6=Q5;
	D7=Q6;

	printf ("t=%d, %d%d%d%d%d%d%d%d %d\n", t, Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, feedback);
//	printf ("t=%d, Q3=%d\n", t, Q3);
    }
}






