《电子技术应用》

高性能主从模式动态可重构的SPI IP核设计

2018年电子技术应用第3期
魏朋博1,2,张存德1,2,黄 翔1,2,虞致国1,2,顾晓峰1,2
(1.物联网技术应用教育部工程研究中心,江苏 无锡214122;2.江南大学 电子工程系,江苏 无锡214122)
摘要: 为满足系统芯片(SoC)中的串行外设接口(SPI)灵活配置的要求,设计了一种既可作为主机又可作为从机、支持4种数据传输模式、允许7种时钟传输速率的SPI IP核。该SPI IP核通过状态机来控制数据传输模块端口的方向,以此来解决主从模式下数据传输方向相反的问题,通过对移位寄存器的复用减少了逻辑资源消耗,利用时钟分频模块来实现不同传输速率下的数据交换,设计了配置数据传输模式的时钟极性和时钟相位等端口,方便了对SPI IP核的操作。结果表明:该SPI IP核符合SPI总线协议,在0.13 μm工艺下消耗1 062个逻辑门,在系统工作频率80 MHz下的功耗约为0.395 7 mW。

Design of a high-performance and dynamic reconfigurable SPI IP core with master and slave mode

Wei Pengbo1,2,Zhang Cunde1,2,Huang Xiang1,2,Yu Zhiguo1,2,GU Xiaofeng1,2
(1.Engineering Research Center of IoT Technology Applications(Ministry of Education),Wuxi 214122,China; 2.Department of Electronic Engineering,Jiangnan University,Wuxi 214122,China)
Abstract: To meet the flexible configuration requirements of serial peripheral interface(SPI) in the System-on-a-Chip(SoC), the SPI IP core which can be configured as a master or slave with four date transfer modes and seven clock transmission rates is designed. The SPI IP core through the state machine controls the port direction of data transmission module, which solves the problem of the opposite direction of data transmission in master and slave mode. The SPI IP core also multiplexes the shift register to reduce logic resource consumption. The clock frequency division module is designed to realize the data exchange with different transmission rates. In order to facilitate the operation of the SPI IP core, the ports including cpol and cpha that can configure the data transfer modes are designed. The results show that the SPI IP core is in good agreement with the SPI bus protocol. In addition, the circuit scale contains 1 062 logic gates under the 0.13 μm technology and the power consumption is 0.395 7 mW at a system operating frequency of 80 MHz.

    中图分类号: TN492

    文献标识码: A

    DOI:10.16157/j.issn.0258-7998.172838


    中文引用格式: 魏朋博,张存德,黄翔,等. 高性能主从模式动态可重构的SPI IP核设计[J].电子技术应用,2018,44(3):15-18.

    英文引用格式: Wei Pengbo,Zhang Cunde,Huang Xiang,et al. Design of a high-performance and dynamic reconfigurable SPI IP core with master and slave mode[J]. Application of Electronic Technique,2018,44(3):15-18.

0 引言

    随着集成电路设计的快速发展,系统芯片(System-on-a-Chip,SoC)的集成度越来越高,从而对信号之间交流的要求也变高[1-2]。由于串行外设接口(Serial Peripheral Interface,SPI)总线协议具有全双工模式、占用I/O端口少、协议灵活等优点,在实时时钟、AD转换器、数字信号处理器和数字信号解码器之间得到了广泛应用[3-4]

    目前,SPI IP核已经成为SoC的标准配置,相关人员也做了很多研究。例如,周雪荣等人面向AD9222设计的一款SPI模块[5],可以配置为主机模式且符合AD9222芯片的接口时序;汪永琳等人设计的SPI接口[6],实现了SPI主从机之间数据的双向传输且满足三线半全工工作方式;李大江等人基于FPGA的SPI总线设计[7],分别设计了主机和从机。上述SPI设计可以适用于不同的应用场合,但是在SoC中进行通信时,不具有主从模式下动态可重构的能力。因此,本文根据SPI总线协议,设计了一种主从模式动态可重构,支持四线全双工,允许七种时钟传输速率的SPI IP核,并对其逻辑资源消耗和功耗问题进行了优化。

1 SPI工作原理

    SPI总线协议是由Motorola公司首先提出的,主要应用于单片机系统中短程通信的同步串行通信接口规范[8]。SPI总线协议规定,它以主机或从机方式工作,主从机之间的数据传输存在4种数据传输模式并由cpol(时钟极性)和cpha(时钟相位)来控制,如表1所示。当cpol=0时,sclk的空闲电平为0;当cpol=1时,sclk的空闲电平为1。当cpha=0时,在空闲状态到有效状态边沿采集数据;当cpha=1时,在有效状态到空闲状态边沿采集数据[9]

