当前位置: 首页 > news >正文

数字通讯基础:同步与异步

有两个方面的同步问题:
    一方面是基础的,即如何正确接收每一位,称为"位同步"每一位码元如何同步,即"位同步",要想做到位同步,需要两端时钟相同,而两端时钟总是有差别,一是时钟设定不一样,另一是即使时钟设定相同,但由于两端时钟有误差,这种误差很小,在几个码元的时间内不会产生影响,但这种误差是会积累的,在一定的时间后,这种误差就会对正确接受产生影响,因此,在两端对时完成之后,不见得就不会出错,由于误差的积累影响,就需要不断的对时间进行监视和调整,有一种方法是增加一条线,专门传输时钟信号,但一是要增加投资,二是传输也会有差错,所以不可靠。通常的方法是直接从信号中提取时钟信息,即自同步法,要用到数字锁相方法,即在接收信号的跳变上升沿产生一个校正脉冲,再和本地端时钟上升沿比较,由于本地对接收信号的采样是在本地端时钟上升沿对准接收信号的中间处,则校正脉冲和本地端时钟上升沿的相差小于码元周期的一半即可,如不满足这个条件,就把差别信息输入计数器,产生一个数量信息去控制分频器,从而产生一个正确的时钟信号。这样每位码元能够正确接收。(从数字锁相的角度看,数字信号的码型很重要,NRZ码      在发送一长串"1"或"0"时没有跳变,不易于提取时钟信号,而曼彻斯特码每个码元中间有跳变,则易于提供时钟信息,易于同步)
    另一方面是从内容上来说的,是内容的同步,信息的同步,而上面的位同步是物理上的同步,在数字数据中,信息是由一系列二进制代码组合表示的,实际中,通常是由若干个码元组成一个码元块,称为一个"字",由若干个字组成一个数据块,称为"帧",数据帧可以作为数据传输的单位。要正确接收信息,就要正确识别数据帧,要正确识别数据帧,需要确定帧的首尾,如果起点搞错了,虽然正确的接收了一串代码,但这段代码表示的信息不是原数据帧的信息,接收就失败了,所以,要正确识别帧的起点对应的码元,再按照数据帧规定的长度接收后续码元,才能正确接收数据帧,此即"帧同步"。帧同步的实现方法通常是在一长串信息字前加上一个字(或几个),这个字称为"同步字",是特别规定的(通常有一定的规律),接收端不断的检测收到的代码,一旦发现同步字,就是找到了帧的起点,然后接收后面的信息字,为正确接收信息字的各个码元(位),要用到位同步技术。另外,当帧的长度很短时,特殊的情况是只有一个字符,即一个字符组成的数据(帧),实现上有所不同,第一是不用同步字,太划不来,第二是接收数据位不用位同步技术,因为只有几个码元,积累误差小,字的首尾使用起始位和停止位表示,字符与字符之间是空闲位,接收端检测到起始位就是字符的开始,在起始位要校准时钟。这种"帧同步"因为只有一个字符,所以也称"字同步",也称"起止式同步",由于字符之间的空闲时间不等,也称为"异步通信方式",而把前一种称为"同步通信方式"位同步是保证正确接收码元, 是比特同步,帧同步是保证正确接收信息,是信息同步。仅仅只有位同步是没有意义的,因为位同步不能让我们直接识别信息,只有帧同步才能接受准确信息,而准确接收信息的前提是每一位正确的接收,所以,位同步是帧同步的基础,是帧同步的一部分技术。我们说的数据通信的"同步"问题实际上就是"帧同步"。另外,我们常说的同步传输和异步传输,是帧同步的两种不同手段,或不同情况。(所以,一般的教材中说同步问题,就只说同步和异步传输方式,实际上就是帧同步(狭义的,指同步传输)和字同步(指异步传输),字同步是特殊的帧同步,在起点校准时钟,其他位不须使用位同步技术,因为码元数量少,在起点校准时钟后,一个字符时间内积累误差不大).
    可以想象通信的开始过程,接受方实际上是在找"帧"的起始,这是通信的目的,位同步是为这个目的服务的。

转载于:https://www.cnblogs.com/JeffChen/archive/2007/04/13/711969.html

相关文章:

  • Contiki Ctimer模块
  • 人生的抉择
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • phalcon模型查询几种方法
  • 在DotNetNuke中通过修改ascx文件源码自定义界面
  • day10---paramiko ssh ftp
  • ArcSDE9.2
  • 如何删除mspcidrv.sys病毒
  • js循环生成多个easyui datagrid数据网格时,初始化表格
  • 双绞线 (Twist-Pair)
  • jquery cookie插件轻松实现切换背景颜色
  • 我儿小乐乐
  • asp.net中使用modal window的问题
  • Python--命令行参数解析Demo
  • 股票基本名词概念
  • express.js的介绍及使用
  • JavaScript设计模式与开发实践系列之策略模式
  • Shadow DOM 内部构造及如何构建独立组件
  • Transformer-XL: Unleashing the Potential of Attention Models
  • V4L2视频输入框架概述
  • Vue.js 移动端适配之 vw 解决方案
  • vue总结
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 聊聊directory traversal attack
  • 前端工程化(Gulp、Webpack)-webpack
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 我的业余项目总结
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #define 用法
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #vue3 实现前端下载excel文件模板功能
  • (12)Linux 常见的三种进程状态
  • (2020)Java后端开发----(面试题和笔试题)
  • (第61天)多租户架构(CDB/PDB)
  • (二)springcloud实战之config配置中心
  • (转) ns2/nam与nam实现相关的文件
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .Net 8.0 新的变化
  • .Net Core 中间件验签
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET大文件上传知识整理
  • .NET运行机制
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @RequestBody的使用
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [BZOJ5250][九省联考2018]秘密袭击(DP)
  • [C++提高编程](三):STL初识
  • [CF226E]Noble Knight's Path
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
  • [HNOI2008]玩具装箱toy
  • [Java基础] Java中List.remove报错UnsupportedOperationException
  • [LeetCode]—Copy List with Random Pointer 深度复制带“任意指针”的链表