logo资料库

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

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
蓝牙 HCI-UART 主控制接口的 FPGA 设计与实现 摘要:蓝牙技术作为一种短间隔的无线通讯技术,具有巨大的发展潜力,本文意从 HCI 层进行蓝牙技术的应用开发。本文首先容了 HCI 和 UART 的结构与原理,在分析 和比较 HCI 三种类型接口 USB、RS-232 和 UART 优缺点的基础,提出了一种基于 FPGA 采用硬件设计 HCI-UART 的实现方式。本设计在 Quartus II 9.0 集成设计环境下, 采用硬件描述语言 Verilog 分模块设计完成,设计经过 Modelsim 6.4a 仿真与验证。 1 引言 蓝牙(Bluetooth)是世界级著名的计算机和通讯领域至公司(爱立信、IBM、 INTEL、诺基亚和东芝等) 倡导推出的一种无线通讯技术的开放式产业标准,其取 自 10 世纪丹麦国王哈拉尔德(HaraldBluetooth)的 别名,意在形成一个全球同一 的无线通讯技术标准[1]。蓝牙技术消除了设备之间的连线,用无线连接取代 传统 的电线。蓝牙主要有蓝牙硬件和蓝牙协议组成,蓝牙硬件由模拟部分和数字部分组 成。模拟部分指蓝 牙射频发射台,数字部分指主控制器。蓝牙协议采用电路及信息 包两种交换方式,主要有射频(RF)、基带 (BB)、链路治理器(LM)、主接控制接口(HCI, Host CONTROL Interface)底层嵌进式驱动程序、HCI 高层软 件驱动程序、逻辑链 路控制适配协议(L2CAP)、串口仿真协议(RFCOMM)、业务发现协议(SDP)、电话控制 协 议(TCS)构成[2]。 目前,蓝牙技术应用开发有两种方式:1)单微控制器方式,所有的蓝牙传输协 议及用户应用程序都 集成到一个模块中,由一个处理器完成。它不一定需要 HCI 层,但其涉及到射频、基带等硬件协议层,开 发方式复杂,开发周期加长,本钱代 价也高;2)双微控制器方式,底层传输协议一般通过蓝牙硬件模块 实现,模块内 部嵌进式的微处理器成为主机控制器,高层传输协议和用户应用程序分别由主机和 主控制器 来实现,主机和主机控制器之间通过标准的物理总线接口来连接[3]。由
于主机与主控制层在硬件上完全分 离,需通过 HCI 层把蓝牙模块和蓝牙主机连接 起来。在实际应用中,由于高层协议的复杂性和多样性,采 用这种方式,用户不需 要考虑底层就可以实现对通讯流程的控制,符适用户实际需求,且开发周期短,可 移 植性好,本文的设计也是采用这种方式。 2 系统基本原理 2.1 UART 基本原理 UART(Universal Asynchronous Receive Transmitter)又称通用型异步接收及 发送接口[4],是一种异 步通讯传输方式。其通讯协议帧格式包括五个部分:空闲 状态(idle,高电平)、起始位(start,低电平)、5~8 位数据位、奇偶校验位(parity, 可选)和停止位(Stop,位数可为 1,1.5 和 2 位)。这种格式是由起 始位和停止位 来实现字符的同步,其中奇偶校验位的有无和数据位的长度由通讯双方约定。一帧 数据传输完毕后可以继续传输下一帧数据,也可以继续保持为高电平,两帧之间保 持高电平,持续时间可以任意长。 本设计规定的通讯协议帧格式为:1 位起始位 (start,低电平)、8 位数据位(d0~d7)、1 位奇偶校验位(parity) 和 1 位停止 位(stop,高电平),如图 1 所示。 图 1 UART 通讯协议帧格式 2.2 HCI 基本原理
2.2.1 HCI 传输层的比较 HCI 层位于蓝牙高层协议和低层协议之间,其目的是实现主机设备与蓝牙模块 之间的互操纵,即 HCI 是蓝牙主机与主机控制器间软硬件接口。HCI 为蓝牙硬件中 基带控制器和链接治理器提供了命令接口,从 而实现对硬件状态注册器和控制寄存 器的访问,提供了对蓝牙基带的同一访问模式。 目前,HCI 的传输层主要有三种: USB,RS-232,UART。此外,还有一种 PC 卡传输层,其没有定义在 蓝牙标准中, 而是在蓝牙 SIG 于 1999 年 8 月发表的蓝牙 PC 卡传输层 1.0 版白皮书中描述的。 蓝牙没有规 定 PC 卡传输层实现的具体细节,而是要求制造商提供传输驱动程序, 以配合主机上的 HCI 驱动程序[5]。不 同传输层对 HCI 事件处理没有影响。 (1)USB 传输层在蓝牙硬件上使用 USB 硬件接口(该硬件接口有两种嵌进方 式:一种是作为 USB 加/ 解密芯片,另一种是集成到 PC 机主板上)[6]。这一种类 编码要求不管使用哪一厂商生产的设备,都能加载 合适的驱动程序栈;同时它还保 证了通过控制终真个 HCI 指令和 USB 指令有所区别。其缺点是软件协议复 杂,软 件开销巨大。 (2)RS-232 传输层:通过位于主机和主控制器之间的物理 RS-232 接口实现。 事件包和数据包通过该 层,但该层并不对它们进行解码。该传输层支持的是主机控 制器和不同实体中的主机的通讯情况,通讯距 离较远,传输层特别规定了电气特性, 并采用了更为精细的链路协议以应对较高的线路误码率,但在硬件 上需要增加电平 转换电路。 (3)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 所示。 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 所示:
分享到:
收藏