DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 727|回复: 0
打印 上一主题 下一主题

[GPS] 应用于GPS导航基带芯片的SPIIP核的设计和验证

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-1 06:13:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

应用于GPS 导航基带芯片的SPI IP 核的设计和验证
曹磊1 李晓江2 马成炎3
(1. 中国科学院微电子研究所,北京 100029 ;2. 杭州中科微电子有限公司,杭州 310053 ;
3. 嘉兴联星微电子有限公司,嘉兴 314000 ;)
基金项目:中国第二代卫星导航系统重大专项多模导航型基带芯片(GFZX03030204)
摘要:基于APB 总线接口,设计了一种可设置传输速率、支持DMA 功能并能适用于4 种时钟模式的SPI IP 核。首先介绍了SPI
协议标准,然后给出了该IP 核的系统结构和各子模块设计方法,并使用Verilog HDL 语言实现硬件设计,最后通过Synopsys
EDA 软件和FPGA 硬件协同仿真来验证设计的正确性。目前,该SPI IP 核已经成功应用到导航基带芯片ATGB03 上,证明了该
设计在实际工程中的可行性。
关键词: SPI 协议;IP 核;Verilog HDL; FPGA
中文分类号:TN492  文献标识码:A
Design and verification of SPI IP Core for
baseband CMOS chip of GPS
Cao Lei1 Li Xiaojiang2 Ma Chengyan3
(1.Institute of Microelectronics of Chinese Academy of Science, Beijing 100029 ;
2.Hangzhou Zhongke Microelectronics Co.Ltd, Hangzhou 310053 ;
3.Jiaxing Lianxing Microelectronics Co.Ltd, Jiaxing 314000)
Abstract: Based on APB Bus, we designed an IP Core of SPI protocol, which could set different transmission
speed, could support DMA function, and could work in any one of the four clock modes. This paper introduces
the standard of SPI protocol and the structure of the IP Core using Verilog HDL. The module had already
been verified by Synopsys EDA tool and FPGA platform. At present, the SPI IP Core had been applied in GPS
chip of ATGB03 to show the validity of this design in engineering application.
Keyword: SPI protocol; IP core; Verilog HDL; FPGA
0 引言
随着SOC 的规模不断扩大,集成的IP 模块不断增多,设
计一款可复用的IP 核对于减少设计复杂度、缩短SOC 开发周
期、提高流片成功率都是重要的一环。SPI(Serial Peripheral
Interface) 串行通信总线具有配置灵活,结构简单等优点,被广
泛应用于各位处理器和嵌入式系统当中。因此,对于SPI IP 核的
设计已经成为业界的设计热点之一,但现有设计功能还不够完
善。文献[1] 设计了SPI Master 模块,不具有SPI Slave 功能;文
献[2] 设计了一款基于FPGA 的SPI 总线,但是不支持四线工作模
式,并且对设计本身的结构和特性叙述不多;文献[3] 的设计实
现了多功能化的SPI IP 核,但是不支持DMA 功能,所设计的SPI
Master 也没作流水考虑,数据传输率受到限制。本文总结上述设
计中存在的问题,提出了一种基于APB 总线的高速可复用的SPI
IP 核实现方法,使所设计的SPI 接口具有更高的实际可操作性,
并且已经在流片回来的芯片上得到了验证。
1 SPI 协议及时序概述
SPI 是由Motorola 公司首先在其MC68HCXX 系列处理器上
定义的一种高速的、全双工的、同步的通信总线,通常只占用四根
芯片管脚,分别为MOSI: 串行数据输出线,当SPI 模块为主模块
时,它输出数据;当SPI 模块为从模块时,它接收数据;MISO: 串
行数据输入线,当SPI 模块为主模块时,它接收数据;当SPI 模
块为从模块时,它输出数据;SCK: 同步串行时钟,由SPI 主模块
产生;nCS: 从机片选线,低电平有效,由主模块产生。协议规定
了SPI 的主、从两种工作模式,工作在主模式的SPI 模块负责产
生串行时钟SCK 和对从模块的片选信号。
SPI 模块为了和外设进行数据交换,根据外设的工作要求,
其输出串行同步时钟SCK 的极性CPOL 和相位CPHA 可以进行配
置,因此SPI 有四种传输时序,其共同特点是每位数据的发送/
接收需要一个SCK 周期,
每次传输整数倍个8 位
数据。当CPOL=0 时,串
行时钟的空闲状态为低
电平;当CPOL=1 时,串
行同步时钟的空闲状态
位高电平。而时钟相位
CPHA 则决定了数据采样
的数据沿,当CPHA=1 时,
在串行同步时钟的第二
个跳变沿数据被采样;
当CPHA=0 时,在串行同
步时钟的第一个跳变沿
数据被采样。SPI 模块
的四种
接口时序如图1
所示。
图1 SPI 外设接口的四种数据传输时序
1 2 3 4 5 6 7 8
MSB 6 5 4 3 2 1 LSB
MSB 6 5 4 3 2 1 LSB MSB*
Cycle
SDI
SDO
SCK
CPOL=0,CPHA=0(Format A)
1 2 3 4 5 6 7 8
MSB 6 5 4 3 2 1 LSB
MSB 6 5 4 3 2 1 LSB*
Cycle
SDI
SDO
CPOL=0,CPHA=1(Format B)
SCK
*LSB
1 2 3 4 5 6 7 8
MSB 6 5 4 3 2 1 LSB
MSB 6 5 4 3 2 1 LSB MSB*
CPOL=1,CPHA=0(Format A)
1 2 3 4 5 6 7 8
MSB 6 5 4 3 2 1 LSB
MSB 6 5 4 3 2 1 LSB*
CPOL=1,CPHA=1(Format B)
*LSB
Cycle
SDI
SDO
SCK
SDI
SDO
SCK
Cycle
·18·
电 子 测 试
2 SPI IP 核的设计
2.1 SPI IP 核系统结构及主要功能
该IP 核应用于国家导航基带项目,基于APB 总线进行设计。
CPU 或者DMA 模块可通过APB 总线完成对该SPI 模块的寄存器
配置、数据读写及中断处理等操作。所设计的SPI 电路主要包括:
SPI 控制寄存器SPCR、数据发送模块TRANSMITTER、数据接收模
块RECEIVER、发送/ 接收同步FIFO、状态寄存器SPSR。其总体结
构图如图2 所示。
Controller
Register
Phase+
Polarity
Control
Port
Control
Logic
Blaud Rate
Generator
CPOL CPHA
Blaud
Rate
SCK
OUT
data in
data out
SDO
SDI
MAS_SCLK
APB/
DMA
Rx FIFO
Tx
FIFO
MSB LSB
MSB LSB
Shifter
Register
SPI INT SIGNAL
APB BUS SIGNAL
SLV_SCLK
MAS_CSN
SLV_CSN
SCK IN
Re_reg
Tr_reg
Master
Slave
SPI DMA SIGNAL
State
Register
图2 SPI IP 核系统结构
如图2 所示,所设计的SPI IP 核实现了传统SPI 协议的四
线结构。同时满足SPI 的四种接口时序,通过控制寄存器的CPOL
和CPHA 位来控制。增加了两个8 位深度、32 位宽度的同步可选
FIFO,用以提高传输速率。每次发送/ 接收的比特数可在8bits、
16bits、32bits 选择,并且首尾比特位的发送/ 接收顺序也可选。
考虑到部分应用中可能需要三线结构的SPI 核进行半双工工作,
本设计可只使用SDI 数据线作三线工作方式。
2.2 主要模块的设计
本次设计主要采用自顶向下的设计方法,首先完成设计说
明文档,划分好各子模块和系统架构,再进行Verilog 代码的编
写,主要实现的功能和设计中部分问题的解决方法如下。
2.2.1 存储器模块
所设计的SPI 核主要包括一个32 位的控制寄存器,实现
Master/Slave 功能的切换、中断模式/DMA 模式的切换等功能的
控制;一个32 位的状态寄存器,记录发送/ 接收中断、同步FIFO
空满标志等状态;两个8X32 的同步FIFO,可选择是否使用。
2.2.2 时钟分频模块
当SPI 被用作Master 时,将会根据控制寄存器SPI_DIV 位
所设置的分频数值来对APB 总线时钟进行分频,用以产生所需
要的同步串行时钟SCK。本设计可完成对APB 总线时钟进行最高
4096 分频,默认分频值是二分频,所采用的分频公式为:fpclk
= fSCK*2SPI_DIV+1。
2.2.3 SPI Master 模块
通过控制寄存器MSTR 位的配置,可将SPI IP 设定在
Master 工作模式。在此工作模式下,SPI 会自主产生nCS 片选信
号和SCK 时钟信号,同时完成SPI 四种时钟时序的产生逻辑。相
比较传统的SPI Master,本次设计不仅仅再局限于每次8 比特
的传输量,增加了16 比特、32 比特可选配置。并且,相比较于文
献[4] 每二次的传输都要间隔几个总线时钟用来取数据,会影响
传输速率。对此,考虑到SCK 一般都比APB 总线时钟周期大,可以
在每组数据传输到最后一个比特时,轮询发送FIFO,查看是否为
空,持续半个SCK 周期。若发送FIFO 非空,则立即将下一组待发
送数据提前准备好,结束轮询。这样可以实现传输的连贯性,减小
本身设计造成的传输延迟,增加传输速率。所设计的SPI Master
模块的状态机如图3 所示。
TIDLE
TRMAS1
HOLDMAS
ENDMAS
TRMAS2
 
