转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
关于DVB同步字节反转及加扰原理及流程图         ★★★★

关于DVB同步字节反转及加扰原理及流程图

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1433 更新时间:2009/4/23 16:39:51

                                                                                

       

同步反转及扰码:

1、原理:

图1中,PN码发生器的寄存器初始值为:100101010000000。MPEG2数据流中,每8个数据帧组成一个数据组。PN码发生器的寄存器在传输每一个数据组的开始时初始化一次,为了提供该初始化信号,每一组数据中的第一个MPEG2数据帧的同步字节按比特反转,即47H反转为B8H。而MPEG2数据流中所有同步字节不参与扰码。

软件编程时,首先用一矩阵radata来模拟PN码发生器的寄存器,并给予与PN码发生器的寄存器相同的初始值。然后对输入的数据进行判断,识别其是同步字节还是信息字节。当输入的数据是信息字节时,信息位与PN码发生器的寄存器矩阵的第14个元素radata(14)

和第15个元素redata(15)进行模2加码即进行扰码,其中结果存入输出矩阵randout。当输入的数据为同步字节时,同步字节不参与扰码,且当该同步字节为每一组数据中的第一个MPEG2数据帧的同步字节时,该同步字节反转。

 

注:1、PN码发生器的寄存器初始值置为:100101010000000

2、PN码发生器在传输每一个数据组(8个数据帧)时初始化一次

3、每一组数据中的第一个MPEG2数据帧的同步字节按比特反转

4、MPEG2数据流中所有同步字节不参与扰码

5、解码部分和译码原理完全相同

以下为实现的源程序:

 

//初始化变量

//     int temp1[8],temp2[8];

       int enable,_redata,enabledata;

       int inputdata[8],outputdata[8];

       int redata[15];//寄存器

       BYTE output[8][204]={0};

 

       for(int m=0;m<=7;m++)

       {

           for( int n=0;n<=187;n++)

              {

 

               //m=0并且n=15表示初始化寄存器和进行同步字节反转的标志

                  if(m==0&&n==0)

                     {

                   //初始化寄存器redata

                 for(int i=0;i<=14;i++)

                             {

                          if(i==0||i==3||i==5||i==7)

                                   {

                                redata[i]=1;

                                   }

                         else

                                   {

                                 redata[i]=0;

                                   }

                             }

                       //同步字节按比特反转

                        output[m][16+n]=~Input[m][16+n];

                     }

 

                  //其余的同步字节不参于加扰,按照原始字节输出

                  else if(m!=0&&n==0)

                     {

                         output[m][16+n]=Input[m][16+n];

                     }

 

            //信息位(非同步字节)进行加扰

                  else

                     {

                      for(int j=0;j<=7;j++)

                            {

                             //读取字节Input里面的信息比特

                             inputdata[j]=Input[m][16+n]%2;

                          //字节Input右移一位

                             Input[m][16+n]>>=1;

                            }

       

 

               //加扰运算

               for (int  i=0;i<=7;i++)  

                        {

                          _redata=redata[13]^redata[14];

 &nb

[1] [2]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台