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

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

3天内不再提示

基于FPGA的SPI Master Interface设计

电子工程师 来源:未知 作者:胡薇 2018-11-05 17:42 次阅读

随着现场可编程门阵列(FPGA)芯片在商业、军事、航空航天等领域的广泛应用,其可靠性和可测试性显得尤为重要。对设计人员来说,FPGA的使用相当灵活。然而,正是这种应用的不确定性和重复可编程性,增加了芯片的测试难度。其核心问题是建立什么样的测试模型才能使故障激活。根据需求,FPGA的测试大体可分为面向制造的测试过程(MTP)和面向应用的测试过程(ATP)两类。MTP主要是从制造商的角度来测试,ATP是在应用级上的测试,也就是把FPGA配置为特定的功能进行测试,具有很强的针对性[1]。本文介绍ATP测试中SPI Master 模型的建立。在测试FPGA设计的集成电路时,对设计电路的性能进行实时测试是必不可少的环节[2]。这就需要设计一种接口电路,将测试数据送入设计电路。1 SPI总线协议介绍SPI(Serion Perpheral Interface)[3]是一种高速的、全双工、同步的通信总线,并且在芯片的管脚上只占用4根线,节约了芯片的管脚,同时为PCB的布局节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议。SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时,也就是半双工方式)。也是所有基于SPI的设备共有,分别是MISO(数据输入),MOSI(数据输出),SCK(时钟),NSS(片选),如图1所示。

(1)MOSI:主设备数据输出,从设备数据输入。(2)MISO:主设备数据输入,从设备数据输出。(3)SCK:时钟信号,由主设备产生。(4)NSS:从设备使能信号,由主设备控制。 使能信号低电平有效,当使能信号为低电平时,输出数据(MOSI)在串行时钟(SCK)下降沿变化,输入数据(MISO)在(SCK)上升沿变化。2 SPI Master原理 本文介绍的基于FPGA的、可配置的SPI Master接口设计,能满足测试的各种正常、异常以及强度测试要求。此SPI接口模块可设置为单次发送、循环发送(发送间隔可设);发送数据长度可变;串行时钟线(SCK)与输出数据线(MOSI)时序关系可变;串行时钟线(SCK)与使能信号(NSS)时序关系可变。 一般情况下,为了SPI数据发送的灵活性,SPI发送次数及发送间隔是由软件实现的,当需要循环发送且发送间隔达到微秒甚至纳秒数量级时,软件很难实现。本文将SPI发送次数以及发送间隔集成到SPI Master模块中,使SPI发送间隔可变且最小为一个SCK周期。按照SPI总线协议设计的SPI Master输出数据(MOSI)在串行时钟(SCK)下降沿变化,不能进行异常时序测试,而异常时序在FPGA[4,5]的接口测试中又最为重要,故本文利用触发器特性设计电路,使SPI发送数据时序可变,精度为1个系统时钟周期。3 SPI Master 模块结构图SPI Master模块由Bram接口、配置寄存器控制器三部分组成,如图2所示。此模块系统时钟为100 MHz。BRAM接口:控制配置参数以及SPI数据的读写配置参数及SPI数据在BRAM中存储结构如表1所示。