CLKPH1
IDLE
CLKPH2
 (a) SPI Master 数据传输状态机 (b) SPI Master SCK 产生状态机
图3 SPI Master 模块有限状态机
SPI 在发送数据时,所发送的数据要和模块产生的串行时
钟SCK 保持同步,这就要求了在每次SCK 后半周期的跳变沿时,
发送数据才能变成下一比特。这也使得两个状态机在逻辑上出现
交叉控制,相互协同工作,同时保证在SCK 一个时钟周期的第一
个时钟沿采样接收数据,第二个时钟沿改变发送数据。
TIDLE :当每次传输结束或者进行复位后,状态机处于这一
状态。在该状态下,若控制寄存器配置成Master 模式并且出现传
输请求,则跳转到TRMAS1 状态。
TRMAS1 :该状态只保持一个APB 总线周期,用于向FIFO 或
者发送寄存器产生读指令,然后直接跳转到TRMAS2 状态。
TRMAS2 :该状态也只保持一个APB 总线周期,用以将待发
送的一组数据寄存到传输移位寄存器中,在HOLDMAS 状态下作移
位发送。
HOLDMAS :保持该状态,直到发送最后一个比特位并且没有
待发送的数据,期间要不断轮询SCK 产生状态机和FIFO 空满标
志位。
ENDMAS :保持一个APB 总线时钟,用以产生传输结束中断
或者DMA 请求信号。
CLKPH1 :根据所配置的时钟分频数值,对应于一个同步串
行时钟SCK 周期的前半周期。
CLKPH2 :根据所配置的时钟分频数值,对应于一个同步串
行时钟SCK 周期的后半周期,在传输到最后一比特且没有下一组
待发数据时,跳回到IDLE 状态。
2.2.4 SPI Slave 模块
相比较于Master 模式,当SPI 作为Slave 使用时,不需要
自己产生同步串行时钟SCK,由外部输入SCK 时钟。从空闲状态
到传输状态的触发条件,也是来自于主设备的nCS 片选信号。由
此,可以看到Slave 的传输受到Master 的控制,当Master 没有
同步串行时钟输入时,Slave 需要重新返回到空闲状态,并产生
相应的状态标志位,其状态机主要参考Master 模式设计。另外,
因为SCK 时钟是由Master 产生输入到Slave,Slave 本身还有
来自APB 的总线时钟,这样当在SCK 时钟域下,完成接收数据的
串行转并行和发送数据的并行转串行后,需要将保存好的接收数
据传输到APB 时钟域下,和从APB 时钟域读取下一组待发数据,
这样就需要在Slave 内部作异步时钟处理操作,用以避免出现亚
·19·
电 子 测 试
ELECTRONIC TEST
第6期
设计研发2013年3月
稳态现象。所采取的方
法如图4 所示。
在SCK 时钟域和
APB 时钟域之间,每次交
换的都是多比特数据,
不能采用传统的单比特
同步方法。在本次设计
中,使用的是类似于握
手协议的处理方法[5],
当一次传输完成,SCK
时钟域内会产生单比特
的标志信号送到APB 时
钟域下,经过两级时钟
采样再作为控制信号,
再将SCK 时钟域下接收
的数据转移到APB 时钟
域下,同时将APB 时钟
域下准备好的下组待发数据转移到SCK 时钟域下。这样就可以满
足异步信号的建立和保持时间冲突问题,避免亚稳态的产生。
3 仿真验证和综合结果
本设计,首先用Synopsys 公司的VCS 仿真软件,用Verilog
HDL 语言编写顶层的Testbench,并在该顶层内编写测试变量,
进行功能仿真。然后,利用Synopsys 公司的Design Compile 软
件进行综合,得到网表和延时文件再回到VCS 软件中进行时序仿
真。最后,再采用Altera 公司EP3SL150F1152 FPGA 芯片搭建的
验证平台上,配合导航芯片ATGB03 的其他模块,完成实测。在验
证无误的情况下,已经成功流片并且流片回归测试运行正常,完
全符合设计要求。
3.1 软件仿真验证
该部分的测试代码设计思路是,在建立的顶层Testbench
模块内[6][7],实例化两个SPI 模块SPI_M 和SPI_S,分别设置成
主模块和从模块,完成数据的收发测试。图5 所示为VCS 软件上
局部时序仿真图。分别对应着SPI Master 模式下,相邻发送数据
可以产生连续的同步串行时钟SCK ;以及从SPI Master 中发送
的数据进过SPI Slave 模块接收存储后,能正确的通过APB 总线
进行读取。
(a) SPI Master 连续产生同步串行时钟SCK
(b) SPI 收发数据对比
图5 SPI IP 核仿真结果
从图5(a) 中可以看到,每次最高可以完成32 比特的传输,
并且当mas_cr_byte=0x01 时,传输到最后一个比特,会自动开始
下一组数据的发送,不需要再延迟几个APB 时钟周期。内部设计
的两个状态机继续保持在传输状态,大大提高了传输效率。在图
5(b) 中,SPI Master 中的数据tr_data_out,在进过并转串处
理,从sdi 端传输到SPI Slave 模块。SPI Slave 模块对串行数
据完成采样存储到接收FIFO 后,从APB 总线读取到的接收数据
prdata 和所发送的数据tr_data_out 一致。
3.2 综合结果
使用Synopsys 公司的Design Compile 软件,对所写的SPI
IP 进行综合,所得
到的report_area
如图6 所示。在
SMIC 0.13 工
艺下,模块的总面
积为37566.1
,约合7513 逻辑
门。在将APB 总线
时钟设置在60MHz
情况下,SPI IP
运行在20MHz 仍能
完成数据的传输,
达到了设计目的。
4 结束语
本文设计一种应用于GPS 导航芯片的可复用SPI IP 核,它
具有功能完善、速度快、可重用性高等特点,并通过了仿真验证、
逻辑综合和FPGA 平台测试,证明了其设计的可靠性和实用性,目
前已经成功应用到已经量产的ATGB03 GPS 导航芯片上,具有实
际的商业价值。
参考文献
[1] 李大江,崔建明. 一种基于FPGA 的可配置SPI Master 接
口设计实现[J]. 电子技术应用. 2010.10(36):60-62.
[2] 汪永琳,丁一. 一种3 线半双工SPI 接口设计[J]. 半导
体技术. 2010.5(35):482-484.
[3] 郭林,刘文杰,李跃辉. 基于FPGA 的可复用SPI 总线实现
[J] .2012.4(155):34-37.
[4] Jianlong Zhang, Chunyu Wu, Wenjing Zhang The
design and realization of a comprehensive SPI
interface controller [J]. IEEE 2011.2:4529-4532.
[5] 谢修祥,王广生 异步多时钟系统的同步设计技术[J]. 电
子工程师. 2005.5(31):36-38.
[6] Bergeron Janick. Writing testbenches: functional
verification of HDL models [M] .[S.L]:Kluwer
Academic Publishers.2003.
[7] 高谷刚,罗春. 可复用SPI 模块IP 核的设计与验证[J].
单片机与嵌入式系统应用. 2004(11):5-8.
作者简介
曹磊,男,1989 年生,硕士研究生,主要研究方向:数字集
成电路设计及验证。
李晓江,男,1972 年生,硕士生导师,主要研究方向:数字
集成电路设计。
马成炎,男,1963 年生,博士生导师,主要研究方向:模拟
射频集成电路设计
D Q
CP
D Q
CP
D Q
CP
D Q
CLKA CP
Data[0]
Data[1]
Data[N]
Ready D Q
CP
D Q
CP
D Q
CP
D Q
D Q
CP
CP
CP
....
CLKB
时钟域A 时钟域B
图4 SPI Slave 异步时钟处理设计
图6 SPI IP 在SMIC 0.13 工艺下的综合结果
应用于GPS导航基带芯片的SPIIP核的设计和验证-.pdf (1.16 MB, 下载次数: 0)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-11 18:23 , 耗时 0.103149 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表