
Erstellung eines plattformunabhngigen echtzeitfhigen
COFDM-Modulator

Sprache
	C
	? warum nich Ada
	?? warum nicht JAVA!
	v.Neumann / Harvard -Architektur
	Software engineering

Hardware independence
	Little/Big endian ??

Speicherbedarf
Strukturierte Analyse

printf befehle ersetzen

Libs
	libCOFDMio
	libCOFDMprofile

Makefile
	erst mal ein anderes anschauen

echtzeitfhig
	definierte antwortzeiten
	Prozessrechentechnik


CONV:   Conv-Coder
	+ conv-step 1:4
	- conv-step 8:32
	- conv-coder + punktierer kombinieren ?

ETI:
	+ sort der SubStreams korrigiert
	ETI-checks:
	+ crc-header crc-mainchannel
	+ crc-8bit tablelookup
	- crc-32bit on the fly algorithm
	additionally
	- framecount <= 249
	- NST <= 64
	- frame padding auf daten checken
	- FL mit sad's vergleichen
	- ueberschneidung von sbchannel pruefen
	leading ERR/FSYNC implementation!

PRBS:
	+ prbs_step  1 (keine Tabelle)
	+ prbs_step 32 (Tabelle von 511*32bit)
	- prbs minimaltabelle von 16*32bit

interleave:
	+minimaltabelle

time_config:
	+mathias algorithmus, nicht seriell
	-serielle version
	-compressed CC tabs

Puncture&Convolution:
	+speedup durch "splicen"
	+Tailvektor auf WORD-Size expandieren
	-speedup durch byte-weises berechnen (jetzt bitweise)

FFT TODO
	769 Duale Knoten ungleich Null
	FFT-berechenbar durch 1536+2..+4..+8..+16.....256+3*2048 Knoten
	11*2048/18942=0.108 => 11 Prozent speed-up

OFDM
	-compressed differential symbol
	-linear preemphasize

REEDSOLOMON TODO

bin_poly:
	calctabs noch rudimentaer

berlekamp
	reverting syn and A


PROFILE - Linux 1Frame(cycles==10ms)
 idx 3 <conv_punct> calls 186  cycles 10
 idx 4 <convtail> calls 32  cycles 0
 idx 5 <ifft> calls 77  cycles 136
 idx 9 <calc_pi> calls 186  cycles 2
 idx 10 <mst symbol> calls 72  cycles 51
 idx 11 <fic symbol> calls 3  cycles 1
 idx 12 <interleaver> calls 2056  cycles 6
 idx 13 <time config> calls 2  cycles 1
PROFILE - Sun Sparc c366 1Frame(cycles==us)
 idx 3 <conv_punct> calls 186  cycles 350000
 idx 4 <convtail> calls 32  cycles 0
 idx 5 <ifft> calls 78  cycles 2150000
 idx 9 <calc_pi> calls 186  cycles 90000
 idx 10 <mst symbol> calls 72  cycles 1390000
 idx 11 <fic symbol> calls 3  cycles 30000
 idx 12 <interleaver> calls 2056  cycles 160000
 idx 13 <time config> calls 3  cycles 0
 idx 14 <frames complete> calls 78  cycles 371000

/* first bench !
	fft(2048) FLOATING-POINT!!!
	ifft(2048)
*/
test_demo fft starting
NORMAL COMPLETION: 42695080 cycles
42695080

test_demo fft starting
NORMAL COMPLETION: 42695080 cycles 
real  4:46:42.1
user  4:39:21.5
sys         0.6

/* Fehler */
*** ERROR!   line 19448: E9999: RL249 defined differently in each pass
        RL249:     ; CALL OCCURS
*** ERROR!   line 6678: E0800: Offset too large
                   STW     .D2     B4,*+B14(_prbs_reg)
>> C60 15-bit disp overflow at 0000a66a in section .text, file /import/home.hi213001/guest52/projekt/lib//libCOFDM_c6x.a

