基于NIOS II的BCMO4蓝牙通信模块的设计
扫描二维码
随时随地手机看文章
本设计采用了Altera公司开发的第二代低成本的FPGA芯片,在其之上开发了基于BCM04的NIOSⅡ蓝牙通信模块。该通信模块能够代替电缆,有效的应用于工作环境复杂多变的工业现场,可实现与现场设备、接入点、手操器等设备的无线通信
引言
在工业现场中,大多的通信设备是通过加装通信模块来实现的,而大多的通信模块的处理器采用ARM核。随着微电子学和计算机科学的迅速发展,电子系统已经从电路板级系统集成发展成为包括ASIC、FPGA和嵌入式系统的多种模式。SOPC由于集成了硬核或软核CPU、DSP、存储器、外围I/O及可编程逻辑模块,在设计和应有的灵活性及其成本方面有较大的优势。
NIOSⅡ系列处理器是Altera公司的第二代FPGA嵌入式处理器。同前一代软核的CPU相比,NIOSⅡ的性能得到很大提高,体积更小,其最大处理能力是第一代软核的三倍。逻辑功能方面具有32位的精简指令集CPU。实现方式是在FPGA上通过编程的方式实现,这是与传统的CPU的一个根本的差别。本文是在NIOSⅡ软核的基础上设计了蓝牙通信模块,并在工业以太网中,较好地实现了通信模块与工业现场设备的无线通信。
NIOSⅡ嵌入式处理器概述
NIOSⅡ处理器是Altera公司的第二代用户可配置的通用32位RSIC软核微处理器,是Altera公司特有的基于通用FPGA架构的软CPU内核。它可以提供:完全的32位指令集、数据总线和地址空间;32位通用的目的寄存器;32个外部中断源;计算64位和128位乘积专用指令;单指令桶形移位器;对多种片上外设进行访问,提供片外存储器和外设接口;在IDE控制下,硬件辅助调试模块可对处理器进行启动、停止、单步和追踪操作;基于CNU C/C++工具链和Eclipse IDE;所有的NIOSⅡ处理器系统的指令集兼容;具有超过150 DMIPS的性能。
它将设计输入、综合、布局、验证、编程与配置以及第三方EDA工具接口集成在一个无缝的综合性设计环境中。NIOSⅡ的硬件开发环境是在SOPC builder中进行的。SOPC builder是一个自动化的SOPC硬件系统的开发工具,集成在Quartus Ⅱ软件内,Quartus Ⅱ和SOPC builder一起为建立SOPC设计提供标准化的图形环境。Quartus Ⅱ和SOPC builder软件,可以在很短的时间内定义一个完整的硬件系统。SOPC builder 通过SOPC开发阶段的系统定义、集成和验证的自动化,缩短了产品的市场化时间。
NIOSⅡ软件开发环境被称为NIOSⅡ集成开发环境(Integrated Development Environment,IDE)。它内嵌在Quartus Ⅱ设计工具中,可通过JTAG将应用程序下载到SOPC硬件系统中进行调试,可在指令集仿真器中对应用程序进行仿真调试,也可在ModelSim软件中进行仿真调试。基于NIOSⅡ的SOPC的软硬开发环境及设计流程如图1所示。
图1 基于NIOSⅡ的SOPC软硬件开发环境及流程
首先利用SOPC Builder的界面定制系统,产生输出文件;然后进入传统的FPGA硬件开发流程;在Quartus Ⅱ中进行逻辑综合、布局布线。在软件流程中,用户利用NIOSⅡ IDE环境,建立工程、编译设计、调试等。
蓝牙通信模块的硬件设计
蓝牙技术是一个开放性的、短距离无线通信技术标准,工作在全球通用的2.4GHz ISM频段,采用跳频扩频技术,可以用于近距离通过无线连接的方式实现固定设备以及移动设备之间的网络互连,在各种数字设备之间实现灵活、安全、低成本、小功耗的数据和语音通信,实现全方位的数据传输。
工业现场中存在多种使用不同方法进行互连的设备。对有些环境比较恶劣,布线不方便等因素可以采用蓝牙无线通信技术来实现数据的通信。本设计中,采用了基于NIOSⅡ软核的FPGA芯片EP1C12Q240C8作为CPU处理器,并在处理器的外围拓展了64Mb的SDRAM和16Mb的Flash,配置了50MHz的时钟、复位电路、下载口,接入蓝牙模块,以便在蓝牙通信模块中实现通信协议并通过蓝牙模块发送测试数据或接收控制命令等。图2为基于NIOSⅡ软核的蓝牙通信模块的硬件设计框图。
图2 基于NIOSⅡ软核的蓝牙通信模块的硬件设计框图
[!--empirenews.page--]
在通信模块上使用了AM29LV160的Flash和HY57V461620的SDRAM。将CPU的存储容量进行了拓展,以便保证在EPA网络上的通信协议的移植和操作系统(Linux、Windows CE)的移植。复位电路是由10kΩ电阻、10μF电容和按键组成的,可实现按键低电平复位和上电低电平复位。
蓝牙模块的实现采用了CSR公司的单芯片BCM04。BCM04内嵌BlueCore04芯片,并提供SPI、UART/USB、PIO、PCM接口。BCM04中自带8Mb的闪存SST39VF800,工作电压为2.7~3.6V。在天线和发射机输出端之间接入平衡-不平衡转换器。带通滤波器一般是无源器件,它的作用是滤除接收机不需要的频带内的信号,为低噪声放大器(LNA)提供选择性信号起到减小干扰的作用。BCM04中采用了台湾ACX公司的集成带通滤波器+平衡不平衡转换器的器件FB2520,带通滤波器和平衡-不平衡转换器集成在一起集成度更高有效的减小了电路板的面积,该器件具有外型小巧,插入损耗低等优点,能够很好地完成平衡到不平衡端的转换和带通滤波的功能。BCM04中需要3.3V和 1.5V两种电压,其中1.5V是为蓝牙芯片和带通滤波器+平衡-不平衡转换器供电,3.3V为Flash芯片和蓝牙芯片的外围I/O脚提供电压。CPU与蓝牙模块接口电路图如图3所示。
图3 CPU与蓝牙接口的电路图
基于NIOSⅡ软核的FPGA芯片的SOPC设计
NIOSⅡ嵌入式处理器是FPGA生产厂商Altera公司推出的软核CPU,是一种面向用户的、可以灵活定制的通用RISC(精简指令集架构)嵌入式CPU。NIOSⅡ以软核方式提供给用户,并专为Altera的FPGA上实现做了优化,用于SOPC集成,最后在FPGA上实现。为完成设计要求,需要对处理器芯片进行配置。其SOPC Builder上的配置如图4所示。
图4 蓝牙通信模块的SOPC Builder上的配置图
SOPC设计包括以32位NIOS Ⅱ软核处理器为核心的嵌入式硬件配置、硬件设计、硬件仿真、软件设计和软件调试等。在SOPC Builder中定义了CPU、存储器接口(FLASH和SDRAM)、标准外围接口(蓝牙接口)、三态桥、硬软件程序下载口和定时器。
软件设计
蓝牙通信模块的软件设计主要集中在NIOS Ⅱ软核的驱动开发和蓝牙协议的转换上。Altera公司提供了包括硬件抽象层中字符模式器件、定时器件、文件子系统、以太网器件、DMA器件和Flash器件,并为每个器件提供一系列统一的初始化函数和访问函数接口。通过对这些接口的读写,可完成NIOS Ⅱ软核的驱动开发的开发。
首先初始化蓝牙模块。蓝牙模块加载了各种协议层后并不能工作,还需要根据不同的硬件设计对模块初始参数进行设置。初始参数设置又称为PSK设置,可以通过BlueLAB集成开发环境或者PS Key设置软件来实现,图5所示为PS Key设置界面。
图5 PS Key设置界面
蓝牙协议栈已固化在蓝牙芯片中,所以在初始化蓝牙模块后,就可通过蓝牙模块对工业现场的其他无线设备进行读写,更新蓝牙指令。以下程序是实现蓝牙串口驱动的所有函数指针。
typedef struct _HW_VTBL{
PVOID(*HWInit)(ULONG Identifier,PVOID pMDDCon-text,PHWOBJ pHWObj);
BOOL(*HWIoct1)(PVOID pHead,DWORD dwCode,
PBYTE pBufIn,DWORD dwLenIn,PBYTE pBufOut,DWORD
DwLenOut,PDWORDpdwActualOut);
} HW_VTBL,*PHW_VTBL;
//定义了蓝牙仿真串口DDSI函数的名称。
Const HW_VTBL BluetoothVTbl={
BluetoothInitSerial,
BluetoothIoctl
};
//用结构变量CTRLVTbl定义了控制端口的DDSI函数名列表
Const HW_VTBL CTRLVTbl={
CTRLInitSerial,
CTRLDeinit,
CTRLOpen,
CTRLClose,
CTRLIoctl
};
小结
蓝牙技术是一种无线数据与语音通信的开放性全球规范,它以低成本的近距离无线连接为基础,为固定与移动通信设备的通信环境建立了一个特别连接的短程无线技术。蓝牙技术具有低消费、低功耗、安全性高等特点。本设计在蓝牙技术的基础上,结合了嵌入NIOS Ⅱ软核的CPU,采用SOPC技术,可裁减、可扩充、可升级,并具备软硬件在系统中可编程的功能。FPGA芯片在蓝牙通信模块上的使用,使得通信模块在可根据工业现场实际需要更改CPU的配置成为可能,方便日后系统的软硬升级,延长了通信模块的使用寿命,为应付工业现场多变的环境提供了保证。