wdz3-b1.gif

    在SoC中SPI IP核的传统连接方式如图1所示。通信过程中,SPI通过片上总线将CPU核传输的并行数据转换为串行数据,与从机进行数据交换;并把从机传输的串行数据转换成并行数据,通过片上总线发送给CPU核[10]。对SPI从机来说,它会在被主机选中的情况下与主机进行数据的传输[11]

wdz3-t1.gif

2 SPI IP核设计

2.1 模块划分和接口定义

2.1.1 模块划分

    根据SPI功能的不同,将所设计的SPI IP核划分为如图2所示的3个模块:寄存器配置块(Register Configuration Block,RCB)、数据传输块(Data Transfer Block,DTB)和错误中断块(Fault Interrupt Block,FIB)。RCB由CPU核对其进行配置,如主从模式、时钟极性和时钟相位等;DTB根据配置的信息来进行主从机间的数据传输;FIB在出现模式错误(例如当SPI配置为主机时,从机选择端口被拉低)、读写冲突等问题时会向CPU核发出中断请求。

wdz3-t2.gif

2.1.2 端口定义

    nwr和nrd分别是写使能和读使能端口;addr是地址端口;idata和odata分别是数据输入和输出端口。当地址有效时,数据输入和输出端口根据读写使能的配置来进行数据的输入和输出操作。spen、mstr、cpol和cpha 4个端口依次是SPI使能端、主从机配置端、时钟极性和时钟相位端,使得对SPI IP核进行配置更加直接和方便。

    misoo、misotri和misoi 3个端口与一个三态缓冲器连接,以提供一个外部双向端口miso,外部双向端口mosi和sclk原理相同。这些双向端口在有限状态机模块的控制下被配置为不同的传输方向,以此来解决主机模式和从机模式下数据传输端口传输方向相反的问题。miso在从机模式下发送数据,在主机模式下接收数据;mosi在主机模式下发送数据,在从机模式下接收数据;sclk在主机模式下发送时钟,在从机模式下接收时钟。同时,SPI IP核通过复用一个移位寄存器就可以完成主机和从机模式下的数据传输,实现了主从模式可配置的能力并节省了芯片面积。ssn是从机选择端口,配置为从机时才使用,低电平有效。

    int是中断控制端口,当数据传输完成或SPI被配置为主机而ssn(从机选择)端口为低电平等情况时,FIB模块就会产生中断请求。

2.2 电路设计

2.2.1 SPI可重构电路状态机的设计

    SPI可重构电路状态机的设计,如图3所示。当复位信号有效或者SPI使能端口spen被配置为低电平无效状态时,可重构电路状态机就会处于空闲状态。此时,可向主机模式或从机模式进行转移。

wdz3-t3.gif

    转移为主机模式时,首先需要把mstr端口配置为1。然后,有两种情况可以转移到主机模式:(1)配置从机选择端口无效位ssdis为高电平有效状态;(2)配置ssn端口为高电平无效状态。

    转移为从机模式时,首先需要把mstr配置为0。然后,有3种情况可以转移到从机模式:(1)当配置cpha为高电平时,并配置ssdis位为有效状态,此种情况适用于只有一个从机下的数据传输;(2)当配置cpha为高电平时,检测到ssn端口为低电平;(3)当配置cpha为低电平时,检测到ssn端口的下降沿。

    当状态机从空闲状态已经过渡到主机或者从机模式时,就会判断数据的传输是否完成,当传输未完成时,就会保持在当前状态;当传输已完成时,就会转移到空闲状态。此外,当前模式出现错误时,也会转移到空闲状态。SPI可重构电路状态机如图3所示。

    由状态转移图可知,此SPI IP核可实现空闲状态、主机模式和从机模式之间的状态转换,具有在线动态可重构的特性。

2.2.2 时钟分频

    主机模式下的串行时钟由7位计数器、数据选择器和D触发器组成的时钟分频模块产生,如图4所示。

wdz3-t4.gif

    输出时钟sclko取决于CPU核对控制寄存器的配置,当对控制器寄存器相应的三位配置都为1时,sclko的值为cpol的值,不产生时钟,其他情况均对时钟有分频作用。因此,此时钟分频模块可对系统时钟产生7种分频,如表2所示。

wdz3-b2.gif

3 仿真与验证

