#!/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 Outer Interleaver block # # # # File purpose: # # Verification of gnuradio Outer Interleaver block. # ############################################################################### use Switch; # Let's define 11 FIFO @arr1 = ("0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00"); @arr2 = (@arr1, @arr1); @arr3 = (@arr2, @arr1); @arr4 = (@arr3, @arr1); @arr5 = (@arr4, @arr1); @arr6 = (@arr5, @arr1); @arr7 = (@arr6, @arr1); @arr8 = (@arr7, @arr1); @arr9 = (@arr8, @arr1); @arr10 = (@arr9, @arr1); @arr11 = (@arr10, @arr1); for($i=0; $i<204*10; $i++) { @msg[$i] = sprintf("0x%02x", int rand 256) } push @msg, "zzzz"; @msg_cpy = @msg; $in = shift @msg; $i = 0; do { switch ($i) { case 0 { push @out, $in } case 1 { unshift @arr1 , $in; push @out, pop @arr1 } case 2 { unshift @arr2 , $in; push @out, pop @arr2 } case 3 { unshift @arr3 , $in; push @out, pop @arr3 } case 4 { unshift @arr4 , $in; push @out, pop @arr4 } case 5 { unshift @arr5 , $in; push @out, pop @arr5 } case 6 { unshift @arr6 , $in; push @out, pop @arr6 } case 7 { unshift @arr7 , $in; push @out, pop @arr7 } case 8 { unshift @arr8 , $in; push @out, pop @arr8 } case 9 { unshift @arr9 , $in; push @out, pop @arr9 } case 10 { unshift @arr10 , $in; push @out, pop @arr10 } case 11 { unshift @arr11 , $in; push @out, pop @arr11 } } if ($i<11) { $i++ } else { $i = 0 } $in = shift @msg; # print "@arr0\n"; print "@arr1\n"; print "@arr2\n"; print "@arr3\n"; print "@arr4\n"; print "@arr5\n"; print "@arr6\n"; print "@arr7\n"; print "@arr8\n"; print "@arr9\n"; print "@arr10\n"; print "@arr11\n\n"; # ; } while ($in !~m /zzzz/); # print results print "\tsrc_data = ("; for ($i=0; $i<$#msg_cpy-1; $i++) { print "@msg_cpy[$i], " } print"@msg_cpy[$#msg-1])\n"; print "\texpected_result = ("; for ($i=0; $i<$#out; $i++) { print "@out[$i], " } print"@out[$#out])\n";