RF905无线通信IP软核的优化设计
扫描二维码
随时随地手机看文章
摘 要: 利用DMA数据传输方式的特点,设计了一种基于DMA方式的RF905无线通信IP软核。该IP软核基于AVALON总线,其控制和运算逻辑由一片FPGA芯片完成,适合应用于NIOSII嵌入式系统。测试与验证表明,该IP软核在传输数据时大大降低了CPU的占用时间,提高了嵌入式系统的性能并且占用较少资源,与一般的IP硬核相比,速度快,成本低,灵活性好,可移植性强,从而更能满足短距离无线通信的要求。该IP软核已应用于某无线电力参数监测系统中。
关键词: NIOSII;无线通信;知识产权;直接存储访问 ;AVALON总线
目前无线通信基本上都是利用单片机或者ARM片内的无线通信 IP硬核实现,如TI公司的片内集成2.4 GHz的ZigBee无线收发模块的CC2430单片机核、LINKUP System公司的带蓝牙无线收发器的L7205 ARM720T核。虽然这种无线通信 IP硬核的性能比较高,但是由于其参数往往都已经固化在片内,灵活性差,而且与其他片内外设不可分离地组合在一起,可移植性差,无线硬核的通信协议也比较复杂,使用不方便,致使整个系统的设计具有很大局限性。
RF905是一款独立于微控制器的无线收发器芯片,工作在433 MHz频段。它将频率调制解调器、功率放大器、晶体振荡器等集成在一块芯片内并且可以通过SPI接口进行编程,因此将其集成到各种嵌入式系统中非常方便。目前采用RF905芯片进行无线通信的系统都是采用查询方式和中断方式来实现[1-3]。由于这两种传输方式在数据的传输过程中会经常打断CPU的运行,尤其是当进行大块数据的传输时会占用CPU很多时间,从而大大降低了整个系统的性能。
直接存储访问(DMA)是一种不经过CPU而直接从内存存取数据的数据交换模式。由于整个数据的传输过程由DMA控制器控制,CPU可以不被打扰地处理其他的事情,提高了CPU的效率。因此本文设计的RF905无线通信IP软核采用DMA方式,它可以在传输数据时将NIOSII CPU从繁重的工作中解脱出来以处理其他事情,因而大大降低了CPU的占用时间,提高了NIOSII系统的性能。由于其具有高性能、参数可配置、可移植、可裁剪等特点,并且具有很高的灵活性、实用性,更能满足设计的要求。
1 无线通信 IP软核的整体构架
本文采用DMA传输方式设计的RF905无线通信 IP软核的整体构架如图1所示。
该软核主要由以下4个子模块组成:RF905无线发送接收控制器、带Avalon-MM Slave[4]接口的寄存器文件(简称寄存器文件)、带Avalon-MM Master[5]接口的Master Read 类型DMA控制器(简称DMA读控制器)和带Avalon-MM Master接口的Master Write 类型DMA控制器(简称DMA写控制器)。
当NIOSII处理器[6-9]需要进行无线数据发送时,首先需要通过带Avalon-MM Slave接口的寄存器文件对RF905无线发送接收控制器和Master Read 类型DMA控制器进行配置,以设定要发送到达的地址、将要发送的数据的字节数以及该数据存放在内存中的基地址;然后将要发送的数据写到指定位置内存中并启动Master Read 类型DMA控制器,从而将存储器中的数据通过RF905无线发送接收控制器逐一发送出去。当所有要发送的数据发送完毕时会向NIOSII处理器产生一个中断,告知处理器串口数据发送完毕,从而可以启动下一次数据发送。由于整个数据发送的过程是由Master Read 类型DMA控制器管理的, NIOSII处理器可以专心处理其他的事情而不被打扰,因而NIOSII CPU的利用率大大提高。
当NIOSII处理器需要进行无线数据接收时,首先需要通过带Avalon-MM Slave接口的寄存器文件对RF905无线发送接收控制器和Master Write 类型DMA控制器进行配置,以设定本机的接收地址、将要接收的数据的字节数以及该数据存放在内存中的基地址;然后启动Master Write 类型DMA控制器,从而将通过RF905无线发送接收控制器接收到的数据逐个地存储到存储器的指定位置。当所有要接收的数据接收完毕时会向NIOSII处理器产生一个中断,告知处理器串口数据接收完毕,此时NIOSII处理器可以从存储器中读取接收到的数据进行处理并启动下一次数据接收。由于整个数据接收的过程是由Master Write 类型DMA控制器管理的,NIOSII处理器可以专心处理其他的事情而不被打扰,因而NIOSII CPU的利用率大大提高。
2 模块的设计与实现
2.1 RF905无线发送接收控制器
2.1.1 RF905无线发送控制器
当有数据要发送时,首先通过SPI接口把接收机的地址和要发送的数据送传给RF905,而后置高TRX_CE和TX_EN,使RF905进入数据发送模式。在数据发送模式下,RF905首先开启射频寄存器,然后进行数据打包(加字头和CRC校验码)并将其发送出去。当数据发送完成,数据准备好引脚被置高,此时应将TRX_CE置低以进入空闲状态。至此一次完整的RF905数据发送过程完成。
本文利用有限状态机的方法采用Verilog硬件描述语言设计了一个RF905发送控制器,从而完成对RF905无线数据发送的时序控制。其状态转移图如图2所示。
从图2可以看出,状态机一开始处于idle状态。当启动Master Read 类型DMA控制器以进行一次数据发送时,状态机进入load_address状态。load_address、send_address这两个状态主要用于通过三线的SPI接口设置要发送到的4 B地址,而后进入load_data状态。Load_data状态主要用于获取由Master Read 类型DMA控制器从内存中读取的32 B数据,并将其送入发送移位寄存器,而后状态机进入send_data状态。send_data、finish这两个状态主要用于将发送移位寄存器中的数据通过三线SPI接口的控制下写入到RF905片内的FIFO缓存中,而后状态机将进入wait状态。在该状态首先置高TRX_CE和TX_EN以启动一次数据发送,然后通过DR引脚是否为高电平来判断数据发送是否完成,如果完成则将TRX_CE置低,并进入block_finish状态。在该状态状态机对已经发送的数据字节数进行判断,如果小于欲发送的字节数,则说明所有的数据还没有发送完毕,计数加1并进入load_address状态,以读取并发送下一个数据字节,直到所有的数据字节都发送完毕,状态机将进入master_done状态,在该状态状态机检测本次DMA传输是否完毕,如果完毕则产生中断信号并进入idle状态。至此一次完整的DMA传输方式的RF905无线数据发送完成。
2.1.2 RF905无线接收控制器
当有数据需要接收时,首先通过SPI接口把本机的地址传给RF905,而后置高TRX_CE并置低TX_EN,使RF905进入数据接收模式。在数据接收模式下,RF905会自动进行载波检测和地址匹配,当一个正确的数据包接收完毕,RF905自动移去字头、地址和CRC校验位,然后把DR引脚置高。此时应将TRX_CE置低以进入空闲状态并通过SPI接口读取接收到的数据。至此一次完整的RF905数据接收过程完成。
本文利用有限状态机设计了一个RF905接收控制器,从而完成了对RF905无线数据接收的时序控制。其状态转移图如图3所示。
从图3可以看出,状态机一开始处于idle状态。当启动Master Write 类型DMA控制器以进行一次数据接收时,状态机进入start状态。start状态主要用于将TRX_CE置为高电平并将TX_EN置为低电平以启动一次数据接收,而后进入ready状态。在该状态通过DR引脚是否为高电平来判断数据接收是否完成,如果完成则将TRX_CE置低,并进入recv(receive data)状态。recv与finish这两个状态主要用于从RF905片内的FIFO缓存中接收字节数据并存放到接收移位寄存器中。当32 B数据接收完毕时,将该字节数据交给Master Write 类型DMA控制器以完成字节数据到内存的写操作,而后状态机经过load和buffer_ready两个状态进入block_finish状态。在该状态,状态机对已经接收到的数据字节数进行判断,如果小于欲接收的字节数则说明所有的数据还没有接收完毕,状态机将返回ready状态,直到所有的数据字节都接收完毕,状态机将进入master_done状态。Master_done状态检测本次DMA传输是否完毕,如果完毕则产生中断信号并经过get_done状态进入idle状态。至此一次完整的DMA传输方式的RF905无线数据接收完成。
2.2 寄存器文件
本文设计的寄存器文件是具有Avalon-MM slave 接口的外设,它内部共有4个32 bit寄存器,具体结构和功能如表1所示。NIOSII处理器可以采用基地址+地址偏移量的方式来访问这4个寄存器,从而实现对DMA方式RF905无线通信 IP软核的配置以及对无线数据接收与发送的控制。
2.3 DMA读控制器
本文设计的DMA读控制器是具有Avalon-MM Master 主端口的外设。它通过Avalon-MM Master 主端口与AVALON交换结构进行基本的读传输,以完成从指定起始地址的存储器中读取指定长度的数据并传送给RF905无线发送控制器发送出去。其仿真波形图如图4所示。