李柯南 张北南 北方工业大学
I2C接口音频Codec音乐播放器
李柯南 张北南 北方工业大学
I2C接口音频Codec音乐播放器的作用是使用加载SOPC的VHDL芯片作为核心实现音乐播放功能。本系统可以通过Nios II加载音乐文件和播放程序来自由的控制播放的长度和播放内容,最后通过TLV320AIC23的解码来实现音乐的输出。
音乐播放;I2C;SOPC;FPGA;Nios II
此系统为基于SOPC的VHDL音乐播放设备,通过加载音乐文件(wav格式)于线性FLASH芯片中,经过VHDL控制,通过I2C接口技术传输给TLV320音频解码芯片来实现音乐播放。具体关系图如图1。
图1
系统的核心为 Altera公司的CycloneII VHDL芯片,其为Cyclone的下一代产品,2005年开始推出,90nm工艺,1.2v内核供电,属于低成本FPGA,性能和Cyclone相当,提供了硬件乘法器单元。芯片内控制单元使用VHDL语言编写。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),即涉及实体的内部功能和算法完成部分。
本系统的VHDL部分主要由SOPC部分构成,其他还包括I2C编码部分,分频器部分等。
图2
系统中使用I2C音频传输协议来对TLV320音频编解码芯片的控制端进行控制。I2C即Inter-Integrated Circuit总线是一种两线式串行总线,用于连接微控制器及其外围设备。I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。I2C总线的另一个优点是,它支持多主控(multimastering), 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
本系统中使用SOPC(System-ona-Programmable-Chip),即可编程片上系统。SOPC它是用可编程逻辑技术把整个系统放到一块硅片上,来用于嵌入式系统的研究和电子信息处理。SOPC是一种特殊的嵌入式系统,它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能,但它不是简单的SOC,它也是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。
此SOPC为泛用型版本,其中包括CPU部分、Jtag接口部分、SDram部分、Timer部分、Bus部分、Flash部分、键盘响应部分、单通道音频输出部分、RS232接口部分、I2C编码解码部分、Lcd显示部分等。(图3)
图3
本系统的程序和加载部分使用Altera公司的Nios II IDE。Nios II IDE提供了完整的C/C++软件开发套件,包括编辑器、项目管理器和构建工具、调试器和兼容CFI(Common Flash Interface)的Flash编程器。调试器连接多种目标系统,包括FPGA硬件(通过JTAG电缆)、Nios II指令集仿真器和ModelSim-Altera软件,因而能够提供最灵活的调试方案。支持Nios II片内设备核的强大功能。
本系统中使用Nios II IDE加载音乐文件到板上的闪存当中,并且加载音乐播放程序来对SOPC进行音乐播放控制
本系统中使用TLV320AIC23作为解码芯片。TLV320 AIC23是TI公司的一款高性能立体声音频A/D,D/A放大电路。AIC23的模数转换和数模转换部件高度集成在芯片内部,采用了先进的过采样技术。AIC23的外部硬件接口分为模拟口和数字口。模拟口是用来输入输出音频信号的,支持线路输入和麦克风输入;
图4
串行控制总线采用I2C协议,而串行音频数据总线在多种模式下为可编程,其中包括I2S、左/右对齐、DSP或TDM模式。该器件还提供高度可编程的PLL,以实现高灵活性的时钟生成,并支持各种可用MCLK的所有标准音频速率,频率范围为512kHz至50MHz,其中要特别注意的是最常见的12MHz、13MHz、16MHz、19.2MHz与19.68MHz系统时钟。
TLV320DAC32芯片的设计部分:系统时钟使用12M的晶振,功放输出口接入由LM386组成的放大电路后接扬声器,耳机输出口接到3.5MM耳机接口。
音乐文件(wav格式)通过Nios II IDE加载到板上的线性FLASH上,然后通过Nios II IDE加载C++程序与SOPC即VHDL芯片上来实现音乐文件的播放。
程序中对音频文件大小进行了限制,总共为416275*4bit。可以根据实际音乐的长度大小进行变换。
左侧为VHDL芯片的核心板,右侧为TLV320DAC32的相关电路部分。
10.3969/j.issn.1001-8972.2010.21.054