论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
2 级联码的DSP编程实现
由于RS码和卷积码的Viterbi解码运算量都很大,所以需要大量的存储空间。本方案中实现在100kbps的信道上,RS码的解码运算量为8MIPS,Viterbi解码需要14MIPS。整个编解码程序需要24MIPS,因而选用在TMS320C54X芯片上实现。使用TI公司推出有XXA进行编程开发,考虑到编程的可移植性、可读性和效率,采用C语言与DSP汇编语言混合编程实现。Viterbi解码的算法由于程序运算量很大,采用DSP汇编语言来实现,蓁部分结构如图3所示。下面我们分别对整个系统中的关键部分RS码迭代解码和卷积码Viterbi解码中的编程进行阐述。
2.1 RS码迭代解码的实现
RS解码分频域解码和时域解码,比较常用的解码方法是时域的迭代解码。解码的主要步骤如下:①由接收码字r(x)求出部分伴随式Si的值,若Si全为0,则输出接收码字r(x);②由伴随式Si求出σi(i=1,2,…K),确定差错多项式σ(x);③通过搜索法得到σ(x)的根,进一步确定差错位置βi;
④由部分伴随式Si及其差错位置βi求出差错大小;⑤由差错位置和差错大小求出误码多项式e(x),计算c(x)=r(x)-e(x);⑥校验是否成立,若成立,则输出c(x),否则输出r(x)。
程序设计的关键在于域中运算的实现。对于中的乘法,可以采用指数形式表示元素,从而将相乘运算转换成相加运算。对于域中的加法,我们采用矢量形式表示,从而将加法运算转换成位异或运算。因而我们需要设计两张查找表,当遇到加法运算时,可以很方便的将元素从指数形式转换成矢量形式;遇到乘法时,可以将元素从矢量从指数形式转换成矢量形式;遇到乘法时,可以将元素从矢量形式转换成多项式形式。下面给出的是GF(2 4)域中,元素从指数形式转换矢量形式查表Alpha_to,由矢量形式转换成指数形式查表Index_of,其中域的生成多项式是g(x)=x5 x2 1。
Int Index_of[]={-1,3