Verilog6_串行通信协议

news/2025/1/7 8:10:35/文章来源:https://www.cnblogs.com/Qzzz/p/18653404

一、通信协议概述

1.串行通信与并行通信

  • 串行通信(serial communication):数据通过单根数据线一位一位地传输;成本低但速度慢;适用于远距离传输,用于计算机与外设之间,如UART、\(I^2C\)、SPI
  • 并行通信(parallel communication):通过多根数据线同时将数据的所有位一次传输完成;成本高但传送速度快、效率高;适用于近距离传输,用于计算机内部,如CPU数据总线、存储器译码电路

2.同步通信和异步通信

  • 同步通信:发送方发送数据后,需要等待收到接收方发回的响应后再发送下一个数据包。同步通信是阻塞模式;
  • 异步通信:发送方发送数据后,不需要等待接收方发回的相应就可以发送下一个数据包。异步通信是非阻塞模式

3.数据流传输模式

  • 单工通信:只支持信号在一个方向上传输(正向或反向),任何时候不能改变信号的传输方向。此种方式适用于数据收集系统,例如计算机和打印机之间的通信是单工模式,因为只有计算机向打印机传输数据,而没有相反方向的数据传输。
  • 半双工通信:半双工通信允许信号在两个方向上传输,但某一时刻只允许信号在一个信道上单向传输,因此,半双工通信实际上是一种可切换方向的单工通信,传统的对讲机使用的就是半双工通信方式,由于对讲机传送及接受使用相同的频率,不允许同时进行,通信双方需要通过一定的协议或者机制来协调通信方向
  • 全双工通信:允许数据同时在两个方向上传输,即有两个信道,因此允许同时进行双向传输,全双工通信是两个单工通信方式的结合,要求收发双方都有独立的接受和发送能力。全双工通信效率高,控制简单,但造价高。计算机之间的通信是全双工方式,一般的电话、手机也是全双工的系统,因为在讲话时可以听到对方的声音。

4.通信的基本组成

  • 发出起始信号;
  • 寻址;
  • 数据传输;
  • 发出终止信号

5.不同通信协议的特点

二、UART串口通信

1.概念

        通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART):将数据由串行通信与并行通信之间做传输转换的异步全双工串行接口,作为并行输入转为串行输出的芯片,通常集成于其他通讯接口的连接上,其工作原理是将数据一位接一位地进行传输;异步:没有共同的时钟

2.数据组成

  • 起始位:先发出一个逻辑 “0” 的信号,表示传输字符的开始。
  • 数据位:紧随起始位之后,数据位的个数可以是5、6、7、8等,构成一个字符,通常采用ASCII码,从最低位开始传送,靠时钟定位
  • 奇偶校验位:数据为加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来检验数据传输的正确性
  • 停止位:是一个字符数据的结束标志,可以是1位、1.5位、2位的高电平,由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步,因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。停止位的位数越多,不同始终同步的容忍程度越大,但是数据传输率同时也越慢。
  • 空闲位:处于逻辑“1”状态,表示当前线路上没有数据传送

3.工作原理

  • 发送数据过程:空闲状态,线路处于高电位;当收到发送数据指令后,拉低线路一个数据位的时间T,接着数据按低位到高位(小端传输)依次发送,数据发送完毕后,接着发送奇偶校验位和停止位,一帧数据发送结束;

Q:UART通信中,接收方如何识别数据位还是奇偶校验位?
A:在UART通信中,数据帧中数据为的长度是预先设置好的,这个长度在通信开始之前需要由发送方和接收方共同约定好。选择合适的数据位长度可以提高通信效率。例如,在只需传输ASCII字符的情况下,选择7位数据位可以节省带宽;而在需要传输复杂数据的情况下,选择8位数据位可以提供更大的数据传输能力

  • 接收数据过程:空闲状态,线路处于高电位;当检测到线路的下降沿(线路电位由高电位变为低电位)时说明线路有数据传输,按照约定的波特率从低位到高位接受数据,数据接受完毕后,开始接收并比较奇偶校验位是否正确,如果正确则通知后续设备准备接收数据或存入缓存

Q:如何区分1->0和11->00?
A:UART波特率发生器:波特率是衡量数据传输速率的指标,表示每秒传送数据的字符数,单位是bps,UART的接收和发送是按照相同的波特率进行收发的,发送方与接收方之间的波特率只能相差约10%

Q:发送方和接收方没有共同的时钟,如何保证数据传输的正确性?
A:波特率发生器产生的时钟频率不是波特率时钟频率,而是波特率时钟频率的16倍,即每个数据帧有16个时钟采样,取中间的采样值
        以传输8位数据为例,当检测到数据的下降沿时,表明线路上有数据进行传输,这时计数器CNT开始计数,当计数器为24=16(起始位)+8(第0位数据中间采样值)时,采样的值为第0位数据;当计数器的值为40时,采样的值为第1位数据,依此类推,进行后面6个数据的采样。如果需要进行奇偶校验,则当计数器的值为152时,采样的值即为奇偶校验位;当计数器的值为168时,采样的值为“1”表示停止位,一帧数据接收完成。

