• 从“0”到大神,嵌入式软件学习路线攻略

    从“0”到大神,嵌入式软件学习路线攻略

    前天 63浏览
  • 上拉电阻与下拉电阻的作用

    目录 1.上拉电阻 2.下拉电阻 3.主要作用    电阻在电路中起限制电流的作用,而上拉电阻和下拉电阻是经常提到也是经常用到的电阻。在每个系统的设计中都用到了大量的上拉电阻和下拉电阻,这两者统称为“拉电阻”,最基本的作用是:将状态不确定的信号线通过一个电阻将其箝位至高电平(上拉)或低电平(下拉),但是无论具体用法如何,这个基本的作用都是相同的,只是在不同应用场合中会对电阻的阻值要求有所不同,下面一起来了解它们吧:   1.上拉电阻   (1)概念:将一个不确定的信号,通过一个电阻与电源VCC相连,固定在高电平。   图1 上拉电阻   (2)原理:在上拉电阻所连接的导线上,如果外部组件未启用,上拉电阻则“微弱地”将输入电压信号“拉高”。当外部组件未连接时,对输入端来说,外部“看上去”就是高阻抗的。这时,通过上拉电阻可以将输入端口处的电压拉高到高电平。如果外部组件启用,它将取消上拉电阻所设置的高电平。通过这样,上拉电阻可以使引脚即使在未连接外部组件的时候也能保持确定的逻辑电平。   2.下拉电阻   概念:将一个不确定的信号,通过一个电阻与GND相连,固定在低电平。   图2 下拉电阻   3.主要作用   下拉电阻的主要作用是与上接电阻一起在电路驱动器关闭时给线路(节点)以一个固定的电平。   (1)提高电压准位:   a)当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V), 这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。   b)OC门电路必须加上拉电阻,以提高输出的高电平值。   (2)加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。   (3)电阻匹配,抑制反射波干扰:长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。   (4)N/Apin防静电、防干扰:在COMS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。同时管脚悬空就比较容易接受外界的电磁干扰。   (5)预设空间状态/缺省电位:在一些CMOS输入端接上或下拉电阻是为了预设缺省电位。当你不用这些引脚的时候,这些输入端下拉接0或上拉接1。在I2C总线等总线上,空闲时的状态是由上下拉电阻获得   (6)提高芯片输入信号的噪声容限:输入端如果是高阻状态,或者高阻抗输入端处于悬空状态,此时需要加上拉或下拉,以免收到随机电平而影响电路工作。同样如果输出端处于被动状态,需要加上拉或下拉,如输出端仅仅是一个三极管的集电极。从而提高芯片输入信号的噪声容限增强抗干扰能力。   以上就是上拉电阻与下拉电阻的作用介绍了。对于上拉电阻和下拉电阻的选择,应结合开关管特性和下级电路的输入特性进行设定;考虑的因素包括:驱动能力与功耗的平衡,下级电路的驱动需求,高低电平的设定,频率特性等等。

    04-02 65浏览
  • CAN 协议即控制器局域网络

    CAN 协议即控制器局域网络 (Controller Area Network)简称,由研发和生产汽车电子产品著称的德国 BOSCH 公司开发,成为国际标准ISO11519以及ISO11898。

    03-31 72浏览
  • I2C接口电路进行分析

    项目中,由于CPU所用的IO的电压比较低,很多IO的电压域的电压都是1.8V,而外围设备电路通常所用的电压是3.3V和5V,当CPU需要与外围设备通信时就会出现通信接口电压不匹配的情况,此时就需要对通信接口进行电平转换。下面我们以I2C接口电路进行分析,电路如下: 那么它是如何实现不同电压域之间的双向通信的呢? 原理分析 为了便于分析,我们使用其中一根线进行分析,下面是I2C的数据线原理图: 当SDA1输出高电平时:MOS管Q1的Vgs = 0,MOS管关闭,SDA2被电阻R2上拉到3.3V。 当SDA1输出低电平时:MOS管Q1的Vgs = 1.8V,大于导通电压,MOS管导通,SDA2通过MOS管被拉到低电平。 当SDA2输出高电平时:MOS管Q1的Vgs不变,MOS维持关闭状态,SDA1被电阻R1上拉到1.8V。 当SDA2输出低电平时:MOS管不导通,但是它有个寄生二极管!MOS管里的寄生二极管把SDA1拉低到低电平,此时Vgs约等于1.8V,MOS管导通,进一步拉低了SDA1的电压。

    03-11 97浏览
  • 使用单片机外设功能的结构及使用方法

    1. GPIO 2. 定时器 3. 串行通信 4. 中断功能GPIO 单片机仅靠CPU和内存是无法运行的! 有效使用单片机不可或缺的“外设功能”是什么呢? 对电子产品进行控制的单片机是由CPU、内存及外设功能等部分组成的(图1)。CPU根据指令(程序),执行运算、数据的读写以及进行条件判断等,而内存则用来保存该程序(记忆)。 外设功能是指为了使单片机便于使用的各种功能。例如,CPU为了与外部的传感器及开关等进行信号交换,就需要“输入/输出端口(I/O端口)”这种外设功能。 而且,将模拟输入信号转换为数字值的“A/D转换器”以及反过来将数字值转换为模拟输出信号的“D/A转换器”则是单片机对各种信号进行处理时不可或缺的外设功能。 另外,还有为了正确测量时间所用的“定时器”以及提供日期和时计的“实时时钟(RTC)”,用于进行与时间相关的处理,此外还有将并行信号(parallel signal)和串行信号(serial signal)进行互相交换的“UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)”等,以便进行通信。 图1:单片机内部结构示意图 了解数字信号的输入/输出端口---“GPIO” 在“输入/输出端口(I/O端口)”中,数字信号的输入/输出端口即“GPIO(General Purpose Input/Output)”也被称为“通用I/O端口”,是一种用于数字信号输入/输出的非常方便的端口。用于将数字输出的传感器值和开关的ON/OFF值传送到单片机的输入端及通过LED来显示单片机的运算结果,以及输出用于驱动电机运行的信号等等。 GPIO被称为通用端口是其引脚既可以用于输入也可以用于输出。在早期的单片机中,引脚都被固定用于输入或输出,但是现在很多单片机中都可以自由地将其设定为输入或输出端口。假设GPIO端子有8个引脚,则可以将4个引脚用于输入,另4个引脚用于输出,也可以将1个引脚用于输入,剩下的7个引脚用于输出。 在GPIO中,为了使CPU和外部设备之间进行数据交换,要相互执行通过程序处理的数字值(0或1)与信号(电压的LOW电平或HIGH电平)的转换。下面是作为RX63N单片机的GPIO端口基础的寄存器(※1)的作用(图2)。 (※1)寄存器(Register):存在于单片机的CPU和外设功能内部中的记忆回路。用于运算和保持CPU的执行状态。由于是作为CPU及外设功能的内部回路,所以在对内存进行写入和读取时速度很快,但容量却非常小,既有可以用于各种用途的寄存器(通用寄存器),又有用于某些限定的功能和用途的特殊寄存器。 图2:GPIO的基本结构示意图 端口方向寄存器(PDR) 决定引脚方向的寄存器,也称为“方向寄存器”。 端口输入数据寄存器(PIDR) 输入时反映所使用的引脚状态的寄存器。从引脚输入LOW电平或者HIGH电平时会将之转换为0或1的值并读取该转换结果。随着引脚的变化数值也将发生变化。所以不会保持读取时的值。 端口输出数据寄存器(PODR) 此寄存器保存用作输出引脚的输出数据。将0或1的值转换为LOW电平或HIGH电平信号并从引脚输出。由于可以与内存一样保持改写前的值,所以在改写前来自引脚的输出电压也将保持不变。 定时器 一手包办有关时间和时刻的处理! 在单片机中,不仅频繁地使用“○月○日○点○分”这种时刻显示,显示过去的时间和一定的周期这种形式也被频繁地使用。例如,“该程序从运行开始过去了多少时间?”、“每秒输送128次信号”等等。另外,还经常被用于“等待指定的时间”、“经过指定的时间后将转移到下一个处理”这样的情况。对这些与时间和时刻有关进行处理的外设功能就是定时器(图1)。 图1:定时器就是进行与时间、时刻有关的处理我们也可以不使用外设功能(硬件)的定时器,而是通过软件来计算时间。下面通过图2来说明使用软件来定时的示例,图中假设循环(重复)部分的处理需要费时1μs(微秒:100万分之1秒)。由此可以计算出该循环部分重复1000次需要花费1ms(毫秒:千分之1秒),重复100万次则需费时1秒。即:通过“等待经过循环处理所指定的时间”来计算时间。但是,CPU将会集中进行时间计算的处理而无法进行其他处理。而且,只能计算一个周期的时间。而现实当中,单片机需要对应0.1秒和1/1024秒等各种周期的时间。另外,CPU的计时器频率(驱动速度)也将对软件产生影响。如果将100MHz驱动的CPU改为50MHz,那么循环1次所需的时间将变为原来的两倍。因此,需要对计算时间的软件进行修正。如上所述,由于在管理上既花时间又容易出错,所以要极力避免通过软件来计算时间。图2:通过软件定时的定时器示例 稍微介绍一下中断的内容…… 下面,我们简单介绍一下和定时器不可分割的技术——“中断功能”。单片机中的“中断功能”是指某个程序在执行过程中,因某种原因而发出“开始进行其他处理”的请求。由于可以使用中断功能,所以可使CPU不集中进行一个处理。让我们想象一下日常生活中用到“中断功能”的情景,当我们把热水倒入方便面盒中后,如果我们在3分钟内一直盯着时钟看,那么这段时间内我们就不能做其它事情。但如果用厨房定时器设定3分钟的时间,在厨房定时器的警报响起之前我们便可以去做其它事情。在这个例子中,“一直盯着时钟看”就相当于前一节中所介绍的“等待经过循环处理所指定的时间”,所以在处理结束之前不能去做其它事情。同时,厨房定时器的警报就相当于中断功能。在中断发生前还可以去做其它事情。单片机的外设功能中有各种各样的定时器,这些定时器在经过指定的时间或处理结束时向CPU发送中断信号。不仅是定时器,很多外设功能都会在“产生变化”、“处理开始/结束”时将中断信息传送给CPU。所以,CPU在中断功能发生前还可以继续做其它工作,因此可提高作业效率。关于中断功能的详细内容,将在本文后面的《外部中断功能IRQ》中做详细介绍。我们先事先了解一下“从外设功能以中断的形式向CPU传送信息”的内容。 各式各样的定时器中,还有“看门狗定时器”! 在单片机的外设功能中,最贴心的定时器是计算到指定时间的定时器和每隔一段时间便发生中断的定时器。在定时器中,最具特色的是WDT(看门狗定时器)。其名字Watch Dog Time中的Watch dog意思为“看门狗”,它的工作就是监视程序是否出现失控。由WDT监视的程序通过事先将设定的值写入WDT后启动。WDT每隔一定时间便减掉写入的值,当程序正常运行时,处理结束前会对WDT清零再结束。但是,如果程序失控(进入意料之外的重复状态且无法停止)时,写入WDT的值将小于0(称为下溢),因此向CPU通知程序出现了失控。在不允许睡眠的重要系统中,单片机中搭载的“看门狗定时器”―WDT发挥了极其重要的作用。 串行通信 单片机与外围设备的连接:并行和串行 单片机是嵌入式设备的“头脑”,其与作为嵌入式设备的“手和脚”是各种外围设备(输入输出设备等)连接。单片机应该怎样与这些外围设备连接才好呢?比如,我们来考虑一下将传感器与单片机连接的情况。如果使用前面介绍的“GPIO”的话,从传感器向单片机传送8位信号时需要使用8个引脚。这种传送模式被称为并行(并行通信)模式(图1―左)。但是,仅一个传感器就需要连接8个引脚,确实太可惜了 ,是否还有连接更少的引脚就能达到同样目的的方法呢? 此时,可使用串行传送模式(串行通信)。“串行”的意思就是直列或直线。通过并行传送模式(Parallerl Transferring Mode)中需要8个引脚才能实现的通信,在串行传送模式(Serial Transfer Mode)中,由于可以以排成一直线的模式进行传送,所以仅需一个引脚就够了(图1―右)。由于在单片机内部是通过并行模式来进行信号交换,所以还需将通过串行模式传送来的信号转换为并行模式(串行并行转换)。相反,从单片机向与单片机串行连接的外围设备传送的信号也需要将信号从并行模式转换为串行模式(并行串行转换)。瑞萨电子的单片机RX63N是通过被称为SCI(Serial Communication Interface,串行通信接口)的单元进行这些转换的。例如,使一个引脚对应1位 的char型变量进行信息交换的是并行通信(Parallel communication),而一个引脚以时分(time division)按每1位进行信息交换的就是串行通信(Serial Communication)。 图1:并行和串行由于串行连接仅使用少数引脚便可进行,所以,近年来多被用于单片机和外围设备之间的连接。GPIO除了用于将驱动电机的信号及 LED闪烁等软件操作结果的信号输出时以外,还被用于通过开关或ON/OFF输出的传感器的输入等。 通过UART便可简单地使用串行通信 由于电特性的不同,以及用于进行通信协议的规定不同,串行通信具有多种方式,其中,最易于使用的应该是“异步通信模式”了。仅需用信号线将单片机和外围设备连接起来便可使用,所以在单片机与动作监视器用的终端之间进行通信时、以及单片机与无线LAN用模块进行通信时使用。 在异步通信模式的串行通信状态下,一字节的文字信息※1在“开始位”(Start bit,意味着开始发送)和“停止位”(Stop bit,意味着停止发送)之间发送(图2)。由此,无需 I2C(Inter-Integrated Circuit,内部集成电路)”及“SPI(Serial Peripheral Interface,串行外设接口)”等时钟信号线(但在其他的串行通信模式中这些时钟信号线是必需的,以对发送和接收的时序进行同步)。另外,还可追加用于检查数据是否已正常发送的“奇偶校验位(Parity bit)※2”。 此通信方式所使用的通信用器件被称为UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器),在瑞萨电子的单片机--RX63N中内置了支持此功能的SCI(串行通信接口)。 (※1)异步串行通信状态下,一般都是从“最低有效位(LSB: Least Significant Bit),即最低二进制数位”开始进行发送的。 (※2)奇偶校验位(Parity bit):在发送时按一定量的数据(在SCI中为7位或8位)中所具有“1”(或“0”)的个数为奇数个时定为“1”,为偶数个时定为“0”的奇偶校验位(使偶校验(Even Parity Check)、数据及奇偶校验位中所包括的“1”的数量成为偶数个的方法),并通过与接收侧进行校验,以检测出数据通信中的错误。反之,如果“1”(或“0”)的个数为奇数时定为“0”,为偶数时定为“1”的方法被称为奇校验(Odd Parity Check)。图2:异步串行通信在异步通信中,能实现按“单片机→外围设备”或“外围设备→单片机”的方向确保数据信号专用的信号线时,被称为全双工通信。另一方面,将通过1根信号线来切换通信方向的方式称为半双工通信。全双工方式时需要2根信号线,可同时进行发送和接收。半双工方式时仅需1根信号线,但必须在发送和接收之间进行切换(图3)。图3:全双工通信和半双工通信 中断功能 提高作业效率的“中断功能”指的是什么? 我们回顾一下“定时器”篇中简单介绍过的“中断功能”概念。任何人都有过这样的经验,就是“将鸡蛋放进沸腾的热水中,直到鸡蛋煮熟的10分钟内要确认好几次时钟”的经历。在单片机的世界中也同样,在等待某种状态达成时,具有对对象进行定期检查的方法。例如,在等待向GPIO(通用I/O端口)的输入从0变为1时,程序可以一定的间隔来检查GPIO的状态。这种处理被称为“轮询”。 轮询虽然是一种了解状态变化的简单方法,但是如果检查的频度低(间隔长)就会错过变化,如果频度过高(间隔短),即使查也查不到变化“空耗”。由于轮询通过简单的程序便能完成处理,所以在掌握对象的变化频度时是有效的。但是,进行多次检查也会给单片机带来负荷,对功耗不利。 因此就要用到“中断功能”。产生中断时,CPU会暂时停止正在执行的任务,转而进行别的任务。也就是有别的任务“穿插”进来的意思(图1) 。当中途穿插进来的任务结束后,CPU再返回处理原来的任务。 图1:中断与轮询设想一下你在工作的同时煮鸡蛋的情况。由于你不想停下手中的工作,所以把鸡蛋放入热水中后就设置定时器并继续工作,10分钟后定时器一响就把鸡蛋从热水中捞起。这时,定时器的鸣叫就是中断 ,而“把鸡蛋从热水中捞起”就是穿插进来的工作。大家可以通过这种方式来了解中断功能。 单片机中的中断处理 中断产生于单片机内部和外部的各种设备。于开关和感应器等单片机外部的中断称为外部引脚中断,来自这些机器的中断信号由名为“IRQ”的引脚接收,再向中断控制器(在RX63N中称被称为“ICUb”)发出通知。IRQ为“Interrupt ReQuest”的略称,意思为“中断请求”。另外,来自单 片机内部的定时器和GPIO、串行通信设备UART等外设机器的中断被称为外部设备中断,中断信号直接从各外部设备通知中断控制器。 在中断控制器中,各种设备的中断信号按照先来后到的顺序,以适当的顺序被传送到CPU。而且,中断被设为无效的设备的中断信号将不会被传送到CPU,也就意味着可以忽视(屏蔽)这些信号。CPU按照从中断控制器接收到的指示来执行对应的程序(中断处理)。 CPU一旦接收到中断控制器的中断信号,首先将终止执行中的程序。然而,会自动保存“从何处重启”的出栈(POP)信息,这被称为“进栈(PUSH)”。进栈结束后,将开始由中断执行的程序。该程序结束时,进栈信息将回 送到CPU,这种现象被称为“出栈”(图2)。由于进栈和出栈都由CPU自动执行,因此程序设计者不必因顺序问题而费心。 图2:中断处理流程例如,通过UART执行串行通信时,经常监视字节是否被接收了而导致效率不佳。所以,多数情况下都对程序进行如下编程,即在信息送达 时就会产生中断并进行适当的处理,另外,使定时器产生中断的情况也不在少数。进行“经过了一定时间后该做什么”这类处理时,应进行如下编程,即通过来自定时器的信号开始进行处理。如上所述,在有效利用单片机方面,中断功能发挥了很大的作用。

    03-06 161浏览
  • 快速搞懂!单片机的同步通信和异步通信

    单片机通信:一文看懂同步通信和异步通信

    02-07 543浏览
  • STM32时钟系统的学习笔记

    STM32单片机时钟相关知识

    01-03 330浏览
  • GPIO,I2C,SPI,UART,USART,USB的区别

    通信方式梳理:GPIO,I2C,SPI,UART,USART,USB的区别

    01-02 138浏览
  • 串行接口为什么比并行接口要好?

    虽然并行接口在许多领域曾经广泛使用,但随着信号完整性要求的提高和传输速率的提升,许多并行接口逐步被高速串行接口(如 PCIe、SATA、以太网等)取代。然而,并行接口仍在一些嵌入式系统和专用场景中保留了优势,如 DDR 内存,仍然不可或缺。 一、并行接口的没落 在计算机和电子设备的发展历史中,并行接口曾一度占据主导地位。并行接口通过多条数据线同时传输多个比特位的数据,具备较高的带宽性能。然而,随着技术的发展,并行接口逐渐被串行接口所取代。这一转变的主要原因在于并行接口固有的一些缺陷: 信号干扰:并行接口需要多条信号线,这些线之间的电磁干扰会限制信号完整性,特别是在高频率下。 布线复杂度:并行接口的信号线数量多,PCB布线复杂,容易增加成本和设计难度。 同步难度:在高频情况下,保持所有信号线同步(即数据到达的时间一致)变得极具挑战性。 常见的并行接口 以下是一些经典的并行接口: IDE (Integrated Drive Electronics):用于连接硬盘和主板,后来被串行接口SATA取代。 PCI (Peripheral Component Interconnect):并行的计算机总线标准,逐步被PCI Express(串行接口)替代。 Centronics:用于连接打印机,逐步被USB取代。 并行端口(Parallel Port):主要用于外设连接,例如打印机和扫描仪,也已逐渐淘汰。 串行接口相对并行接口的优势 串行接口通过一条或少量几条数据线传输数据,相较于并行接口,具有以下优势: 减少干扰:减少信号线数量降低了线间干扰,提高了信号完整性。 简化布线:减少引脚和PCB布线复杂性,降低了制造成本。 更高的频率:串行接口的点对点传输设计允许更高的传输速率。 同步简化:在串行接口中,通常只需同步一条数据线和一条时钟线(或者通过嵌入时钟的方法实现同步)。 适应性强:串行接口可以支持更长的传输距离,同时减少衰减。 二、串行接口的关键技术 串行接口的实现在芯片原理上涉及多个核心技术,包括数据的串/并转换、异步和同步通信的处理、时钟管理及恢复等。以下将详细探讨这些关键点: 1. 数据的串/并转换 (1) 并行到串行转换 (Parallel-to-Serial Conversion) 在串行接口中,数据通常由宽并行总线(如8位或16位)转换为单比特流传输。关键步骤: 移位寄存器 (Shift Register): 并行数据写入寄存器,时钟信号控制每次移位一位,将数据按位输出为串行流。 例如:8位数据10110011在 8 个时钟周期内输出每一位。 串行到并行的过程比较好理解,实现方法也比较多,下图只是实例帮助理解,具体一般都是用Verilog或者VHDL语言描述。 (2) 串行到并行转换 (Serial-to-Parallel Conversion) 接收端需将串行数据重组为并行数据: 移位寄存器: 数据通过串行输入端逐位移入寄存器。 当寄存器满后(如8位),输出并行数据给处理单元。 (3) 双缓冲机制: 为提高吞吐量,通常采用双缓冲机制,允许数据转换和传输同时进行。 2. 异步和同步通信 串行接口的关键在于如何保持数据收发双方同步 (1) 异步通信 (Asynchronous Communication) **定义:**数据传输中发送端和接收端的时钟无直接关联。 帧结构: 起始位 (Start Bit):标志传输开始。 数据位 (Data Bits):实际传输的内容,通常为 8 位或其他配置值。 校验位 (Parity Bit):用于简单错误检测。 停止位 (Stop Bit):标志帧结束,提供接收端时间校准。 实现要点: **波特率 (Baud Rate):**发送端和接收端必须配置一致。 **采样定时器:**接收端通过内部采样时钟检测起始位并锁定数据位。 (2) 同步通信 (Synchronous Communication) **定义:**发送端和接收端共享同一个时钟。 时钟传输: **独立时钟线:**如 SPI 协议,通过SCLK提供同步时钟信号。 **嵌入时钟:**如 Manchester 编码,时钟嵌入数据流中,接收端需恢复时钟。 实现要点: 主设备控制时钟,数据按时钟边沿采样。 接收端无需校准波特率,减少时序偏移问题。 3. 时钟处理 (1) 同步时钟的生成与分配 片上时钟生成器 (Clock Generator):通过晶振和锁相环 (PLL) 生成稳定时钟信号。 分频器:根据协议要求,生成合适频率的通信时钟。 (2) 异步时钟的采样与校准 采样率:通常为波特率的 16 倍或更高,确保高精度采样。 起始位检测:利用采样点检测电平变化,以锁定起始位位置。 4. 时钟恢复 在某些协议中,接收端需从数据流中恢复时钟信号。 (1) 从异步数据流恢复时钟 边沿检测:通过检测信号的上升沿或下降沿,重新生成采样时钟。 数字锁相环 (DPLL):用于动态调整时钟频率,以匹配发送端时钟。 (2) 嵌入时钟的提取 编码机制:如 Manchester 编码或 8b/10b 编码,时钟信号与数据流同时传输。 相位对齐:通过解码模块将时钟从数据中提取并对齐。 三、常见的串行接口 串行接口按照速率可分为低速和高速接口: 低速串行接口 UART (Universal Asynchronous Receiver Transmitter): 一种异步接口,常用于短距离通信。 应用:嵌入式设备、传感器通信等。 I²C (Inter-Integrated Circuit): 一种双线的同步串行通信接口,适合主从架构。 应用:芯片间通信(如MCU和EEPROM之间)。 SPI (Serial Peripheral Interface): 高速的全双工同步通信协议,适合主从设备。 应用:外设通信,如显示屏、传感器。 高速串行接口 USB (Universal Serial Bus): 从USB 1.0到USB 4的演变提供了逐步提升的带宽和兼容性。 应用:几乎所有的外设连接。 SATA (Serial ATA): 替代了并行ATA,用于硬盘连接。 特点:点对点连接,传输速率高。 PCIe (Peripheral Component Interconnect Express): 串行接口,用于计算机内部高速设备互连,如显卡和固态硬盘。 特点:支持多通道(x1、x4、x8等)并行。 Thunderbolt: 高速通用接口,支持数据、视频和电源的复用。 应用:高性能设备连接。 MIPI DSI/CSI: 针对移动设备的高速接口,用于显示(DSI)和摄像头(CSI)。 四、串行接口的发展趋势与技术挑战 高速接口的实现(如 PCI、PCIe、SATA、以太网和 SERDES)涉及更复杂的技术,因为数据传输速率更高,通常达到数 Gbps 或更高。以下是这些高速接口的关键原理和实现方法: 1. 串行高速接口的核心特性 高速数据传输:每秒传输数 Gbps 或更高,需要优化物理层和协议层设计。 差分信号:高速接口通常使用差分信号(如 PCIe 的 TX+/TX-),增强抗干扰能力并减少电磁辐射 (EMI)。 嵌入时钟:时钟和数据在同一信号中传输(如 PCIe 和 SATA),减少引脚数量,简化连接。并且有一系列优化SI的手段。 多通道:支持多通道并行传输(如 PCIe 的 x1、x4、x8 通道配置)。 2. 高速接口的关键技术 (1) 串并转换(SerDes) 串行器/解串器 (SerDes): 高速接口中,SerDes 是数据串行化和解串行化的核心模块。 解串器从接收的串行数据流中提取时钟。 根据时钟信号将串行数据重新转换为并行数据。 并行数据经并行总线输入串行器。 使用高速移位寄存器将数据按位输出,同时嵌入时钟信号。 发送端: 接收端: SerDes 的速率匹配:通常采用片上锁相环 (PLL) 精确控制数据传输速率。 (2) 时钟嵌入与恢复 嵌入时钟: 在高速传输中,通过编码技术(如 8b/10b 或 64b/66b 编码)将时钟信号嵌入数据流,简化布线并提高可靠性。 时钟恢复: 接收端通过锁相环 (PLL) 或时钟数据恢复 (CDR) 技术提取嵌入的时钟信号。 相位对齐:利用数据的过零点调整时钟相位,确保数据采样正确。 (3) 差分信号传输 双端传输:高速接口采用差分对(如 PCIe 的 TX+/TX-),两个信号电平相反,增强抗干扰能力。 优点: 抵消电磁干扰 (EMI)。 提高信号完整性,尤其在高频信号中减少串扰。 3. 典型高速接口的实现 (1) PCI 到 PCIe PCI(并行总线): 使用共享时钟信号,所有设备按总线仲裁机制轮流访问总线。 存在时钟偏差和信号完整性问题,限制了传输速率。 PCIe(点对点串行总线): 物理层:SerDes 负责数据串行化和解串行化。 数据链路层:处理数据包分组和错误校验。 事务层:支持高层协议(如内存读写请求)。 点对点链路:每个设备有独立的通信链路,消除总线仲裁延迟。 多通道配置:x1、x4、x8 等通道配置,多个通道可并行传输,提高带宽。 分层架构: (2) SATA(串行ATA) 架构: 由并行 ATA 演变而来,采用全双工串行通信。 使用 8b/10b 编码,嵌入时钟,支持数据速率高达 6 Gbps(SATA 3.0)。 工作原理: 主机通过 SerDes 发送串行数据流,存储设备解码后处理。 双向链路实现读写操作,同时保持高信号完整性。 (3) 以太网(Ethernet) 低速到高速的演变: 从最早的 10 Mbps 发展到 10 Gbps、25 Gbps,甚至 400 Gbps。 关键技术: 物理层:使用差分对传输,支持长距离传输。 编码:如 PAM4 编码,通过每个符号携带更多比特,提高带宽利用率。 时钟恢复:在接收端使用 CDR 技术精确提取时钟。 4. SerDes 在高速接口中的角色 SerDes 是所有高速接口的核心,实现以下功能: 发送端: 将并行数据以高频率转换为串行数据流。 嵌入时钟,减少额外的时钟线。 接收端: 从串行数据中恢复时钟信号。 对串行数据解码并重新组合成并行数据。 时序管理: 使用锁相环 (PLL) 控制高速信号的相位和频率。 减少抖动 (Jitter),确保数据完整性。 5. 信号完整性和高速设计 高速接口面临的主要挑战是信号完整性,设计中需重点考虑: 抖动 (Jitter):时钟或数据信号的随机偏移。需优化 PLL 和 SerDes 的设计以减少抖动。 眼图 (Eye Diagram):用于分析信号质量,良好的眼图表示高信号完整性。 阻抗匹配:差分对的阻抗需匹配 PCB 走线设计,避免信号反射。 去均衡 (De-Emphasis):在发送端对高频成分增加衰减,减少长距离传输中的信号失真。 五、为什么并行接口线多,却速率不如串行总线。 无需独立时钟信号,噪声干扰更少 高速串口通过编码技术(如8b/10b编码)将时钟信息嵌入数据流中,而不需要单独传输时钟信号。数据流本身经过加扰,避免了长串相同的比特(如连续超过5个0或1),确保时钟恢复的稳定性,同时消除了周期性变化,避免频谱集中。这种设计通过数据沿变使用PLL恢复时钟,进而采集数据流。省去独立时钟的传输不仅显著降低了功耗,还减少了由时钟信号引入的噪声干扰。 差分传输增强抗干扰能力 高速串口采用差分信号传输,当外界噪声同时作用于两条差分线时,接收端通过相减可以有效抵消干扰。差分设计对外界噪声有很强的抵抗能力,确保数据传输的稳定性。 无时钟偏移问题 由于高速串口不依赖同步时钟,不存在时钟与数据对齐的问题。只需保证差分信号线的长度匹配即可,这相对容易实现。差分信号的两条线总是保持相反状态且高度相关,即便发生延时变化,也可以通过简单的延时补偿实现对齐。而在并行总线中,由于多根独立信号线的无相关性,不同信号线的跳变时间容易受布线、阻抗和噪声的影响,从而产生时钟偏移问题,导致数据传输错误。 线少、干扰低 并行传输通常需要32或64条信号线,线间的电磁干扰显著,尤其在高频下,可能导致数据篡改或误码。相比之下,串行传输仅需4条线(如Rx和Tx的两对差分线)。差分信号在线路跳变时会产生相反的干扰,从而互相抵消,确保总噪声趋于零,避免内部噪声问题。 六、DDR接口为什么还保留并行,没有演进成串行总线? DDR接口保持并行传输而没有被串行总线替代,主要是因为其特定的应用需求和技术特点,使并行传输在这一场景中更具优势: 1. 延迟要求苛刻,串行传输不具备优势 并行总线延迟更低:DDR存储器的一个核心需求是低延迟。串行总线需要经过数据序列化和解序列化(SerDes)过程,这会引入额外的延迟,而DDR接口直接传输多条并行数据线,延迟更小,更适合需要实时响应的存储访问。 内存带宽与时延的平衡:DDR接口通过宽度(多条数据线并行传输)和频率的结合来提供高带宽,而串行接口在达到相同带宽时会牺牲一些时延。 2. 高带宽需求与物理距离限制 内存与控制器距离较短:DDR接口设计用于处理器和内存之间的短距离高带宽通信。在这种场景下,并行总线可以通过多条线同时传输数据,高效地利用接口带宽,而无需像串行总线那样依赖高频率来提升速率。 更高的带宽扩展性:并行总线通过增加数据位宽(如64位、128位)简单直观地扩展带宽,而串行接口受限于单通道的速率提升,需要更复杂的设计。 3. 成本与功耗的平衡 节约SerDes资源:串行总线需要SerDes模块来实现高速序列化和解序列化,这增加了成本、功耗和设计复杂性。而并行DDR接口无需额外的SerDes硬件,整体系统功耗更低。 控制信号复用困难:DDR接口中控制信号(如行列选通、地址信号等)和数据是分离的,适合并行总线的传输方式。而串行总线需要更复杂的协议和逻辑来处理这些信号,可能带来额外的开销。 4. 设计和兼容性考虑 长期成熟的生态系统:DDR技术经过多年优化,已经形成了高度成熟的标准和广泛的支持生态,包括芯片设计、PCB布线、信号完整性工具等。大规模切换到串行总线需要对整个生态进行重构,成本高昂且技术风险较大。 布线难度可控:尽管并行总线存在时钟偏移问题,但通过技术手段(如飞线对齐、信号校正等)可以有效解决。而串行总线的高速信号布线要求更高,可能反而在PCB设计中增加复杂度。 5. 适用场景的差异 串行总线(如PCIe、SATA)通常用于长距离、高速、点对点通信场景,而DDR接口的核心应用场景是短距离、低延迟的存储访问。这两种场景需求截然不同,导致串行总线的优势在DDR应用中并不显著。 虽然串行总线在许多领域表现优异,但DDR接口之所以继续采用并行架构,是因为它能更好地满足内存访问对低延迟、高带宽和成本控制的需求。同时,DDR技术已经发展得非常成熟,切换到串行总线需要巨大的技术和生态变革,因此并行传输依然是DDR接口的最优解。

    2024-12-13 186浏览
  • 这是最详解CAN总线协议,没有之一

    CAN 协议即控制器局域网络 (Controller Area Network)简称,由研发和生产汽车电子产品著称的德国 BOSCH 公司开发,成为国际标准ISO11519以及ISO11898。

    2024-11-25 291浏览
正在努力加载更多...
广告