当前位置:文档之家› 【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)022013204Design and Implement of SoPC Modular for SPI Bus InterfaceL 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 Ⅱ收稿日期:20072072311 引 言可编程片上系统(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所示。

31表1 SPI 总线传输模式模式CPOL CP HA 模式CPOL CP HA 0002101311模式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 PCBuilder 自动完成,所以用户可以很容易地修改系统以提高性能或增加系统功能。

Avalon 交换式总线使用最少的逻辑资源来支持数据总线的复用、地址译码、等待周期的产生、外设的地址对齐、中断优先级的指定以及高级的交换式总线传输。

Avalon 交换式总线接口灵活,用户只需使用系统所需的信号来进行数据传输。

Avalon 交换式总线定义的内联线策略使得任何一个Avalon 总线上的主设备都可以与任何一个从设备建立连接。

Avalon 交换式总线还支持大范围的系统结构,包括单个的,多个的主设备系统,还具有在外设之间通过不同路径进行无缝的数据传输能力。

为了适应So PC 系统外设的开发,Altera 制定了Aval 2on 总线接口规范,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 Kclock 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 byteenable4input interrupt irq 1output sclk export 1output mosi export 1output miso export 1input ssexport8output本文中设计的SPI 接口模块使用Avalon 总线和其他模块之间实现互连。

其功能结构如图3所示。

SPI 任务逻辑:实现SPI 数据的传输控制;41SPI寄存器文件:SPI 寄存器文件提供了任务逻辑和外界交换数据的途径,根据寄存器文件,用户就可以通过Avalon 接口使用基地址+地址偏移量的方式来访问SPI接口模块的内部寄存器;控制寄存器:用来对SPI 接口模块电路进行配置的,可以设置数据宽度、串行时钟的极性和相位、以及传输速率;状态寄存器:包含发送完成或者系统出错的标志位;从选择寄存器:选择需要同主机进行通信的从机;波特率寄存器:决定串行时钟SCL K 的速率;接收数据寄存器:接收数据寄存器;发送数据寄存器:发送数据寄存器;Avalon 接口:Avalon 接口为寄存器文件提供一个标准的Avalon 前端,使用Avalon 标准的接口信号来访问寄存器文件。

相关主题