搜档网
当前位置:搜档网 › 【SoCVista】SPI总线接口的SOPC模块设计与实现

【SoCVista】SPI总线接口的SOPC模块设计与实现

【SoCVista】SPI总线接口的SOPC模块设计与实现
【SoCVista】SPI总线接口的SOPC模块设计与实现

SPI 总线接口的SoPC 模块设计与实现

廖彬彬,张福洪,尚俊娜

(杭州电子科技大学通信工程学院 浙江杭州 310018)

摘 要:SPI 总线接口是Motorola 公司提出的一种全双工的同步串行外设通信接口,用于连接微处理器和各种外围设备。可编程片上系统是Altera 公司提出的一种灵活、高效的SoC 解决方案,So PC 模块间的互联使用了Avalon 交换式总线。基于Avalon 交换式总线接口规范,利用Verilog HDL 硬件描述语言实现SPI 总线接口的硬件设计,编写SPI 接口模块在

N IOS Ⅱ系统中的驱动程序。在Modelsim 中对SPI 接口的硬件设计进行功能和时序仿真;在FP GA 开发板上构建了实际的N IOS Ⅱ系统,验证SPI 接口的So PC 模块;仿真和验证结果正确,满足设计要求。

关键词:可编程片上系统;串行外设接口;Verilog 硬件描述语言;FP GA ;N IOS Ⅱ

中图分类号:TN402;TP302 文献标识码:B 文章编号:10042373X (2008)022013204

Design and Implement of SoPC Modular for SPI Bus Interface

L IAO Binbin ,ZHAN G Fuhong ,SHAN G J unna

(School of Communication Engineering ,Hangzhou Dianzi University ,Hangzhou ,310018,China )

Abstract :Serial peripheral interface bus is a synchronous serial data link standard designed by Motorola which operates in full duplex mode ,it allows communication between micro processor and peripheral devices.So PC (System on Programmable Chip )is a kind of flexible and high performance SoC solution designed by Altera.The So PC system interconnect fabric is Aval 2on switch fabric.The SPI interface based on Avalon switch fabric using Verilog HDL (Hardware Description Language )is de 2signed and implemented.And then a device driver of SPI interface modular for NIOS Ⅱsystem is written.The f unction and timing simulation in Modelsim are also presented.A prototype N IOS Ⅱsystem on FP GA development board is built to verify this modular.Results of simulation and verification satisfy the design requirement.

K eywords :system on programmable chip ;serial peripheral interface ;Verilog HDL ;FP GA ;N IOS Ⅱ

收稿日期:2007207231

1 引 言

可编程片上系统(System on Programmable Chip ,

So PC )是Altera 公司提出的一种灵活、高效的SoC 解决方

案,是一种特殊的嵌入式微处理器系统,他是将软件和硬件集成到单个可编程逻辑器件平台中,同时获得软件的灵活性以及硬件的高性能优势,并且他是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。

SPI 总线接口(Serial Peripheral Interface )是Motorola

公司提出的一种全双工的同步串行外设通信接口,用于连接微处理器和各种外围设备,是一种3线总线结构,接口信号线少,实现简单,应用非常广泛。

本文给出的是通过Verilog HDL 硬件描述语言实现

SPI 总线的So PC 模块设计,并编写该模块在NIOS Ⅱ系

统中的驱动程序。

2 SPI 总线接口与Avalon 交换式总线简介2.1 SPI 总线接口

SPI 总线接口最早由Motorola 公司提出,他是一种全

双工的同步串行外设通信接口,用于连接微处理器和各种外围设备。SPI 接口一般由4根信号线组成,1根串行时钟线(SCL K )、2根数据线主机输入/从机输出线(MISO )和主机输出/从机输入线(MOSI ),还有一根是低电平有效的从机选择线(SS )。

SPI 接口总线上的数据传送是通过串行时钟SCL K

进行同步。SCL K 信号由SPI 主机端产生,通过串行时钟线(SCL K )传到SPI 从机,从而实现串行数据的同步传送。

MISO 和MOSI 的功能取决于其是作为主机还是从机。

当作为主机时,MISO 是输入,MOSI 是输出,作为从机时刚好相反。其应用通常是一个SPI 主机连接一个或多个

SPI 从机。

SPI 接口的数据传输有4种不同的传输模式,由SPI

控制寄存器中CPOL 和CP HA 位来选择当前传输模式,

如表1所示。

3

1

表1 SPI 总线传输模式

模式

CPOL CP HA 模式

CPOL CP HA 000210

1

3

1

1

模式0 时钟SCL K 的静止状态为低电平,在SCL K 的上升沿采样数据,下降沿改变数据;

模式1 时钟SCL K 的静止状态为低电平,在SCL K 的下降沿采样数据,上升沿改变数据;

模式2 时钟SCL K 的静止状态为高电平

,在SCL K 的下降沿采样数据,上升沿改变数据;

模式3 时钟SCL K 的静止状态为高电平,在SCL K 的上升沿采样数据,下降沿改变数据;

SPI 接口的4种传输模式如图1所示,其中传输的数

据宽度为8b 。

图1 SPI 接口的4种传输模式

2.2 Avalon 交换式总线

Avalon 交换式总线是由Altera 开发的一种专用的内

部连线技术,是So PC Builder 的专用互联技术。Avalon 交换式总线由So PC Builder 自动生成,是一种最理想的用于系统处理器和外设之间的内联总线。每当一个新的组件被添加到系统中或某个外设的优先级被改变,就会生成一个新的、最佳的交换式总线结构。整个过程都由So PC

Builder 自动完成,所以用户可以很容易地修改系统以提

高性能或增加系统功能。

Avalon 交换式总线使用最少的逻辑资源来支持数据

总线的复用、地址译码、等待周期的产生、外设的地址对齐、中断优先级的指定以及高级的交换式总线传输。

Avalon 交换式总线接口灵活,用户只需使用系统所

