《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 藍牙HCI-UART主控制接口的FPGA設計與實現(xiàn)
藍牙HCI-UART主控制接口的FPGA設計與實現(xiàn)
摘要: 藍牙技術作為一種短距離的無線通信技術,具有巨大的發(fā)展?jié)摿?本文意從HCI層進行藍牙技術的應用開發(fā)。本文首先介紹了HCI和UART的結構與原理,在分析和比較HCI三種類型接口USB,、RS-232和UART優(yōu)缺點的基礎,提出了一種基于FPGA采用硬件設計HCI-UART的實現(xiàn)方式。本設計在Quartus II 9.0集成設計環(huán)境下,采用硬件描述語言Verilog分模塊設計完成,設計經(jīng)過Modelsim 6.4a仿真與驗證。
關鍵詞: FPGA 藍牙 測試
Abstract:
Key words :

摘要藍牙技術作為一種短距離的無線通信技術,具有巨大的發(fā)展?jié)摿?本文意從HCI層進行藍牙技術的應用開發(fā),。本文首先介紹了HCI和UART的結構與原理,在分析和比較HCI三種類型接口USB、RS-232和UART優(yōu)缺點的基礎,提出了一種基于FPGA采用硬件設計HCI-UART的實現(xiàn)方式,。本設計在Quartus II 9.0集成設計環(huán)境下,采用硬件描述語言Verilog分模塊設計完成,設計經(jīng)過Modelsim 6.4a仿真與驗證,。

1  引言

        藍牙(Bluetooth)是世界級著名的計算機和通信領域大公司(愛立信、IBM,、INTEL,、諾基亞和東芝等)倡導推出的一種無線通信技術的開放式工業(yè)標準,其取自10 世紀丹麥國王哈拉爾德(HaraldBluetooth)的別名,,意在形成一個全球統(tǒng)一的無線通信技術標準[1],。藍牙技術消除了設備之間的連線,用無線連接取代傳統(tǒng)的電線,。藍牙主要有藍牙硬件和藍牙協(xié)議組成,,藍牙硬件由模擬部分和數(shù)字部分組成。模擬部分指藍牙射頻發(fā)射臺,,數(shù)字部分指主控制器,。藍牙協(xié)議采用電路及信息包兩種交換方式,主要有射頻(RF),、基帶 (BB),、鏈路管理器(LM)、主接控制接口(HCI,,Host CONTROL Interface)底層嵌入式驅動程序,、HCI 高層軟件驅動程序、邏輯鏈路控制適配協(xié)議(L2CAP),、串口仿真協(xié)議(RFCOMM),、業(yè)務發(fā)現(xiàn)協(xié)議(SDP)、電話控制協(xié)議(TCS)構成[2],。

        目前,,藍牙技術應用開發(fā)有兩種方式:1)單微控制器方式,,所有的藍牙傳輸協(xié)議及用戶應用程序都集成到一個模塊中,由一個處理器完成,。它不一定需要HCI 層,,但其涉及到射頻、基帶等硬件協(xié)議層,,開發(fā)方式復雜,,開發(fā)周期加長,成本代價也高,;2)雙微控制器方式,,底層傳輸協(xié)議一般通過藍牙硬件模塊實現(xiàn),模塊內(nèi)部嵌入式的微處理器成為主機控制器,,高層傳輸協(xié)議和用戶應用程序分別由主機和主控制器來實現(xiàn),主機和主機控制器之間通過標準的物理總線接口來連接[3],。由于主機與主控制層在硬件上完全分 離,,需通過HCI 層把藍牙模塊和藍牙主機連接起來。在實際應用中,,由于高層協(xié)議的復雜性和多樣性,,采用這種方式,用戶不需要考慮底層就可以實現(xiàn)對通信流程的控制,,符合用戶實際需求,,且開發(fā)周期短,可 移植性好,,本文的設計也是采用這種方式,。

