Ejemplo n.º 1
0
def track(x, s):
    n = len(x)
    fs = s.fs

    nco.mix(x, -s.carrier_f / fs, s.carrier_p)
    s.carrier_p = s.carrier_p - n * s.carrier_f / fs
    s.carrier_p = np.mod(s.carrier_p, 1)

    cf = (s.code_f + s.carrier_f / 1540.0) / fs

    p_early = b1cp.correlate(x, s.prn, 0, s.code_p - 0.2, cf,
                             b1cp.b1cp_code(prn), b1cp.boc11)
    p_prompt = b1cp.correlate(x, s.prn, 0, s.code_p, cf, b1cp.b1cp_code(prn),
                              b1cp.boc11)
    p_late = b1cp.correlate(x, s.prn, 0, s.code_p + 0.2, cf,
                            b1cp.b1cp_code(prn), b1cp.boc11)

    if s.mode == 'FLL_WIDE':
        fll_k = 2.0
        a = p_prompt
        b = s.prompt1
        e = discriminator.fll_atan(a, b)
        s.carrier_f = s.carrier_f + fll_k * e
        s.prompt1 = p_prompt
    elif s.mode == 'FLL_NARROW':
        fll_k = 0.6
        a = p_prompt
        b = s.prompt1
        e = discriminator.fll_atan(a, b)
        s.carrier_f = s.carrier_f + fll_k * e
        s.prompt1 = p_prompt
    elif s.mode == 'PLL':
        pll_k1 = 0.1
        pll_k2 = 5.0
        e = discriminator.pll_costas(p_prompt)
        e1 = s.carrier_e1
        s.carrier_f = s.carrier_f + pll_k1 * e + pll_k2 * (e - e1)
        s.carrier_e1 = e

# code loop

    dll_k1 = 0.00002
    dll_k2 = 0.2
    s.early = np.absolute(p_early)
    s.prompt = np.absolute(p_prompt)
    s.late = np.absolute(p_late)
    if (s.late + s.early) == 0:
        e = 0
    else:
        e = (s.late - s.early) / (s.late + s.early)
    s.eml = e
    e1 = s.code_e1
    s.code_f = s.code_f + dll_k1 * e + dll_k2 * (e - e1)
    s.code_e1 = e

    s.code_p = s.code_p + n * cf
    s.code_p = np.mod(s.code_p, b1cp.code_length)

    return p_prompt, s
Ejemplo n.º 2
0
def track(x, s):
    n = len(x)
    fs = s.fs

    nco.mix(x, -s.carrier_f / fs, s.carrier_p)
    s.carrier_p = s.carrier_p - n * s.carrier_f / fs
    s.carrier_p = np.mod(s.carrier_p, 1)

    cf = (s.code_f + s.carrier_f / 2400.0) / fs

    p_early = l2cl.correlate(x, s.prn, 0, s.code_p - 0.5, cf,
                             l2cl.l2cl_code(prn))
    p_prompt = l2cl.correlate(x, s.prn, 0, s.code_p, cf, l2cl.l2cl_code(prn))
    p_late = l2cl.correlate(x, s.prn, 0, s.code_p + 0.5, cf,
                            l2cl.l2cl_code(prn))

    if s.mode == 'FLL_WIDE':
        fll_k = 3.0
        a = p_prompt
        b = s.prompt1
        e = discriminator.fll_atan(a, b)
        s.carrier_f = s.carrier_f + fll_k * e
        s.prompt1 = p_prompt
    elif s.mode == 'FLL_NARROW':
        fll_k = 0.8
        a = p_prompt
        b = s.prompt1
        e = discriminator.fll_atan(a, b)
        s.carrier_f = s.carrier_f + fll_k * e
        s.prompt1 = p_prompt
    elif s.mode == 'PLL':
        pll_k1 = 0.1
        pll_k2 = 3.5
        e = discriminator.pll_costas(
            p_prompt)  # fixme: change to pure PLL, since L2CL is a pilot
        e1 = s.carrier_e1
        s.carrier_f = s.carrier_f + pll_k1 * e + pll_k2 * (e - e1)
        s.carrier_e1 = e

