基于SOPC的蓝牙以太网语音网关的设计
时间:08-07
来源:互联网
点击:
1. 引言
近年来,随着蓝牙芯片成本的不断降低,应用进一步扩大,所有蓝牙终端设备接入并享受网络服务的可能性变得越来越大。另一方面,网络应用越来越广泛,其中热点之一即是分组语音技术。分组语音技术将语音信号转化为一定长度和速率的数字化语音包,以存储转发的方式进行交换和传输。蓝牙技术作为解决“最后10米”的无线传输技术,必将是无线个域网(Wireless Personal Network,WPAN)的首选技术。结合蓝牙技术和分组语音技术,可以使支持蓝牙的终端设备通过安全的无线链路,与蓝牙语音网关建立连接,通过以太网交换到目的蓝牙语音网关,然后与对方终端建立无线链路,完成语音的远距离传输。
传统的蓝牙—以太网适配器通常使用ACL链路与蓝牙器件建立连接,将串行接口UART输出的数据转换成以太网帧,以实现以太网适配,这样仅能传输普通数据,无法传输语音。本文从另一方面入手,研究如何实现语音数据到以太网的协议转换,并利用网络交换语音。设计了IIS(Inter-IC Sound Bus)控制器IP核,根据需要接入的蓝牙终端多少,灵活配置IIS控制器个数,从而实现多个蓝牙终端经以太网双向语音通信。
SOPC(System on Programmable Chip)是Altera最先提出的概念,其实质是SOC技术,与其它的SOC技术相比,特点在于可编程性,即利用FPGA的可编程性进行SOC设计。通过将验证好的IP核即知识产权核嵌入FPGA中,可以大大缩短开发周期,同时提高开发成功率。在本设计中,使用SOPC的优势在于配置灵活,满足不同接入容量的需求。
2. 总体方案
语音网关由二部分组成:蓝牙模块和SOPC系统,如图1所示。
众所周知,1个蓝牙终端可以与其它蓝牙终端建立7个ACL链路和1个SCO链路,只有后者能用于传输实时语音,所以蓝牙网关的容量取决于内部蓝牙模块的数目。蓝牙模块采用CSR公司提供的集成蓝牙基带和射频部分的单芯片模块BluetoothCore3-Multimedia External(以下简称BC03)。BC03基于Bluecore03芯片,并提供IIS/PCM、SPI、UART/USB、PIO接口。Bluecore03内嵌16位RISC微处理器,可作为简单的嵌入式控制器及蓝牙链路控制器,运行蓝牙软件协议及高层应用程序。
SOPC系统主要包括1片FPGA、2片8Mb SRAM、1片128Mb SDRAM、1片64Mb Flash、1片EPCS4串行配置器件(4Mb)和1片以太网控制器LAN91C111。
3. 硬件方案
本节由二部分组成,首先介绍Nios II系统开发流程,然后是IIS的IP核设计。
3.1 构建NIOS II SOPC系统
Nios II系列嵌入式处理器使用32位的指令集结构(ISA),是建立在第一代16位Nios处理器基础上的,最高可支持64位数据操作,定位于广泛的嵌入式应用。Nios II处理器包括三种内核:快速的(Nios II/f)、经济的(Nios II/e)和标准的(Nios II/s)内核。快速型(Nios II/f)处理器性能最高,但比经济型(Nios II/e)处理器多消耗25%资源。使用Altera的Quartus II 软件、SOPC Builder 工具以及Nios II 集成开发环境(IDE),可以轻松的完成基于Nios II 处理器的嵌入式系统开发。
其中,SOPC builder内嵌在Quartus II集成环境中,允许用户以图形化方式选择CPU、存储器、标准外设和用户定义外设。本设计中,标准外设中没有IIS控制器,所以要单独设计用户外设。SOPC Builder主要生成两种文件:一种是.ptf文件,NIos II IDE根据它编译C/C++等软件;另一种是HDL文件,可以是VHDL语言,也可以是Verilog语言,提供给Quartus II,作为整个SOPC项目的一部分。Quartus II软件对HDL文件进行编译、综合、布局布线,生成硬件映像文件,然后使用ByteBlaster线缆通过JTAG下载到开发板中的Cyclone芯片中,完成硬件平台。再利用Nios II IDE编写应用程序,下载到Flash中运行、调试。
3.1 IIS控制器IP核设计
IIS是串行数字音频总线,目前很多音频芯片都提供对IIS的支持。BC03模块为了支持双工通信,设置了帧同步(WS)、时钟(CLK)、和输入/输出数据线,可以作为master提供帧同步和时钟,也可以作为slave接收外部提供的帧同步和时钟。
这里使用Verilog硬件描述语言设计IIS控制器。为了实现双工通信就要分别设计接收器和发送器,它们拥有各自独立的缓冲区,共享Avalon接口,如图2所示。
显然,要设计IIS控制器,首先得解决采样、存储问题。因此,按照IIS时序标准,设计前端的接收器,从串行比特流中提取有效语音数据组成32 bit的并行数据,然后,存储在异步FIFO中,这里设置FIFO深度为1024,宽度为32 bit。然后经过Avalon总线加入SOPC系统。
Avalon是Altera公司专门为解决SOPC系统中各外设互联而设计的总线接口标准,其与一般总线的不同之处在于可裁剪,指外设可以选择Avalon总线标准信号的子集作为自己的接口信号,比如时钟、地址、数据、片选和读/写信号,就可以构成一个基本接口。而本设计中,如果采用基本接口,由于语音数据的传输速率远远低于CPU的工作速度,造成CPU的长时间等待,浪费资源,所以必须采用流量控制。
Avalon总线中支持流量控制的信号允许slave对master发起的传输进行约束,即只有当slave准备好接收数据或者有数据要发送时,传输才开始。为了实现流量控制,slave可以使用以下信号中的一个或多个:readyfordata、dataavailable和endofpacket。当slave没有准备好接收数据时,声明readyfordata无效;反之,声明readyfordata有效。当slave没有准备好要发送的数据时,声明dataavailable无效;反之,声明dataavailable有效。endofpacket没有固定的含义,需要通信双方事先约定,可以表示一帧结束,或者通知master某个事件发生。
4. Nios II软件设计
Nios II系统软件主要实现蓝牙数字语音数据和以太网帧的转换。软件运行在FPGA芯片内的Nios II处理器上,编程可使用汇编语言和C/C++语言,程序基于嵌入式Lightweight TCP/IP协议栈和实时操作系统?C/OS-II[4],它们都集成在Nios II IDE开发环境里。图3描述了Nios II软件的数据流。
数据输入输出任务调用DMA控制器,与底层的硬件驱动交互。管理任务和以太网通信任务各自拥有一个消息队列,前者分析处理数据帧中的控制信息,后者建立SOCKET连接并收发数据。DHCP任务自动获取IP地址,如果超时而没有得到响应,则分配事先定义的IP地址,无论是哪种方式,此任务都仅运行一次,最终释放某一信号量,使其它任务不被阻塞,然后删除自己。
由于蓝牙模块数目较多,数据吞吐量较大,因此为每一个蓝牙模块分别设置接收/发送缓冲区来暂存数据。每个缓冲区大小4K,依次为接收缓冲区RXBUF0~RXBUFx和发送缓冲区TXBUF0~TXBUFx。为了提高系统性能,采用DMA控制器将数据从IIS接收器接收数据,暂存在接收缓冲区中;同理,将以太网数据从发送缓冲区传输到IIS发送器也是由DMA控制器完成,这样大大减轻了CPU的负担,使其专注于以太网传输。
5. 实际测试及结论
IIS IP核使用Verilog语言描述,在Altera公司Cyclone系列FPGA芯片EP1C20F400C8硬件平台实现,表1列出了EP1C20F400C8的基本参数,表2列出了IP核综合结果。
本文介绍的基于SOPC的蓝牙-以太网语音网关具有如下特点:
1) 系统具有很强的灵活性。这是本文设计的语音网关的最大特点,根据网关最大语音通道个数配置IIS控制器模块。由于微处理器采用Altera公司的Nios II,能够灵活调配系统资源,并且克服了采用其它处理器中存在的接口速率瓶颈问题,适应实时语音处理的要求;
2) 系统具有很高的集成度。由于Nios II具有丰富的接口资源,而?C/OS-II具有很高可裁剪性,Lightweight TCP/IP协议栈体积非常小,可以实现系统的集成化;
3) 系统具有很强的实时性。在设计硬件和软件时都充分考虑了系统的实时性。硬件采用IIS控制器和DMA控制器完成语音数据输入/输出,保证了“硬实时”;操作系统采用?C/OS-II实时操作系统保证了“软实时”。
本文作者创新点:和传统的蓝牙以太网适配器不同,本文研究如何通过蓝牙语音数据到以太网的协议转换,实现分组语音通信;设计了IIS IP核,根据系统容量要求,即同时可以支持的蓝牙终端数目,配置IIS控制器个数,具有高效灵活的特点。
近年来,随着蓝牙芯片成本的不断降低,应用进一步扩大,所有蓝牙终端设备接入并享受网络服务的可能性变得越来越大。另一方面,网络应用越来越广泛,其中热点之一即是分组语音技术。分组语音技术将语音信号转化为一定长度和速率的数字化语音包,以存储转发的方式进行交换和传输。蓝牙技术作为解决“最后10米”的无线传输技术,必将是无线个域网(Wireless Personal Network,WPAN)的首选技术。结合蓝牙技术和分组语音技术,可以使支持蓝牙的终端设备通过安全的无线链路,与蓝牙语音网关建立连接,通过以太网交换到目的蓝牙语音网关,然后与对方终端建立无线链路,完成语音的远距离传输。
传统的蓝牙—以太网适配器通常使用ACL链路与蓝牙器件建立连接,将串行接口UART输出的数据转换成以太网帧,以实现以太网适配,这样仅能传输普通数据,无法传输语音。本文从另一方面入手,研究如何实现语音数据到以太网的协议转换,并利用网络交换语音。设计了IIS(Inter-IC Sound Bus)控制器IP核,根据需要接入的蓝牙终端多少,灵活配置IIS控制器个数,从而实现多个蓝牙终端经以太网双向语音通信。
SOPC(System on Programmable Chip)是Altera最先提出的概念,其实质是SOC技术,与其它的SOC技术相比,特点在于可编程性,即利用FPGA的可编程性进行SOC设计。通过将验证好的IP核即知识产权核嵌入FPGA中,可以大大缩短开发周期,同时提高开发成功率。在本设计中,使用SOPC的优势在于配置灵活,满足不同接入容量的需求。
2. 总体方案
语音网关由二部分组成:蓝牙模块和SOPC系统,如图1所示。
众所周知,1个蓝牙终端可以与其它蓝牙终端建立7个ACL链路和1个SCO链路,只有后者能用于传输实时语音,所以蓝牙网关的容量取决于内部蓝牙模块的数目。蓝牙模块采用CSR公司提供的集成蓝牙基带和射频部分的单芯片模块BluetoothCore3-Multimedia External(以下简称BC03)。BC03基于Bluecore03芯片,并提供IIS/PCM、SPI、UART/USB、PIO接口。Bluecore03内嵌16位RISC微处理器,可作为简单的嵌入式控制器及蓝牙链路控制器,运行蓝牙软件协议及高层应用程序。
SOPC系统主要包括1片FPGA、2片8Mb SRAM、1片128Mb SDRAM、1片64Mb Flash、1片EPCS4串行配置器件(4Mb)和1片以太网控制器LAN91C111。
3. 硬件方案
本节由二部分组成,首先介绍Nios II系统开发流程,然后是IIS的IP核设计。
3.1 构建NIOS II SOPC系统
Nios II系列嵌入式处理器使用32位的指令集结构(ISA),是建立在第一代16位Nios处理器基础上的,最高可支持64位数据操作,定位于广泛的嵌入式应用。Nios II处理器包括三种内核:快速的(Nios II/f)、经济的(Nios II/e)和标准的(Nios II/s)内核。快速型(Nios II/f)处理器性能最高,但比经济型(Nios II/e)处理器多消耗25%资源。使用Altera的Quartus II 软件、SOPC Builder 工具以及Nios II 集成开发环境(IDE),可以轻松的完成基于Nios II 处理器的嵌入式系统开发。
其中,SOPC builder内嵌在Quartus II集成环境中,允许用户以图形化方式选择CPU、存储器、标准外设和用户定义外设。本设计中,标准外设中没有IIS控制器,所以要单独设计用户外设。SOPC Builder主要生成两种文件:一种是.ptf文件,NIos II IDE根据它编译C/C++等软件;另一种是HDL文件,可以是VHDL语言,也可以是Verilog语言,提供给Quartus II,作为整个SOPC项目的一部分。Quartus II软件对HDL文件进行编译、综合、布局布线,生成硬件映像文件,然后使用ByteBlaster线缆通过JTAG下载到开发板中的Cyclone芯片中,完成硬件平台。再利用Nios II IDE编写应用程序,下载到Flash中运行、调试。
3.1 IIS控制器IP核设计
IIS是串行数字音频总线,目前很多音频芯片都提供对IIS的支持。BC03模块为了支持双工通信,设置了帧同步(WS)、时钟(CLK)、和输入/输出数据线,可以作为master提供帧同步和时钟,也可以作为slave接收外部提供的帧同步和时钟。
这里使用Verilog硬件描述语言设计IIS控制器。为了实现双工通信就要分别设计接收器和发送器,它们拥有各自独立的缓冲区,共享Avalon接口,如图2所示。
显然,要设计IIS控制器,首先得解决采样、存储问题。因此,按照IIS时序标准,设计前端的接收器,从串行比特流中提取有效语音数据组成32 bit的并行数据,然后,存储在异步FIFO中,这里设置FIFO深度为1024,宽度为32 bit。然后经过Avalon总线加入SOPC系统。
Avalon是Altera公司专门为解决SOPC系统中各外设互联而设计的总线接口标准,其与一般总线的不同之处在于可裁剪,指外设可以选择Avalon总线标准信号的子集作为自己的接口信号,比如时钟、地址、数据、片选和读/写信号,就可以构成一个基本接口。而本设计中,如果采用基本接口,由于语音数据的传输速率远远低于CPU的工作速度,造成CPU的长时间等待,浪费资源,所以必须采用流量控制。
Avalon总线中支持流量控制的信号允许slave对master发起的传输进行约束,即只有当slave准备好接收数据或者有数据要发送时,传输才开始。为了实现流量控制,slave可以使用以下信号中的一个或多个:readyfordata、dataavailable和endofpacket。当slave没有准备好接收数据时,声明readyfordata无效;反之,声明readyfordata有效。当slave没有准备好要发送的数据时,声明dataavailable无效;反之,声明dataavailable有效。endofpacket没有固定的含义,需要通信双方事先约定,可以表示一帧结束,或者通知master某个事件发生。
4. Nios II软件设计
Nios II系统软件主要实现蓝牙数字语音数据和以太网帧的转换。软件运行在FPGA芯片内的Nios II处理器上,编程可使用汇编语言和C/C++语言,程序基于嵌入式Lightweight TCP/IP协议栈和实时操作系统?C/OS-II[4],它们都集成在Nios II IDE开发环境里。图3描述了Nios II软件的数据流。
数据输入输出任务调用DMA控制器,与底层的硬件驱动交互。管理任务和以太网通信任务各自拥有一个消息队列,前者分析处理数据帧中的控制信息,后者建立SOCKET连接并收发数据。DHCP任务自动获取IP地址,如果超时而没有得到响应,则分配事先定义的IP地址,无论是哪种方式,此任务都仅运行一次,最终释放某一信号量,使其它任务不被阻塞,然后删除自己。
由于蓝牙模块数目较多,数据吞吐量较大,因此为每一个蓝牙模块分别设置接收/发送缓冲区来暂存数据。每个缓冲区大小4K,依次为接收缓冲区RXBUF0~RXBUFx和发送缓冲区TXBUF0~TXBUFx。为了提高系统性能,采用DMA控制器将数据从IIS接收器接收数据,暂存在接收缓冲区中;同理,将以太网数据从发送缓冲区传输到IIS发送器也是由DMA控制器完成,这样大大减轻了CPU的负担,使其专注于以太网传输。
5. 实际测试及结论
IIS IP核使用Verilog语言描述,在Altera公司Cyclone系列FPGA芯片EP1C20F400C8硬件平台实现,表1列出了EP1C20F400C8的基本参数,表2列出了IP核综合结果。
本文介绍的基于SOPC的蓝牙-以太网语音网关具有如下特点:
1) 系统具有很强的灵活性。这是本文设计的语音网关的最大特点,根据网关最大语音通道个数配置IIS控制器模块。由于微处理器采用Altera公司的Nios II,能够灵活调配系统资源,并且克服了采用其它处理器中存在的接口速率瓶颈问题,适应实时语音处理的要求;
2) 系统具有很高的集成度。由于Nios II具有丰富的接口资源,而?C/OS-II具有很高可裁剪性,Lightweight TCP/IP协议栈体积非常小,可以实现系统的集成化;
3) 系统具有很强的实时性。在设计硬件和软件时都充分考虑了系统的实时性。硬件采用IIS控制器和DMA控制器完成语音数据输入/输出,保证了“硬实时”;操作系统采用?C/OS-II实时操作系统保证了“软实时”。
本文作者创新点:和传统的蓝牙以太网适配器不同,本文研究如何通过蓝牙语音数据到以太网的协议转换,实现分组语音通信;设计了IIS IP核,根据系统容量要求,即同时可以支持的蓝牙终端数目,配置IIS控制器个数,具有高效灵活的特点。
蓝牙 Altera FPGA CSR 射频 USB 嵌入式 Quartus VHDL Verilog 总线 相关文章:
- 不断提升的蓝牙数据速率催生多种新兴应用(09-04)
- 面向大众市场的超宽带技术(09-04)
- 标准化进程难挡UWB市场增长,2011年出货量接近3亿 (09-04)
- 基于CSR CVC-HF系统的汽车蓝牙免提解决方案(09-08)
- 蓝牙与UART:互补配合,相辅相成(09-27)
- 浅析蓝牙技术 (上)(09-27)