控制器:解析配置寄存器,产生发送时序,控制BRAM接口进行数据读写。 对配置寄存器说明如下。(1)循环发送标识寄存器:1 bit,高电平标识循环发送,低电平标识单次发送。(2)循环发送次数寄存器:15 bit,若循环发送标识为高电平时,此寄存器值为要发送的数据长度,单位:B;发送模块中包含一发送次数计数器,NSS从高电平变为低电平,发送次数计数器加1。(3)循环发送间隔寄存器:16 bit,若循环发送标识为高电平时,此寄存器值为每两次发送间隔,单位:10 ns。(最小间隔为1个SCK周期,若小于1个SCK周期,则从设备不能检测到NSS信号变化),发送模块中包含1个发送间隔计数器,从一次SPI发送结束开始计数,直到与循环发送间隔寄存器中值相等,启动下次发送。(4)SCK频率寄存器:16 bit,此寄存器值表示串行时钟SCK周期,单位为10 ns(系统时钟为100 MHz,精度为20 ns);时序模块中包含一分频模块,SCK周期=(SCK频率寄存器)×10 ns。(5)MOSI时序寄存器:8 bit,此寄存器值表示MOSI变化与SCK下降沿间隔时间,单位:10 ns(系统时钟为100 MHz,因此最小间隔为10 ns)。(6)数据长度寄存器:16 bit,此寄存器值表示要发送数据的长度,单位:B。(7)NSS时序寄存器:8 bit,此寄存器值表示NSS变化与SCK下降沿间隔时间,单位:10 ns(系统时钟为100 MHz,因此最小间隔为10 ns)。4 SPI Master模块功能介绍(1)SPI循环发送次数可变,范围:1~32 767;(2)SPI数据发送长度可变,范围:1~65 535,单位:B;(3)SPI循环发送间隔可变,范围:(1个SCK周期)~(65 536×10 ns),实现了连续发送,即一次SPI发送结束后下一SCK时钟立即启动下次SPI发送;(4)MOSI与SCK时序关系可变,NSS与SCK时序关系可变,SPI总线为下降沿发送,上升沿接收,故MOSI、NSS在SCK下降沿后半个周期可调即可。SPI功能流程如图3所示,FPGA上电复位后不断检测SPI_start信号,当SPI_start信号有效时(高电平)启动SPI发送,读取BRAM中的配置参数,进行译码,依据译码后数据长度值读取BRAM中数据,按照SPI协议发送数据;完成一次SPI发送后判断是否为循环发送,若为循环发送则启动下一次SPI发送,直到发送次数等于循环发送次数寄存器值,其中发送间隔由循环发送间隔寄存器值决定。

4.1 单次发送(正常时序)SPI Master控制器检测到SPI_start信号有效,即控制Bram接口读取配置参数,经译码后若循环发送标识寄存器为低电平,则配合发送长度寄存器读取BRAM中数据,并进行发送。

4.2 单次发送(异常时序)MOSI异常时序:正常情况下MOSI在SCK下降沿变化,此设计采用一带抽头的序列寄存器产生异常时序,如图4。

每增加一个触发器,延时增加一个系统时钟[6],多路开关依据MOSI时序寄存器中值选择相应触发器输出,产生异常时序,举例说明如图5。

图5中sys_clk为系统时钟频率100 MHz,NSS为使能信号;MOSI为串行输出信号;当SCK频率寄存器为10时,SPI串行时钟SCK周期=(SCK频率寄存器)×10 ns=100 ns,即SCK频率为10 MHz;当MOSI时序寄存器值为4时,MOSI在SCK下降沿后4个sys_clk开始变化。

4.3 循环发送(时序正常) 每完成一次SPI发送,发送次数计数器加1,当发送次数计数器中的值与循环发送次数寄存器中值相等时,完成循环发送。发送次数由循环发送次数寄存器值决定,循环发送间隔由发送间隔计数器决定。

4.4 循环发送(时序异常) 类似循环发送(正常时序),异常时序产生类似单次发送(异常时序)。 实现的目标器件是Xilinx的Virtex2 pro开发板。

本文已应用于中国科学院光电研究院测试平台中,实现了SPI接口以及与其功能相关的的测试。 与同类SPI Master相比,发送间隔可变、精度高,最小间隔仅为1个SCK时钟周期;发送时序可变,精度高,为1个系统时钟周期;基本满足正常、异常以及强度等测试要求。

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

    关注

    1600

    文章

    21281

    浏览量

    592855
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1610

    浏览量

    89539

原文标题:一种基于FPGA的可配置SPI Master接口设计实现