# code loop

    dll_k1 = 0.00002
    dll_k2 = 0.2
    s.early = np.absolute(p_early)
    s.prompt = np.absolute(p_prompt)
    s.late = np.absolute(p_late)
    if (s.late + s.early) == 0:
        e = 0
    else:
        e = (s.late - s.early) / (s.late + s.early)
    s.eml = e
    e1 = s.code_e1
    s.code_f = s.code_f + dll_k1 * e + dll_k2 * (e - e1)
    s.code_e1 = e

    s.code_p = s.code_p + n * cf
    s.code_p = np.mod(s.code_p, l2cl.code_length)

    return p_prompt, s
Ejemplo n.º 3
0
def track(x, s, chan):
    n = len(x)
    fs = s.fs

    nco.mix(x, -s.carrier_f / fs, s.carrier_p)
    s.carrier_p = s.carrier_p - n * s.carrier_f / fs
    s.carrier_p = np.mod(s.carrier_p, 1)

    rf_carrier = 1602.0 + 0.5625 * chan
    scale_factor = rf_carrier / 5.11
    cf = (s.code_f + s.carrier_f / scale_factor) / fs

    p_early = p.correlate(x, 0, s.code_p - 0.5, cf, p.p_code())
    p_prompt = p.correlate(x, 0, s.code_p, cf, p.p_code())
    p_late = p.correlate(x, 0, s.code_p + 0.5, cf, p.p_code())

    if s.mode == 'FLL_WIDE':
        fll_k = 2.0
        a = p_prompt
        b = s.prompt1
        e = discriminator.fll_atan(a, b)
        s.carrier_f = s.carrier_f + fll_k * e
        s.prompt1 = p_prompt
    elif s.mode == 'FLL_NARROW':
        fll_k = 0.5
        a = p_prompt
        b = s.prompt1
        e = discriminator.fll_atan(a, b)
        s.carrier_f = s.carrier_f + fll_k * e
        s.prompt1 = p_prompt
    elif s.mode == 'PLL':
        pll_k1 = 0.1
        pll_k2 = 5
        e = discriminator.pll_costas(p_prompt)
        e1 = s.carrier_e1
        s.carrier_f = s.carrier_f + pll_k1 * e + pll_k2 * (e - e1)
        s.carrier_e1 = e

# code loop

    dll_k1 = 0.00002
    dll_k2 = 0.2
    s.early = np.absolute(p_early)
    s.prompt = np.absolute(p_prompt)
    s.late = np.absolute(p_late)
    if (s.late + s.early) == 0:
        e = 0
    else:
        e = (s.late - s.early) / (s.late + s.early)
    s.eml = e
    e1 = s.code_e1
    s.code_f = s.code_f + dll_k1 * e + dll_k2 * (e - e1)
    s.code_e1 = e

    s.code_p = s.code_p + n * cf
    s.code_p = np.mod(s.code_p, p.code_length)

    return p_prompt, s