Q:为什么UART无需寻址?
A:UART是一种简单的点对点通信协议,通常用于两个设备之间的直接通信,在这种通信模式下,发送端和接收端是固定的,不需要识别多个设备或节点

三、\(I^2C\)串口通信

1.概念

        \(I^2C\)(Inter-Integrated Circuit)总线是PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准,他是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。

2.\(I^2C\)总线

        \(I^2C\)总线是一种多主机总线,连接在IIC总线上的器件分为主机和从机:主机有权发起和结束一次通信,而从及只能被主机呼叫;
        当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生;
        每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作
        IIC总线在通信时总线上发送数据的器件为发送器,接受数据的器件为接收器;
        \(I^2C\)总线只有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL

        IIC总线通过上拉电阻接正电源,当总线空闲时,两根线均为高电平,连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA以及SCL都是线“与”关系

线与关系:多个输出端连接到同一条线上。如果任何一个输出端被拉低,那么整条线的电压就会被拉低。只有当所有连接到这条线上的输出端都保持高电平时,整条线才会是高电平。

3.通信过程

  • 主机发送起始信号启用总线
  • 主机发送从机地址进行寻址
  • 被寻址的从机发送应答信号回应总机
  • 发送器发送一个字节数据
  • 接收器发送应答信号回应发送器
  • ......(循环步骤4、5)
  • 通信完成后主机发送停止信号释放总线

4.通信原理

4.1 起始信号/终止信号
  • SCL线为高电平期间,SDA线由电平向电平的变化表示起始信号
  • SCL线为高电平器件,SDA线由电平向电平的变化表述终止信号

        起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态

4.2 寻址方式
  • IIC总线上传送的数据是广义的,既包括地址,又包括真正的数据
  • IIC总线通信时每个字节为8位长度,该数据的高7位是从机地址,最低位表示后续字节的传送方向:0表示主机发送数据,1表示主机接收数据
4.3 数据传输与应答
  • 数据发送:数据传送时,先传送最高位,后传送低位
  • 从机应答
    • 发送器发送完一个字节数据后,每个从机将主机发送的地址与其子集的地址进行比较
      • 如果地址匹配,则从机通过将SDA线拉低一位返回一个ACK位;
      • 如果主机的地址与从机的的地址不匹配,则从机将SDA线拉高
    • 若由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平(高电平表示不应答主机的请求),而由主机产生一个终止信号以结束总线的数据传送
    • 接收器件收到一个完整的数据字节后,有可能需要完成一些其他工作,如处理内部中断服务等,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之成为高电平,从而使数据传送可以继续进行
    • 如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送
    • 当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号,这个信号是由对从机的“非应答”来实现的。然后,从机释放SDA线,以允许主机产生终止信号。
    • 传输完每个数据帧之后,接收设备将另一个ACK位返回给发送方,已确认已经成功接收到该数据帧;随后主机将SCL切换为高电平,然后再将SDA切换为高电平,从而向从机发送终止信号
  • 主机向从机发送数据,数据传送方向在整个传送过程中不变

        主机在第一个字节后,立即从从机读取数据

        在传送过程中,当需要改变传送方向时,起始信号从机地址都被重复产生一次,但两次读/写方向位正好相反

4.4 信号同步

        IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平才允许变化

四、SPI串口通信

1.概念

        串行外围设备接口(Serial Peripheral interface,SPI)是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。主要应用在EEPROM,FLASH,实时时钟,AD转换器还有数字信号处理器和数字信号解码器之间
        SPI分为主、从两种模式,一个SPI通讯系统有且只有一个主设备,以及一个或多个从设备,提供时钟的为主设备(Master),接收时钟的为从设备(Slave)。在实际应用中,MCU一般作为主SPI设备,带SPI接口的外围器件作为从设备

2.SPI信号线

  • MOSI:SPI总线主机输出/从机输入(SPI Bus Master Output/Slave Input)该引脚在从模式下发送数据,在主模式下接收数据
  • MISO:SPI总线主机输入/从机输出(SPI Bus Master Input/Slave Output)该引脚在主模式下发送数据,在从模式下接收数据
  • SCLK:时钟信号,由主设备产生
  • SS/CS:从设备片选信号,由主设备控制,它的功能是用来作为”片选引脚“,也就是选择指定的从设备,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突

3.数据传输

SPI主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。

  • 首先拉低对应SS信号线,表示与该设备进行通信
  • 主机通过发送SCLK时钟信号,来告诉从机写数据或者读数据
  • 主机(Master)将要发送的数据写到发送数据缓存区(Menory),缓存区经过移位寄存器(0~7),串行移位寄存器通过MOSI信号线将字节一位一位的移出去传送给从机,,同时MISO接口接收到的数据经过移位寄存器一位一位的移到接收缓存区。
  • 从机(Slave)也将自己的串行移位寄存器(0~7)中的内容通过MISO信号线返回给主机。同时通过MOSI信号线接收主机发送的数据,这样,两个移位寄存器中的内容就被交换。

        一个从设备要想能够接收到主设备发过来的控制信号,必须在此之前能够被主设备进行访问。所以主设备必须首先通过SS/CS pin对从设备进行片选,把想要访问的从设备选上

