您的位置 首页 方案

一种可复用的高速SPI总线的规划

1 引言长期以来,外围设备与主机CPU速度之间的不匹配始终困扰着人们,影响了计算机系统更迅速的发展,成为系统基本I/O的瓶颈问题。随着计算机处理能力

1 导言

长期以来,外围设备与主机CPU速度之间的不匹配一直困扰着人们,影响了计算机体系更敏捷的开展,成为体系根本I/O的瓶颈问题。跟着计算机处理才干及存储规划的敏捷增长,这个问题体现得愈加杰出。为此人们采取了各种软、硬件的方法,不断地改进着CPU与I/O设备之间的接口功用。

现在,嵌入式体系现已广泛运用于通讯、消费类电子产品等许多范畴。但是,在许多运用中,处理器的接口问题依然是约束体系功用的瓶颈。关于给定的规划,规划者面临这些纷乱杂乱的接口标准挑选的地步并不大。他们一般依据体系所需的本钱及功用挑选适宜的标准产品,这或许导致接口标准抵触和引起互用性问题;或许规划者或许从头挑选与接口兼容的标准器材,但或许会形成不能满意功用需求或体系的本钱要求等。

在曩昔几年里,用于消除IC、电路板和体系之间数据传输瓶颈的接口标准层出不穷,为通讯体系器材所供给的接口技能品种繁复。在数字体系规划中处理接口和互用性问题显得尤为重要, FPGA技能的敏捷开展使得接口问题有了好的处理方案。例如,现有的高功用接口IP及高速物理I/O的FPGA,可满意10Gb/s以上数据通道的通讯体系的要求;能够用FPGA完成接口不兼容器材间的通讯问题。因而本文将提出一种新的依据FPGA 的SPI 接口规划方法。

SPI(Serial Peripheral Interface)串行外设接口总线[1]是一种同步全双工串行通讯接口总线,因为其连线简略,运用起来十分便利,故得到广泛运用。在许多新式器材如LCD模块、FLASH、EEPROM存储器、数据输入、输出设备上都选用了SPI接口。但在实践开发运用中,若主操控器无SPI接口或需求与多个具有SPI接口的外设通讯,就要运用主操控器的I/O

口经过软件来模仿,这就在很大程度上约束了其运用给数据传输带来不便利。在FPGA技能敏捷开展的年代,处理这个问题最便利的方法便是集成一个SPI核到芯片上。

这儿依据业界通用的SPI总线的标准,规划一种可复用的高速SPI总线。规划过程中许多变量都选用参数方法,详细运用于工程实践时依据实践需求更改参数即可,充分体现了可复用性。

2 SPI 总线原理

SPI 总线由四根线组成:串行时钟线(SCK),主机输出从机输入线(MOSI),主机输入从机输出线(MISO),还有一根是从机挑选线(SS),它们在与总线相连的各个设备之间传送信息,其衔接方法如图1。

SPI 总线中所有的数据传输由串行时钟SCK来进行同步,每个时钟脉冲传送1 比特数据。SCK 由主机发生,是从机的一个输入。时钟的相位(CPHA)与极性(CPOL)能够用来操控数据的传输。CPOL=“0”表明SCK 的停止状况为低电平,CPOL =“1”则表明SCK 停止状况为高电平。时钟相位(CPHA)能够用来挑选两种不同的数据传输形式。假如CPHA =“0”,数据在信号SS 声明后的第一个SCK 边缘有用。而当CPHA=“1”时, 数据在信号SS声明后的第二个SCK 边缘才有用。因而,主机与从机中SPI 设备的时钟相位和极性必需求共同才干进行通讯。

SPI 可作业在主形式或从形式下。在主形式下,每一位数据的发送/接纳需求1 次时钟效果;而在从形式下, 每一位数据都是在接纳到时钟信号之后才发送/接纳。1个典型的SPI体系包含一个主MCU和1个或几个从外围器材。

3 规划原理

本体系用硬件描绘言语verilog描绘,是可IP复用的通用结构。

3.1 典型运用

