这个版本是06年2月修改过的版本,在VC下面调试通过。
注意:TraceBack长度等于输入数据的长度,在输入数据不太长的情况下获得很好的效果。
/********************************************************************************************************* ** 函数名称: convenc ** 功能描述: 卷积编码的通用编码函数,通过查表trillis得到。 ** 输 入: DATAINF *pData: 描述待编码数据信息的指针。 ** 输 出: 无 ** 全局变量: 无 ** 调用模块: 无 ** 备 注:注意,这个模块的输入是以紧凑的8bit为单位(字节) ** 输出数据是以码元为单位,需要特别注意! ** ** 作 者: DSP探路者 ** 日 期: 2005年11月18日 **------------------------------------------------------------------------------------------------------- ** 修改人: ** 日 期: **------------------------------------------------------------------------------------------------------ ********************************************************************************************************/ void convenc(INT8U *pin, INT8U *pout, INT16U BitNum) { INT16U bit_num_cnt, bit_cnt; INT8U data_in, data_out, bit_in; INT8U CURSTATE, NEXTSTATE;
CURSTATE = 0; // search state change trace and output data as input for(bit_num_cnt = 0; bit_num_cnt < BitNum ; bit_num_cnt++) { data_in = *pin++; //for(bit_cnt = 8; bit_cnt > 0; bit_cnt--) //{ //bit_in = (data_in>>(bit_cnt-1)) & 0x01; bit_in = data_in; NEXTSTATE = trellissta[(CURSTATE<<1) + bit_in]; data_out = trellisout[(CURSTATE<<1) + bit_in]; *pout++ = data_out; CURSTATE = NEXTSTATE; //data_in = data_in << 1; //} } }
相关链接:http://www.evmdiy.com/viewthread.php?tid=153&extra=page%3D1 |