藍牙HCI-UART主控制接口的FPGA設計與實(shí)現
主機與藍牙模塊之間使用指令——應答的方式進(jìn)行通信,主機向主機控制器發(fā)送指令分組,主機控制器執行某一指令后,大多數情況下會(huì )返回給主機一個(gè)指令完成事件分組,該分組攜帶有指令完成的信息。如果指令分組參數有誤,返回的指令狀態(tài)事件分組就會(huì )給出相應的錯誤代碼。主機與主機控制器間的數據交換則通過(guò)數據分組實(shí)現。主控制器系統原理框圖如圖2 所示。
圖2
3.1 UART 的設計
UART 的設計主要包括三個(gè)部分:發(fā)送器、接收器和波特率發(fā)生器,設計采用分模塊完成[10]。
?。?)波特率發(fā)生器:
UART 的數據接收和發(fā)送是通過(guò)對波特率的設置進(jìn)行實(shí)現的。波特率發(fā)生器采 用分頻器實(shí)現,分頻得到一個(gè)頻率為波特率16 倍的波特率時(shí)鐘clk_baud,分頻數N 計算公式如(1)所示, 其中clk_sys 表示系統時(shí)鐘,baudrate 為UART 的波特率。
?。?)發(fā)送器模塊:
檢測到發(fā)送信號時(shí),裝載數據,根據數據產(chǎn)生奇偶校驗位,按通信協(xié)議幀的格式的要求依次發(fā)送起始位、數據位、奇偶校驗位和停止位,并產(chǎn)生各種控制信號。整個(gè)發(fā)送過(guò)程采用有限狀態(tài)機實(shí)現,分成五個(gè)狀態(tài)(空閑idle,發(fā)送起始位send_start,發(fā)送數據send_data,發(fā)送奇偶校驗位 send_parity,發(fā)送停止位send_stop),具體過(guò)程如圖3 所示。
圖3 發(fā)送器狀態(tài)圖
評論