From: anastas Date: Wed, 9 Aug 2006 15:02:43 +0000 (+0000) Subject: Minor Changes X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=c4b3487f753d15f45cf38a704930ee4bc8ec97c5;p=debian%2Fgnuradio Minor Changes git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@3228 221aa14e-8319-0410-a670-987f0aec2ac5 --- diff --git a/gr-trellis/doc/gr-trellis.xml b/gr-trellis/doc/gr-trellis.xml index 9aacaeab..f34ba78e 100644 --- a/gr-trellis/doc/gr-trellis.xml +++ b/gr-trellis/doc/gr-trellis.xml @@ -102,12 +102,12 @@ in how the outside world interprets these input and output integer symbols. Here is an example of an FSM describing the (2,1) CC with constraint length 3 and generator polynomial matrix -(1+D+D2 1+D2) +(1+D+D2 , 1+D2) from Proakis-Salehi pg. 779. -(2,1) CC with generator polynomials (1+D+D<superscript>2</superscript> 1+D<superscript>2</superscript>) +(2,1) CC with generator polynomials (1+D+D<superscript>2</superscript> , 1+D<superscript>2</superscript>) This CC accepts 1 bit at a time, and outputs 2 bits at a time. @@ -137,7 +137,7 @@ sk xk sk+1 The "output-symbol" function OS(,) can be given by -sk xk yk +sk xk yk 0 0 0 0 1 3 1 0 3 @@ -213,7 +213,8 @@ ways to construct an FSM. fsm(const char *name); -This information has to be in the following format + +This information has to be in the following format: I S O @@ -227,7 +228,9 @@ OS(1,0) OS(1,1) ... OS(1,I-1) ... OS(S-1,0) OS(S-1,1) ... OS(S-1,I-1) -For instance, the file containing the information for the example mentioned above is of the form + + +For instance, the file containing the information for the example mentioned above is of the form: 2 4 4 @@ -241,6 +244,7 @@ OS(S-1,0) OS(S-1,1) ... OS(S-1,I-1) 1 2 2 1 + @@ -324,7 +328,6 @@ import fsm_utils def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed): fg = gr.flow_graph () - # TX src = gr.lfsr_32k_source_s() src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts @@ -332,25 +335,21 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed): enc = trellis.encoder_ss(f,0) # initial state = 0 mod = gr.chunks_to_symbols_sf(constellation,dimensionality) - # CHANNEL add = gr.add_ff() noise = gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed) - # RX metrics = trellis.metrics_f(f.O(),dimensionality,constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi va = trellis.viterbi_s(f,K,0,-1) # Put -1 if the Initial/Final states are not set. fsmi2s = gr.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack FSM input symbols to shorts dst = gr.check_lfsr_32k_s(); - fg.connect (src,src_head,s2fsmi,enc,mod) fg.connect (mod,(add,0)) fg.connect (noise,(add,1)) fg.connect (add,metrics) fg.connect (metrics,va,fsmi2s,dst) - fg.run() @@ -365,8 +364,6 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed): return (ntotal,ntotal-nright) - - def main(args): nargs = len (args) if nargs == 3: @@ -394,8 +391,6 @@ def main(args): Es = Es + constellation[i]**2 Es = Es / (len(constellation)/dimensionality) N0=Es/pow(10.0,esn0_db/10.0); # noise variance - - tot_s=0 terr_s=0 @@ -531,6 +526,7 @@ For each transmitted symbol c_k=(ck1,ck2,...,ckN) we receive a noisy version r_k=(rk1,rk2,...,rkN). + # CHANNEL add = gr.add_ff() noise = gr.noise_source_f(gr.GR_GAUSSIAN,math.sqrt(N0/2),seed) @@ -592,7 +588,7 @@ The function returns the number of shorts and the number of shorts in error. Obs 16-bit-symbol error rate. -return (ntotal,ntotal-nright) + return (ntotal,ntotal-nright) @@ -631,6 +627,7 @@ Optimize the VA code. Provide implementation of soft-input soft-output (SISO) decoders for potential use in concatenated systems. Also a host of suboptimal decoders, eg, sphere decoding, M- and T- algorithms, sequential decoding, etc. +can be implemented. @@ -638,8 +635,8 @@ decoders, eg, sphere decoding, M- and T- algorithms, sequential decoding, etc. Although turbo decoding is rediculously slow in software, -we can design it in pronciple. The question is, should -we use the FSM and SISO abstractions and cnnect them +we can design it in principle. One question is, whether we should +use the encoder, and SISO blocks and connect them through GNU radio or should we implement turbo-decoding as a single block (issues with buffering between blocks).