Implement a LFSR.cpp file that includes the header file below. Reference : http:
ID: 3805022 • Letter: I
Question
Implement a LFSR.cpp file that includes the header file below.
Reference :
http://bits.usc.edu/cs103/coursework/lfsr/
//Header File
#ifndef LFSR_H
#define LFSR_H
class LFSR
{
private:
Queue q; // Queue object
int t1, t2; // Tap index values - two integers (peek offsets from front of queue)
bool XOR(int a, int b);
// XOR(...)
// Exclusive OR function
// a | b | a XOR b
// ----------------
// 0 | 0 | 0
// 0 | 1 | 1
// 1 | 0 | 1
// 1 | 1 | 0
public:
LFSR(string seed, int tap1, int tap2);
// LFSR(...)
// Initializes t1 and t2 to tap1 and tap2, respectively
// and parses seed string to loading queue with starting values
void NextState();
// NextState()
// Iterator method computes and queues next pseudo-random number in sequence
// Algorithm
// (1) temp = Peek(tap1) XOR Peek(tap2)
// (2) Dequeue
// (3) Enqueue(temp)
Explanation / Answer
#include"LFSR.hpp"
#include<iostream>
using namespace std;
//You should Deque instead of Queue as std::Deque q so that you can peek without popping the element
LFSR::LFSR(std::string seed,int tap1,int tap2)//Constructor
{
t1 = tap1;
t2 = tap2;
std::string::iterator it;
int index = 0;
for(it = seed.begin();it < seed.end();it++)//Parsing string into Deque by iterating each character in the string
{
q.push_back(int(*it));
}
}
LFST::NextState()
{
int temp = XOR(q[tap1],q[tap2]);//peek(tap1) XOR peek(tap2)
q.pop_front();//dequeing first element
q.push_back(temp);//pushing the bit at the end of the deque
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.