基于NIOS II的BCMO4藍(lán)牙通信模塊的設(shè)計(jì)
本設(shè)計(jì)采用了Altera公司開(kāi)發(fā)的第二代低成本的FPGA芯片,在其之上開(kāi)發(fā)了基于BCM04的NIOSⅡ藍(lán)牙通信模塊。該通信模塊能夠代替電纜,有效的應(yīng)用于工作環(huán)境復(fù)雜多變的工業(yè)現(xiàn)場(chǎng),可實(shí)現(xiàn)與現(xiàn)場(chǎng)設(shè)備、接入點(diǎn)、手操器等設(shè)備的無(wú)線通信
引言
在工業(yè)現(xiàn)場(chǎng)中,大多的通信設(shè)備是通過(guò)加裝通信模塊來(lái)實(shí)現(xiàn)的,而大多的通信模塊的處理器采用ARM核。隨著微電子學(xué)和計(jì)算機(jī)科學(xué)的迅速發(fā)展,電子系統(tǒng)已經(jīng)從電路板級(jí)系統(tǒng)集成發(fā)展成為包括ASIC、FPGA和嵌入式系統(tǒng)的多種模式。SOPC由于集成了硬核或軟核CPU、DSP、存儲(chǔ)器、外圍I/O及可編程邏輯模塊,在設(shè)計(jì)和應(yīng)有的靈活性及其成本方面有較大的優(yōu)勢(shì)。
NIOSⅡ系列處理器是Altera公司的第二代FPGA嵌入式處理器。同前一代軟核的CPU相比,NIOSⅡ的性能得到很大提高,體積更小,其最大處理能力是第一代軟核的三倍。邏輯功能方面具有32位的精簡(jiǎn)指令集CPU。實(shí)現(xiàn)方式是在FPGA上通過(guò)編程的方式實(shí)現(xiàn),這是與傳統(tǒng)的CPU的一個(gè)根本的差別。本文是在NIOSⅡ軟核的基礎(chǔ)上設(shè)計(jì)了藍(lán)牙通信模塊,并在工業(yè)以太網(wǎng)中,較好地實(shí)現(xiàn)了通信模塊與工業(yè)現(xiàn)場(chǎng)設(shè)備的無(wú)線通信。
NIOSⅡ嵌入式處理器概述
NIOSⅡ處理器是Altera公司的第二代用戶可配置的通用32位RSIC軟核微處理器,是Altera公司特有的基于通用FPGA架構(gòu)的軟CPU內(nèi)核。它可以提供:完全的32位指令集、數(shù)據(jù)總線和地址空間;32位通用的目的寄存器;32個(gè)外部中斷源;計(jì)算64位和128位乘積專(zhuān)用指令;單指令桶形移位器;對(duì)多種片上外設(shè)進(jìn)行訪問(wèn),提供片外存儲(chǔ)器和外設(shè)接口;在IDE控制下,硬件輔助調(diào)試模塊可對(duì)處理器進(jìn)行啟動(dòng)、停止、單步和追蹤操作;基于CNU C/C++工具鏈和Eclipse IDE;所有的NIOSⅡ處理器系統(tǒng)的指令集兼容;具有超過(guò)150 DMIPS的性能。
它將設(shè)計(jì)輸入、綜合、布局、驗(yàn)證、編程與配置以及第三方EDA工具接口集成在一個(gè)無(wú)縫的綜合性設(shè)計(jì)環(huán)境中。NIOSⅡ的硬件開(kāi)發(fā)環(huán)境是在SOPC builder中進(jìn)行的。SOPC builder是一個(gè)自動(dòng)化的SOPC硬件系統(tǒng)的開(kāi)發(fā)工具,集成在Quartus Ⅱ軟件內(nèi),Quartus Ⅱ和SOPC builder一起為建立SOPC設(shè)計(jì)提供標(biāo)準(zhǔn)化的圖形環(huán)境。Quartus Ⅱ和SOPC builder軟件,可以在很短的時(shí)間內(nèi)定義一個(gè)完整的硬件系統(tǒng)。SOPC builder 通過(guò)SOPC開(kāi)發(fā)階段的系統(tǒng)定義、集成和驗(yàn)證的自動(dòng)化,縮短了產(chǎn)品的市場(chǎng)化時(shí)間。
NIOSⅡ軟件開(kāi)發(fā)環(huán)境被稱(chēng)為NIOSⅡ集成開(kāi)發(fā)環(huán)境(Integrated Development Environment,IDE)。它內(nèi)嵌在Quartus Ⅱ設(shè)計(jì)工具中,可通過(guò)JTAG將應(yīng)用程序下載到SOPC硬件系統(tǒng)中進(jìn)行調(diào)試,可在指令集仿真器中對(duì)應(yīng)用程序進(jìn)行仿真調(diào)試,也可在ModelSim軟件中進(jìn)行仿真調(diào)試。基于NIOSⅡ的SOPC的軟硬開(kāi)發(fā)環(huán)境及設(shè)計(jì)流程如圖1所示。
圖1 基于NIOSⅡ的SOPC軟硬件開(kāi)發(fā)環(huán)境及流程
首先利用SOPC Builder的界面定制系統(tǒng),產(chǎn)生輸出文件;然后進(jìn)入傳統(tǒng)的FPGA硬件開(kāi)發(fā)流程;在Quartus Ⅱ中進(jìn)行邏輯綜合、布局布線。在軟件流程中,用戶利用NIOSⅡ IDE環(huán)境,建立工程、編譯設(shè)計(jì)、調(diào)試等。
藍(lán)牙通信模塊的硬件設(shè)計(jì)
藍(lán)牙技術(shù)是一個(gè)開(kāi)放性的、短距離無(wú)線通信技術(shù)標(biāo)準(zhǔn),工作在全球通用的2.4GHz ISM頻段,采用跳頻擴(kuò)頻技術(shù),可以用于近距離通過(guò)無(wú)線連接的方式實(shí)現(xiàn)固定設(shè)備以及移動(dòng)設(shè)備之間的網(wǎng)絡(luò)互連,在各種數(shù)字設(shè)備之間實(shí)現(xiàn)靈活、安全、低成本、小功耗的數(shù)據(jù)和語(yǔ)音通信,實(shí)現(xiàn)全方位的數(shù)據(jù)傳輸。
工業(yè)現(xiàn)場(chǎng)中存在多種使用不同方法進(jìn)行互連的設(shè)備。對(duì)有些環(huán)境比較惡劣,布線不方便等因素可以采用藍(lán)牙無(wú)線通信技術(shù)來(lái)實(shí)現(xiàn)數(shù)據(jù)的通信。本設(shè)計(jì)中,采用了基于NIOSⅡ軟核的FPGA芯片EP1C12Q240C8作為CPU處理器,并在處理器的外圍拓展了64Mb的SDRAM和16Mb的Flash,配置了50MHz的時(shí)鐘、復(fù)位電路、下載口,接入藍(lán)牙模塊,以便在藍(lán)牙通信模塊中實(shí)現(xiàn)通信協(xié)議并通過(guò)藍(lán)牙模塊發(fā)送測(cè)試數(shù)據(jù)或接收控制命令等。圖2為基于NIOSⅡ軟核的藍(lán)牙通信模塊的硬件設(shè)計(jì)框圖。
圖2 基于NIOSⅡ軟核的藍(lán)牙通信模塊的硬件設(shè)計(jì)框圖
在通信模塊上使用了AM29LV160的Flash和HY57V461620的SDRAM。將CPU的存儲(chǔ)容量進(jìn)行了拓展,以便保證在EPA網(wǎng)絡(luò)上的通信協(xié)議的移植和操作系統(tǒng)(Linux、Windows CE)的移植。復(fù)位電路是由10kΩ電阻、10μF電容和按鍵組成的,可實(shí)現(xiàn)按鍵低電平復(fù)位和上電低電平復(fù)位。
藍(lán)牙模塊的實(shí)現(xiàn)采用了CSR公司的單芯片BCM04。BCM04內(nèi)嵌BlueCore04芯片,并提供SPI、UART/USB、PIO、PCM接口。BCM04中自帶8Mb的閃存SST39VF800,工作電壓為2.7~3.6V。在天線和發(fā)射機(jī)輸出端之間接入平衡-不平衡轉(zhuǎn)換器。帶通濾波器一般是無(wú)源器件,它的作用是濾除接收機(jī)不需要的頻帶內(nèi)的信號(hào),為低噪聲放大器(LNA)提供選擇性信號(hào)起到減小干擾的作用。BCM04中采用了臺(tái)灣ACX公司的集成帶通濾波器+平衡不平衡轉(zhuǎn)換器的器件FB2520,帶通濾波器和平衡-不平衡轉(zhuǎn)換器集成在一起集成度更高有效的減小了電路板的面積,該器件具有外型小巧,插入損耗低等優(yōu)點(diǎn),能夠很好地完成平衡到不平衡端的轉(zhuǎn)換和帶通濾波的功能。BCM04中需要3.3V和 1.5V兩種電壓,其中1.5V是為藍(lán)牙芯片和帶通濾波器+平衡-不平衡轉(zhuǎn)換器供電,3.3V為Flash芯片和藍(lán)牙芯片的外圍I/O腳提供電壓。CPU與藍(lán)牙模塊接口電路圖如圖3所示。
圖3 CPU與藍(lán)牙接口的電路圖
基于NIOSⅡ軟核的FPGA芯片的SOPC設(shè)計(jì)
NIOSⅡ嵌入式處理器是FPGA生產(chǎn)廠商Altera公司推出的軟核CPU,是一種面向用戶的、可以靈活定制的通用RISC(精簡(jiǎn)指令集架構(gòu))嵌入式CPU。NIOSⅡ以軟核方式提供給用戶,并專(zhuān)為Altera的FPGA上實(shí)現(xiàn)做了優(yōu)化,用于SOPC集成,最后在FPGA上實(shí)現(xiàn)。為完成設(shè)計(jì)要求,需要對(duì)處理器芯片進(jìn)行配置。其SOPC Builder上的配置如圖4所示。
圖4 藍(lán)牙通信模塊的SOPC Builder上的配置圖
SOPC設(shè)計(jì)包括以32位NIOS Ⅱ軟核處理器為核心的嵌入式硬件配置、硬件設(shè)計(jì)、硬件仿真、軟件設(shè)計(jì)和軟件調(diào)試等。在SOPC Builder中定義了CPU、存儲(chǔ)器接口(FLASH和SDRAM)、標(biāo)準(zhǔn)外圍接口(藍(lán)牙接口)、三態(tài)橋、硬軟件程序下載口和定時(shí)器。
軟件設(shè)計(jì)
藍(lán)牙通信模塊的軟件設(shè)計(jì)主要集中在NIOS Ⅱ軟核的驅(qū)動(dòng)開(kāi)發(fā)和藍(lán)牙協(xié)議的轉(zhuǎn)換上。Altera公司提供了包括硬件抽象層中字符模式器件、定時(shí)器件、文件子系統(tǒng)、以太網(wǎng)器件、DMA器件和Flash器件,并為每個(gè)器件提供一系列統(tǒng)一的初始化函數(shù)和訪問(wèn)函數(shù)接口。通過(guò)對(duì)這些接口的讀寫(xiě),可完成NIOS Ⅱ軟核的驅(qū)動(dòng)開(kāi)發(fā)的開(kāi)發(fā)。
首先初始化藍(lán)牙模塊。藍(lán)牙模塊加載了各種協(xié)議層后并不能工作,還需要根據(jù)不同的硬件設(shè)計(jì)對(duì)模塊初始參數(shù)進(jìn)行設(shè)置。初始參數(shù)設(shè)置又稱(chēng)為PSK設(shè)置,可以通過(guò)BlueLAB集成開(kāi)發(fā)環(huán)境或者PS Key設(shè)置軟件來(lái)實(shí)現(xiàn),圖5所示為PS Key設(shè)置界面。
圖5 PS Key設(shè)置界面
藍(lán)牙協(xié)議棧已固化在藍(lán)牙芯片中,所以在初始化藍(lán)牙模塊后,就可通過(guò)藍(lán)牙模塊對(duì)工業(yè)現(xiàn)場(chǎng)的其他無(wú)線設(shè)備進(jìn)行讀寫(xiě),更新藍(lán)牙指令。以下程序是實(shí)現(xiàn)藍(lán)牙串口驅(qū)動(dòng)的所有函數(shù)指針。
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;
//定義了藍(lán)牙仿真串口DDSI函數(shù)的名稱(chēng)。
Const HW_VTBL BluetoothVTbl={
BluetoothInitSerial,
BluetoothIoctl
};
//用結(jié)構(gòu)變量CTRLVTbl定義了控制端口的DDSI函數(shù)名列表
Const HW_VTBL CTRLVTbl={
CTRLInitSerial,
CTRLDeinit,
CTRLOpen,
CTRLClose,
CTRLIoctl
};
小結(jié)
藍(lán)牙技術(shù)是一種無(wú)線數(shù)據(jù)與語(yǔ)音通信的開(kāi)放性全球規(guī)范,它以低成本的近距離無(wú)線連接為基礎(chǔ),為固定與移動(dòng)通信設(shè)備的通信環(huán)境建立了一個(gè)特別連接的短程無(wú)線技術(shù)。藍(lán)牙技術(shù)具有低消費(fèi)、低功耗、安全性高等特點(diǎn)。本設(shè)計(jì)在藍(lán)牙技術(shù)的基礎(chǔ)上,結(jié)合了嵌入NIOS Ⅱ軟核的CPU,采用SOPC技術(shù),可裁減、可擴(kuò)充、可升級(jí),并具備軟硬件在系統(tǒng)中可編程的功能。FPGA芯片在藍(lán)牙通信模塊上的使用,使得通信模塊在可根據(jù)工業(yè)現(xiàn)場(chǎng)實(shí)際需要更改CPU的配置成為可能,方便日后系統(tǒng)的軟硬升級(jí),延長(zhǎng)了通信模塊的使用壽命,為應(yīng)付工業(yè)現(xiàn)場(chǎng)多變的環(huán)境提供了保證。