加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 设计中心 > 可编程逻辑器件

基于FPGA的SPI总线在软件接收机上的应用

时间:2014-05-02  来源:123485.com  作者:9stone

 

  在软件接收机的研究中,为了实现在GPS或者北斗模式下基带对射频前端数据的采集,在Altera公司的CycloneⅢ系列FPGA器件上采用VERILOG语言编写了SPI总线协议,完成了对射频前端芯片GPS/北斗两种工作模式的切换,使基带可以随时获得两种模式下的数据。通过验证,采集来的数据与期望的结果一致。同时为工程设计提供了一种原型,也为进一步的工程开发奠定了基础。

  因此,我们采用ALTERA公司的FPGA器件设计SPI总线的通信接口,该总线接口具有高速、配置灵活等优点,大大地缩短了系统的开发周期。

  1 SPI总线原理

  1.1 SPI总线协议简介

  SPI总线是一种全双工同步串行接口,能够实现微控制器与外设通信。它采用主从模式架构,支持多slave模式应用,并且只占用芯片上四个管脚,节省了芯片的引脚。

  1.2 SPI总线接口

  SPI是一个环形总线结构,通常有4条线:串行时钟(SCK)线、主机输入/从机输出(MISO)数据线,主机输出/从机输入(MOSI)数据线和低电平有效的从机选择线(CS)。

  SPI总线在与外设进行数据交换时,可根据外设的工作要求,配置SCK的相位和极性,从而产生不同的数据格式。如果时钟相位CPFIA=0,数据在时钟脉冲的前沿被采样;如果时钟相位CPHA=1,数据在时钟脉冲的后沿被采样。如果时钟的极性CPOL=0,串行数据的移位操作由时钟的正脉冲触发;如果时钟的极性CPOL=1,串行数据的移位操作由时钟的负脉冲触发。因此,SPI主模块和从模块的时钟相位和极性应该一致。

  2 开发平台介绍

  本文主要介绍在FPGA中实现基带对射频前端数据的采集,通过SPI总线实现对射频前端模式的转换。当射频前端被配置为GPS模式时,采集到的数据来自GPS卫星;当被配置为北斗模式时,采集到的数据来自北斗卫星。本文选用的芯片为杭州中科微有限公司HZG09V2D和ALTERA公司Cyclone III系列中的EP3C40Q240C8。接口之问的连接关系如图1所示。

  

a.jpg

 

  HZG09V2D是杭州中科微有限公司的一款射频芯片,它是一款工作在L1频段的多模式卫星导航射频前端接收芯片,可支持L1频段中国北斗二代、美国GPS、俄罗斯GLONASS、欧洲伽利略等多个导航系统。

  EP3C40Q240C8是Altera公司CycloneⅢ系列中的一款FPGA芯片,它前所未有地同时实现了低功耗、低成本和高性能。其中CycloneⅢFPGA在布局上提供丰富的存储器和乘法器资源,并且所有体系结构都含有非常高效的互联。

   3 FPGA实现与调试结果

  3.1 实现步骤

  首先使用ModelSim SE 6.2对所编写的Verilog代码进行编译仿真,从而得到对功能的验证。再用QuartusⅡ软件进行编译后,将生成的编程文件.sof文件通过JTAG下载到Altera公司CycloneⅢ系列EP3C40Q240C8运行,在数字示波器的辅助分析下都得到了正确的结果。

  3.2 模块设计

  3.2.1 分频模块

  由于SPI总线协议要求的SCK时钟频率与FPGA时钟频率不一致,所以对基带时钟进行分频。本文中,基带时钟频率为40 MHz,SPI总线时钟频率为1 MHz,故需要进行40倍分频。

  3.2.2 发送数据模块

  在片选信号拉低之前,时钟信必须为低电平。当片选信号拉低后,SCK开始工作,然后写八位地址,接着写32位数据;发送操作结束后,片选信号拉高,SCK=0。代码如下:

  

b.jpg

 

  

 

 

  3.2.3 接收数据模块

  当片选拉低后,SCK=0,同时写八位地址并且使SDA为高阻,再读32位数据;当片选拉高时,CS=1,SCK=0,此外,在片选信号拉低之前,SCK必须为低电平。代码如下:

  

d.jpg

 

   2.4 配置模块

  配置模块发送GPS/Compass模式配置命令给SPI功能模块,从而实现一次完整的射频前端工作模式配置。其中,射频前端有5个与SPI相关的配置寄存器,具体模式配置命令如下:

  

e.jpg

 

  3.3 仿真结果

  在GPS模式下,实现了寄存器的读写时序,如图2所示。

  

f.jpg

 

  在GPS/Compass模式下,实现了5个地址的写操作和读操作。在基带处理中,将读出来的数据与设定好的配置的数据进行对比,当结果一致后,就完成了一次正确的配置操作。如图3所示。

  3.4 RTL视图

  RTL视图由两个模块组成,分别为ModeSet和newspi,其中ModeSet模块的功能是发送命令来配置射频前端的模式,newspi模块实现射频前端和基带之间具体的数据读写。如图4所示。

  

g.jpg

 

  4 结语

  在现代SPI总线得到了广泛的应用,它能够有效地与FPGA编程结合在一起,利用FPGA的灵活性,将大大减少了电子设计的开发周期。本文通过FPGA实现了射频前端GPS/北斗模式的切换,为将来射频前端多模设计奠定了基础,并且可通过外部器件查看读写操作是否完成,从而实现了实时配置。

分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->可编程逻辑器件
  • 可编程逻辑器件
  • 传感器技术
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门