2  系統(tǒng)基本原理

2.1 UART 基本原理

         UART(Universal Asynchronous Receive Transmitter)又稱通用型異步接收及發(fā)送接口[4],是一種異步通信傳輸方式,。其通信協(xié)議幀格式包括五個部分:空閑狀態(tài)(idle,,高電平)、起始位(start,,低電平),、 5~8 位數(shù)據(jù)位、奇偶校驗位(parity,,可選)和停止位(Stop,,位數(shù)可為1,1.5 和2 位),。這種格式是由起始位和停止位來實現(xiàn)字符的同步,,其中奇偶校驗位的有無和數(shù)據(jù)位的長度由通信雙方約定。一幀數(shù)據(jù)傳輸完畢后可以繼續(xù)傳輸下一幀數(shù)據(jù),,也可以繼續(xù)保持為高電平,,兩幀之間保持高電平,,持續(xù)時間可以任意長。本設計規(guī)定的通信協(xié)議幀格式為:1 位起始位(start,,低電平),、8 位數(shù)據(jù)位(d0~d7)、1 位奇偶校驗位(parity) 和1 位停止位(stop,,高電平),,如圖1 所示。

圖1 UART 通信協(xié)議幀格式

2.2 HCI 基本原理

2.2.1 HCI 傳輸層的比較

        HCI 層位于藍牙高層協(xié)議和低層協(xié)議之間,,其目的是實現(xiàn)主機設備與藍牙模塊之間的互操作,,即HCI 是藍牙主機與主機控制器間軟硬件接口。HCI 為藍牙硬件中基帶控制器和鏈接管理器提供了命令接口,,從 而實現(xiàn)對硬件狀態(tài)注冊器和控制寄存器的訪問,,提供了對藍牙基帶的統(tǒng)一訪問模式。目前,,HCI 的傳輸層主要有三種:USB,,RS-232,UART,。此外,,還有一種PC 卡傳輸層,其沒有定義在藍牙標準中,,而是在藍牙SIG 于1999 年8 月發(fā)表的藍牙PC 卡傳輸層1.0 版白皮書中描述的,。藍牙沒有規(guī) 定PC 卡傳輸層實現(xiàn)的具體細節(jié),而是要求制造商提供傳輸驅動程序,,以配合主機上的HCI 驅動程序[5],。不 同傳輸層對HCI 事件處理沒有影響。

(1)USB 傳輸層在藍牙硬件上使用USB 硬件接口(該硬件接口有兩種嵌入方式:一種是作為USB 加/ 解密芯片,,另一種是集成到PC 機主板上)[6],。這一種類編碼要求不管使用哪一廠商生產(chǎn)的設備,都能加載 合適的驅動程序棧,;同時它還保證了通過控制終端的HCI 指令和USB 指令有所區(qū)別,。其缺點是軟件協(xié)議復 雜,軟件開銷巨大,。

(2)RS-232 傳輸層:通過位于主機和主控制器之間的物理RS-232 接口實現(xiàn),。事件包和數(shù)據(jù)包通過該層,但該層并不對它們進行解碼,。該傳輸層支持的是主機控制器和不同實體中的主機的通信情況,,通信距離較遠,傳輸層特別規(guī)定了電氣特性,,并采用了更為精細的鏈路協(xié)議以應對較高的線路誤碼率,,但在硬件 上需要增加電平轉換電路,。

(3)UART 傳輸層跟RS-232 傳輸層類似,也是采用一個UART 的串行通信方式在主控制器與主機之間進行數(shù)據(jù)傳輸,。應用環(huán)境主要是針對主控制器和主機位于同一個電路板上,,傳輸層假定UART 通信無線性 錯誤。與其它的相比,,UART 傳輸層方式比較靈活,,其應用環(huán)境決定其連接錯誤相對較少,可以采用簡單的復位恢復機制實現(xiàn)失步時的復步,。由于主機和主控制器都處于同一塊電路板上,,因而傳輸層不需要規(guī)定電氣信號,可以直接采用TTL,、LV-CMOS 等IC 端電壓,,應用較多。同時,,UART 傳輸層避開了RS-232 傳輸層所要求的較繁瑣的協(xié)商和同步機制,。UART 性能和數(shù)據(jù)吞吐率水平與USB 接口相當,而傳輸協(xié)議卻較為簡單,,減少了軟件開銷,是一種更為經(jīng)濟高效的全硬件解決方案,。

