2023年6月26日发(作者:)
龙源期刊网
基于Nios Ⅱ的音频播放器设计与驱动开发
作者:冯新宇 蒋洪波 祁红岩
来源:《现代电子技术》2010年第04期
摘 要:采用TOP-DOWN设计方法,在DE2开发平台上完成音频播放器设计。设计主要包括Nios Ⅱ软核处理器、音频控制器、I2C控制器和IDE接口等IP核构成的Nios Ⅱ系统,在此基础上完成μClinux操作系统移植以及完成基于HAL层的音频驱动器的驱动程序开发,最后用C语言在Nios Ⅱ系统上编写应用程序进行测试。该实现方法即是下一代消费类电子发展的趋势,也是集成电路发展的一个趋势。
关键词:SoPC;音频控制器;HAL;系统移植
中图分类号:TP311文献标识码:A
文章编号:1004-373X(2010)04-097-05
Design and Driver Development of Audio Player Based on Nios Ⅱ
FENG Xinyu,JIANG Hongbo,QI Hongyan
(Heilongjiang Institute of Science and Technology,Harbin,150027,China)
Abstract:Using TOP-DOWN design method to develop audio player in the DE2
system mainly consists of Nios Ⅱ soft-core processor,audio controller,I2C controller,IDE interface
and other IP completes the μClinux operating system transplantation and driver drives of
HAL,using C language write test bench for method is trend of the next generation of consumer
electronics and IC.
Keywords:SoPC;audio controller;HAL;system transplantation
0 引 言
随着集成电路的发展,嵌入式系统发生了深刻的变革,各种消费类电子产品、终端设备都采用了嵌入设计技术。SoPC技术[1]作为嵌入式系统的重要分支,最近两年发展迅猛,使用软核处理器的概念[2]更加明确,但目前市场上还没有软核控制器的产品。随着软核处理器的不断成熟,软核处理器必将应用在各种设备上,使得终端产品的价格也会因此而降低。在此,采用SoPC技术,设计了由Nios Ⅱ软核处理器作为中央处理单元、开发音频控制器及I2C控制器等IP核[3]构成的音频播放器系统。在此基础上,完成了μClinux操作系统移植及相应驱动程序开发,用C语言在该系统上编写应用程序进行测试,实现了一个完整的音频播放器功能。
1 系统的整体结构 龙源期刊网
在此使用的硬件开发平台是DE2开发板,它是公司针对大学教学以及研究机构推出的FPGA开发平台。DE2平台上提供的硬件资源有Altera CycloneⅡ系列的EP2C35F672C6;主动串行配置器件EPCS16U30;编程调试和用户API设计的USB Blaster,支持JTAG模式和AS模式;512 KB SRAM;8 MB SDRAM;4 MB FLASH;SD卡接口;两个板上时钟源,50 MHz和27
MHz;24位音频编解码器等。音频播放器的系统硬件框图如图1所示。
图1 系统硬件框图
在图1中,处理器的工作由Nios Ⅱ软核处理器完成;存储器是存放音频文件,DE2开发板外接了SD卡扩展口,该设计采用SD卡作为数据的存储,音频编解码处理单元使用的是音频编解码芯片WM8731。
实现音频播放器需要开发二个接口,一个是处理器控制WM8731的控制接口,WM8731有3线和2线两种控制方式,在此采用的是两线的I2C控制模式;第二个接口是音频编解码控制器接口,也是设计的核心重点,最后把这二个接口包装成IP。IP与系统之间的互联使用Avalon总线结构,与系统之间的关系[3]如图 图2 SoPC Builde系统模块
2 I2C控制模块与音频编解码控制接口设计
2.1 I2C控制模块接口设计
在I2C控制器中,输入SCLK是I2C控制器的时钟输入,频率为20 kHz,通过外部晶振分频可以得到。WM8731总线接口时序如图3所示。
图3 WM8731 I2C总线控制时序
WM8731控制接口采用两线接口模式,起始条件是SDIN为下降沿而SCLK为上升沿的时刻。接下来的7位是设备地址,确定使用哪一个设备(这里使用就是WM8731),之后一位为确定数据的传输方向,0说明为写状态。设备在第9个时钟周期通过SDIN,它为低电平态,用于确定寄存器地址和读/写控制,应答数据传输(ACK,一共需要3个应答信号)。B[15:8]包括了要控制的寄存器地址,B[7:0]包含的是数据信息。结束条件是传输数据后SDIN和SCLK均为高电平。
由时序图和WM8731芯片的具体控制过程得知,I2C控制器每次传输24 b数据,前8 b是从设备地址,接下来的8 b是从设备寄存器地址,最后8 b是数据,但是WM8731的寄存器地址是7 b,数据是9 b。所以实际传输时,从设备寄存器地址的最后一位为数据的最高位,即第9 b。
I2C控制器使用33个I2C时钟周期,完成1次传输24 b数据,第一个时钟周期用于初始化控制器,第2,3个周期用于启动传输,第4~30个周期用于传输数据。其中,包括3个ACK信号,最后3个时钟周期用以停止传输。控制器中使用了一个6 b计数器对传输周期计数。在开始传输所示,其他IP由Altera公司免费提供。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687755647a39869.html
评论列表(0条)