需的信号来进行数据传输。Avalon 交换式总线定义的内联线策略使得任何一个Avalon 总线上的主设备都可以与任何一个从设备建立连接。Avalon 交换式总线还支持大范围的系统结构,包括单个的,多个的主设备系统,还具有在外设之间通过不同路径进行无缝的数据传输能力。

为了适应So PC 系统外设的开发,Altera 制定了Aval 2

on 总线接口规范,Avalon 总线接口规范用于规范外设的

设计使其符合So PC

系统的设计要求,提高设计的可复用性,大大提高系统设计效率。

3 SPI 总线接口设计与V erilog 实现3.1 SPI 总线接口设计

本文设计的SPI 接口模块为SPI 主机部分,主要用于

FP GA 基带处理开发板和射频板之间的通信连接,以实现

在FP GA 中控制射频板的工作模式和参数设置。其应用框图如图2所示。

图2 SPI 应用框图

在FP GA 中实现的是SPI 主机模块。射频板上有

2个SPI 从机,其数据宽度、传输模式等都不同,这就需要SPI 主机部分能够根据不同的从机选择设置不同的传输

参数,主要的参数有数据宽度、传输模式、传输速率、数据传输方向(MSB 先传还是L SB 先传)。因为所设计的SPI 接口模块需要在So PC 系统中使用,其接口信号必须满足

Avalon 交换式总线接口规范,表2所示为所设计的SPI 接

口模块的接口信号。其中CL K 为系统时钟信号;reset _n 为低电平有效的复位信号,使系统复位到一个确定的初始

状态;CS 为片选信号;address 为输入地址线,用来选择

SPI 接口模块内部的寄存器;read 和write 为读写使能信

号输入;read_data 和write_data 为32位读写数据;byte_

enable 为字节使能信号输入;interrupt 为中断请求信号输

出;sclk 为串行时钟信号输出;mosi 和miso 分别为主机输出从机输入、从机输出主机输入的串行数据线;ss 为从机选择信号输出,可与8个从机相连。

表2 SPI 模块接口信号

接口信号名

Avalon 总线信号类型

数据宽度

输入/输出

CL K

clock 1input reset_n reset_n 1input CS chipselect 1input address address 3input write write 1input read read 1input write_data write_data 32input read_data read_data 32output byte_enable byteenable

4input interrupt irq 1output sclk export 1output mosi export 1output miso export 1input ss

export

8

output

本文中设计的SPI 接口模块使用Avalon 总线和其他模块之间实现互连。其功能结构如图3所示。

SPI 任务逻辑:实现SPI 数据的传输控制;

4

1

SPI

寄存器文件:SPI 寄存器文件提供了任务逻辑和

外界交换数据的途径,根据寄存器文件,用户就可以通过

Avalon 接口使用基地址+地址偏移量的方式来访问SPI

接口模块的内部寄存器;

控制寄存器:用来对SPI 接口模块电路进行配置的,可以设置数据宽度、串行时钟的极性和相位、以及传输速率;

状态寄存器:包含发送完成或者系统出错的标志位;从选择寄存器:选择需要同主机进行通信的从机;波特率寄存器:决定串行时钟SCL K 的速率;接收数据寄存器:接收数据寄存器;发送数据寄存器:发送数据寄存器;

Avalon 接口:Avalon 接口为寄存器文件提供一个标

准的Avalon 前端,使用Avalon 标准的接口信号来访问寄

存器文件。

图3 SPI 模块功能结构

3.2 SPI 接口模块的Verilog 实现

Verilog HDL 是一种硬件描述语言,他可以用来进行

各种级别的逻辑设计,可以用来进行数字逻辑系统的仿真验证、时序分析和逻辑综合等,应用十分广泛。本文使用

Verilog 设计SPI 接口模块。分析SPI 接口模块的功能之

后,本文使用有限状态机实现SPI 接口模块的传输控制,有如下5个状态:idle ,start ,sample _data ,change _data ,

stop 。状态转换图如图4所示

图4 状态转换图

idle :SPI 接口模块处于空闲状态,不进行任何操作;start :数据传输开始,用于在数据传输之前对SPI 接

口模块进行配置,设置状态寄存器等;

sample_data :对MISO 信号线上接收的数据进行采样锁存;

change_data :改变MOSI 信号线上的数据;

stop :数据传输完成状态,用于在数据传输完成之后

设置状态寄存器等。

有限状态机的状态编码主要有5种编码方式,顺序编码、格雷码编码、独热编码(one 2hot )、随机编码和自动编码。本文使用独热编码,其每1个状态需要1个触发器,状态数等于触发器的数目,非常适合在寄存器资源丰富的

FP GA 器件中使用,并且采用独热编码的状态机速度非常

快,设计简单。

3.3 SPI 接口模块的驱动设计

本文设计的SPI 接口的So PC 模块,需要能够在

NIOS Ⅱ软核处理器上运行,因此需要编写SPI 接口模块

在NIOS Ⅱ上的驱动程序。

NIOS Ⅱ上的应用程序是通过HAL 系统库来访问底

层系统硬件的。HAL 系统库是一个轻量级的运行环境,

HAL API 包含了ANSI C 标准库,应用开发人员可以用

熟悉的C 标准库函数访问设备和文件;他使NIOS Ⅱ中的设备像Unix 系统设备一样具有相对一致的开发接口,同时也提供了Unix 风格的库函数,其使用方式和习惯类似于UNIX (Linux )系统,设备访问接口一致。这种体系使应用开发人员和设备驱动开发人员可以分工合作,提高开发效率,同时降低应用开发难度。

So PC Builder 和NIOS ⅡIDE 之间紧密集成,在So PC Builder 生成硬件系统以后,NIOS ⅡIDE 能够自动生成对

应的HAL 系统库,更新硬件系统设置以后,NIOS ⅡIDE 能自动更新HAL 的驱动设置。在创建软件项目的时候,

NIOS ⅡIDE 自动生成并管理HAL 系统库。

SPI 接口模块驱动程序是基于HAL 系统库,其主要

