Green University of Bangladesh: Lab Report 6

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

GREEN UNIVERSITY OF BANGLADESH

DEPARTMENT OF COMPUTER SCIENCE AND


ENGINEERING

COURSE TITLE: Data Communication Lab


COURSE CODE: CSE308

Lab Report 6

DATE OF SUBMISSION: 24/04/2021

SUBMITTED TO SUBMITTED BY
NAME: Farhana Akter Sunny NAME: Tanbir Hossen Sarkar
DESIGNATION: Lecturer STUDENT ID: 191902062
DEPARTMENT OF CSE
BATCH NO : 191
GREEN UNIVERSITY OF
DEPARTMENT OF CSE
BANGLADESH

REMARKS
Topic: CRC implementation.

Code done by Python:


#encoded and remainder Data:
def xor(a, b):
result = []

for i in range(1, len(b)):


if a[i] == b[i]:
result.append('0')
else:
result.append('1')

return ''.join(result)

def m2d(dd, ds):

pick = len(ds)

tmp = dd[0 : pick]

while pick < len(dd):

if tmp[0] == '1':

tmp = xor(ds, tmp) + dd[pick]

else:
tmp = xor('0'*pick, tmp) + dd[pick]

pick += 1

if tmp[0] == '1':
tmp = xor(ds, tmp)
else:
tmp = xor('0'*pick, tmp)

checkword = tmp
return checkword

def encodeData(data, key):

l_key = len(key)
appended_data = data + '0'*(l_key-1)
remainder = m2d(appended_data, key)

codeword = data + remainder


print("Remainder :", remainder)
print("Encoded Data :",codeword)

data = "100100"
key = "1101"
encodeData(data, key)

#Remainder and codeword :

from math import log, ceil

def CRC(dw, gen):


dword = int(dw, 2)
l_gen = len(gen)

div= dword << (l_gen - 1)

shft = ceil(log(div+ 1, 2)) - l_gen

gen = int(gen, 2)

while div>= gen or shft >= 0:

rem = (div>> shft) ^ gen


div= (div& ((1 << shft) - 1)) | (rem << shft)

shft = ceil(log(div+1, 2)) - l_gen

cd = dword << (l_gen-1)|div


print("Remainder:", bin(div).lstrip("-0b"))
print("Codeword :", bin(cd).lstrip("-0b"))

dw = "10011101"
gen = "1001"
CRC(dw, gen)
Output:

You might also like