DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-17 15:11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘要:在软件接收机的研究中,为了实现在GPS或者北斗模式下基带对射频前端数据的采集,在Altera公司的CycloneⅢ系列FPGA器件上采用VERILOG语言编写了SPI总线协议,完成了对射频前端芯片GPS/北斗两种工作模式的切换,使基带可以随时获得两种模式下的数据。通过验证,采集来的数据与期望的结果一致。同时为工程设计提供了一种原型,也为进一步的工程开发奠定了基础。
关键词:SPI总线协议;FPGA;射频前端;基带

??? 随着现代技术的发展,SPI接口总线已经成为了一种标准的接口,由于协议实现简单,并且I/O资源占用少,为此SPI总线的应用十分广泛。目前,SPI接口的软件扩展方法虽然简单方便,但若用来通信,则速度受到限制。因此,我们采用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所示。




??? 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。代码如下:
???


?????????


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


3.3 仿真结果
??? 在GPS模式下,实现了寄存器的读写时序,如图2所示。




??? 在GPS/Compass模式下,实现了5个地址的写操作和读操作。在基带处理中,将读出来的数据与设定好的配置的数据进行对比,当结果一致后,就完成了一次正确的配置操作。如图3所示。
3.4 RTL视图
??? RTL视图由两个模块组成,分别为ModeSet和newspi,其中ModeSet模块的功能是发送命令来配置射频前端的模式,newspi模块实现射频前端和基带之间具体的数据读写。如图4所示。





4 结语
??? 在现代SPI总线得到了广泛的应用,它能够有效地与FPGA编程结合在一起,利用FPGA的灵活性,将大大减少了电子设计的开发周期。本文通过FPGA实现了射频前端GPS/北斗模式的切换,为将来射频前端多模设计奠定了基础,并且可通过外部器件查看读写操作是否完成,从而实现了实时配置。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-22 11:53 , 耗时 0.106734 秒, 18 个查询请求 , Gzip 开启.

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

桂公网安备 45031202000115号

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

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

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

QQ:28000622;Email:libyoufer@sina.com

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

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