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

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

?? sbl1_trdlspk_turboencoder.c

?? lte系統物理信道turbo編碼程序
?? C
字號:
/* ==============================================================================
   Property of Freescale
   Freescale Confidential Proprietary
   Freescale Copyright (C) 2007 All rights reserved
   ------------------------------------------------------------------------------
   $RCSfile: SBL1_TRDLSPK_TurboEncoder.c.rca $
   $Revision: 1.4 $
   $Date: Thu Feb 28 19:22:22 2008 $
   ============================================================================== */

/*--------------------------------------------------------------------------------*/
/**
 @file
 @brief   TurboEncoder kernel
*/
/*--------------------------------------------------------------------------------*/
#include "SBL_CM_Types.h"
#include "SBL1_SP_ErrorCodes.h"
#include "SBL1_SP_Defines.h"
#include "SBL1_TRDLSPK_TurboEncoder.h"
/*--------------------------------------------------------------------------------*/
/*!
 @fn INT32 SBL1_TRDLSPK_TurboEncoder(UINT8 	*input_ptr,
                                	UINT8  *output_ptr,
                             		UINT8  *output_ptr_p1,
                             		UINT8  *output_ptr_p2,
                             		UINT16  block_length,
                             		UINT16 *interleaver_table )
 
 @brief   TurboEncoder API
 
 @param   input_ptr   			Pointer to the beginning of  input data array.
 @param   output_ptr    		Pointer to the beginning of  systematic	bit data array.
 @param   output_ptr_p1  		Pointer to the beginning of  parity-1 bit data array.
 @param   output_ptr_p2  		Pointer to the beginning of  parity-2 bit data array.
 @param   block_length  		Gives the number of bits in the  input data array.
 @param   interleaver_table     Gives the indices of interleaved data for
								the second recursive encoder of the 3gpp
								turbo encoder.
  
 @return  SUCCESS
*/
/*--------------------------------------------------------------------------------*/


