藍(lán)牙HCI-UART主控制接口的FPGA設(shè)計與實現(xiàn)
主機與藍(lán)牙模塊之間使用指令——應(yīng)答的方式進行通信,主機向主機控制器發(fā)送指令分組,主機控制器執(zhí)行某一指令后,大多數(shù)情況下會返回給主機一個指令完成事件分組,該分組攜帶有指令完成的信息。如果指令分組參數(shù)有誤,返回的指令狀態(tài)事件分組就會給出相應(yīng)的錯誤代碼。主機與主機控制器間的數(shù)據(jù)交換則通過數(shù)據(jù)分組實現(xiàn)。主控制器系統(tǒng)原理框圖如圖2 所示。
圖2
3.1 UART 的設(shè)計
UART 的設(shè)計主要包括三個部分:發(fā)送器、接收器和波特率發(fā)生器,設(shè)計采用分模塊完成[10]。
?。?)波特率發(fā)生器:
UART 的數(shù)據(jù)接收和發(fā)送是通過對波特率的設(shè)置進行實現(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)圖
評論