4.SPI的4种模式

        依据时钟极性时钟相位可以分为四类

  • 时钟极性(CPOL)配置SCLK的电平处于什么状态时是空闲态
    • CPOL=0:空闲态时为低电平(上升沿触发工作状态)
    • CPOL=1:空闲态时为高电平(下降沿时触发工作状态)
  • 时钟相位(CPHA)配置数据采样是在第几个边沿
    • CPHA=0:在第一个边沿采样数据,第二个边沿交换数据
    • CPHA=1:在第一个边沿交换数据,第二个边沿采样数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/864438.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二进制码与格雷码之间的转换

二进制码到格雷码的转换 (1)格雷码的最高位(最左边)与二进制码的最高位相同。 (2)从左到右,逐一将二进制码相邻的两位相加(舍去进位),作为格雷码的下一位。格雷码到二进制码的转换 (1)二进制码的最高位(最左边)与格雷码的最高位相同。 (2)将产生的每一位二进制…

20241407《计算机基础与程序设计》课程总结

每周作业链接汇总 第0周作业: 自我介绍第一周作业: 1.基于VirtualBox虚拟机安装Ubuntu和安装Linux系统 2.快速浏览一遍教材计算机科学概论(第七版),课本每章提出至少一个自己不懂的或最想解决的问题第二周作业: 数字化 信息安全 *自学教材:计算机科学概论(第七版)第1章…

运算放大器在运算方面的应用

集成运算放大器与外部电阻、电容、半导体器件等构成闭环电路后,能对各种模拟信号进行比例、加法、减法、微分、积分、对数、反对数、乘法和除法等运算。运算放太器工作在线性区时,通常要引入深度负反馈。所以,它的输出电压和输入电压的关系基本决定于反馈电路和输入电路的结…

SpringBoot原理分析-1

SpringBoot原理分析 作为一个javaer,和boot打交道是很常见的吧。熟悉boot的人都会知道,启动一个springboot应用,就是用鼠标点一下启动main方法,然后等着就行了。我们来看看这个main里面。 @SpringBootApplication public class ExampleApplication {public static void mai…

CF补题 950-Div.3

CF补题 950-Div.3-20250102 Dashboard - Codeforces Round 950 (Div. 3) - Codeforces A: 题目大意:给出一个字符串,要求重复的字母必须 \(\ge m\) ,求缺失字母总个数 #include <iostream> #include <map> using namespace std;map<char, int> mp;int ma…

第十五周学习总结

学期2024-2025-1 学号20241414 《计算机基础与程序设计》第十五周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第一周作业这个作业的目标 课程总结作业正文 本博客链接每周作业链接汇总整体评价…

【ADB基础】ADB及Monkey测试

什么是monkey Monkey 是Android SDK提供的一个命令行工具,可以简单方便的发送伪随机的用户事件流,对Android APP做压力(稳定性)测试。主要是为了测试app是否存在无响应和崩溃的情况。 monkey命令说明monkey 测试命令使用及详细说明 常用命令 语法:adb shell monkey -p 包名…

20241314 《计算机基础与程序设计》课程总结

20241314 《计算机基础与程序设计》课程总结每周作业链接汇总第一周课程概论 工业革命与浪潮之巅 信息与信息安全 计算机系统概论 计算机安全 计算的限制思维作业第二周课程概论 数字化与信息安全第三周课程概论 数字逻辑门 数据类型 冯诺依曼体系第四周课程概论 计算机系统 计…

同硕计算机专业:统考+课程+源码学习资料全部免费送!

考研之路,道阻且长。对于计算机专业的学子来说,备考之路更是充满挑战。为了帮助广大考生高效备战,我在此精心整理了一套同硕计算机专业统考历年真题和复习重点、专业课程学习和相关源码资料,并免费分享给大家!我的全部学习资料都放在那里,后续我还会增加资料分享放在那里…

20241316 《计算机基础与程序设计》课程总结

20241316 《计算机基础与程序设计》课程总结第一周作业:浏览教材并提出问题第二周作业: 自学教材计算机科学概论(第七版)第1章并完成云班课测试 《C语言程序设计》第1章并完成云班课测试第三周作业:计算机科学概论(第七版)第2章,第3章 并完成云班课测试第四周作业:学习…

Windows环境下反弹shell各类姿势

在渗透测试过程中我们有时候需要通过Windows平台来反弹shell到我们的VPS主机以及CS端,那么这个过程中我们就需要借助Windows平台内置的可执行程序来执行命令,其中首选的就是powershell,本篇文章我们主要介绍如何通过Windows平台中如何通过powershell来反弹shell操作。 power…

集成运算放大器的简单介绍

集成运算放大器是一种具有很高放大倍数的多级直接耦合放大电路。是发展最早、应用最广泛的一种模拟电路。 集成电路是把整个电路的各个元件以及相互之间的连接同时制造在一块半导体芯片上,组成一个不可分点整体。 集成电路的特点:体积小,重量轻、功耗低、可靠性高、成本低、…