Ejemplo n.º 4
0
def track(x,s):
  n = len(x)
  fs = s.fs

  nco.mix(x,-s.carrier_f/fs, s.carrier_p)
  s.carrier_p = s.carrier_p - n*s.carrier_f/fs
  s.carrier_p = np.mod(s.carrier_p,1)

  cf = (s.code_f+s.carrier_f/3135.0)/fs

  p_early = ca.correlate(x, 0, s.code_p-0.5, cf, ca.ca_code())
  p_prompt = ca.correlate(x, 0, s.code_p, cf, ca.ca_code())
  p_late = ca.correlate(x, 0, s.code_p+0.5, cf, ca.ca_code())

  if s.mode=='FLL_WIDE':
    fll_k = 2.0
    a = p_prompt
    b = s.prompt1
    e = discriminator.fll_atan(a,b)
    s.carrier_f = s.carrier_f + fll_k*e
    s.prompt1 = p_prompt
  elif s.mode=='FLL_NARROW':
    fll_k = 0.5
    a = p_prompt
    b = s.prompt1
    e = discriminator.fll_atan(a,b)
    s.carrier_f = s.carrier_f + fll_k*e
    s.prompt1 = p_prompt
  elif s.mode=='PLL':
    pll_k1 = 0.1
    pll_k2 = 5
    e = discriminator.pll_costas(p_prompt)
    e1 = s.carrier_e1
    s.carrier_f = s.carrier_f + pll_k1*e + pll_k2*(e-e1)
    s.carrier_e1 = e

# code loop

  dll_k1 = 0.00002
  dll_k2 = 0.2
  s.early = np.absolute(p_early)
  s.prompt = np.absolute(p_prompt)
  s.late = np.absolute(p_late)
  if (s.late+s.early)==0:
    e = 0
  else:
    e = (s.late-s.early)/(s.late+s.early)
  s.eml = e
  e1 = s.code_e1
  s.code_f = s.code_f + dll_k1*e + dll_k2*(e-e1)
  s.code_e1 = e

  s.code_p = s.code_p + n*cf
  s.code_p = np.mod(s.code_p,ca.code_length)

  return p_prompt,s
def track(x,s):
  n = len(x)
  fs = s.fs

  nco.mix(x,-s.carrier_f/fs, s.carrier_p)
  s.carrier_p = s.carrier_p - n*s.carrier_f/fs
  s.carrier_p = np.mod(s.carrier_p,1)

  cf = (s.code_f+s.carrier_f/2400.0)/fs

  p_early = l2cl.correlate(x, s.prn, 0, s.code_p-0.5, cf, l2cl.l2cl_code(prn))
  p_prompt = l2cl.correlate(x, s.prn, 0, s.code_p, cf, l2cl.l2cl_code(prn))
  p_late = l2cl.correlate(x, s.prn, 0, s.code_p+0.5, cf, l2cl.l2cl_code(prn))

  if s.mode=='FLL_WIDE':
    fll_k = 2.0
    a = p_prompt
    b = s.prompt1
    e = discriminator.fll_atan(a,b)
    s.carrier_f = s.carrier_f + fll_k*e
    s.prompt1 = p_prompt
  elif s.mode=='FLL_NARROW':
    fll_k = 0.3
    a = p_prompt
    b = s.prompt1
    e = discriminator.fll_atan2(a,b)
    s.carrier_f = s.carrier_f + fll_k*e
    s.prompt1 = p_prompt
  elif s.mode=='PLL':
    pll_k1 = 0.1
    pll_k2 = 5.0
    e = discriminator.pll_costas(p_prompt)  # fixme: change to pure PLL, since L2CL is a pilot
    e1 = s.carrier_e1
    s.carrier_f = s.carrier_f + pll_k1*e + pll_k2*(e-e1)
    s.carrier_e1 = e

# code loop

  dll_k1 = 0.00002
  dll_k2 = 0.2
  s.early = np.absolute(p_early)
  s.prompt = np.absolute(p_prompt)
  s.late = np.absolute(p_late)
  if (s.late+s.early)==0:
    e = 0
  else:
    e = (s.late-s.early)/(s.late+s.early)
  s.eml = e
  e1 = s.code_e1
  s.code_f = s.code_f + dll_k1*e + dll_k2*(e-e1)
  s.code_e1 = e

  s.code_p = s.code_p + n*cf
  s.code_p = np.mod(s.code_p,l2cl.code_length)

  return p_prompt,s
