[FPGA] 芯片常用协议种类详解,含多协议转换器

[复制链接]
289|1
手机看帖
扫描二维码
随时随地手机跟帖
IClance699|  楼主 | 2021-12-21 20:01 | 显示全部楼层 |阅读模式
题目:芯片常用协议种类详解,含多协议转换器
目录
Pan德
十年专注FPGA硬件工程师
FPGA&芯片的定制开发、技术交流+V好:xinpianxiehui


1. 引言
为什么需要通信协议,通信协议就像一个人的语言,如果没有语言信息传达,芯片之间就像哑巴一样,不知所云。通讯的二进制信息里主要包含:时间CL,地址,数据,还有一个速率。
1.1常用通信样式
无非就以下两种,要么串行,要么并行
一种是需要时钟(同步通信) 一种是不需要时钟(异步通信)
1.传输速率 2.数据长度 3. 开始和停止
1.1.1常用I2C
理论上最高可控制127个地址设备
I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在各类电子产品中有着广泛的应用。 I2C总线最主要的优点是其简单性和有效性。
由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。(根据I2C的总线长度的不同和所挂组件的多少,这个传输速率是不同的,理论最大的传输速率是400Kbps)
100Kbps 用10K电阻 , 400Kbps用2K电阻
I2C总线的另一个优点是,它支持多主控(multimastering), 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
集成I2C的芯片
I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率400kbps。各种被控制电路均并联在这条总线上,任何时候时钟信号都是由主控器件产生。
I2C总线在传送数据的过程中,主要有三种控制信号:起始信号,结束信号,应答信号
起始信号:当SCL为高电平时,SDA由高电平转为低电平时,开始传送数据
结束信号:当SCL为高电平时,SDA由低电平转为高电平时,结束数据传送
应答信号:接收数据的器件在接收到数据后,向发送数据的器件发出低电平信号,表示已收到数据。这个信号可以是主控器件发出,也可以是从动器件发出。总之由接收数据的器件发出。
这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。
I2C总线操作
I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电
平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。
1.1.2常用SPI

SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。
1)SDO – 主设备数据输出,从设备数据输入(也叫MOSI)
2)SDI– 主设备数据输入,从设备数据输出 (也叫MISO)
3)SCLK– 时钟信号,由主设备产生
4)CS – 从设备使能信号,由主设备控制 (也叫SS
SPI是英文Serial Peripheral Interface的缩写,中文意思是串行外围设备接口,SPI是Motorola公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。
SPI概述SPI:高速同步串行口。3~4线接口,收发独立、可同步进行.
SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。现在越来越多的芯片集成了这种通信协议。
SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。
1)SDO – 主设备数据输出,从设备数据输入(也叫MOSI)
2)SDI– 主设备数据输入,从设备数据输出 (也叫MISO)
3)SCLK– 时钟信号,由主设备产生
4)CS – 从设备使能信号,由主设备控制 (也叫SS)
其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。
接下来就负责通讯的3根线了。通讯是通过数据交换完成的,SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。
要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。
性能对比,SPI传输距
图片11.png
离短,比I2C快,因为线多,并行功能多。SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据
图片12.png
SPI
图片13.png
在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。
最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。
1.1.3常用UART
(Universal Asynchronous Receiver/Transmitter)
图片14.png
一根线来通信
通用异步收发器
UART是用于控制计算机与串行设备的芯片。它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。
UART主要有由数据总线接口、控制逻辑、波特率发生器、发送部分和接收部分等组成。---功能包括微处理器接口,发送缓冲器(tbr)、发送移位寄存器(tsr)、帧产生、奇偶校验、并转串、数据接收缓冲器(rbr)、接收移位寄存器(rsr)、帧产生、奇偶校验、串转并。
UART协议是实现设备之间低速数据通信的标准协议。因发送时不需同时发送时钟,故此协议为异步
1.1.4 STM32上的串口解析
图片15.png
1.2 FPGA上的UART协议
1、概述
UART:通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。UART端口有4个pin(VCC, GND, RX, TX), 用的TTL电平,  低电平为0(0V),高电平为1(3.3V或以上)。
图片16.png
UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在单片机中UART可以说是一种最基本的配置,很多与电脑进行通信的设备都采用到它。
图片17.png
TX - 数据发送接口
RX - 数据接受接口
两个设备间将TX与RX相连,RX与TX相连即可正常工作。最常用到的就是我们电脑上的USB那就是个最典型的UART接口。
UART使用标准的TTL/CMOS逻辑电平(0~5v、0~3.3v、0~2.5v或0~1.8v)来表示数据,高电平表示1,低电平表示0。为了增强数据的抗干扰能力、提高传输长度,通常将TTL/CMOD逻辑电平转换为RS-232逻辑电平,3~12v表示0,-3~-12v表示1
TxD、RxD数据线以位为最小单位传输数据,而帧由具有完整意义的、不可分割的若干位组成,它包含开始位、数据位、校验位(需要的话)和停止位。发送数据之前,UART之间要约定好数据的传输速率(即每位所占据的时间,其倒数称为波特率)、数据的传输格式(即有多少个数据位、是否使用校验位、是奇校验还是偶校验、有多少个停止位)。
数据传输流程如下:
1)空闲状态:平时数据线处于空闲状态(1状态)
2)发送起始位:当要发送数据时,UART改变TxD数据线的状态(变为0状态)并维持1位的时间。
         这样接收方检测到开始位后,在等待1.5位的时间就开始一位一位地检测数据线的状态得到所传输的数据。
