首页 > 其他分享 >【嵌入式通信】嵌入式通信的底层逻辑

【嵌入式通信】嵌入式通信的底层逻辑

时间:2023-06-26 15:13:30浏览次数:42  
标签:采样 通信 嵌入式 边沿 速率 底层 时钟

本文主要是对B站视频【蛋饼嵌入式】嵌入式通信的底层逻辑 的总结,视频内容帮我进一步认识了几个问题:同步通信和异步通信的区别、DDR、NRZ编码的意义等。

0、计算机网络通信框架

  ISO国际标准化组织在上世界70年代末,把计算机网络通信的整个框架描述成了一个七层的模型,称之为OSI开放系统互联模型:

  我们最能直观感受到的通信方式的区别,诸如通信的速率,电平范围,用几根线,同轴还是双绞线,这些都体现在最下面的物理层。

  而如何把物理线路上的比特流正确的切分,并识别出一帧数据内部的结构,则属于数据链路层。

 

1、嵌入式通信方式

  一根线:最多半双工,单方向通信。

  两根线:全双工,已经是UART的雏形了。还要加上一些标记信号位,来实现正确解析出一帧数据。

  除了数据线外,再加一条时钟线来传输时钟,接收方就根据时钟来采样,这就是同步通信(IIC、SPI,分为半双工和全双工)

 

提高通信的距离、稳定性:

  双绞线代替同轴电缆。常见的百兆以太网100BASETX用2对4根,千兆1000BASETX用到4对8根,车载以太网100BASE-T1则只用一对。这种情况下,如果还保留同步通信,带上时钟线的话,就还要再准备一对双绞线,所以往往去掉时钟线,回归异步通信。

  然而对于以太网这种速率达到百兆、千兆,和其他需要应对远距离传输需求的serdes通信而言,单纯靠两边约定好的速率(异步通信)是无法保证采样的可靠性的。

  可以通过已经存在的数据线,来恢复时钟信号。首先思考一个问题,时钟的本质是什么。通俗意义上的时钟可以看做是周期性的方波,而对于采样电路中的触发器而言,实际上需要的是方波中的边沿。实际上数据线中也含有边沿,但是不那么规律。如果我们刻意地通过编码改造数据,让边沿变多,就有可能恢复周期固定的时钟。接收方再由这个恢复出来的时钟作采样,就可靠的多了。这涉及到CDR,时钟恢复电路的设计,具体可以再查资料。

 

  如果连续的电平过多时,也就是数据的跳变沿过少时,会导致锁相环失锁,后端输出的时钟也就无法稳定了。

  为了产生足够多的边沿,就引出了类似于曼彻斯特编码、4B/5B、8B/10B等的编码技术。当然减少直流分量,降低传输过程中的电容损耗也是引入新编码方式的一大原因。Serdes一般也会结合scrambler加扰器来辅助实现这一点。

 

提高通信的速率和带宽:

  提高信号产生的频率,也就是时钟,显而易见地可以提高通信的速率。但是在能保证信号质量的前提下,单纯提高时钟频率能达到的提高通信速率的效果是非常有限的。

  正常收发一个bit数据,需要一个时钟周期才能完成,比如说发送方在时钟下降沿切换,那么接收方就在上升沿采样。一对上下边沿构成一整个周期。

  如果每个比特只用半个时钟周期,效率就可以翻倍。可以在时钟的上下边沿均做数据切换,发送到总线的时候,在两根线之间做一定的相位延迟,接收方则在延时后的每个时钟边沿进行采样。这就实现了double data rate,简称DDR

 

  除了通过改进时钟来提高通信速率外,也可以通过改串行为并行的方式提高通信速率,比如SPI就有Dual SPI、Quad SPI、OSPI,常用来连接flash等存储设备。

但板级通信多线并行还有可能实现,比如DDR的PCB布线,通过走等长线,保证多根并线数据线的采样都有充足的建立和保持时间。在米级传输下,并行通信就很难实现了。

  最后,通过信号调制技术,可以变相的提高带宽,详细可以了解PAW编码调制技术。

标签:采样,通信,嵌入式,边沿,速率,底层,时钟
From: https://www.cnblogs.com/Ivan0506/p/17505653.html

