新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 基于FPGA的RFID无线通信系统的实现

基于FPGA的RFID无线通信系统的实现

作者: 时间:2010-10-29 来源:网络 收藏

SPI总线模式的数据是以字节为单位进行传输的(一次传输可以传多个字节),每字节为8位,每个命令或者数据块都是字节对齐的(8个时钟的整数倍)。数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到每秒几兆比特。SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件。在本文设计的无线通信系统中,由FPGA实现的SPI总线接口模块为主机,NRF905的SPI模块为从机。
SPI时序模式的选择:
SPI接口有4种不同的数据传输时序,取CPOL和CPHL这两位的组合。CPOL是用来决定SCK时钟信号空闲时的电平;CPOL=O,空闲电平为低电平,CPOL=1时,空闲电平为高电平。CPHA是用来决定采样时刻的,CPHA=0,在每个周期的第一个时钟沿采样;CPHA=1,在每个周期的第二个时钟沿采样。
图2为NRF905的SPI接口的时序图,由此本文设计的SPI工作模式是在CPOL=O,CPHA=O这种时序下。

本文引用地址:https://www.eepw.com.cn/article/156991.htm


1.3.2 SPI硬件设计
图3是本文无线通信系统中SPI模块的结构图,该系统中的SPI主要由时钟生成模块,SPI寄存器组,SPI功能配置的模块组成,并且通过Wishbone总线与控制器相连,具体设计如下:
时钟生成模块:由于SPI模块是基于FPGA来实现的,而FPGA外部提供的时钟较快(50 MHz或100 MHz),不适合与NRF905的SPI接口进行通信
(1 Hz~10 MHz),所以需要分频来使时钟慢下来。但是至于几分频是由SPI功能配置模块来完成的。其次由于SPI协议指出数据可在上升沿或下降沿触发,所以还需要对时钟的上升沿或下降沿进行鉴别(也称抓沿程序),这个功能也由这个模块完成。


SPI寄存器模块:这个模块实现的是一个由16个8位寄存器组成的128位的寄存器组,也就是说通过SPI接口一次性可收发8~128位的串行数据。具体操作由SPI功能配置模块来完成。
SPI功能配置模块:这个模块相当于一个SPI控制器,通过对其寄存器的配置来决定时钟的分频数,收发数据位数,时钟上升沿或下降沿传输数据等,而对这些寄存器的配置是由控制模块完成的。下面就配置寄存器做一些简要说明。
首先介绍控制寄存器:
控制寄存器第O位go:是否开始发送。
控制寄存器第1位rx_negedge:接收数据是下降沿还是上升沿。
控制寄存器第2位tx_negedge:发送数据是下降沿还是上升沿。
控制寄存器第3~9位char_len:发送数据的位数(因为SPI是全双工的,所以这实际上也是接收数据的位数)。
控制寄存器第10位lsb:是从高位发送还是地位发送。
控制寄存器第11位ie:读写完成之后是否发送中断信号。
控制寄存器第12位ass:是否自动产生片选信号。
分频寄存器:spi_divider_sel。
状态寄存器:spi_ctrl_sel。
数据寄存器O:spi_tx_sel[0]。
数据寄存器1:spi_tx_sel[1]。
数据寄存器2:spi_tx_sel[2]。
数据寄存器3:spi_tx_sel[3]。
片选信号寄存器:spi_ss_sel。
1.4 控制模块
对于控制模块来说,其实现方法是利用基于Verilog语言的有限状态机来实现,相当于一条一条的指令来控制SPI模块接收发送数据。控制模块分成三个独立的部分即接收控制模块、发送控制模块及NRF905配置模块。其中接收与发送控制模块分别包含对SPI进行配置的状态。下面对接收控制模块的设计进行说明。图4即为Debussy综合出的状态机转换图。

11z.jpg



关键词: 收发器

评论


相关推荐

技术专区

关闭