/* Neuer FFT-Alg */
(short int)
time 681208 fuer fft/ifft+2*reversal 1024 Punkte
NORMAL COMPLETION: 12640508 cycles (inclusive init!)
real  4:53:44.1
user  1:30:33.7
sys         0.4
(int) time 884972

/* framebench auf c6x */
------- Profile ----------
  4 <        conv_punct> calls:    19,  cycles/call:   67596, cycles: 1284341
  5 <          convtail> calls:     4,  cycles/call:     445, cycles:    1780
  6 <              ifft> calls:    11,  cycles/call:  662734, cycles: 7290074
 10 <           calc_pi> calls:    19,  cycles/call:     299, cycles:    5686
 11 <        mst symbol> calls:     7,  cycles/call:  375695, cycles: 2629869
 12 <        fic symbol> calls:     3,  cycles/call:  314867, cycles:  944601
 13 <       interleaver> calls:   337,  cycles/call:     898, cycles:  302626
 14 <       time config> calls:     2,  cycles/call:   58682, cycles:  117365
 15 <   frames complete> calls:    11,  cycles/call: 1022286, cycles:11245148
framecon exit 0 frames
/* framebench mit fast-ConvEnc */
NORMAL COMPLETION: 37791478 cycles
------- Profile ----------
  6 <              ifft> calls:    11,  cycles/call: 662734, cycles: 7290074
 10 <           calc_pi> calls:    19,  cycles/call:   299, cycles:   5686
 11 <        mst symbol> calls:     7,  cycles/call: 266966, cycles: 1868765
 12 <        fic symbol> calls:     3,  cycles/call: 205095, cycles: 615285
 13 <       interleaver> calls:   337,  cycles/call:   898, cycles: 302626
 14 <       time config> calls:     2,  cycles/call: 58682, cycles: 117365
 15 <   frames complete> calls:    11,  cycles/call: 923157, cycles: 10154728
framecon exit 0 frames
NORMAL COMPLETION: 36995733 cycles
/* FFT-burrus */
	   FFT-r2 2048   reversal      IFFT+reversal
time stop1 779019, stop2 1062462, stop 2125228
	                  283443       1062766
	   FFT-r4 1024   reversal-r4   IFFT-r2+reversal-r2      
time stop1 348843, stop2 441810, stop  934044
/* framebench mit alt3_conv,alt2_ofdm,fft_burrus */
------- Profile ----------
  4 <        conv_punct> calls:    19,  cycles/call:   12444, cycles:   236438
  6 <              ifft> calls:    11,  cycles/call:  607951, cycles:  6687461
 10 <           calc_pi> calls:    19,  cycles/call:     299, cycles:     5686
 11 <        mst symbol> calls:     7,  cycles/call:  156561, cycles:  1095927
 12 <        fic symbol> calls:     3,  cycles/call:   71414, cycles:   214244
 13 <       interleaver> calls:   337,  cycles/call:     898, cycles:   302626
 14 <       time config> calls:     2,  cycles/call:   58682, cycles:   117365
 15 <  symbols complete> calls:    11,  cycles/call: 1042383, cycles: 11466217
 20 <             dqpsk> calls:    10,  cycles/call:   43748, cycles:   437480
 22 <      fft reversal> calls:    11,  cycles/call:  281982, cycles:  3101802
 23 <  outer interleave> calls:   337,  cycles/call:    1517, cycles:   511229