SPI 接口的典型运用如图2所示,微处理器与从设备经过发送指令的方法完成双向数据传输。

3.2 模块规划

依据SPI 总线的原理,本规划的SPI Master同SPI协议兼容,在主机侧的规划适当于wishbone总线[2]标准兼容的slave设备,整体架构可分为以下3个功用模块[3]:Clock generator、Serial interface、Wishbone interface如图3所示。

3.2.1 时钟发生模块SPI-clgen规划

SPI时钟分频模块中的时钟信号的来历是外部体系供给的时钟clk_in,此时钟的频率高于SPI总线运用的时钟频率,模块会依据各个不同接口的时钟分频因子寄存器,发生相应的时钟输出信号clk_out作为串行时钟。因为SPI没有应对机制,所以传输时对时序的要求就适当严厉,为了能够确保时序的牢靠性,特别规划了一个不管关于奇分频仍是偶分频都反常牢靠的时钟生成模块发生传输所需求的串行时钟。

此模块要点考虑了奇分频的状况,为了节约资源,对奇分频的完成方法做了改动一起也能完成偶分频的状况,经过这样规划的时钟分频模块能确保分频出牢靠的时钟信号。对输入主时钟的同步奇整数分频,能够简略地用一个Moore机来完成。比方,5分频的状况图如图4所示,编码选用Moore机而非Mealy机,尽管增加了状况数,但增加了牢靠性。

Master核体系输入时钟clk-in经过divider分频发生clk-out,经过改动divider的值,能够完成恣意分频的时钟输出[4]。其频率表达式如下:

用verilog言语描绘时钟发生模块,用ISE归纳后,其生成电路如图5所示。

3.2.2 串行接口模块SPI-shift规划[5]

数据传输模块是SPI的中心模块。此模块担任把并行进来的数据串行传出,串行进来的数据并行传出。关于并行进来的数据位宽比较长,比方128位的数据时,为了前进传输的速度,本文规划作业中献身了资源改进了曾经的保存的SPI模块。SPI Master核在主机侧作为slave设备接纳数据,一起作为master设备发送数据。此模块verilog代码经ISE归纳后如图6所示。

3.2.3 顶层TOP模块

本文在剖析协议的基础上树立了高速可复用SPI总线的根本结构,包含时钟生成模块,数据传输模块,并用上层TOP模块调用底层的两个模块。顶层模块的重要效果便是让分模块能够顺畅的运作起来。所以此SPI核的顶层模块要写入操控字,经过状况机操控调用时钟生成模块和数据传输模块正常运转。其经ISE归纳后如图7所示。

4 仿真与验证

将用verilog 描绘好的SPI 接口电路用ISE进行归纳,然后用modelsim 软件进行仿真[6]。在树立测验渠道时,首要要树立模仿Wishbone协议的master模块,一起树立模仿SPI协议的slave模块,再将接纳/发送数据和地址进行比较、校验。SPI-topTestbench整体架构如图8所示。

为了简略仿真8bit数据传输[7],首要进行复位,然后设置寄存器,再进行寄存器校验,无误之后进行8bit数据传输,在tx上升沿发送数据,rx下降沿接纳数据,仿真波形如图9所示。同理能够仿真64bit、128bit等数据传输仿真波形。

用ISE软件进行编译,将生成的网表文件经过JTAG下载到xilinx 公司的spartan3 系列FPGA运转,在ISE 的辅佐剖析下得到了正确的成果。

5 结束语

跟着半导体技能的前进,FPGA 的价格越来越廉价, 作业频率越来越高,运用FPGA 完成SPI 通讯接口是切实可行的。

因为SPI对传输时序要求十分严厉,所以本文作业中规划了一种比较牢靠,安稳的时钟生成模块,它关于奇偶分频的状况别离考虑,然后避免了以往SPI总线中对体系时钟奇分频时会呈现分频出的时钟不安稳的问题。数据传输模块选用较简练的并串互转结构,一次最多可传输128位,速度是恪守SPI协议的同类器材里较快的。而且从128位到8位可选详细一非必须传输多少位,有别于以往一次传输的位数为定值的状况。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/131817.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部