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