当前位置:首页 > EDA > 电子设计自动化
[导读]摘要: SPI 总线是一个同步串行接口的数据总线,具有全双工、信号线少、协议简单、传输速度快等特点。介绍了SPI 总线的结构和工作原理,对4 种工作模式的异同进行了比较,并着重分析了SPI 总线的工作时序。利用Veril

摘要: SPI 总线是一个同步串行接口的数据总线,具有全双工、信号线少、协议简单、传输速度快等特点。介绍了SPI 总线的结构和工作原理,对4 种工作模式的异同进行了比较,并着重分析了SPI 总线的工作时序。利用Verilog 硬件描述语言编写出SPI 总线的主机模块,经ModelSim 仿真得出相应的仿真波形。根据仿真波形分析,所设计的SPI 主机模块的功能是正确的。最后在Xilinx ISE 中对该模块进行综合与实现,并在FPGA 上完成了下载与验证。

引言

SPI(串行外围接口)总线,是一个同步串行接口的数据总线,它具有全双工、信号线少、协议简单、传输速度快等优点。由于串行总线的信号线比并行总线更少、更简单,越来越多的系统放弃使用并行总线而采用串行总线。在众多串行总线中,SPI 总线与I2C 总线、CAN 总线、USB 等其他常用总线相比有很大优势,如SPI 总线的数据传输速度可达若干Mbps, 比I2C 总线快很多。SPI 总线最典型的应用就是主机与外围设备(如EEPROM、Flash RAM、A/D 转换器、LED 显示器、实时时钟等)之间的通信。

FPGA(现场可编程门阵列)是在PAL、GAL、PLD 等可编程器件的基础上进一步发展的产物,具有设计周期短、可重复编程、灵活性强等特点。用FPGA 设计的SPI 总线具有可扩展性强、便于修改等优点。只要对设计做简单的改动,即可对SPI 总线的数据位数、工作模式等进行扩展,充分发挥了FPGA 的优势。

1 SPI 总线的结构和工作原理

SPI 总线区分主机(Master)和从机(Slave)两部分,它的结构框图如图1 所示。


图1 SPI 总线结构框图

主机和从机之间通过4 根信号线连接,分别是SCK、MOSI、MISO、CS,它们的定义如下。

SCK:同步时钟信号,用来同步主机和从机的数据传输,由主机控制输出,从机在SCK 的边沿接收和发送数据;MOSI:主机输出、从机输入信号,主机在上升沿(或下降沿)通过该信号线发送数据给从机,从机在下降沿(或上升沿)通过该信号线接收该数据;MISO:主机输入、从机输出信号,从机在上升沿(或下降沿)通过该信号线发送数据给主机,主机在下降沿(或上升沿)通过该信号线接收该数据;CS:从机片选信号,由主机控制输出。

其工作原理是: 当没有数据需要在主机和从机之间传输时,主机控制SCK 输出空闲电平,CS 输出无效电平,SPI 总线处于空闲状态;当有数据需要传输时,主机控制CS 输出有效电平,SCK输出时钟信号,SPI 总线处于工作状态;在某个时钟边沿,主机和从机同时发送数据,将数据分别传输到MOSI 和MISO 上;在下一个时钟边沿,主机和从机同时接收数据,分别将MISO 和MOSI上的数据接收并存储;当数据全部传输完毕时,主机控制SCK 输出空闲电平,CS 输出无效电平,SPI 总线重新回到空闲状态。至此,一个完整的SPI 总线数据传输过程完成。

SPI 总线有两个控制位:CPOL 和CPHA.将SCK 的空闲电平用IDLE 表示,非空闲电平用ACTIVE 表示。CPOL 用来选择IDLE 的电平值。当CPOL=0 时,IDLE=0;当CPOL=1 时,IDLE=1.

CPHA 用来选择接收数据的时刻。当CPHA=0 时, 接收时刻是IDLE-ACTIVE 边沿;当CPHA=1 时,接收时刻是ACTIVE-IDLE边沿。根据CPOL 和CPHA 的取值情况,SPI 总线共有4 种不同的工作模式。图2 给出了SPI 总线在不同工作模式下的工作时序。


图2 SPI 总线的工作时序

当CPHA=0 时,MOSI 和MISO 的时序有所不同,主要是第一个数据位MSB 的发送时刻不同。MOSI 的MSB 在SCK 的第一个IDLE-ACTIVE 边沿的前半个周期由主机发送到MOSI 上;而MISO 的MSB 则在CS 信号的下降沿由从机发送到MISO 上。当CPHA=1 时,MOSI 和MISO 的时序完全相同。

2 SPI 主机模块的设计

本文设计的SPI 主机模块主要完成以下工作:

(1) 将主机收到的8 位并行数据转换为串行数据,并发送给从机;(2) 接收来自从机的串行数据,将其转换为并行数据,通过并行端口输出;(3) 输出从机所需要的输入信号、时钟信号SCK 和片选信号CS。

在数据串并转换的过程中, 必须用到寄存器来存放临时数据。一般情况下,发送数据需要1 个发送寄存器,接收数据需要1个接收寄存器,则至少需要2 个寄存器。在SPI 总线中,每发送1个数据位则发送寄存器多出1 个空闲位, 正好可以在半个周期后用来接收1 个数据位。为了减少资源消耗,可以用1 个移位寄存器来代替2 个独立的接收寄存器和发送寄存器。图3 所示为SPI 总线的硬件结构框图,其中MaSTer 和Slave 各使用1 个移位寄存器接收和发送数据。


图3 SPI 总线的硬件结构