功能是SPI 接口模块的初始化、传输速率选择、控制寄存器设置、从机选择,以及数据发送和接收,分别由Avalon_

SPI_Init ,Avalon_SPI_Set_Buadrate ,Avalon_SPI_Set_Con 2trol ,Avalon_SPI_Select_Slave ,Avalon_SPI_Transmit 这5

个函数来实现。为方便移植,驱动程序用C 语言编写,使用Altera 提供的IOWR 和IORD 接口函数来访问SPI 接口模块内部寄存器,不同寄存器通过基地址+地址偏移量的方式寻址。4 仿真分析与验证

将SPI 接口模块用Verilog HDL 设计好之后,需要进行仿真来验证设计。首先进行功能仿真,在Modelsim 中

对Verilog 设计文件进行编译、调试,修改设计文件直到功能仿真结果正确。一次SPI 传输的功能仿真结果如图5所示。其中传输速率为f /8;f 为系统时钟频率;数据宽度为8b ,L SB 先传,CPOL =1,CP HA =1,SPI 主机发送的数据为0X8A ,SPI 从机发送的数据为0X3A 。从功能仿真结果可以看到模块逻辑功能正确。

5

1

功能仿真通过之后,需要进行时序仿真

,验证设计的时序要求是否满足。将Verilog HDL 设计文件用

Quartus Ⅱ编译,布局布线后生成比较精确的时延信息文

件,并将此文件添加到Modelsim 中进行时序仿真,改进设计使仿真结果正确并满足时序要求。一次SPI 传输的时序仿真结果如图6所示。其中传输速率为f /8,f 为系统时钟频率,数据宽度为8b ,LSB 先传,CPOL =1,CP HA =

1,SPI 主机发送的数据为0X8A ,SPI 从机发送的数据为0X3A 。从图6

中可以看出时序仿真结果正确。

图5 

功能仿真结果图

图6 时序仿真结果图

当功能仿真和时序仿真通过后,根据硬件设计文件和软件驱动程序,在So PC Builder 中定制一个基于Avalon 交换式总线的用户自定义外设Myspi ,Myspi 的接口信号如表2所示,接口信号符合Avalon 交换式总线接口规范。为了验证Myspi 外设,在基于Cyclone Ⅱ芯片的FP GA 开发板上建立了一个SPI 接口模块测试系统,通过So PC

Builder 配置So PC 系统,加入NIOS ⅡCPU ,jtag_uart ,on 2chip_memory ,sdram ,FAL SH ,Myspi ,spi_slave_core 等模

块。其中spi_slave_core 为SPI 从机模块,将Myspi 和spi_

slave_core 模块相应的信号线相连。图7是SPI 接口模块

测试系统原理图。

NIOS Ⅱ中使用Micro C/OS 2Ⅱ嵌入式操作系统,应

用程序中使用2个任务分别控制SPI 主机和SPI 从机,修改驱动程序直到SPI 主机和SPI 从机之间能够进行正常

通信。调试结果显示SPI 主机和SPI 从机之间通信正确,表明Myspi 外设满足设计要求,SPI 接口模块设计正确。5 结 语

本文通过SPI 接口模块,从SPI 接口模块功能设计、接口信号设计、硬件实现以及NIOS Ⅱ驱动程序设计,阐述了So PC 模块的编写方法和步骤。所设计的SPI 接口模块通过了功能仿真和时序仿真,并在实际的NIOS Ⅱ系统上运行,

验证了接口功能的正确性。

图7 SPI 接口模块测试系统原理图

参 考 文 献

[1]孙丰军,余春暄.SPI 串行总线接口的Verilog 实现[J ].现代

电子技术,2005,28(16):1052106,109.

[2]杨承富,徐志军.SPI 总线接口的FP GA 设计与实现[J ].军

事通信技术,2004,25(2):72276.

[3]高谷刚,罗春.可复用SPI 模块IP 核的设计与验证[J ].单片

机与嵌入式系统应用,2004(11):528.

[4]刘伯栋,金永刚,裴毅,等.在FP GA 中实现SPI 与总线接口

转换[J ].无线电工程,2005,35(3):59261.

作者简介 廖彬彬 男,1985年出生,安徽安庆人,在读硕士研究生。研究方向为通信与信息系统。

(上接第9页)

参 考 文 献

[1]Freescale Semiconductor.MPC7410RISC Microprocessor

User ′s Manual [EB/OL ]https://www.sodocs.net/doc/102052753.html, ,2002.[2]单惠平,杨树元,唐志峰.Power PC 主机处理器的SDRAM

接口设计开发[J ].计算机工程,2006,32(6):2632265.

[3]Tundra Semiconductor Corporation.Tsi107Power PC Host

Bridge User Manual[EB/OL ]https://www.sodocs.net/doc/102052753.html, ,2006.[4]Micron Semiconductor.M T48L32M16A2Datasheet [EB/

OL ]https://www.sodocs.net/doc/102052753.html,/dramds ,2006.

作者简介 刘丽君 女,1983年出生,陕西西安人,硕士研究生。研究方向为计算机控制技术。

贺占庄 博士,总工程师。研究方向为计算机应用技术。李 灏 硕士,工程师。研究方向为嵌入式系统设计。

6

1

SPI接口设计与实现