framecon exit 0 frames
NORMAL COMPLETION: 39618227 cycles
/* framebench mit alt3_conv,alt2_ofdm,fft_burrus,block_interl ohne -o2 */
------- Profile ----------
  4 <        conv_punct> calls:    19,  cycles/call: 50951, cycles: 968074
 10 <           calc_pi> calls:    19,  cycles/call:   339, cycles:   6451
 11 <        mst symbol> calls:     7,  cycles/call: 302039, cycles: 2114279
 12 <        fic symbol> calls:     3,  cycles/call: 223722, cycles: 671166
 13 <       interleaver> calls:     9,  cycles/call: 60836, cycles: 547525
 14 <       time config> calls:     2,  cycles/call: 93378, cycles: 186757
 15 <  symbols complete> calls:    11,  cycles/call: 295428, cycles: 3249711
 20 <             dqpsk> calls:    10,  cycles/call: 123228, cycles: 1232280
/* framebench mit super alt3_conv,alt2_ofdm,fft_burrus,block_interl mit-o3 */
------- Profile ----------
  2 <          overhead> calls:     1,  cycles/call:    241, cycles:     241
  4 <        conv_punct> calls:    19,  cycles/call:  10942, cycles:  207905
 10 <           calc_pi> calls:    19,  cycles/call:    299, cycles:    5686
 11 <        mst symbol> calls:     7,  cycles/call: 106112, cycles:  742789
 12 <        fic symbol> calls:     3,  cycles/call:  61236, cycles:  183708
 13 <       interleaver> calls:     9,  cycles/call:  35950, cycles:  323555
 14 <       time config> calls:     2,  cycles/call:  58682, cycles:  117365
 15 <  symbols complete> calls:    11,  cycles/call: 109649, cycles: 1206143
 20 <             dqpsk> calls:    10,  cycles/call:  36438, cycles:  364380
framecon exit 0 frames
NORMAL COMPLETION: 79875394 cycles
real  9:26:14.0
/* rsbench mit 7 Fehlern */
------- Profile ----------
  2 <          overhead> calls:     1,  cycles/call:   235, cycles:    235
 17 <         berlekamp> calls:     1,  cycles/call: 17990, cycles:  17990
 19 <        rs correct> calls:     1,  cycles/call: 269366, cycles: 269366
/* rsbench no errors */
------- Profile ----------
  2 <          overhead> calls:     1,  cycles/call:   235, cycles:    235
 19 <        rs correct> calls:     1,  cycles/call: 156510, cycles: 156510
/* 
------- Profile ----------
  2 <          overhead> calls:     1,  cycles/call:     241, cycles:      241
  4 <        conv_punct> calls:    19,  cycles/call:   10942, cycles:   207905
  6 <              ifft> calls:    11,  cycles/call:  683811, cycles:  7521921
 10 <           calc_pi> calls:    19,  cycles/call:     299, cycles:     5686
 11 <        mst symbol> calls:     7,  cycles/call:   85897, cycles:   601281
 12 <        fic symbol> calls:     3,  cycles/call:   61236, cycles:   183708
 13 <       interleaver> calls:     9,  cycles/call:   20226, cycles:   182038
 14 <       time config> calls:     1,  cycles/call:  110679, cycles:   110679
 15 <  symbols complete> calls:    11,  cycles/call: 1085831, cycles: 11944141
 16 <          crc_calc> calls:     8,  cycles/call:    9229, cycles:    73834
 20 <             dqpsk> calls:    10,  cycles/call:   36438, cycles:   364380
 22 <      fft reversal> calls:    11,  cycles/call:  289116, cycles:  3180276
Symbol ohne FFT+Rreversal:112904 (protection intervall)
Speedup des MST-Symbols insgesamt Faktor 4.37
ETI-Profil m1prot1_3.eti:
Raw Stream Characterisation
 id        1     2    3    4    5    6
 sad     416   451  503  573  657    0
 TPL      16    16   16   16   16   16
 STL      12    18   24   30   36  144
=> durchschnittliches ProtInter: 15.017
=> Frameausnutzung 761/864
=> Coderate 23.017/32
=> Minimale Coderate 9/32
=> WorstCase: conv_punct*23/9*864/761
== 31748 Cyclen
=> WorstCase: mstsymbol: 106703 !!!!!