2.2.2 HCI 分組

        兩個藍牙設備間進行數(shù)據(jù)通信是通過HCI 分組實現(xiàn)的,,HCI 是通過分組的方式來進行信息交換的。HCI 分組有三種類型:指令分組(Command Packet),、事件分組(Event Packet)和數(shù)據(jù)分組(Data Packet)[7],。

(1)指令分組

        只從主機發(fā)向主機控制器,分為鏈路控制指令,、鏈路策略指令,、主機控制指令與基帶指令、信息參數(shù)指令,、狀態(tài)參數(shù)指令和測試指令,。HCI 指令分組由操作碼(OpCode)、參數(shù)總長(Parameter Total Length) 和參數(shù)列表(Parameters)三部分組成[8],。

(2)事件分組

         只從主機控制器發(fā)向主機,,用以說明指令分組的執(zhí)行情況,是主機控制器向主機報告各種事件的分組,。包括通用事件(包括指令完成事件和指令狀態(tài)事件),、測試事件、出錯事件三種,。

(3)數(shù)據(jù)分組

         它是在主機和主機控制器間雙向傳輸,,一般分為ACL(Asynchronization Connectionless)數(shù)據(jù)分組和 SCO (Synchronization Connection Oriented)數(shù)據(jù)分組兩種[9],。二者之間的區(qū)別在于:ACL 鏈路支持對稱和非對稱傳輸,分組交換和多點連接,,適用于傳送數(shù)據(jù),;SCO 鏈路支持對稱傳輸,電路交換和點到點連接, 適用于傳輸語音,。

3  HCI-UART 的FPGA 設計

        主機與藍牙模塊之間使用指令——應答的方式進行通信,,主機向主機控制器發(fā)送指令分組,主機控制器執(zhí)行某一指令后,,大多數(shù)情況下會返回給主機一個指令完成事件分組,,該分組攜帶有指令完成的信息。如果指令分組參數(shù)有誤,,返回的指令狀態(tài)事件分組就會給出相應的錯誤代碼,。主機與主機控制器間的數(shù)據(jù)交換則通過數(shù)據(jù)分組實現(xiàn)。主控制器系統(tǒng)原理框圖如圖2 所示,。

圖2

3.1 UART 的設計

        UART 的設計主要包括三個部分:發(fā)送器,、接收器和波特率發(fā)生器,設計采用分模塊完成[10],。

(1)波特率發(fā)生器:

        UART 的數(shù)據(jù)接收和發(fā)送是通過對波特率的設置進行實現(xiàn)的,。波特率發(fā)生器采 用分頻器實現(xiàn),分頻得到一個頻率為波特率16 倍的波特率時鐘clk_baud,,分頻數(shù)N 計算公式如(1)所示,, 其中clk_sys 表示系統(tǒng)時鐘,baudrate 為UART 的波特率,。

(2)發(fā)送器模塊:

        檢測到發(fā)送信號時,,裝載數(shù)據(jù),根據(jù)數(shù)據(jù)產(chǎn)生奇偶校驗位,,按通信協(xié)議幀的格式的要求依次發(fā)送起始位,、數(shù)據(jù)位、奇偶校驗位和停止位,,并產(chǎn)生各種控制信號,。整個發(fā)送過程采用有限狀態(tài)機實現(xiàn),分成五個狀態(tài)(空閑idle,,發(fā)送起始位send_start,,發(fā)送數(shù)據(jù)send_data,發(fā)送奇偶校驗位 send_parity,,發(fā)送停止位send_stop),,具體過程如圖3 所示。