SPI接口设计与实现 SPI(SerialPeripheralInterface)总线是一种同步串行外设接口,它 可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI总线应用广泛,已经成为很多器件的标准配置,可以直接和各个厂家生产的 多种标准外围器件直接接口。其它常用的串行接口还有I2C、UART这 两种接口,这三种接口互有优缺点。与I2C接口相比,SPI接口速度更快、协议更简单、并且是全双工的,但连线也相对多一些。与UART接口相比,SPI更灵活,因为其使用主设备的时钟进行同步,所以两个比特之间 的时间间隔可以是任意的。在点对点的通信中,SPI接口不需要进行寻 址操作,且为全双工通信,显得简单高效。 1SPI总线工作原理 SPI总线一般以主/从模式工作,通常有一个主设备和一个或多个从设备,数据传输由主机控制,典型SPI结构框图如图1所示。SPI总线包含四条信号线,分别是sclk、miso、mosi和cs,其中,sclk为数据传输时钟,由主机产生;miso是从机输出,主机输入数据线;mosi是主机输出, 从机输入数据线;cs是从设备片选信号,由主机控制,当连接多个从设备时,通过该信号选择不同的从设备。SPI总线是按字节发送数据的,主机和从机内部都包含一个8位串行移位寄存器,在时钟信号控制下,寄存 器内的数据由高到低输出至各自的数据线,8个时钟后,两个寄存器内的数据就被交换了。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机 的传输。当主机发送一个连续的数据流时,可以进行多字节传输,在这 种传输方式下,从机的片选端必须在整个传输过程中保持低电平。 根据串行同步时钟极性和相位不同,SPI有四种工作方式。时钟极性(CPOL)为0时,同步时钟的空闲状态为低电平,为1时,同步时钟的空闲 状态为高电平。时钟相位(CPHA)为0时,在同步时钟的第一个跳变沿采 样数据,为1时,在同步时钟的第二个跳变沿采样数据。因为主设备时

基于CPLD的SPI接口设计

基于CPLD 的SP I 接口设计 D esign i ng SP I I n terface ba sed on CPLD 何永泰 (楚雄师范学院 楚雄 675000) 【摘 要】 根据SP I 同步串行接口的通信协议,介绍了在X ilinx Coo lR unnct XPLA 3CPLD 中利用V HDL 语言实现SP I 接口的设计原理和编程思想,通过用此接口,使得那些没有SP I 接口功能的微处理器和微控制器,也能通过SP I 接口与外围设备进行数据交换。 【关键词】 SP I 接口,CPLD ,接口扩展,接口设计,串行接口 ABSTRACT A cco rding to comm un icati on p ro toco l of SP I synch ronou s serial in terface ,th is paper p resen ts the design theo ry and p rogramm ing idea of i m p lem en ting SP I in terface w ith V HDL language in X ilinx Coo lR unner XPLA 3CPLD .T h is in terface can be u sed to data exchange w ith peri pheral apparatu s fo r m icrop rocesso r and m icrocon tro ller w h ich have no t SP I in terface functi on .KEYWOR D S SP I in terface ,CPLD ,in terface expan si on ,in terface design ,serial in terface 1 SP I 总线接口协议 SP I (Seri on Perp heral In terface )总线接口是一个 全双工,同步串行数据接口。许多微处理器,微控制器和外部设备具有这个接口。它能够实现在微控制器之间或微控制器与外部设备之间通信。SP I 总线通常有4条线组成,即:串行时钟线(SCK )、主机输出从机输入 线(M O S I )、 主机输入从机输出线(M ISO )和从机选择线SS N 。SCK 靠主机和数据流来驱动。M O S I 数据线从主机输出数据作为从机的输入数据。M ISO 数据线传送从机输出的数据作为主机的输入数据。在大多数情况下,使用一个SP I 作为主机,它控制数据向1个或几个从机传送。主机驱动数据从它的SCK 和M O S I 端到各从机的SCK 和M O S I 端,被选择的从机驱动数据从它的M ISO 端到主机的M ISO 端。SS N 控制线用于从机选择控制。 SCK 的相位和极性能改变SP I 的数据格式,时钟极性CPOL =‘0’,串行数据的移位操作由时钟正脉冲触发,时钟极性CPOL =‘1’,串行数据的移位操作由负脉冲触发;时钟相位CPHA =‘0’, 串行数据的移位 图1 CPHA =‘0’时SP I 的数据转换时序图 操作由时钟脉冲前沿触发,时钟相位CPHA =‘1’,串行数据的移位操作由时钟脉冲后沿触发。时钟相位CPHA =‘0’时SP I 的数据转换时序图如图1所示。 在图1中SCK 信号在第一个SCK 周期中的前半周期无效,在这种模式中,SS 的下降沿示意数据传送的开始,因此,SS 在连续串行字节之间必须被取反和重新申明。时钟相位CPHA =‘1’时SP I 的数据转换时序图如图2所示。 在图2中SCK 信号从无效电平到有效电平的第一边沿意味着在这种模式下数据传送的开始,SS 信号能保持有效的低电平在连续串行字节之间,这种模式用于只有一个主机和一个从机的系统中。 在SP I 传送数据时,8位数据从一个SP I 接口移出时,另一个SP I 接口也开始移出8位数据,这样主机的8位移位寄存器和从机的8位移位寄存器可以被看作是16移位寄存器,16位移位寄存器移动8个位置就实现了在主机和从机之间交换数据。基于CPLD 的SP I 接口设计中,从SP I 总线上接收的数据被保存在一个接收寄存器中,发送的数据被写到一个发送寄存器中 。 图2 CPHA =‘1’时SP I 的数据转换时序图 3 20040414收到,20040724改回 33 何永泰,男,1970年生,讲师,在读硕士,研究方向:电子工程设计。 ? 72?第17卷 第10期 电脑开发与应用 (总497)

SPI接口详细说明

SPI 串行外设接口总线,最早由Motorola提出,出现在其M68系列单片机中,由于其简单实用,又不牵涉到专利问题,因此许多厂家的设备都支持该接口,广泛应用于外设控制领域。 SPI接口是一种事实标准,并没有标准协议,大部分厂家都是参照Motorola的SPI接口定义来设计的。但正因为没有确切的版本协议,不同家产品的SPI接口在技术上存在一定的差别,容易引起歧义,有的甚至无法直接互连(需要软件进行必要的修改)。 虽然SPI接口的内容非常简单,但本文仍将就其中的一些容易忽视的问题进行讨论。 SPI ( Serial Peripheral Interface ) SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave模式应用,一般仅支持单Master。 时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first);SPI 接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平。 SPI接口信号线 SPI接口共有4根信号线,分别是:设备选择线、时钟线、串行输出数据线、串行输入数据线。 设备选择线SS-(Slave select,或CS-)