3)发送信息位:UART一帧中可以有5、6、7或8位的数据,发送方一位一位地改变数据线的状态将他们发送出去,首先发送最低位。
4)奇偶校验位:如果使用校验功能,UART在发送完数据后,还要发送1位校验位。有两种校验方法:奇校验、偶校验——数据位连同校验位中,1的数据等于奇数或偶数。
5)停止位:最后,发送停止位,数据线恢复到空闲状态(1状态)。停止位的长度有3种:1位、1.5位、2位。
图片18.png
2、基于FPGA的UART串口设计实践
2.1需求分析
sys_clk位25MHZ,波特率=9600,起始位=1,信息位=8,无奇偶校验位,停止位=1。
波特率=9600,则一个信息位持续时间是1/9600s。即在25MHZ时钟下,需要计数2604个时钟周期。
采用一个计数范围[0:2603]的计数器,当器计数到1301的时候,开始采样Rxd_r上的数据。
rxd_r是rxd信号,经过clk25MHZ打三拍产生,作为数据rxd跨时钟域的处理。
架构如下:
图片19.png
tx_ready:高电平,表示UART空闲,可以接收tx_data[7:0]的数据。
下图是UART接收数据的时序示意图。
图片20.png
UART接收RxD数据
UART发送数据的时序图,与上图类似,不
FPGA&芯片的定制开发、技术交流+V好:xinpianxiehui
专注FPGA15年
1.3基于FPGA用verilog实现UART
FPGA实现两大巨头,AI计算篇和访存篇 - FPGA论坛-资源最丰富FPGA/CPLD学习论坛 - 21ic电子技术开**坛
1.4基于FPGA的SPI协议实现
FPGA实现两大巨头,AI计算篇和访存篇 - FPGA论坛-资源最丰富FPGA/CPLD学习论坛 - 21ic电子技术开**坛
1.5通过FPGA来做多协议转化
FPGA实现两大巨头,AI计算篇和访存篇 - FPGA论坛-资源最丰富FPGA/CPLD学习论坛 - 21ic电子技术开**坛

使用特权

评论回复

相关帖子

liu513201| | 2022-1-9 21:06 | 显示全部楼层
xiexiefenxiang

使用特权

评论回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则