亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dl_dch.c

?? matlab實現wcdma的全過程
?? C
字號:
/* | | Copyright disclaimer: |   This software was developed at the National Institute of Standards |   and Technology by employees of the Federal Government in the course |   of their official duties. Pursuant to title 17 Section 105 of the |   United States Code this software is not subject to copyright |   protection and is in the public domain. | |   We would appreciate acknowledgement if the software is used. |*//* | Project:     WCDMA simulation environment | Module:      C-level Test bed for downlink discrete channel routines | Author:      Tommi Makelainen, Nokia/NIST | Date:        February 17, 1999 | | History: |              June 7, 1999 Tommi Makelainen |                      Initial version. | */#include <stdio.h>#include <math.h>#include "chcoding.h"#include "chdecoding.h"#include "discmod.h"#include "discdemod.h"#include "channel.h"#include "rake.h"#include "code.h"#include "blockcollect.h"#include "config_wcdma.h"#define INPUT_SIZE 10#define PROB_VECTOR_LEN 2/* ---------------- D E F I N E S ------------------------------------- *//* * Number of simultaneous primary common control physical channels * carrying logical BCCH channel. * I.e. simulation can contain maximum of MAX_CCPCH_INSTANCES base stations. */#define MAX_CCPCH_INSTANCES 4/* ---------------- D A T A   T Y P E S ------------------------------- *//* * Data type for primary ccpch data. */struct dl_pri_ccpch_data_type {    int channel_instance;         /* handle for channel model */    int rake_instance_I;          /* handle for I part of received data */    int rake_instance_Q;          /* handle for Q part of received data */    int code_instance;            /* handle to allocated spreading code */    int pn_code[PRI_CCPCH_SPREADING_FACTOR];    /* spreading code */    int symbuf_instances[SLOTS_IN_FRAME];  /* buffers for slots */};/* * Static data structures to manage simulation model instances. */static enum instance_state dl_pri_ccpch_alloc_list[MAX_CCPCH_INSTANCES];static int general_pri_ccpch_init_flag = FALSE;static struct dl_pri_ccpch_data_type dl_pri_ccpch_data[MAX_CCPCH_INSTANCES];static int pri_ccpch_count = 0;/* * Static vectors for I and Q part slots. * Helpful so we add pilot directly in initialization. */static int I_tmp[ ( CHIP_RATE / FRAMES_IN_SECOND ) / SLOTS_IN_FRAME ];static int Q_tmp[ ( CHIP_RATE / FRAMES_IN_SECOND ) / SLOTS_IN_FRAME ];/* * Chip pattern for a symbol period. */static int pilot_code[] = { };/* -------------------------------------------------------------------- */int dl_pri_ccpch_init(        double ch_amplitudes[],	  /* IN: channel impulse response */        int ch_delays[],            /* IN: delay taps in chips */        int nTaps,                /* IN: channel imp. response length */        int nImpulse,             /* IN: number of channel impulse vectors */        double impulse_prob[],    /* IN: channel impulse vector probs. */        int nFrames,              /* IN: total number of frames in simulation */        double esno,              /* IN: received SNR for a bit */        double power,             /* IN: transmission power (in dB) */        double rake_finger_threshold, /* IN: required level for                                          a rake finger output to be added                                         in the combiner */        int nFingers)             /* IN:  number of rake fingers to use */{    int i, instance;    int pilot_bits[PRI_CCPCH_PILOT_BITS];    int pilot_chips[PRI_CCPCH_PILOT_BITS * PRI_CCPCH_SPREADING_FACTOR];    int pilot_len = PRI_CCPCH_PILOT_BITS; /* bits */    int sf = PRI_CCPCH_SPREADING_FACTOR;    /*     * If first call, initialize static data.     */    if (general_pri_ccpch_init_flag == FALSE) {        for (i=0; i < MAX_CCPCH_INSTANCES; i++) {            dl_pri_ccpch_alloc_list[i] = FREE_INSTANCE;        } /* for */        general_pri_ccpch_init_flag = TRUE;    } /* if general_init_flag */    /*     * Find first free instance number.     */    instance = -1;    for (i=0; i < MAX_CCPCH_INSTANCES; i++) {        if (dl_pri_ccpch_alloc_list[i] == FREE_INSTANCE) {            instance = i;            break;        }    }    if (instance == -1) return(-1); /* no free instances */    /*     * Initialize channel model.     */    dl_pri_ccpch_data[instance].channel_instance =                   wcdma_channel_init(ch_amplitudes, ch_delays, nTaps,                                      nImpulse, impulse_prob, nFrames,                                      esno, power,                                      PRI_CCPCH_SPREADING_FACTOR);    /*     * Initialize rake receiver.     */    dl_pri_ccpch_data[instance].rake_instance_I =                   wcdma_rake_init(pilot_len, rake_finger_threshold, nFingers);    dl_pri_ccpch_data[instance].rake_instance_Q =                   wcdma_rake_init(pilot_len, rake_finger_threshold, nFingers);    /*     * Get spreading code.     */    dl_pri_ccpch_data[instance].code_instance = wcdma_code_init(sf);    wcdma_ovsf_code(dl_pri_ccpch_data[instance].code_instance,                    dl_pri_ccpch_data[instance].pn_code);    /*     * Set pilot chips for the slots.     * On default pilot bits are all 0's.     */    for (i=0; i < pilot_len; i++) pilot_bits[i] = 0;    wcdma_spread(pilot_bits, pilot_len, pilot_code, sf, sf, pilot_chips);    memcpy(I_tmp, pilot_chips, pilot_len * sf * sizeof(int) );    memcpy(Q_tmp, pilot_chips, pilot_len * sf * sizeof(int) );    /*     * Update primary ccpch allocation list.     */    dl_pri_ccpch_alloc_list[instance] = INSTANCE_IN_USE;    pri_ccpch_count++;    return(instance);} /* dl_pri_ccpch_init *//* -------------------------------------------------------------------- *//* * Function:    dl_pri_ccpch_free * Desc.:       channel clear function. * * Note: */int dl_pri_ccpch_free(int instance){    wcdma_rake_free(dl_pri_ccpch_data[instance].rake_instance_I);    wcdma_rake_free(dl_pri_ccpch_data[instance].rake_instance_Q);    wcdma_code_free(dl_pri_ccpch_data[instance].code_instance);    wcdma_channel_free(dl_pri_ccpch_data[instance].channel_instance);    dl_pri_ccpch_alloc_list[instance] = FREE_INSTANCE;    pri_ccpch_count--;    return(0);}/* -------------------------------------------------------------------- */int dl_pri_ccpch_xmit(          int instance,             /* IN:  instance number */          int inData_for_slots[],   /* IN:  input data bits for each                                             16 slots given separately */          int outI_TxChips[],       /* OUT: I parts of output chips */          int outQ_TxChips[])       /* OUT: Q parts of output chips */{    int i, j, k, m;    int bcch_data_len = PRI_CCPCH_BITS_IN_SLOT - PRI_CCPCH_PILOT_BITS;    int chips_per_slot = ( CHIP_RATE / FRAMES_IN_SECOND ) / SLOTS_IN_FRAME;                    /* 2560 (bcch_data_len+pilot_len)*pn_code_len/2 */    int pilot_offset = PRI_CCPCH_PILOT_BITS * PRI_CCPCH_SPREADING_FACTOR / 2;    int pn_code_len = PRI_CCPCH_SPREADING_FACTOR;    int *pn_code;    /*     * Get data for this instance.     */    pn_code = dl_pri_ccpch_data[instance].pn_code;     for (i=0; i < SLOTS_IN_FRAME; i++) {        /*         * Modulate and spread with channelization code 'pn_code'.         * The start of I_tmp and Q_tmp contains preset pilot symbols.         */        wcdma_dl_mod(inData_for_slots+i*PRI_CCPCH_BITS_IN_SLOT,                     bcch_data_len, pn_code, pn_code_len,                 pn_code_len, I_tmp+pilot_offset, Q_tmp+pilot_offset);#ifdef DO_DL_SCRAMBLING        /*         * Scramble I and Q parts separately.         */        wcdma_spread(I_tmp, chips_per_slots,                     scrambling_code, scrambling_code_len, sf,                     outI_TxChips+i*sf*PRI_CCPCH_BITS_IN_SLOT);        wcdma_spread(Q_tmp, chips_per_slots,                     scrambling_code, scrambling_code_len, sf,                     outQ_TxChips+i*sf*PRI_CCPCH_BITS_IN_SLOT);#endif /* DO_DL_SCRAMBLING */        /*         * Pulse shaping filter root-raised cosine with roll-off 0.22.         */            } /* for SLOTS_IN_FRAME */} /* dl_pri_ccpch_xmit *//* -------------------------------------------------------------------- */int dl_pri_ccpch_rcv(          int instance,               /* IN:  instance number */          double ch_amplitudes[],     /* IN:  channel amplitudes */          int ch_delays[],            /* IN:  channel estimate delays */          int nTaps,                  /* IN:  length of channel estimate */          double inI_RxChips[],       /* IN:  I parts of input chips */          double inQ_RxChips[],       /* IN:  Q parts of input chips */          double out_soft_bits[])     /* OUT: output data bits */{    int sf;    int rake_instance_I, rake_instance_Q;    int symbuf_instance;    int *pn_code;    int pn_code_len;    int pilot_offset = PRI_CCPCH_PILOT_BITS * PRI_CCPCH_SPREADING_FACTOR / 2;    int nI_mod_symbols, nQ_mod_symbols;    double I_mod_symbols[PRI_CCPCH_BITS_IN_SLOT/2];    double Q_mod_symbols[PRI_CCPCH_BITS_IN_SLOT/2];    double rx_soft_bits[PRI_CCPCH_BITS_IN_SLOT * SLOTS_IN_FRAME];    int delay_I, delay_Q;    int i;    int j;    /*     * Get data for this instance.     */    sf = PRI_CCPCH_SPREADING_FACTOR;    pn_code_len = PRI_CCPCH_SPREADING_FACTOR;    pn_code = dl_pri_ccpch_data[instance].pn_code;     rake_instance_I = dl_pri_ccpch_data[instance].rake_instance_I;    rake_instance_Q = dl_pri_ccpch_data[instance].rake_instance_Q;    for (i=0, j=0; i < SLOTS_IN_FRAME; i++) {        /*         * Collect single user multipath components and despread them         * separately for I and Q parts.         */        wcdma_rake_receiver(rake_instance_I,                        inI_RxChips+i*sf*PRI_CCPCH_BITS_IN_SLOT/2+pilot_offset,                        sf*PRI_CCPCH_BITS_IN_SLOT/2,                         pn_code, pn_code_len, sf,                        ch_delays, ch_amplitudes, nTaps,                        &nI_mod_symbols, &delay_I, I_mod_symbols);        wcdma_rake_receiver(rake_instance_Q,                        inQ_RxChips+i*sf*PRI_CCPCH_BITS_IN_SLOT/2+pilot_offset,                        sf*PRI_CCPCH_BITS_IN_SLOT/2,                        pn_code, pn_code_len, sf,                        ch_delays, ch_amplitudes, nTaps,                        &nQ_mod_symbols, &delay_Q, Q_mod_symbols);        /*         * Demodulate.         */        for (i=0; i < (PRI_CCPCH_BITS_IN_SLOT/2); i++, j += 2) {            out_soft_bits[j] = I_mod_symbols[i];            out_soft_bits[j+1] = Q_mod_symbols[i];        }    } /* for SLOTS_IN_FRAME */} /* dl_pri_ccpch_rcv */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影在哪看比较好| 国产精品美女久久久久aⅴ| 国产酒店精品激情| 韩国三级在线一区| 美女视频网站久久| 久久99热狠狠色一区二区| 日韩av一级电影| 蜜臀久久久久久久| 国内成人自拍视频| 成人三级伦理片| 99国产精品国产精品毛片| 91小视频免费看| 在线视频你懂得一区| 欧美日本一道本| 日韩丝袜情趣美女图片| 欧美va日韩va| 中文字幕亚洲区| 亚洲成a人片综合在线| 日韩电影在线免费| 国产91对白在线观看九色| 成人av在线资源网站| 91国偷自产一区二区使用方法| 欧美色精品在线视频| 精品免费国产二区三区| 国产精品色婷婷久久58| 亚洲高清不卡在线观看| 激情小说亚洲一区| 一本大道久久精品懂色aⅴ| 欧美日韩国产一区二区三区地区| 亚洲精品一区二区三区蜜桃下载| 国产精品女同互慰在线看| 一区二区三区久久久| 久久99国内精品| 日本韩国一区二区三区| 欧美v国产在线一区二区三区| 欧美高清一级片在线观看| 亚洲精品一线二线三线| 亚洲精品国产成人久久av盗摄| 日韩国产一二三区| 99国产精品久| 久久久蜜桃精品| 天堂一区二区在线| 97se亚洲国产综合自在线| 精品欧美一区二区三区精品久久| 亚洲色欲色欲www| 国内久久精品视频| 欧美日韩一区高清| 日韩美女啊v在线免费观看| 久久精品二区亚洲w码| 欧洲中文字幕精品| 国产精品久久久久久久久免费桃花 | 亚洲精品欧美综合四区| 精品无码三级在线观看视频| 日本韩国欧美国产| 国产午夜亚洲精品羞羞网站| 美女视频黄 久久| 欧美日韩午夜精品| 一区二区免费视频| 99久久国产免费看| 中文字幕不卡在线| 国产精品白丝jk白祙喷水网站| 91精品国产91热久久久做人人| 一区二区三区高清| 日韩欧美国产麻豆| 久久丁香综合五月国产三级网站| 亚洲一区二区欧美日韩| 国产欧美精品区一区二区三区 | 91视频精品在这里| 欧美激情在线免费观看| 国产麻豆91精品| 精品国产乱码久久久久久夜甘婷婷| 亚洲一二三专区| 91久久精品午夜一区二区| 中文字幕一区二区三区av| 高清不卡在线观看| 中文字幕免费不卡在线| 国产成人综合精品三级| 久久精品一二三| 国产99精品在线观看| 日本一区二区动态图| 成人免费高清视频| 亚洲日本va午夜在线电影| 91丝袜美腿高跟国产极品老师 | 91亚洲精品久久久蜜桃网站 | 7777精品伊人久久久大香线蕉超级流畅 | 久久精品99国产精品日本| 日韩一区二区免费视频| 日韩高清欧美激情| 日韩欧美中文字幕一区| 精品一区二区在线看| 久久精品水蜜桃av综合天堂| 国产精品69久久久久水密桃| 日本一区二区成人在线| 91啪亚洲精品| 天堂成人国产精品一区| 欧美va亚洲va| 99国产精品久久久久| 五月天网站亚洲| 久久综合成人精品亚洲另类欧美 | 午夜av一区二区| 欧美电影免费提供在线观看| 国产suv精品一区二区三区| 国产精品久久毛片a| 91久久精品一区二区| 美女性感视频久久| 国产精品国产三级国产有无不卡| 91传媒视频在线播放| 蜜臂av日日欢夜夜爽一区| 国产日韩精品一区二区浪潮av| 99久久久免费精品国产一区二区| 亚洲精品美腿丝袜| 精品区一区二区| 色网站国产精品| 国模套图日韩精品一区二区| 亚洲情趣在线观看| 26uuu精品一区二区三区四区在线| 成人免费毛片a| 蜜臀av性久久久久蜜臀aⅴ四虎 | 日韩欧美一区在线| proumb性欧美在线观看| 蜜桃视频一区二区三区| 亚洲精品乱码久久久久久久久| 日韩欧美电影一区| 91久久精品日日躁夜夜躁欧美| 久久99精品一区二区三区| 亚洲男女一区二区三区| 国产色综合久久| 欧美一卡2卡三卡4卡5免费| 色婷婷亚洲精品| 成人av电影在线网| 精品一区二区免费在线观看| 亚洲成av人片一区二区梦乃| 国产精品乱码久久久久久| 精品久久久久av影院 | 精品久久久久久久久久久院品网 | 午夜av区久久| 亚洲伦理在线免费看| 国产欧美日本一区二区三区| 欧美一二三区在线| 欧美美女视频在线观看| 一本色道综合亚洲| 成人av影院在线| 成人蜜臀av电影| 成人av影视在线观看| 国产丶欧美丶日本不卡视频| 久久激情五月婷婷| 久久精品国产第一区二区三区| 日韩激情视频网站| 午夜精品久久久久久久久久 | 日本一区二区视频在线观看| 欧美成人a∨高清免费观看| 欧美一区欧美二区| 欧美一区二区三区日韩| 欧美日韩aaaaa| 日韩欧美一级精品久久| 日韩欧美一级二级三级久久久| 欧美一区二区三区精品| 日韩视频中午一区| 精品国产伦一区二区三区观看方式| 欧美一级二级在线观看| 日韩欧美国产不卡| 国产欧美一区二区三区鸳鸯浴| 久久精品欧美日韩精品| 国产精品伦一区二区三级视频| 国产精品免费av| 亚洲欧美二区三区| 一区二区三区国产| 免费人成精品欧美精品| 狠狠色狠狠色合久久伊人| 国产盗摄精品一区二区三区在线| 高清不卡一区二区在线| 色婷婷精品久久二区二区蜜臂av | 午夜亚洲国产au精品一区二区| 天天综合网天天综合色| 麻豆精品一区二区三区| 国产精品自在在线| 91福利区一区二区三区| 欧美一二三区在线| 国产精品卡一卡二| 亚洲国产一区二区视频| 加勒比av一区二区| 91在线观看成人| 51精品秘密在线观看| 国产日韩欧美高清在线| 亚洲蜜臀av乱码久久精品蜜桃| 香蕉成人伊视频在线观看| 婷婷国产在线综合| 国产91露脸合集magnet| 欧美亚洲一区二区三区四区| 欧美一级一区二区| 中文字幕av资源一区| 午夜电影一区二区| 成人精品免费看| 91精品国产一区二区| 最新国产成人在线观看| 美洲天堂一区二卡三卡四卡视频 | 欧美在线观看禁18| 日韩欧美aaaaaa| 综合电影一区二区三区| 免费看日韩精品|