SS-线用于选择激活某Slave设备,低有效,由Master驱动输出。只有当SS-信号线为低电平时,对应Slave设备的SPI接口才处于工作状态。 SCLK:同步时钟信号线, SCLK用来同步主从设备的数据传输,由Master驱动输出,Slave设备按SCK的步调接收或发送数据。 串行数据线: SPI接口数据线是单向的,共有两根数据线,分别承担Master到Slave、Slave到Master的数据传输;但是不同厂家的数据线命名有差别。 Motorola的经典命名是MOSI和MISO,这是站在信号线的角度来命名的。 MOSI:When master, out line; when slave, in line MISO:When master, in line; when slave, out line 比如MOSI,该线上数据一定是Master流向Slave的。因此在电路板上,Master的MOSI引脚应与Slave的MOSI引脚连接在一起。双方的MISO也应该连在一起,而不是一方的MOSI连接另一方的MISO。 不过,也有一些产家(比如Microchip)是按照类似SDI,SDO的方式来命名,这是站在器件的角度根据数据流向来定义的。 SDI:串行数据输入 SDO:串行数据输出 这种情况下,当Master与Slave连接时,就应该用一方的SDO连接另一个方的SDI。 由于SPI接口数据线是单向的,故电路设计时,数据线连接一定要正确,必然是一方的输出连接另一方的输入。 其实这个问题本来很简单的,但由于不同厂家产品的命名习惯可能不同,因此还需小心,以免低级出错。 数据传输的时序模式

spi_和接口设计

SPI 接口的设计 第二章介绍了模数转换器的可编程控制架构,其中可编程控制功能的实现需要分成两部分:一部分为SPI 接口电路,以及其根据部寄存器存储的数据产生的控制信号;另一部分是具体的电路受控模块。本章将介绍接口与数字逻辑电路的设计,包括应用于本模数转换器的SPI 接口与数字逻辑电路的设计、综合以及仿真验证。 3.1 数据通信接口 3.1.1 串行通信 基本的通信方式有两种:并行通信和串行通信。并行通信是指数据以成组的方式,在多条并行信道上同时进行传输。 串行通信指要传送的数据或信息按一定的格式编码,然后在单根线上,按位的先后顺序进行传送。接收数据时,每次从单根线上按位接收信息,再把它们拼成一个字符,送给CPU (Central Processing Unit )做进一步的处理。收发双方必须保持字符同步,以使接收方能从接收的数据比特流中正确区分出与发送方相同的一个一个字符。串行通信只需要一条传输信道,易于实现,是目前主要采用的一种通信方式,它具有通信线少以及传送距离远等优点。 串行通信时,按数据的传送的方向可以分为单工、半双工和全双工等三种方式。 (1)单工(Simplex ):数据线仅能向一个方向传输数据,两个设备进行通信时,一边只能发送数据,另一边只能接收数据。 (2)半双工(Half Duplex ):数据可在两个设备间向任一个方向传输,但因为只有一根传输线,故同一时间只能向一个方向传输数据,不能同时收发。 (3)全双工(Full Duplex ):对数据的两个传输方向采用不同的通路,可以同时发送和接收数据, 串行通信有两种基本工作方式:异步方式和同步方式。采用异步方式(Asynchronous )时,数据发送的格式如图3-1所示。不发送数据时,数据信号线呈现高电平,处于空闲状态。当有数据要发送时,数据信号线变成低电平,并持续一位的时间,用于表示字符的开始,称为起始位。起始位之后,在信号线上依次出现待发送的每一位字符数据,最低有效位0D 最先出现。采用不同的编码方案,待发送的每个字符的位数就不同。当字符用ASCII 码表示时,数据位占7位(60~D D )。在数据位的后面有一个奇偶校验位,其后有停止位,用于指示字符的结束。停止位可以是一位也可以是一位半或两位。可见,用异步方式发送一个7位的ASCII 码字符时,实际需发送10位、10.5位或11位信息。如

全功能SPI接口的设计与实现

