#!/usr/bin/perl ############################################################################### # # # ---=== softDVB-T ===--- # # (software generated DVB-T transmitter) # # # ############################################################################### # # # Authors: Marcin Szelest SQ9DJJ Marcin.Szelest@gmail.com # # Slawomir Lyszkowski slyszkowski@yahoo.pl # # # # File contents: # # Behaviaral model of Energy Dispersal block. # # # # File purpose: # # Verification of gnuradio Energy Dispersal block. # ############################################################################### # transmit 8 randomized data frames $seed = 0b_100_1010_1000_0000; $input = ""; $output = ""; # transmit negated sync $output .= sprintf("%08b", 0xb8); # transmit first xored packet for (1..187*8) { $xored = ($seed & 0x1)^(($seed & 0x2)>>1); $seed = ($xored << 14) + ($seed >> 1); # generate random data input $rand = int rand(2); $input .= $rand; $output .= $rand^$xored; } # transmit next 7 xored packets with synchronization byte for (1..7) { #transmit normal sync $output .= sprintf("%08b", 0x47); #do 8 empty LSFR cycles for (1..8) { $xored = ($seed & 0x1)^(($seed & 0x2)>>1); $seed = ($xored << 14) + ($seed >> 1); } # transmit xored data for (1..187*8) { $xored = ($seed & 0x1)^(($seed & 0x2)>>1); $seed = ($xored << 14) + ($seed >> 1); # generate random data input $rand = int rand(2); $input .= $rand; $output .= $rand^$xored; } } # print results print " src_data = (".to_hex("$input"); print " expected_result = (".to_hex("$output"); sub to_hex ($) { @tab = split("", $_[0]); $line = ""; while (@tab) { $bin = 0; for (1..8) { $bin = $bin << 1 | shift(@tab); } $line .= sprintf("0x%02x, ", $bin); } $line .= "\n"; $line =~ s/\, \n/\)\n/; return $line }