INT32 SBL1_TRDLSPK_TurboEncoder(UINT8 	*input_ptr,
                                UINT8  *output_ptr,
                             	UINT8  *output_ptr_p1,
                             	UINT8  *output_ptr_p2,
                             	UINT16  block_length,
                             	UINT16 *interleaver_table )
{
    UINT16  usiI;                   /* General loop siCOUNTer                  */
    INT16   interleaver_index;      /* Index into the interleaver table      */
    INT8    register_a0;            /* Register farthest to the normal input */
    INT8    register_a1;            /* Register second farthest to the normal inp*/
    INT8    register_a2;            /* Register nearest to the normal input  */
    INT8    temp_register_1;        /* First Temporary Register              */
    INT8    temp_register_2;        /* Second Temporary Register             */
    INT8    temp_register_3;        /* Third Temporary Register          */
    INT8    temp_register_4;        /* Fourth Temporary Register             */
    INT8    register_b0;            /* Register farthest to the interleaved input */
    INT8    register_b1;            /* Register second farthest to the normal inp*/
    INT8    register_b2;            /* Register nearest to the normal input   */
    UINT16  reminder;
    UINT32  error;
	
	if(block_length > MAX_CODE_BLK_SIZE_DLSCH)
    {
    		error = ERROR|SPK_TURBOENCODING|ERROR_INVALID_INPUT_LENGTH;
    		APP_ASSERT(error);
    }
	
    /* Initialization of registers             */
    register_a0 = register_a1 = register_a2 = 0;
    register_b0 = register_b1 = register_b2 = 0;
    reminder = (UINT16)(block_length % 3);
    block_length = (UINT16)(block_length - reminder);

/*******************************************************************************
* In this loop three outputs X(t),Z(t) and X'(t) are computed three times      *
*******************************************************************************/

    for(usiI = 0;usiI < block_length;usiI = (UINT16)(usiI+3)) {

        interleaver_index = (INT16)interleaver_table[usiI];
        temp_register_1 = (INT8)(register_a1^input_ptr[usiI]);
        temp_register_2 = (INT8)(register_b1^input_ptr[interleaver_index]);

        *output_ptr++ =   (UINT8)input_ptr[usiI];                 /*  X(t)  */
        *output_ptr_p1++ = (UINT8)(temp_register_1^register_a2);    /*  Z(t)  */
        *output_ptr_p2++ = (UINT8)(temp_register_2^register_b2);    /*  X'(t) */

        interleaver_index = (INT16)interleaver_table[usiI+1];

        register_a0 = (INT8)(temp_register_1^register_a0);
        register_b0 = (INT8)(temp_register_2^register_b0);

        temp_register_1 = (INT8)(register_a2^input_ptr[usiI+1]);
        temp_register_2 = (INT8)(register_b2^input_ptr[interleaver_index]);

        *output_ptr++ = input_ptr[usiI+1];               /*  X(t)  */
        *output_ptr_p1++ = (UINT8)(temp_register_1^register_a0);    /*  Z(t)  */
        *output_ptr_p2++ = (UINT8)(temp_register_2^register_b0);    /*  X'(t) */

        interleaver_index = (INT16)interleaver_table[usiI+2];

        register_a1 = (INT8)(temp_register_1^register_a1);
        register_b1 = (INT8)(temp_register_2^register_b1);

        temp_register_1 = (INT8)(register_a0^input_ptr[usiI+2]);
        temp_register_2 = (INT8)(register_b0^input_ptr[interleaver_index]);

        *output_ptr++ = input_ptr[usiI+2];               /*  X(t)  */
        *output_ptr_p1++ = (UINT8)(temp_register_1^register_a1);    /*  Z(t)  */
        *output_ptr_p2++ = (UINT8)(temp_register_2^register_b1);    /*  X'(t) */

        register_a2 = (INT8)(temp_register_1^register_a2);
        register_b2 = (INT8)(temp_register_2^register_b2);
    }

    usiI = block_length;
    if (reminder == 2) {
        interleaver_index = (INT16)interleaver_table[usiI];
        /*  X(t)  */
        *output_ptr++ = input_ptr[usiI];
        /*  Z(t)  */
        *output_ptr_p1++ = (UINT8)(register_a2^register_a1^input_ptr[usiI]);
        /*  X'(t) */
        *output_ptr_p2++ = (UINT8)(input_ptr[interleaver_index]^register_b2^register_b1);

        temp_register_1 = register_a2;
        temp_register_2 = register_a1;
        temp_register_3 = register_b2;
        temp_register_4 = register_b1;

        register_a2 = (INT8)(input_ptr[usiI]^register_a1^register_a0);
        register_a1 = temp_register_1;
        register_a0 = temp_register_2;
        register_b2 = (INT8)(input_ptr[interleaver_index]^register_b1^register_b0);
        register_b1 = temp_register_3;
        register_b0 = temp_register_4;

        usiI = (UINT16)(usiI + 1);
        interleaver_index = (INT16)interleaver_table[usiI];

        /*  X(t)  */
        *output_ptr++ = input_ptr[usiI];
        /*  Z(t)  */
        *output_ptr_p1++ = (UINT8)(register_a2^register_a1^input_ptr[usiI]);
        /*  X'(t) */
        *output_ptr_p2++ = (UINT8)(input_ptr[interleaver_index]^register_b2^register_b1);

        temp_register_1 = register_a2;
        temp_register_2 = register_a1;
        temp_register_3 = register_b2;
        temp_register_4 = register_b1;

        register_a2 = (INT8)(input_ptr[usiI]^register_a1^register_a0);
        register_a1 = temp_register_1;
        register_a0 = temp_register_2;
        register_b2 = (INT8)(input_ptr[interleaver_index]^register_b1^register_b0);
        register_b1 = temp_register_3;
        register_b0 = temp_register_4;
    }
    else if (reminder == 1) {
        interleaver_index = (INT16)interleaver_table[usiI];
        /*  X(t)  */
        *output_ptr++ = input_ptr[usiI];
        /*  Z(t)  */
        *output_ptr_p1++ = (UINT8)(register_a2^register_a1^input_ptr[usiI]);
        /*  X'(t) */
        *output_ptr_p2++ = (UINT8)(input_ptr[interleaver_index]^register_b2^register_b1);

        temp_register_1 = register_a2;
        temp_register_2 = register_a1;
        temp_register_3 = register_b2;
        temp_register_4 = register_b1;

        register_a2 = (INT8)(input_ptr[usiI]^register_a1^register_a0);
        register_a1 = temp_register_1;
        register_a0 = temp_register_2;

        register_b2 = (INT8)(input_ptr[interleaver_index]^register_b1^register_b0);
        register_b1 = temp_register_3;
        register_b0 = temp_register_4;
    }

/* Generation of 12 tail bits: Since zero is always inserted into the shift*/
/* registers, tail bits are calculated without actually shifting registers*/
/* acReg1 and acReg2 */

   /* Tail bits generation from first RSC encoder*/

   *output_ptr++   = (UINT8)(register_a1 ^ register_a0);      /* X(t) */
   *output_ptr_p1++ = (UINT8)(register_a2 ^ register_a0);    /* Y(t) */
   *output_ptr_p2++ = (UINT8)(register_a2 ^ register_a1);    /* X(t+1) */

   *output_ptr++ =   (UINT8)(register_a1) ;                   /* Y(t+1) */
   *output_ptr_p1++ = (UINT8)(register_a2) ;                 /* X(t+2) */
   *output_ptr_p2++ = (UINT8)(register_a2) ;                 /* Y(t+2) */

   /* Tail bits generation from second RSC encoder*/

   *output_ptr++ =   (UINT8)(register_b1 ^ register_b0);      /* X'(t) */
   *output_ptr_p1++ = (UINT8)(register_b2 ^ register_b0);    /* Y'(t) */
   *output_ptr_p2++ = (UINT8)(register_b2 ^ register_b1);    /* X'(t+1) */

   *output_ptr++ = (UINT8)(register_b1) ;                   /* Y'(t+1) */
   *output_ptr_p1++ = (UINT8)(register_b2) ;                 /* X'(t+2) */
   *output_ptr_p2++ = (UINT8)(register_b2) ;                 /* Y'(t+2) */

   return (SUCCESS);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91黄视频在线| 国产亚洲综合色| 久久久久免费观看| 亚洲综合网站在线观看| 美国精品在线观看| 在线免费视频一区二区| 国产欧美一区二区精品性色| 日韩中文字幕一区二区三区| 成人高清免费观看| 精品久久久久久久久久久久久久久久久 | 精品久久久久一区二区国产| 最新国产成人在线观看| 久久精品国产在热久久| 欧洲一区在线观看| 中文字幕人成不卡一区| 高清不卡一区二区在线| 精品卡一卡二卡三卡四在线| 日本麻豆一区二区三区视频| 91国在线观看| 亚洲欧美日韩在线播放| 成人成人成人在线视频| 国产欧美一区二区精品仙草咪| 麻豆国产欧美日韩综合精品二区| 欧美人与禽zozo性伦| 亚洲一区免费视频| 在线观看成人免费视频| 亚洲精品网站在线观看| 99国产精品久久久久久久久久久| 国产夜色精品一区二区av| 国产美女一区二区三区| 精品国产伦理网| 久久99国产乱子伦精品免费| 欧美一区在线视频| 日本欧美久久久久免费播放网| 在线不卡免费av| 偷窥少妇高潮呻吟av久久免费| 欧美日韩在线精品一区二区三区激情| 中文字幕在线不卡视频| 91免费看片在线观看| 日韩理论电影院| 一本到三区不卡视频| 亚洲综合丝袜美腿| 欧美日本高清视频在线观看| 日韩综合小视频| 久久综合色综合88| 成人黄色国产精品网站大全在线免费观看| 欧美高清在线精品一区| 99久久免费精品高清特色大片| 亚洲日本一区二区| 欧美无人高清视频在线观看| 亚洲大尺度视频在线观看| 日韩免费电影一区| 国产aⅴ精品一区二区三区色成熟| 亚洲国产精品激情在线观看| 91视频观看免费| 亚洲国产美女搞黄色| 日韩欧美国产综合一区| 国产v综合v亚洲欧| 夜夜精品视频一区二区 | 亚洲影视在线播放| 91精品国产免费久久综合| 精品亚洲国内自在自线福利| 日本一区二区电影| 欧美三级乱人伦电影| 国产专区欧美精品| 亚洲欧美视频在线观看视频| 欧美日本在线一区| 国产精品亚洲一区二区三区在线| 国产精品久久久久9999吃药| 欧美日韩一区二区三区四区| 韩国av一区二区三区在线观看| 亚洲精品老司机| 欧美理论片在线| 成人激情开心网| 日本中文字幕不卡| 亚洲同性同志一二三专区| 欧美人与z0zoxxxx视频| 国产成人精品免费网站| 亚洲成人综合视频| 中文天堂在线一区| 4438x亚洲最大成人网| 成人h动漫精品一区二区| 蜜桃精品视频在线观看| 亚洲女爱视频在线| 久久精品在线观看| 91精品国产91热久久久做人人| 不卡av免费在线观看| 寂寞少妇一区二区三区| 亚洲一二三级电影| 欧美激情艳妇裸体舞| 日韩一区二区三区视频| 色哟哟精品一区| 成人av免费网站| 国产成人精品免费一区二区| 美国精品在线观看| 日本视频中文字幕一区二区三区| 亚洲男同性恋视频| 国产精品美女一区二区三区| 精品国产区一区| 欧美疯狂性受xxxxx喷水图片| 99久久久无码国产精品| 国产河南妇女毛片精品久久久| 日韩电影在线一区二区| 一区二区三区在线高清| ...xxx性欧美| 国产精品毛片久久久久久| 精品成人一区二区三区四区| 日韩色视频在线观看| 欧美乱妇20p| 7799精品视频| 欧美色图激情小说| 欧美午夜一区二区| 欧美在线视频你懂得| 在线精品视频一区二区| 91国模大尺度私拍在线视频| 91免费精品国自产拍在线不卡| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 久久亚洲二区三区| 亚洲精品一线二线三线无人区| 欧美在线观看一区| 欧美日韩一区二区三区在线 | 国产不卡视频一区二区三区| 紧缚奴在线一区二区三区| 国产在线视频一区二区| 国产成人h网站| 99精品桃花视频在线观看| 不卡的看片网站| 欧美无乱码久久久免费午夜一区| 欧美日韩免费观看一区三区| 欧美日韩国产片| 欧美mv日韩mv国产网站| 中文欧美字幕免费| 中文字幕亚洲成人| 亚洲人一二三区| 午夜影院久久久| 久久99九九99精品| 不卡一区在线观看| 欧美在线free| 精品久久久久av影院| 中文字幕欧美区| 亚洲国产一二三| 久久99国产精品尤物| 国产999精品久久久久久绿帽| 日本电影欧美片| 日韩一二三区不卡| 欧美激情一区二区三区| 亚洲地区一二三色| 狠狠色狠狠色综合系列| 99re8在线精品视频免费播放| 日本道精品一区二区三区| 欧美精品高清视频| 国产日韩精品一区二区三区| 国产精品国产三级国产aⅴ原创| 午夜精品福利一区二区蜜股av| 国模无码大尺度一区二区三区| 99久久精品免费| 日韩欧美第一区| 亚洲伦理在线精品| 久草这里只有精品视频| 色婷婷av一区二区三区大白胸| 日韩欧美一区二区三区在线| 中文字幕第一区| 开心九九激情九九欧美日韩精美视频电影| 欧美视频一区二区在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲人精品午夜| 韩国女主播一区| 在线一区二区三区做爰视频网站| 欧美精品一区二区三区在线 | 日韩黄色一级片| 国产成人午夜高潮毛片| 欧美老肥妇做.爰bbww视频| 国产精品天干天干在线综合| 麻豆成人久久精品二区三区红 | 欧美日韩精品电影| 国产精品二区一区二区aⅴ污介绍| 青娱乐精品视频| 欧美专区亚洲专区| 亚洲婷婷综合色高清在线| 国产尤物一区二区| 欧美一区二区三区免费视频| 伊人夜夜躁av伊人久久| 成人av在线播放网站| 日韩精品在线网站| 三级久久三级久久| 91色视频在线| 国产精品福利一区二区三区| 国产乱子轮精品视频| 日韩一级片网址| 性做久久久久久| 欧美日韩久久不卡| 亚洲国产精品久久不卡毛片| 色婷婷综合久久| 亚洲免费观看高清完整版在线观看熊| 成人激情文学综合网| 国产精品美女久久久久久久久| 国产999精品久久久久久绿帽| 久久久99精品久久| 国产成人免费在线观看| 欧美激情在线观看视频免费|