SPI 串行通信接口是一种常用的标准接口,由于其使用 简单方便且节省系统资源,很多芯片都支持该接口,应用相当广泛[1]。但是现有文献和设计多数仅实现了SPI 接口的基本发送和接收功能,对SPI 接口的时序控制没有进行深入的研究。全功能SPI 接口应具有四种不同的时钟模式,以适应具有不同时序要求的从控制器。文中主要研究SPI 接口的时钟时序,并用具体电路实现具有4种不同极性和相位的时钟,最后通过仿真验证和FPGA 验证[2]。 1SPI 控制器典型结构 SPI 模块中的典型结构是用于通信的主从2个控制器之 间的连接,如图1所示。由串行时钟线(SPICLK )、主机输入从机输出线(SPISOMI )、主机输出从机输入线(SPISIMO )、SPI 选通线(SPISTE )4条线组成[3]。当CPU 通过译码向主控制器写入要传输的数据时,主控制器通过串行时钟线来启动数据传输,将会在串行时钟线的一个边沿将数据移出移位寄存器,而在串行时钟的另一个边沿将数据锁存在移位寄存器中。 SPI 选通线是SPI 控制器的使能端,可以选择多个从机,实现 一主多从的结构,只要SPI 选通信号将要选的从机处的选通信号变为低电平就能够连接成功。 2 全功能SPI 控制器设计 2.1 SPI 控制器内部结构 SPI 控制器的原理框图如图2所示,其中主要包括:1)SPI 控制器的内部寄存器 SPI 操作控制寄存器(SPICTL ),SPI 状态寄存器(SPISTS ), SPI 波特率设计寄存器(SPIBRR ),SPI 接收缓冲寄存器 图1 SPI 主从连接Fig.1 Master -slave link 全功能SPI 接口的设计与实现 辛晓宁,孙文强 (沈阳工业大学研究生学院,辽宁沈阳110870) 摘要:SPI (Serial Peripheral Interface ,串行外围接口)是Motorola 公司提出的外围接口协议,它采用一个串行、同步、全双工的通信方式,解决了微处理器和外设之间的串行通信问题,并且可以和多个外设直接通信,具有配置灵活,结构简单等优点。根据全功能SPI 总线的特点,设计的SPI 接口可以最大发送和接收16位数据;在主模式和从模式下SPI 模块的时钟频率最大可以达到系统时钟的1/4,并且在主模式下可以提供具有四种不同相位和极性的时钟供从模块选择;可以同时进行发送和接收操作,拥有中断标志位和溢出中断标志位。关键词:全功能SPI ;时钟极性和相位;串行通信;微处理器;中断控制中图分类号:TP332.3 文献标识码:A 文章编号:1674-6236(2012)23-0153-04 Design and implementation of full featured SPI master interface XIN Xiao -ning ,SUN Wen -qiang (Graduate School ,Shenyang University of Technology ,Shenyang 110870,China ) Abstract:The SPI put forward by Motorola Company is a full-duplex ,synchronous serial date link that is standard across many microprocessors ,microcontrollers ,and peripherals It enables communication between microprocessors and peripherals and inter -processor communication ,The SPI system is flexible enough to interface directly with numerous commercially available peripherals ,and it also has some excellences such as it can be configured flexibly and it has a simply structure ,and so on.This SPI has 16-bit transmit and receive capability.The maximum transmission rate in both slave mode and master mode is now CLKOUT/4.The SPI can provide four different clocking schemes on the SPICLK pin.It can be sending and receiving at same time.It has SPI interrupt flag and TXBUF full flag. Key words:full function of SPI ;polarity and phase of CLK ;serial communication microprocessor ;interrupt control 收稿日期:2012-08-11 稿件编号:201208039 作者简介:辛晓宁(1965—),男,辽宁沈阳人,博士,教授。研究方向:SOC 集成电路设计。 电子设计工程 Electronic Design Engineering 第20卷Vol.20第23期No.23 2012年12月Dec.2012 -153-

基于FPGA的SPI接口设计

基于FPGA的SPI接口设计 SPI是一种在FPGA和其他芯片之间传输数据的简单有效的接口方式。 SPI项目 第一部分:什么是SPI 第二部分:SPI的简单实现 第三部分:应用 第一部分:什么是SPI SPI是允许一个器件同其他一个或多个器件进行通讯的简单接口。 SPI是什么样的? 首先让我们来看看两个芯片之间的SPI接口是如何连接的。 在两个芯片时间通讯时,SPI需要4条连线。 正如你所看到的,他们是SCK、MISO、MOSI以及SSEL。其中一个芯片叫做主控芯片,另一个叫从芯片。 SPI基础 基本特点: 1.同步 2.串行 3.全双工 4.非即插即用 5.一主多从 更多细节: 1.同步时钟有主控芯片产生,每个时钟传输一位数据 2.数据在传输前,首先许要进行并转串,才能用一条线传输 3.两条数据线,一条输入、一条输出 4.主从双方有关于SPI传输的先验知识,如比特顺序、数据长度等 5.数据传输有主控芯片发起,每次只与一个从芯片通讯 SPI是一种同步全双工的通讯接口,每个时钟在两条数据线上各传输一比特数据。 简单的传输 假设在主从芯片之间进行的是8位长度的,高位数据在前的SPI传输,则单个字节的传输在波形上看起来是这样的。 MOSI是主输出线,而MISO则是从输出线。由于SPI是全双工的,所以在时钟沿上两条线同时传输数据。MOSI将数据从主控芯片传输至从芯片,MISO则将从芯片的数据传输到主控芯片。 详细的说是这样的: 1,首先主控芯片使能相应的SSEL信号,通知相应的从芯片数据传输要开始了; 2,主控芯片产生8个SPI时钟周期,并将数据在每个时钟沿发送出去,同时从芯片在也每个时钟沿将数据发送到MISO线上。 3,主控芯片撤销SSEL信号,一次SPI传输结束 多个从芯片的情况

MAX7219及单片机的SPI接口设计

串行显示驱动器PS7219及单片机的SPI接口设计 在单片机的应用系统中,为了便于人们观察和监视单片机的运行情况,常常需要用显示器显示运行的中间结果及状态等等。因此显示器往往是单片机系统必不可少的外部设备之一。常用的显示器有很多种,其中LED(发光二极管显示器)是应用较多的一种,它特别适用于强光和光线极弱的场合。 要使LED显示,必须提供段选码和位选码。传统的硬件译码显示接口广泛采用由中央处理器CPU(如:Intel 8031)扩展I/O口(如:8255),然后再使用逻辑门驱动芯片(如7407等)驱动相应的位码和段码。这种设计,芯片间连线十分复杂,系统工作可靠性不高,已越来越不适应单片机系统集成化、小型化的发展要求。特别是系统并行扩展I/O,其缺点十分明显 (1)连线太多,系统连线复杂,印制板布线不方便; (2)并行总线上挂靠的器件太多,系统工作的稳定性和可靠性低; (3)体积较大,集成度不高。 正是由于上述原因,近年来,各厂家相继开发出了集成度较高、驱动能力较强、驱动位数较多、功能齐全的LED显示驱动器。 本文介绍一种低价位、高性能的多位LED显示驱动器PS7219芯片,以及它与单片机89C51具体的SPI接口设计与应用软件。 1PS7219简介 PS7219是一种新型的串行接口的8位数字静态显示芯片。它是由武汉力源公司新推出的24脚双列直插式芯片,采用流行的同步串行外设接口(SPI),可与任何一种单片机方便接口,并可同时驱动8位LED (或64只独立LED),其引脚图如图1所示。 PS7219内部具有15×8RAM功能控制寄存器,可方便选址,对每位数字可单独控制、刷新、不需重写整个显示器。显示数字亮度可由数字进行控制,每位具有闪烁使能控制位。当引脚CON(13脚)置高电平,可禁止所有显示,达到降低功耗的效果,但同时并不影响对控制寄存器的修改。PS7219还有一个掉电模式、一个允许用户从1位数显示到8位数显示选择的扫描界限寄存器和一个强迫所有LED接通的测试模式。另外,PS7219A型内置一个可靠的uP监控电路,可为外部提供一个脉宽140ms,触发门限典型值为4.63V的高电平复位信号。 如果N个PS7219级联,可实现N×8位LED显示。 2PS7219引脚功能 PS7219引脚功能如表1所示。