相关文章

  • HTTP(Hypertext Transfer Protocol)是一种用于在网络上传输超文本的协议。它是Web应用程
    HTTP(HypertextTransferProtocol)是一种用于在网络上传输超文本的协议。它是Web应用程序之间数据交换的基础,并且也被广泛用于其他应用程序之间的通信。HTTP基于客户端-服务器模型,其中客户端发起请求,而服务器响应请求并返回相应的数据。它使用TCP/IP作为底层传输协议,通过在客户端......
  • [ARM 汇编]高级部分—ARM汇编编程实战—3.3.2 嵌入式开发环境搭建
    搭建一个嵌入式开发环境主要包括以下几个部分:安装交叉编译器配置集成开发环境(IDE)安装调试工具下载和烧录程序接下来,我们将详细介绍每个部分,并提供相应的实例。安装交叉编译器交叉编译器是用于将您编写的ARM汇编代码编译成可执行文件的工具。在本教程中,我们将使用GNUAR......
  • Remote Procedure Call (RPC) Runtime(远程过程调用运行时)是一个在计算机网络中的通信
    RemoteProcedureCall(RPC)Runtime(远程过程调用运行时)是一个在计算机网络中的通信协议,它允许在不同的进程或计算机之间进行通信和交互。RPCRuntime是Windows操作系统中用于支持远程过程调用的关键组件。RPCRuntime在Windows操作系统中的路径通常为:C:\Windows\System3......
  • Microsoft Message Queuing(MSMQ)是由微软开发的一种消息队列服务,用于在分布式应用程序
    MicrosoftMessageQueuing(MSMQ)是由微软开发的一种消息队列服务,用于在分布式应用程序之间进行异步通信。它提供了一种可靠的方式来在不同的应用程序之间发送消息,并确保消息的可靠传递。MSMQ基于消息队列的原理,应用程序可以将消息发送到队列中,然后其他应用程序可以从队列中接收这......
  • [ARM 汇编]高级部分—ARM汇编编程实战—3.3.3 嵌入式应用程序设计实例
    在本章节中,我们将学习如何使用ARM汇编编写一个简单的嵌入式应用程序。我们将以STM32F103微控制器为例,编写一个程序,实现按下按钮时点亮LED的功能。硬件连接首先,我们需要将STM32F103微控制器的一个GPIO引脚连接到LED(通过一个合适的电阻),另一个GPIO引脚连接到按钮。假设我们使用以......
  • 烧写文件系统——韦东山嵌入式Linux学习笔记11
    原文:https://blog.csdn.net/longintchar/article/details/71319513本文实验环境:1.windows7(64bit)2.JZ2440(V2)使用u-boot烧写文件系统,一般有两种方法。1.通过USB下载功能2.通过TFTP功能通过USB下载功能烧写文件系统这种方法比较简单。操作步骤:(1)连接板子和PC(串口+USB)(2)进入u-......
  • 死信 与 死信交换机【Spring Cloud - 服务异步通信】
    什么是死信?当一个队列中的消息满足下列情况之一时,可以称为死信(deadletter):- 消费者使用basic.reject或basic.nack声明消费失败,并且消息的requeue参数设置为false- 消息是一个过期消息,超时无人消费- 要投递的队列消息慢了,无法投递 什么是死信交换......
  • Windows Bluetooth Driver(Windows 蓝牙驱动程序)是一种用于在 Windows 操作系统上管理
    WindowsBluetoothDriver(Windows蓝牙驱动程序)是一种用于在Windows操作系统上管理和控制蓝牙设备的软件程序。它提供了与蓝牙硬件通信的接口,允许用户连接、配对和使用蓝牙设备,如键盘、鼠标、耳机、音箱等。Windows默认提供了内置的蓝牙驱动程序,可以通过操作系统自动更新或从......
  • 通信分析中常见的积分计算
    1.符号间隔内的指数积分:\[\begin{aligned}\langles_{ml}(t),s_{nl}(t)\rangle&=\frac{2\epsilon}{T}\int_{0}^{T}e^{j2\pi(m-n)\Deltaft}dt\\&=\frac{2\epsilon}{T}\frac{1}{j2\pi(m-n)\Deltaf}[e^{j2\piT(m-n)\Deltaf}-1]\\&=\frac{2\eps......
  • 【工具】串口通信导致鼠标乱跳解决方案
    在进行串口调试时,发现工控机在连接串口设备下开机时,出现鼠标乱跳的现象,后经查证,是串口通信被识别为鼠标信号了我们尝试了许多的解决方案,包括禁用Microsoftserialballpoing,禁用注册表中sermouse的启动项等等方式,都不太理想后来找到了串口鼠标禁用工具,才彻底解决了这一问题工具......