0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:网络整理 作者:工程师吴畏 2018-06-14 15:26 次阅读

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]。

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

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

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

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核发出中断请求。

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

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被配置为低电平无效状态时,可重构电路状态机就会处于空闲状态。此时,可向主机模式或从机模式进行转移。

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

转移为主机模式时,首先需要把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所示。

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

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

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

3 仿真与验证

3.1 仿真平台搭建

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

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

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(传输成功)。

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

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

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

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

4 结论

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • soc
    soc
    +关注

    关注

    38

    文章

    4080

    浏览量

    217717
  • SPI接口
    +关注

    关注

    0

    文章

    258

    浏览量

    34311
  • IP核
    +关注

    关注

    4

    文章

    324

    浏览量

    49367
收藏 人收藏

    评论

    相关推荐

    基于xilinx ISE的动态重构

    大家好有谁对FPGA的动态重构有研究吗?本人现在在搞这块寻人共同探讨。。。谢谢
    发表于 03-10 16:03

    基于PAD的接收机动态重构结构应用

    和ASIC电路高速性的解决方案。在笔者所从事的系统设计中,当模拟器件的一些性能改变但又不能及时更新调整后端的数字基带处理时,比如滤波器由于工作时间过长引起的温漂特性所带来的影响,此时就可以用可编程模拟器件替代一部分前端固定模拟器件,进而可以实时的对FPGA模块进行动态
    发表于 07-10 07:56

    怎么设计PAD在接收机动态重构结构中的应用?

    重构结构是一种可以根据具体运算情况重组自身资源,实现硬件结构自身优化、自我生成的计算技术。动态重构技术
    发表于 08-13 07:56

    扩展的高性能RISC-V 内核IP

    SiFive推出的SiFive U8系列核心IP是一种面向现代SoC设计具有扩展性、高性能的微架构。SiFive U8系列是当今商用化基于RISC-V指令集架构中性能最高的内核
    发表于 08-13 15:14

    重构体系结构分为哪几种?动态重构系统有哪些应用实例?

    重构体系结构分为哪几种?典型动态重构系统结构有哪几种?动态
    发表于 04-28 06:13

    怎么实现基于FPGA的动态重构系统设计?

    本文提出的通过微处理器加FPGA结合串行菊花链实现重构的方式,实现了动态重构FPGA结构设计的一种应用。
    发表于 05-10 06:22

    满足高性能数字接收机动态性能要求的ADC和射频器件有哪些?

    满足高性能数字接收机动态性能要求的ADC和射频器件有哪些?
    发表于 05-28 06:45

    划分和时延驱动的动态重构FPGA在线布局算法

    可编程逻辑芯片特别是FPGA的快速发展,使得新的芯片能够根据具体应用动态地调整结构以获得更好的性能,这类芯片称为动态重构FPGA芯片(DR
    发表于 01-18 08:40 10次下载

    动态重构系统的通信结构分析

    动态重构系统的通信结构分析 动态重构技术能在一定控制逻辑的驱动下,对全部或部分逻辑资源实现
    发表于 03-29 15:12 1039次阅读
    <b class='flag-5'>动态</b><b class='flag-5'>可</b><b class='flag-5'>重构</b>系统的通信结构分析

    PAD在接收机动态重构结构中的应用设计

    PAD在接收机动态重构结构中的应用设计 重构结构是一种可以根据具体运算情况重组自身资源,实现硬件结构自身优化、自我生成的计算技术。
    发表于 12-28 09:15 803次阅读
    PAD在接收机<b class='flag-5'>动态</b><b class='flag-5'>可</b><b class='flag-5'>重构</b>结构中的应用设计

    重构技术分析及动态重构系统设计

    基于SRAM的FPGA的问世标志着现代重构技术的开端,并极大地推动了其发展。可编程FPGA可以根据不同算法设计合理的硬件结构,以达到提高执行效率的目的。动态
    发表于 11-25 10:20 1.3w次阅读
    <b class='flag-5'>可</b><b class='flag-5'>重构</b>技术分析及<b class='flag-5'>动态</b><b class='flag-5'>可</b><b class='flag-5'>重构</b>系统设计

    FPGA动态重构技术是什么,局部动态重构的时序问题解决方案

    所谓FPGA动态重构技术,就是要对基于SRAM编程技术的FPGA实现全部或部分逻辑资源的动态功能变换。根据实现重构的面积不同,
    的头像 发表于 07-05 15:41 3046次阅读
    FPGA<b class='flag-5'>动态</b><b class='flag-5'>可</b><b class='flag-5'>重构</b>技术是什么,局部<b class='flag-5'>动态</b><b class='flag-5'>可</b><b class='flag-5'>重构</b>的时序问题解决方案

    重构计算:基于FPGA重构计算的理论与实践 1.器件架构 译文(一)

    根本上来说,重构计算可以最好地发挥重构硬件的潜力。虽然一个完整的系统必须包括编译软件和高性能的应用程序,但了解
    发表于 01-26 18:23 7次下载
    <b class='flag-5'>可</b><b class='flag-5'>重构</b>计算:基于FPGA<b class='flag-5'>可</b><b class='flag-5'>重构</b>计算的理论与实践 1.器件架构 译文(一)

    关于FPGA重构技术分析

    FPGA上的重构技术根据FPGA芯片内部的不同结构可以分为两种,分别是动态重构和静态
    发表于 11-03 20:09 898次阅读

    CW32的SPI单工模式主从通信介绍

    CW32的SPI单工模式主从通信介绍
    的头像 发表于 10-24 15:50 718次阅读
    CW32的<b class='flag-5'>SPI</b>单工<b class='flag-5'>模式</b><b class='flag-5'>主从</b>通信介绍