FPGA接口小结

记录一下FPGA学习过程中学到的一些接口协议

一、SPI

SPI是 串行外设接口(Serial Peripheral Interface) 的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议

1.1 SPI协议

SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。

(1)SDI – SerialData In,串行数据输入;
(2)SDO – SerialDataOut,串行数据输出;
(3)SCLK – Serial Clock,时钟信号,由主设备产生;
(4)CS – Chip Select,从设备使能信号,由主设备控制。

CS是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。

SCLK信号线只由主设备控制,从设备不能控制信号线

数据输出通过 SDO 线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取

因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出(全双工)

SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

1.2 SPI接口

SPI(Serial Peripheral Interface–串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。

该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线NSS。

SPI接口主要应用在EEPROM、FLASH、实时时钟、网络控制器、LCD显示驱动器、AD转换器,数字信号处理器、数字信号解码器等设备之间。

SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。

特点:信号线少,协议简单,相对数据速率高

(1)MOSI – 主器件数据输出,从器件数据输入
(2)MISO – 主器件数据输入,从器件数据输出
(3)SCLK –时钟信号,由主器件产生,最大为fPCLK/2,从模式频率最大为fCPU/2
(4)NSS – 从器件使能信号,由主器件控制,有的IC会标注为CS(Chip select)

在这里插入图片描述

SPI接口主要优点:
  ● 支持全双工操作
  ● 操作简单
  ● 数据传输速率较高

SPI接口主要缺点:
  ● 需要占用主机较多的线(每个从机都需要一条片选线)
  ● 只支持单个主机
  ● 没有指定的流控制
  ● 没有应答机制确认是否接收到数据

二、UART

在这里插入图片描述
UART是通用异步收发器(Universal Asynchronous Receiver/Transmitter)

UART是单主单从全双工通信协议,只有两台设备直接相连,其实UART也没有主从的区别,两台设备都可以接收数据和发送数据。在TX发送数据的同时,RX也可以接收数据,并且收发可以以不同的波特率收发数据。

常见的串行通信协议中,IIC是半双工多主多从通信协议,SPI是全双工的单主多从的通信协议。

UART和IIC与SPI最主要的却别在于,后两者是同步通信协议,主线上存在同步时钟线。而UART是异步串行通信协议

异步指的是发送端和接收端没有同步时钟线相连,发送端按某种速率恒定地发送数据,接收端也按照某种恒定的速率接收数据。所以接收端和发送端要按照相同的速率收发数据,否则数据就会乱掉。


波特率

波特率表示每秒钟传送的码元符号的个数,它是对码元传输速率的一种度量,它用单位时间内载波调制状态改变的次数来表示,1波特即指每秒传输1个码元。在数字传输过程中码元是最基础的单位,如果每个码元只有两个状态,即0或1,则1码元和1bit相同,1波特率等于1比特率。常用的波特率有600,1200,2400,4800,9600,19200和38400,在UART中理解为时钟周期即可。

数据传输格式:
在这里插入图片描述

UART是异步通信,没有同步时钟,虽然可以通过相同的波特率来接收,但是收发模块内的波特率也会有相位差,那么就需要一个在传输数据中有start和stop标志来做波特率的同步,然后再在中间发送需要发送的数据。数据位可以为5,6,7,8,9位,常用的形式还是一个byte-8bit数据位。值得主义的是,UART协议中的数据位是LSB模式,即低位先发,高位后发,这与IIC与SPI是不同的,在编写代码的时候要注意。


起始位、停止位

TX线在无数据传输的时候,始终为高电平,有数据要传的时候,把TX拉低,即产生了start标志,结束位为高电平。结束位和开始位都可以做同步指示,有些时候结束位可以为1.5或2个周期的高电平,可以更有效地做波特率同步,但会降低传输速率。


校验位

数据位之后的1bit为校验位,校验位有五种模式:无校验、奇校验、偶校验、始终为0、始终为1。

奇偶校验是数据通信中常用的校验模式,可以简便地校验数据是否出错,但是只知道数据是否出错,却不能纠正数据

奇校验指的是,加上校验位,共有奇数个1,偶校验指的是,加上校验位共有偶数个1。可以把所有数据位加起来,观察结果是奇数还是偶数来确定数据中1的个数,也可以用按位异或的方法快速判断。

具体的Verilog代码可见FPGA-UART串口发送数据

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值