微波EDA网,见证研发工程师的成长!
首页 > 微波射频 > 射频工程师文库 > 蓝牙HCI-UART主控制接口的FPGA设计与实现

蓝牙HCI-UART主控制接口的FPGA设计与实现

时间:05-25 来源:维库开发网 点击:

)UART 传输层跟RS-232 传输层类似,也是采用一个UART 的串行通信方式在主控制器与主机之间 进行数据传输。应用环境主要是针对主控制器和主机位于同一个电路板上,传输层假定UART 通信无线性 错误。与其它的相比,UART 传输层方式比较灵活,其应用环境决定其连接错误相对较少,可以采用简单的 复位恢复机制实现失步时的复步。由于主机和主控制器都处于同一块电路板上,因而传输层不需要规定电 气信号,可以直接采用TTL、LV-CMOS 等IC 端电压,应用较多。同时,UART 传输层避开了RS-232 传输层 所要求的较繁琐的协商和同步机制。UART 性能和数据吞吐率水平与USB 接口相当,而传输协议却较为简单, 减少了软件开销,是一种更为经济高效的全硬件解决方案。

2.2.2 HCI 分组

两个蓝牙设备间进行数据通信是通过HCI 分组实现的,HCI 是通过分组的方式来进行信息交换的。HCI 分组有三种类型:指令分组(Command Packet)、事件分组(Event Packet)和数据分组(Data Packet)[7]。

(1)指令分组

只从主机发向主机控制器,分为链路控制指令、链路策略指令、主机控制指令与基带指令、信息参数 指令、状态参数指令和测试指令。HCI 指令分组由操作码(OpCode)、参数总长(Parameter Total Length) 和参数列表(Parameters)三部分组成[8]。

(2)事件分组

只从主机控制器发向主机,用以说明指令分组的执行情况,是主机控制器向主机报告各种事件的分组。 包括通用事件(包括指令完成事件和指令状态事件)、测试事件、出错事件三种。

(3)数据分组

它是在主机和主机控制器间双向传输,一般分为ACL(Asynchronization Connectionless)数据分组和 SCO (Synchronization Connection Oriented)数据分组两种[9]。二者之间的区别在于:ACL 链路支持对称和非对称传输,分组交换和多点连接,适用于传送数据;SCO 链路支持对称传输,电路交换和点到点连接, 适用于传输语音。

3 HCI-UART 的FPGA 设计

主机与蓝牙模块之间使用指令--应答的方式进行通信,主机向主机控制器发送指令分组,主机控制 器执行某一指令后,大多数情况下会返回给主机一个指令完成事件分组,该分组携带有指令完成的信息。 如果指令分组参数有误,返回的指令状态事件分组就会给出相应的错误代码。主机与主机控制器间的数据 交换则通过数据分组实现。主控制器系统原理框图如图2 所示。

\

图2

3.1 UART 的设计

UART 的设计主要包括三个部分:发送器、接收器和波特率发生器,设计采用分模块完成[10]。

(1)波特率发生器:

UART 的数据接收和发送是通过对波特率的设置进行实现的。波特率发生器采 用分频器实现,分频得到一个频率为波特率16 倍的波特率时钟clk_baud,分频数N 计算公式如(1)所示, 其中clk_sys 表示系统时钟,baudrate 为UART 的波特率。

\

(2)发送器模块:

检测到发送信号时,装载数据,根据数据产生奇偶校验位,按通信协议帧的格式 的要求依次发送起始位、数据位、奇偶校验位和停止位,并产生各种控制信号。整个发送过程采用有限状 态机实现,分成五个状态(空闲idle,发送起始位send_start,发送数据send_data,发送奇偶校验位 send_parity,发送停止位send_stop),具体过程如图3 所示。
\

图3 发送器状态图

(3)接收器模块:

当检测到接收信号线rxd 上有电平变化时[10],即通过检测协议帧的格式接收数据, 如果格式正确则将数据存储起来,否则放弃本次数据,同时产生错误标志信号。设计实现采用有限状态机, 为了保证数据接收的正确性,数据采集都在时钟中间时刻完成。接收过程分为五个状态(空闲idle,起始 位检测start_check,接收数据rec_data,奇偶校验位检测parity_check,停止位检测stop_check),接 收过程如图4 所示。

\

图4 UART 接收器状态图

3.2 HCI 的设计

蓝牙HCI 分组在串行连接传输层的成帧是简单地加一个标识头(用16 进制表示):01H 表示指令分组, 02H 表示ACL 数据分组,03H 表示SCO 数据分组,04HH 表示事件分组。根据HCI 的基本工作原理与HCI 分组的特点,HCI 的实现主要有四个功能模块组成,包括HCI 命令处理模块(command_handle),HCI 事 件处理模块(event_handle),HCI 数据处理模块(data_handle),收发控制模块(rec_tra_CONTROLler)。其组成框图 如图5 所示:

\

图5 HCI 控制器的组成

HCI 接口通信过程包括如下几个部分:

1)蓝牙系统初始化(initial);

2)系统准备好后,进入查询状况(inquiry);

3)建立数据连接(creat_connection);

4)数据传输(transmit)

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top