圖3 發(fā)送器狀態(tài)圖

(3)接收器模塊:

        當檢測到接收信號線rxd 上有電平變化時[10],,即通過檢測協(xié)議幀的格式接收數(shù)據(jù),,如果格式正確則將數(shù)據(jù)存儲起來,,否則放棄本次數(shù)據(jù),同時產(chǎn)生錯誤標志信號,。設計實現(xiàn)采用有限狀態(tài)機,,為了保證數(shù)據(jù)接收的正確性,數(shù)據(jù)采集都在時鐘中間時刻完成,。接收過程分為五個狀態(tài)(空閑idle,,起始位檢測start_check,接收數(shù)據(jù)rec_data,,奇偶校驗位檢測parity_check,,停止位檢測stop_check),接收過程如圖4 所示,。

圖4 UART 接收器狀態(tài)圖

3.2 HCI 的設計

         藍牙HCI 分組在串行連接傳輸層的成幀是簡單地加一個標識頭(用16 進制表示):01H 表示指令分組,, 02H 表示ACL 數(shù)據(jù)分組,03H 表示SCO 數(shù)據(jù)分組,,04HH 表示事件分組,。根據(jù)HCI 的基本工作原理與HCI 分組的特點,HCI 的實現(xiàn)主要有四個功能模塊組成,,包括HCI 命令處理模塊(command_handle),,HCI 事 件處理模塊(event_handle),HCI 數(shù)據(jù)處理模塊(data_handle),,收發(fā)控制模塊(rec_tra_CONTROLler),。其組成框圖 如圖5 所示:

圖5 HCI 控制器的組成

HCI 接口通信過程包括如下幾個部分:

1)藍牙系統(tǒng)初始化(initial);

2)系統(tǒng)準備好后,,進入查詢狀況(inquiry);

3)建立數(shù)據(jù)連接(creat_connection),;

4)數(shù)據(jù)傳輸(transmit),;

5)斷開連接(disconnect);

         首先,,藍牙主從設備進行初始化,;接著藍牙的主設備在范圍內(nèi)用Inquiry 命令分組查找其他的藍牙設備。然后,,主設備會收到對應的藍牙從設備的應答信息,其包括有事件分組包和從機地址包,。之后,藍牙主設備向從設備發(fā)送Create_Connection 的命令分組,,然后,,主設備會收到一個連接完成的事件分組 Connection_Complete,表示兩機之間已經(jīng)建立了連接,。這樣,,兩個藍牙設備之間就可以進行數(shù)據(jù)的通信,,即建立連接。當數(shù)據(jù)傳輸完成后,,斷開主從設備之間的連接,,系統(tǒng)重新復位,一個數(shù)據(jù)傳輸過程就結束了,。

4  仿真與驗證

        本設計采用分模塊設計,,在 Quartus II 9.0 下完成設計和綜合,且經(jīng)過Modelsim*a 的仿真驗證,。 同時在搭建的硬件通信測試平臺下測試過,,證明該設計確實可行。 5 5 結束語

        HCI 是實現(xiàn)藍牙協(xié)議棧時必須實現(xiàn)的一個部分,。它是藍牙上層協(xié)議控制底層硬件的接口,,首先要根據(jù)具體應用的需要選擇合適的傳輸層,并盡可能的為上層協(xié)議提供友好的API,,在硬件實現(xiàn)中,,UART 傳輸層具有其他傳輸層無法比擬的優(yōu)點。

        本文創(chuàng)新在于從工程實際開發(fā)角度出發(fā),,提出了一種基于FPGA的藍牙HCI-UART 全硬件實現(xiàn)方式,,縮短了開發(fā)周期,降低開發(fā)成本,,具有一定的工程參考價值,。
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載,。