热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

关于DVB同步字节反转及加扰原理及流程图(转)[more]XML:namespaceprefixvnsurn:schemas-microsoft-com:vml同步反转及扰码
关于DVB同步字节反转及加扰原理及流程图 (转)[@more@]

 

XML:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> 

同步反转及扰码:

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};

 Office:office" />

  for(int m&#61;0;m<&#61;7;m&#43;&#43;)

  {

    for( int n&#61;0;n<&#61;187;n&#43;&#43;)

  {

 

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

      if(m&#61;&#61;0&&n&#61;&#61;0)

  {

     //初始化寄存器redata

  for(int i&#61;0;i<&#61;14;i&#43;&#43;)

   {

       if(i&#61;&#61;0||i&#61;&#61;3||i&#61;&#61;5||i&#61;&#61;7)

  {

        redata[i]&#61;1;

  }

      else

  {

      redata[i]&#61;0;

  }

   }

    //同步字节按比特反转

      output[m][16&#43;n]&#61;~Input[m][16&#43;n];

  }

 

    //其余的同步字节不参于加扰&#xff0c;按照原始字节输出

    else if(m!&#61;0&&n&#61;&#61;0)

  {

      output[m][16&#43;n]&#61;Input[m][16&#43;n];

  }

 

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

      else

  {

      for(int j&#61;0;j<&#61;7;j&#43;&#43;)

  {

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

      inputdata[j]&#61;Input[m][16&#43;n]%2;

    //字节Input右移一位

      Input[m][16&#43;n]>>&#61;1;

  }

 

 

  //加扰运算

  for (int  i&#61;0;i<&#61;7;i&#43;&#43;) 

    {

      _redata&#61;redata[13]^redata[14];

     for(int j&#61;14;j>&#61;1;j--)

   {

        redata[j]&#61;redata[j-1];

   }

    redata[0]&#61;_redata;

    enabledata&#61;enable&_redata;

    outputdata[i]&#61;enabledata^inputdata[i];

    }

 

    //加扰后的比特赋给字节output

    for ( i&#61;0;i<&#61;7;i&#43;&#43;)

  {

    output[m][16&#43;n]&#61;output[m][16&#43;n]|((BYTE)outputdata[i]<<1);

  }

  }

  }

  }

 

 


来自 “ ITPUB博客 ” &#xff0c;链接&#xff1a;http://blog.itpub.net/10752043/viewspace-990262/&#xff0c;如需转载&#xff0c;请注明出处&#xff0c;否则将追究法律责任。

转:http://blog.itpub.net/10752043/viewspace-990262/



推荐阅读
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 技术分享:深入解析GestureDetector手势识别机制
    技术分享:深入解析GestureDetector手势识别机制 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 本文探讨了利用Java实现WebSocket实时消息推送技术的方法。与传统的轮询、长连接或短连接等方案相比,WebSocket提供了一种更为高效和低延迟的双向通信机制。通过建立持久连接,服务器能够主动向客户端推送数据,从而实现真正的实时消息传递。此外,本文还介绍了WebSocket在实际应用中的优势和应用场景,并提供了详细的实现步骤和技术细节。 ... [详细]
  • 在尝试对从复杂 XSD 生成的类进行序列化时,遇到了 `NullReferenceException` 错误。尽管已经花费了数小时进行调试和搜索相关资料,但仍然无法找到问题的根源。希望社区能够提供一些指导和建议,帮助解决这一难题。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • PHP 5.5.31 和 PHP 5.6.17 安全更新发布
    PHP 5.5.31 和 PHP 5.6.17 已正式发布,主要包含多个安全修复。强烈建议所有用户尽快升级至最新版本以确保系统安全。 ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
author-avatar
mobiledu2502889113
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有