Ejemplo n.º 6
0
def track(x, s):
    n = len(x)
    fs = s.fs

    nco.mix(x, -s.carrier_f / fs, s.carrier_p)
    s.carrier_p = s.carrier_p - n * s.carrier_f / fs
    s.carrier_p = np.mod(s.carrier_p, 1)

    cf = (s.code_f + s.carrier_f / 1540.0) / fs

    p_early = l1cp.correlate(x, s.prn, 0, s.code_p - 0.2, cf,
                             l1cp.l1cp_code(prn), l1cp.boc11)
    p_prompt = l1cp.correlate(x, s.prn, 0, s.code_p, cf, l1cp.l1cp_code(prn),
                              l1cp.boc11)
    p_late = l1cp.correlate(x, s.prn, 0, s.code_p + 0.2, cf,
                            l1cp.l1cp_code(prn), l1cp.boc11)

    #  if s.ms>4000:
    #    for dci in range(320):
    #      dc = 0.0125*(dci-160)
    #      pp = l1cp.correlate(x, s.prn, 0, s.code_p+dc, cf, l1cp.l1cp_code(prn), l1cp.boc11)
    #      if np.real(p_prompt)>0:
    #        s.shape[dci] += pp
    #      else:
    #        s.shape[dci] -= pp
    #  s.ms = s.ms + 1

    if s.mode == 'FLL_WIDE':
        fll_k = 3.0
        a = p_prompt
        b = s.prompt1
        e = discriminator.fll_atan(a, b)
        s.carrier_f = s.carrier_f + fll_k * e
        s.prompt1 = p_prompt
    elif s.mode == 'FLL_NARROW':
        fll_k = 0.8
        a = p_prompt
        b = s.prompt1
        e = discriminator.fll_atan(a, b)
        s.carrier_f = s.carrier_f + fll_k * e
        s.prompt1 = p_prompt
    elif s.mode == 'PLL':
        pll_k1 = 0.1
        pll_k2 = 3.5
        e = discriminator.pll_costas(p_prompt)
        e1 = s.carrier_e1
        s.carrier_f = s.carrier_f + pll_k1 * e + pll_k2 * (e - e1)
        s.carrier_e1 = e

# code loop

    dll_k1 = 0.00002
    dll_k2 = 0.2
    s.early = np.absolute(p_early)
    s.prompt = np.absolute(p_prompt)
    s.late = np.absolute(p_late)
    if (s.late + s.early) == 0:
        e = 0
    else:
        e = (s.late - s.early) / (s.late + s.early)
    s.eml = e
    e1 = s.code_e1
    s.code_f = s.code_f + dll_k1 * e + dll_k2 * (e - e1)
    s.code_e1 = e

    s.code_p = s.code_p + n * cf
    s.code_p = np.mod(s.code_p, l1cp.code_length)

    return p_prompt, s
Ejemplo n.º 7
0
def track(x, s):
    n = len(x)
    fs = s.fs

    nco.mix(x, -s.carrier_f / fs, s.carrier_p)
    s.carrier_p = s.carrier_p - n * s.carrier_f / fs
    s.carrier_p = np.mod(s.carrier_p, 1)

    cf = (s.code_f + s.carrier_f / 118.0) / fs

    p_early = b2bq.correlate(x, s.prn, 0, s.code_p - 0.5, cf,
                             b2bq.b2bq_code(prn))
    p_prompt = b2bq.correlate(x, s.prn, 0, s.code_p, cf, b2bq.b2bq_code(prn))
    p_late = b2bq.correlate(x, s.prn, 0, s.code_p + 0.5, cf,
                            b2bq.b2bq_code(prn))

    if s.nframe > 200:
        if np.real(p_prompt) > 0:
            nco.accum(x, s.code_p, cf, s.chips, b2bq.code_length)
        else:
            nco.accum(-x, s.code_p, cf, s.chips, b2bq.code_length)

    s.nframe += 1

    if s.mode == 'FLL_WIDE':
        fll_k = 3.0
        a = p_prompt
        b = s.prompt1
        e = discriminator.fll_atan(a, b)
        s.carrier_f = s.carrier_f + fll_k * e
        s.prompt1 = p_prompt
    elif s.mode == 'FLL_NARROW':
        fll_k = 0.8
        a = p_prompt
        b = s.prompt1
        e = discriminator.fll_atan(a, b)
        s.carrier_f = s.carrier_f + fll_k * e
        s.prompt1 = p_prompt
    elif s.mode == 'PLL':
        pll_k1 = 0.1
        pll_k2 = 3.5
        e = discriminator.pll_costas(p_prompt)
        e1 = s.carrier_e1
        s.carrier_f = s.carrier_f + pll_k1 * e + pll_k2 * (e - e1)
        s.carrier_e1 = e

