基于SPI总线的422接口设计

2015-01-29 08:35上海航天电子技术研究所姜丽梅
电子世界 2015年15期
关键词:数据格式空闲寄存器

上海航天电子技术研究所 姜丽梅 孙 静

基于SPI总线的422接口设计

上海航天电子技术研究所 姜丽梅 孙 静

以SPI总线为基础,本文介绍了一种SPI总线与422总线之间的转换电路,同时给出了基于FPGA器件通过VerilogHDL 工程语言编程实现了一种常用数据格式的UART模块,解决了工程应用中串口通讯的需求。

SPI总线;422总线;UART

引言

SPI(Serial Peripheral Interface)即串行外设接口总线是Motorola公司推出的一种同步串行接口技术,它具有高速、全双工、协议简单等优点。与标准的串行接口不同,SPI是一个同步协议接口,全双工通信,所有的传输都参照一个共同的时钟,其传输速率可达几Mb/S。

目前该总线已发展成为一种工业标准。但是测试工控机一般不支持SPI总线,为实现对使用SPI总线产品的测试,需要将SPI总线数据转换成测试工控机可接收的数据格式,本文介绍一种SPI接口与同步422接口的转换电路实现了两种总线之间的数据交互。

1 SPI基本原理介绍

SPI总线分为主机(master)和从机(slave)两部分,主机和从机之间通过4根信号线连接,包括SDI(从机输入数据线),SDO(从机输出数据线),SCLK(串行移位时钟),CS(从机片选信号)。SDI和SDO用于串行接收和发送数据,高位在前,低位在后。

其工作原理为:当有数据需要在主机和从机之间传输时,主机控制CS输出有效电平(低电平),SCLK输出时钟信号,主机和从机的数据在时钟的上升沿或下降沿分别传输到SDI和SDO,在下一个时钟沿,主机和从机接收数据。图1是SPI的接口时序。

2 422总线简介

图1 SPI接口时序图

图2 SPI数据接收仿真波形图

RS-422为全双工串行数据通信接口标准,其优点在于:(1)采用双端差分输入,总线的抗干扰能力强;(2)互连双方的信号地分立,两条信号线形成回路,避免了电平偏移;(3)输出端采用双端平衡驱动,其信号放大倍数高,信号传输距离远。

3 详细设计

随着EDA技术的发展,FPGA已经在很多方面得到了广泛应用,本文通过FPGA实现包括SPI接收模块、SPI发送模块以及422总线UART的设计,外围通过NS公司的DS26LV31W和DS26LV32AW 实现422异步串行接口通讯。

为提高转换效率,在SPI模块与UART之间加入了1级FIFO缓存。整个设计结构紧凑、性能稳定可靠。

图4 RS-422数据发送波形图

图6 422数据接收仿真波形图

3.1 SPI接收模块的设计

SPI接收模块主要功能为接收SPI总线数据,将其转换成8位并行数据格式,转换成422数据格式。具体转换过程为:当板卡上电后,进入IDLE状态,当检测到片选信号CS有效时,接收模块通过移位寄存器将有效的SPI串行数据转换成FIFO输入端口的8位并行数据,同时对应一个8位数据产生FIFO的写信号,将数据写入FIFO。422发送模块判断FIFO是否为空,不空则从FIFO中取出数据,把8位并行数据变换成422串口形式发送出去。仿真波形如图2所示。

3.2 422总线UART接口的设计

422异步串行接口一般采用专用的集成电路即UART实现,它们能实现较全面的串行通信功能,但在实际应用中通常只需要部分功能,造成一定资源的浪费。本文采用Verilog语言设计实现了1个简单易用422帧格式的UART。

UART的帧格式包括空闲状态(高电平有效),1位起始位(低电平有效),8位数据位,1位停止位(高电平有效)。字符的同步由起始位和停止位实现。

UART接口包括422接收模块和422发送模块。

422发送模块按照422数据格式依次发出1位起始位,8位数据位,1位停止位。状态转移图如图3所示:

图3 422发送状态转移图

(1)空闲:状态机检测前级FIFO中有没有数据,当有数据时就进入起始状态;

(2)起始:在该状态下,发出1位低电平起始位,发送完毕后转入数据状态;

(3)数据:发送8位数据位,发送完毕后,进入停止状态;

(4)停止:发送1位高电平停止位,发送后进入空闲状态,等待下次数据的到来。

仿真波形如图4所示。

图5 422接收状态转移图

422接收模块按照422数据格式首先通过检测下降沿来判断一帧422数据的到来,然后按照采样时钟对8位串行数据进行采样,在寄存器中进行移位操作。

根据奈奎斯特定理,采样时钟至少为422速率的2倍。在本文中,为确保采样到的每一位数据正确,采样时钟设置为422速率的16倍,当检测到起始位时,对应一帧422传输,计数器cnt从0开始一直计到146,当cnt[3:0]=4’b0111时,此时基本处于当前数据位的中间位置,数据较稳定,将该时刻的数据保存至移位寄存器,当cnt计到140,此时8位串行数据已经全部移至移位寄存器,把当前移位寄存器的数据写入数据寄存器。具体状态转移如图5所示。仿真波形如图6所示。

(1)空闲:状态机对输入信号进行下降沿检测,当检测到下降沿时,状态进入起始状态;

(2)起始:在该状态下,检测输入信号,若起始位有效转入数据状态,无效转入错误状态;

(3)数据:将8位串行数据接收下来,转入停止状态;

(4)停止:检测停止位是否有效,若停止位有效,当前一帧数据接收zz完毕,转入空闲状态,等待下一帧数据的到来,若无效,转入错误状态;

(5)错误:摒弃错误帧的数据,状态转入空闲状态,准备接收下一帧的数据。

3.3 SPI发送模块的设计

422数据转换为SPI数据的过程为:板卡上电后,进入IDLE状态,当检测到有效的422数据起始位后,422接收模块从一帧422数据中提取出8位数据,把串行422转换成8位并行数据,同时对接收的数据进行帧头帧尾校验,校验正确的数据写入FIFO。SPI发送模块首先判断FIFO中的数据个数是否满足一帧SPI数据的长度要求,若满足要求,则从FIFO中取出数据,转换成SPI数据格式发送出去,若长度不满足要求,则继续等待,直至FIFO中有足够长度的数据。

仿真波形如图7所示。

4.结论

本文介绍的SPI与422总线数据互换的设计方法在具体的项目实践中取得了良好的效果,通过该方法,使得SPI总线的使用范围得到了大大扩展。

姜丽梅(1983—),女,硕士,现就职于上海航天技术研究院第八〇四研究所,从事通用嵌入式系统产品设计岗。

孙静(1977—),女,硕士,现就职于上海航天技术研究院第八〇四研究所,从事通用嵌入式系统产品设计岗。

猜你喜欢
数据格式空闲寄存器
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
“鸟”字谜
西湾村采风
彪悍的“宠”生,不需要解释
一种融合多业务的信息化系统框架研究
WLAN和LTE交通规则
基于ArcGIS的规划数据格式转换研究
高速数模转换器AD9779/AD9788的应用
一种可重构线性反馈移位寄存器设计