3.1 仿真平台搭建

    为了方便验证此SPI IP核的正确性,设计了模拟CPU核功能的发送接收模块、验证IP核(Verification IP,VIP)模块和数据比较模块等。发送接收模块产生指令和数据对SPI IP核和VIP模块进行配置。配置完成后,SPI IP核和VIP模块进行主从机之间数据的传输;传输完成后,发送接收模块分别读取SPI IP核和VIP模块传输的数据。最后,比较模块从CPU核读取所传输的数据并验证数据的正确性。仿真原理如图5所示。

wdz3-t5.gif

3.2 仿真及结果分析

    最后,使用NC-Verilog对其进行仿真验证,主从模式下的仿真时序如图6所示。首先,通过发送接收模块对SPI IP核的控制寄存器依次写入h’10和h’50(配置SPI为主机模式,SPI接口有效)。同时,配置VIP模块为从机。然后,设置主机要发送的数据为h’aa,从机要发送的数据为h’55,在sclko(对clk时钟2分频)时钟频率下,主机的mosio(主机输出,从机输入)端口串行发送数据h’aa,misoi(主机输入,从机输出)端口串行接收数据h’55,传输完成后读取状态寄存器的值为h’80(传输完成),读取数据寄存器的值为h’55(传输成功)。然后,对控制寄存器写入h’40(配置SPI为从机,SPI接口有效)。同时,配置VIP模块为主机,ssn(从机选择端口)变为低电平有效状态。在sclki(对clk时钟4分频)时钟频率下,从机的miso(从机输出,主机输入)端口串行发送数据h’55,mosii(从机输入,主机输出)端口串行接收数据h’aa,传输完成后读取状态寄存器的值为h’80(传输完成),读取数据寄存器的值为h’aa(传输成功)。

wdz3-t6.gif

    主机模式下不同时钟速率下的数据传输如图7所示。图中给出了对clk时钟2分频时,主机发送数据为h’aa,接收数据为h’55;对clk时钟4分频时,主机发送数据为h’55,接收数据为h’aa;对clk时钟8分频时,主机发送数据为h’aa,接收数据为h’55等情况下的数据传输情况。在不同分频模式下,数据传输能正常传输且结果正确。

wdz3-t7.gif

    仿真结果表明:此SPI IP核符合SPI总线协议并且满足设计规范的要求。综合结果显示:在0.13 μm工艺下消耗1 062个逻辑门,在系统工作频率80 MHz下的功耗约为0.395 7 mW。

4 结论

    本文根据SPI总线协议设计了一种高性能主从模式动态可重构的SPI IP核,并对该IP核的模块划分、接口定义和可重构电路状态机等进行了详细描述。结果显示,此设计符合SPI总线协议,实现了7种时钟分频,支持4种数据传输模式;在保证功能和性能情况下,逻辑资源消耗更少、功耗更低。

参考文献

[1] 李安新,周祖成.SoC新技术——可编程逻辑IP核[J].半导体技术,2001,26(12):17-19,27.

[2] 尉晓龙.X-DSP SPI模块及其AMBA接口的设计[D].长沙:国防科学技术大学,2014.

[3] TIAN X C,LI J,FAN Y B,et al.Design and implementation of SPI communication based-on FPGA[J].Advanced Materials Research,2011,291-294:2658-2661.

[4] 杨晓,李战明.面向系统级芯片的串行外设接口模块设计[J].计算机应用,2015,35(12):3607-3610.

[5] 周雪荣,叶凡,任俊彦.面向AD9222的SPI模块设计[J].固体电子学研究与进展,2015(3):284-288,295.

[6] 汪永琳,丁一.一种3线制半双工SPI接口设计[J].半导体技术,2010,35(5):482-484.

[7] 李大江,崔建明.一种基于FPGA的可配置SPI Master接口设计实现[J].电子技术应用,2010,36(10):60-62.

[8] 孙永琦,李晓明.基于DW8051的SPI控制器设计[J].电子器件,2012,35(3):339-343.

[9] 辛晓宁,孙文强.全功能SPI接口的设计与实现[J].电子设计工程,2012,20(23):153-156.

[10] 刘敏,陈金鹰,唐伟,等.基于FPGA的并行数据转SPI接口设计[J].电视技术,2012,36(5):31-32,60.

[11] 白光泽,邢燕.基于Verilog HDL的SPI IP核的设计及仿真实现[J].制造业自动化,2010,32(15):113-115.



作者信息:

魏朋博1,2,张存德1,2,黄  翔1,2,虞致国1,2,顾晓峰1,2

(1.物联网技术应用教育部工程研究中心,江苏 无锡214122;2.江南大学 电子工程系,江苏 无锡214122)

继续阅读>>