SPI及其接口介绍

一、SPI接口简介 SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。外围设备FLASHRAM、网络控制器、LCD显示驱动器、A/D 转换器(如图一所示)和MCU等。 图一、ADC中的SPI 二、SPI接口 一个典型的SPI模块的核心部件是一个8位的移位寄存器和一个8位的数据寄存器SPIDR。通过SPI进行数据传送的设备有主SPI和从SPI之分,即SPI传送在一个主SPI和一个从SPI之间进行。图二给出了两个SPI模块相互连接、进行SPI传送的示意图,图左边是一个主SPI,图右边为一个从SPI。

图二、典型SPI示意图 在AN-877应用笔记中,对spi的接口定义与典型spi接口有所不同,AN-877使用一根线SDIO代替了典型SPI的MISO和MOSI,SS接口用CSB代替。图三和图四分别是双线模式下单器件控制(主从一对一)和双线模式下多器件控制(主从一对多)。 图三:主从一对一控制 图四:主从一对多控制

但是原理都一样。主从机之间一般由3个引脚组成:串行时钟引脚(SCLK)、串行数据输入/输出引脚(SDIO)、片选引脚(CSB)。 1、引脚 数据输入/输出(SDIO):该引脚用作数据的输入/输出,用作输入还是用作输出具体取决于所发送的指令(读或写)以及时序帧中的相对位置(指令周期或数据周期)。在读或写的第一个阶段,该引脚用作输入,将信息传递到内部状态机。如果该命令为读命令,状态机把该引脚(SDIO)变为输出,然后该引脚将数据回传给外部控制器。如果该命令为写命令,该引脚始终用作输入。 串行时钟(SCLK):SCLK由外部控制器提供,时钟频率最高为25MHZ。所有数据的输入输出都是与SCLK同步的。输入数据在SCLK的上升沿有效,输出数据在SCLK的下降沿有效。

串行接口SPI接口应用设计

串行接口SPI接口应用设计 2011-12-28 13:24:32| 分类:单片机| 标签:|字号大中小订阅 作者:马潮老师/ 整理:armok / 2005-01-17/ https://www.sodocs.net/doc/102052753.html, 作者:马潮老师/ 整理:armok / 2005-01-17/ https://www.sodocs.net/doc/102052753.html, 使用的同步串行三线SPI接口,可以方便的连接采用SPI通信协议的外围或另一片AVR单片机,实现在短距离内的高速同步通信。ATmega128的SPI采用硬件方式实现面向字节的全双工3线同步通信,支持主机、从机和2种不同极性的SPI时序,通信速率有7种选择,主机方式的最高速率为1/2系统时钟,从机方式最高速率为1/4系统时钟。 ATmega128单片机内部的SPI接口也被用于程序存储器和数据E2PROM的编程下载和上传。但特别需要注意的是,此时SPI的MOSI和MISO接口不再对应PB2、PB3引脚,而是转换到PE0、PE1引脚上(PDI、PDO),其详见第二章中关于程序存储器的串行编程和校验部分的内容。 ATmega128的SPI为硬件接口和传输完成中断申请,所以使用SPI传输数据的有效方法是采用中断方式+数据缓存器的设计方法。在对SPI初始化时,应注意以下几点: .正确选择和设置主机或从机,以及工作模式(极性),数据传输率; .注意传送字节的顺序,是低位优先(LSB First)还是高位优先(MSB Frist); .正确设置MOSI和MISO接口的输入输出方向,输入引脚使用上拉电阻,可以节省总线上的吊高电阻。 下面一段是SPI主机方式连续发送(接收)字节的例程: #define SIZE 100 unsigned char SPI_rx_buff[SIZE]; unsigned char SPI_tx_buff[SIZE]; unsigned char rx_wr_index,rx_rd_index,rx_counter,rx_buffer_overflow; unsigned char tx_wr_index,tx_rd_index,tx_counter; #pragma interrupt_handler spi_stc_isr:18 void spi_stc_isr(void) { SPI_rx_buff[rx_wr_index] = SPDR; //从ISP口读出收到的字节 if (++rx_wr_index == SIZE) rx_wr_index = 0; //放入接收缓冲区,并调整队列指针 if (++rx_counter == SIZE) { rx_counter = 0; rx_buffer_overflow = 1; } if (tx_counter) //如果发送缓冲区中有待发的数据 { --tx_counter;

基于FPGA的SPI串行外围接口接口设计毕业设计

武汉理工大学本科学生毕业设计(论文)开题报告

目录 摘要.................................................................................. I Abstract ............................................................................. II 1 绪论.. (3) 1.1课题研究背景 (3) 1.2 SPI研究目的及意义 (4) 1.3 本章小结 (4) 2 SPI原理分析 (5) 2.1 SPI介绍 (5) 2.2 SPI工作模式 (6) 2.3 SPI传输模式 (6) 2.4 SPI协议 (7) 2.5 本章小结 (8) 3 方案论证 (10) 3.1在51系列单片机系统中实现 (10) 3.2 用可编程逻辑器件设计SPI (11) 3.3 本章小结 (11) 4 SPI的电路设计 (12) 4.1 SPI设计系统的功能 (12) 4.2 SPI各部分具体实现 (12) 4.2.2 SPI系统中所用的寄存器 (13) 4.2.3 SPI速率控制 (14) 4.2.4 SPI控制状态机 (14) 4.2.5 SPI程序设计流程图 (15) 4.3 SPI仿真及开发板上调试验证分析 (16) 4.3.1 仿真分析 (16) 4.3.2开发板上调试 (18) 4.4 本章小结 (20) 5 论文总结 (21) 致谢 (22) 参考文献 (23) 附录1 (24) 附录2 (28)