为了实现对模块的控制,除了clk、cs、sck、miso、mosi 这些信号之外,还需要一些其他信号。其中,rst 是复位信号,用于SPI 模块的初始化。en 是模块的使能信号,当en=1 时模块开始工作。

data_i 是待发送数据的8 位并行输入端。data_o 是用于接收和发送数据的移位寄存器, 也是数据传输完成时已接收数据的8位并行输出端,图4 是所设计的SPI 主机模块的框图。


图4 SPI 模块框图

下面是用Verilog HDL 设计的SPI 主机模块(CPOL =0,CPHA=1)的主要程序,程序中省去了变量的声明,并在注释中对这些变量作了说明。


3 设计的仿真、综合与实现

通过编写测试平台,并使用Mentor Graphics 公司的仿真工具ModelSim SE PLUS 6.1f 对该SPI 模块进行仿真,得到的仿真波形如图5 所示。


图5 SPI 模块的仿真波形

从图中可以看出,sck 的空闲电平IDLE=0,接收数据时刻是下降沿即ACTIVE-IDLE 边沿, 故该SPI 模块的工作模式是CPOL=0,CPHA=1,与设计一致。当en=0 时,cs=1,SPI 总线处于空闲状态。当en=1 时,在下降沿cs=0,sck 输出时钟信号,总线数据传输开始。同时,data_o=data_i, 移位寄存器存入待发送数据11010111.在第1 个周期上升沿,主机通过mosi 发送data_o 最高位1 至从机。在第1 个周期下降沿,data_o 左移一位,多出一个空闲位data_o[0],主机通过miso 接收从机发送的数据最高位1,并将其存入data_o[0],data_o=10101111.依此类推,后面7 个周期的数据传输过程与第1 个周期类似。8 位数据全部传输完成之后,cs=1,一个完整的SPI 总线传输过程结束。可以发现,data_o中的数据被一个一个从主机发送到从机,同时data_o 也被用来存储从机发送的数据。8 个周期完成之后,data_o 中存储的数据正是从机发送的数据10101101.综合以上分析,该SPI 模块的功能是正确的。

通过实验,在Xilinx ISE 9.1i 中完成了对该模块的综合与实现,并下载到Digilent 公司的FPGA 开发板Spartan-3E Starter 上进行验证,实验结果正确。综合工具使用ISE 自带的XST,下载工具使用ISE 自带的iMPACT.

4 结语

本文用Verilog 硬件描述语言设计了一个符合SPI 总线规范的SPI 主机模块,使用仿真工具ModelSim 对其进行仿真并给出了仿真波形。在Xilinx ISE 中对该模块进行综合与实现,并在FPGA 上完成了下载与验证。该SPI 主机模块的功能正确,工作稳定,可扩展性强。由于SPI 总线应用范围很广,利用FPGA 可重复配置的优点,该模块可以很方便地应用于各种场合。本文作者创新点:根据SPI 总线规范,用Verilog HDL 设计并实现了一个带有移位寄存器的SPI 总线模块,具有简洁高效、便于修改、可扩展性强等特点。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Bluespec支持加速器功能的RISC-V处理器将Achronix的FPGA转化为可编程SoC

关键字: RISC-V处理器 FPGA SoC

为无处不在的端侧设备插上AI的翅膀,AMD发布第二代Versal™ 自适应 SoC

关键字: AMD FPGA 自适应SoC AI 边缘计算

Pmod接口可以说是数字电路板的连接革命。随着科技的飞速发展,数字电路板间的通信与连接技术也在不断创新和进步。Pmod接口,作为一种新兴的数字接口标准,正逐渐成为数字电路板间通信的桥梁,为电子设备的连接和通信带来了革命性...

关键字: pmod接口 FPGA 数字电路板

近日举办的GTC大会把人工智能/机器学习(AI/ML)领域中的算力比拼又带到了一个新的高度,这不只是说明了通用图形处理器(GPGPU)时代的来临,而是包括GPU、FPGA和NPU等一众数据处理加速器时代的来临,就像GPU...

关键字: FPGA AI 图形处理器

当我们提到成本优化型FPGA,往往与简化逻辑资源、有限I/O和较低制造工艺联系在一起。诚然,在成本受限的系统设计中,对于价格、功耗和尺寸的要求更为敏感;但随着一系列创新应用的发展、随着边缘AI的深化,成本优化型FPGA也...

关键字: AMD FPGA Spartan 边缘计算

全球领先的高性能现场可编程门阵列(FPGA)和嵌入式FPGA(eFPGA)半导体知识产权(IP)提供商Achronix Semiconductor公司宣布,该公司参加了由私募股权和风险投资公司Baird Capital举...

关键字: FPGA 智能汽车 eFPGA

全新 FPGA 能为嵌入式视觉、医疗、工业互联、机器人与视频应用提供高数量 I/O、功率效率以及卓越的安全功能

关键字: FPGA 嵌入式视觉 机器人

Altera致力于为客户提供端到端的FPGA、易于使用的AI、软件和弹性供应链。

关键字: FPGA AI

在半导体领域,大部分对于AI的关注都集中在GPU或专用AI加速器芯片(如NPU和TPU)上。但事实证明,有相当多的组件可以直接影响甚至运行AI工作负载。FPGA就是其中之一。

关键字: FPGA AI 半导体

半导体产品老化是一个自然现象,在电子应用中,基于环境、自然等因素,半导体在经过一段时间连续工作之后,其功能会逐渐丧失,这被称为功能失效。半导体功能失效主要包括:腐蚀、载流子注入、电迁移等。其中,电迁移引发的失效机理最为突...

关键字: 半导体 电迁移 FPGA
关闭
关闭