文章出处:【微信号:FPGAer_Club,微信公众号:FPGAer俱乐部】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA设计实例】基于FPGASPI接口应用

    ` 本帖最后由 eehome 于 2013-1-5 09:57 编辑 SPI接口的全称是"Serial Peripheral Interface&
    发表于 03-26 15:47

    串行外设接口(Serial Peripheral Interface Master) Xilinx提供

    串行外设接口(Serial Peripheral Interface Master) Xilinx提供
    发表于 08-17 10:23

    怎么克隆SPI Master组件?

    the SPI Master component, because I would like to make some slight modifications to the way it behaves. What's the easiest way to do th
    发表于 04-28 13:23

    基于FPGASPI接口设计方法

    /O的 FPGA,可满足10Gb/s以上的通信系统的要求;而且用FPGA解决接口不兼容器件间的通信问题。因此本文 将提出一种新的基于FPGASPI 接口设计方法。
    发表于 05-28 05:00

    Gowin SPI Master and Slave快速用户指南

    Gowin SPI Master 和 Slave IP 用户指南主要包括功能简介、信号定义、工作原理、GUI调用等,旨在帮助用户快速了解Gowin SPI Master IP和Slav
    发表于 10-09 07:55

    Gowin SPI Master and Slave参考设计

    本次发布 Gowin SPI Master IP 和 Slave 参考设计。Gowin SPI Master IP 和 Slave 参考设计可在高云官网下载,参考设计可用于仿真,实例化
    发表于 10-09 08:01

    通过SPI(使用 IDF)发送特定的32位命令,为什么spi_trans没有完成?

    .val = SPI_DEFAULT_INTERFACE; spi_config.intr_enable.val = SPI_MASTER_DEFAULT_INTR_ENABLE; spi_
    发表于 05-30 06:26

    FPGASPI复用配置的编程方法

    FPGASPI复用配置的编程方法  SPI(Serial Peripheral InteRFace,串行外围设备接口)是一种高速、全双工、同步的通信总线,在芯片的引脚上只占用4根线
    发表于 01-06 14:48 3092次阅读
    <b class='flag-5'>FPGA</b>中<b class='flag-5'>SPI</b>复用配置的编程方法

    SPI方式FPGA配置和SPI flash编程

    SPI方式FPGA配置和SPI flash编程
    发表于 05-16 18:01 164次下载
    <b class='flag-5'>SPI</b>方式<b class='flag-5'>FPGA</b>配置和<b class='flag-5'>SPI</b> flash编程

    基于FPGASPI总线传输技术提供更好的选择和可行方案

    SPI(Serial peripheral interface——串行设备接口)是摩托罗拉公司推出的一种同步串行通信接口。用于MCU和外围扩展芯片之间的串行连接,现已发展成为一种工业标准 。一路
    发表于 07-14 17:50 885次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>SPI</b>总线传输技术提供更好的选择和可行方案

    基于FPGASPI协议及设计实现

    ,FSMC等协议。本文将基于FPGA来介绍并设计标准的SPI总线协议,实现FPGA与MCU的数据通信。SPI是英语Serial Peripheral
    发表于 11-05 19:05 22次下载
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>SPI</b>协议及设计实现

    DSP与FPGASPI通信(DSP为主、FPGA为从)

    DSP芯片(master):TMS320F28069FPGA芯片(slave):Spartan-xc6slx25-2ftg256SPI协议:SCK:5MHz数据长度:8ByteFalling
    发表于 12-05 17:21 39次下载
    DSP与<b class='flag-5'>FPGA</b>间<b class='flag-5'>SPI</b>通信(DSP为主、<b class='flag-5'>FPGA</b>为从)

    使用Jtag Master来调试FPGA程序

    FPGA进行上板调试时,使用最多的是SignalTap,但SignalTap主要用来抓取信号时序,当需要发送信号到FPGA时,Jtag Master可以发挥很好的作用,可以通过Jtag Ma
    的头像 发表于 02-16 16:21 1936次阅读
    使用Jtag <b class='flag-5'>Master</b>来调试<b class='flag-5'>FPGA</b>程序

    Gowin SPI Master/Slave IP用户指南

    Gowin SPI Master 和 Slave IP 用户指南主要包括功能简介、信号定义、 工作原理、GUI调用等,旨在帮助用户快速了解Gowin SPI Master IP和Sl
    发表于 09-15 10:13 0次下载
    Gowin <b class='flag-5'>SPI</b> <b class='flag-5'>Master</b>/Slave IP用户指南

    MAX17841B: Automotive SPI Communication Interface (ASCI) Data Sheet MAX17841B: Automotive SPI Communication Interface (ASCI) Data Sheet

    电子发烧友网为你提供ADI(ADI)MAX17841B: Automotive SPI Communication Interface (ASCI) Data Sheet相关产品参数、数据手册,更有
    发表于 10-16 19:15
    MAX17841B: Automotive <b class='flag-5'>SPI</b> Communication <b class='flag-5'>Interface</b> (ASCI) Data Sheet MAX17841B: Automotive <b class='flag-5'>SPI</b> Communication <b class='flag-5'>Interface</b> (ASCI) Data Sheet