# code loop

    dll_k1 = 0.00002
    dll_k2 = 0.2
    s.early = np.absolute(p_early)
    s.prompt = np.absolute(p_prompt)
    s.late = np.absolute(p_late)
    if (s.late + s.early) == 0:
        e = 0
    else:
        e = (s.late - s.early) / (s.late + s.early)
    s.eml = e
    e1 = s.code_e1
    s.code_f = s.code_f + dll_k1 * e + dll_k2 * (e - e1)
    s.code_e1 = e

    s.code_p = s.code_p + n * cf
    s.code_p = np.mod(s.code_p, b2bq.code_length)

    return p_prompt, s
Ejemplo n.º 8
0
def track(x, s):
    n = len(x)
    fs = s.fs

    nco.mix(x, -s.carrier_f / fs, s.carrier_p)
    s.carrier_p = s.carrier_p - n * s.carrier_f / fs
    t = np.mod(s.carrier_p, 1)
    dcyc = int(round(s.carrier_p - t))
    s.carrier_cyc += dcyc
    s.carrier_p = t

    cf = (s.code_f + s.carrier_f / 1540.0) / fs

    p_early = ca.correlate(x, s.prn, 0, s.code_p - 0.05, cf, ca.ca_code(prn))
    p_prompt = ca.correlate(x, s.prn, 0, s.code_p, cf, ca.ca_code(prn))
    p_late = ca.correlate(x, s.prn, 0, s.code_p + 0.05, cf, ca.ca_code(prn))

    if s.mode == 'FLL_WIDE':
        fll_k = 3.0
        a = p_prompt
        b = s.prompt1
        e = discriminator.fll_atan(a, b)
        s.carrier_f = s.carrier_f + fll_k * e
        s.prompt1 = p_prompt
    elif s.mode == 'FLL_NARROW':
        fll_k = 0.8
        a = p_prompt
        b = s.prompt1
        e = discriminator.fll_atan(a, b)
        s.carrier_f = s.carrier_f + fll_k * e
        s.prompt1 = p_prompt
    elif s.mode == 'PLL':
        pll_k1 = 0.1
        pll_k2 = 3.5
        e = discriminator.pll_costas(p_prompt)
        e1 = s.carrier_e1
        s.carrier_f = s.carrier_f + pll_k1 * e + pll_k2 * (e - e1)
        s.carrier_e1 = e

# code loop

    dll_k1 = 0.00002
    dll_k2 = 0.2
    s.early = np.absolute(p_early)
    s.prompt = np.absolute(p_prompt)
    s.late = np.absolute(p_late)
    if (s.late + s.early) == 0:
        e = 0
    else:
        e = (s.late - s.early) / (s.late + s.early)
    s.eml = e
    e1 = s.code_e1
    s.code_f = s.code_f + dll_k1 * e + dll_k2 * (e - e1)
    s.code_e1 = e

    s.code_p = s.code_p + n * cf
    t = np.mod(s.code_p, ca.code_length)
    dcyc = int(round(s.code_p - t))
    s.code_cyc += dcyc
    s.code_p = t

    return p_prompt, s