摘要 随着专用集成电路(ASIC)设计技术的进步以及超大规模集成电路(VLSI)工艺技术的飞速发展,以及其价格的日益降低,采用FPGA编程的硬件电路来实现诸如SPI接口也日益切实可行,相对软件实现具有更好的优点。SPI接口是一种常用的标准接口,由于其使用简单方便且节省系统资源,很多芯片都支持该接口,SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间等等。 由于SPI接口是一种事实标准,并没有标准协议,大部分厂家都是参照Motorola的SPI接口定义来设计的,但正因为没有确切的版本协议,不同厂家产品的SPI接口在技术上存在一定的差别,容易引起歧义,有的甚至无法互联(需要用软件进行必要的修改)。本文基于一种使用较为普遍的协议来进行设计,并参照Motorola公司的MC68HC11A8单片机中的SPI模块定义来设计的简化的SPI接口,用Verilog语言进行编写设计,并在ISE 软件上进行设计仿真,并在基于Xlinx公司的Spartan-3E芯片的Digilent公司出品的Nexys2开发板上用在线逻辑分析仪chipscope进行板上调试验证观察结果,并完成实现功能,并具有一些独创性的设计。 关键词:FPGA Verilog SPI协议 chipscope ISE

spi_和接口设计

SPI 接口的设计 第二章介绍了模数转换器的可编程控制架构,其中可编程控制功能的实现需要分成两部分:一部分为SPI 接口电路,以及其根据部寄存器存储的数据产生的控制信号;另一部分是具体的电路受控模块。本章将介绍接口与数字逻辑电路的设计,包括应用于本模数转换器的SPI 接口与数字逻辑电路的设计、综合以及仿真验证。 3.1 数据通信接口 3.1.1 串行通信 基本的通信方式有两种:并行通信和串行通信。并行通信是指数据以成组的方式,在多条并行信道上同时进行传输。 串行通信指要传送的数据或信息按一定的格式编码,然后在单根线上,按位的先后顺序进行传送。接收数据时,每次从单根线上按位接收信息,再把它们拼成一个字符,送给CPU( Central Processing Unit )做进一步的处理。收发双 方必须保持字符同步,以使接收方能从接收的数据比特流中正确区分出与发送方相同的一个一个字符。串行通信只需要一条传输信道,易于实现,是目前主要采用的一种通信方式,它具有通信线少以及传送距离远等优点。 串行通信时,按数据的传送的方向可以分为单工、半双工和全双工等三种方式。 ( 1 )单工( Simplex ):数据线仅能向一个方向传输数据,两个设备进行通信时,一边只能发送数据,另一边只能接收数据。 ( 2 )半双工( Half Duplex ):数据可在两个设备间向任一个方向传输,但因为只有一根传输线,故同一时间只能向一个方向传输数据,不能同时收发。 ( 3 )全双工( Full Duplex ):对数据的两个传输方向采用不同的通路,可以同时发送和接收数据, 串行通信有两种基本工作方式:异步方式和同步方式。采用异步方式 ( Asynchronous )时,数据发送的格式如图3-1 所示。不发送数据时,数据信号线呈现高电平,处于空闲状态。当有数据要发送时,数据信号线变成低电平,并持续一位的时间,用于表示字符的开始,称为起始位。起始位之后,在信号线上依次出现待发送的每一位字符数据,最低有效位D0 最先出现。采用不同的编 码方案,待发送的每个字符的位数就不同。当字符用ASCII 码表示时,数据位占7 位( D0 ~ D6 )。在数据位的后面有一个奇偶校验位,其后有停止位,用于指示字符的结束。停止位可以是一位也可以是一位半或两位。可见,用异步方式发送一个7 位的ASCII 码字符时,实际需发送10 位、10.5 位或11 位信息。如

SPI接口及应用

SPI接口及应用 摘要:为解决I/O口数据传输的速率问题,提出SPI接口的单线应用方案,分析该方法的可行性,并在单片机ADuC812与射频无线通信模块nRF2401间的接口设计中得到了应用,验证该方案的有效性。该方案具有电路设计简单、数据传输速率高等优点。 1 SPI通信 SPI接口的全称 "Serial Peripheral Interface" 意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI接口一种同步串行外设接口,有信号线少、协议简单、传输速度快的特点,因此有不少外围器件都采用SPI总线,如Flash RAM、A/ D转换器、LED显示器、MCU以及计算机网络等。 MCU中的SPI接口通过配置可与各个厂家生产的多种标准外围器件直接连接。 SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。 SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号: (1)MOSI -主器件数据输出,从器件数据输入 (2)MISO -主器件数据输入,从器件数据输出 (3)SCLK -时钟信号,由主器件产生 (4)/SS -从器件使能信号,由主器件控制 SPI信号线:一般的SPI接口使用4条信号线与外围设备接口,其具体功能如下: SCLOCK:主机的时钟线,为数据的发送和接收提供同步时钟信号。每一位数据的传输都需要1次时钟作用,因而发送或接收1个字节的数据都需要8个时钟作用。主机的时钟可以通过固件进行设置,并和从机的时钟线相连。 MISO:主机输入/从机输出数据线。主机的MOSO应与从机的发送数据端相连,进行高位在前的数据交换。 SS:低电平有效的从机选择线。当该线置低时,才能跟从机进行通信。 SPI工作模式:SPI的工作模式分为:主模式和从模式。 主模式的特点是不论发送还是接收始终有SCLOCK信号,SS信号不是必需的,由于SPI只能有一个主机,因而不存在主机的选择问题。 从模式的特点是无论发送还是接收必须在时钟信号SCLOCK的作用下才能进行,并且SS信号必须有效。 不论是在主模式下还是在从模式下,都要在时钟极性和时钟相位的配合下才能有效的完

相关主题