EDN China > 技术文章 > 可编程器件 > FPGA > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于FPGA实现的音频接口转换电路

王丹宇?? 孙万蓉?? 成龙?? 魏雪松?? 西安电子科技大学电子工程学院?? 2015年12月10日 ?? 收藏3

3 音频接口设计

在驱动后端的音频芯片时首先需要通过I2C接口配置音频芯片的控制寄存器,此后根据音频数据不同的采样级别频率控制FPGA产生的时钟,最终音频数据从FPGA内部的FIFO中通过FPGA产生的时钟依据I2S协议标准向音频芯片传输。在FPGA中设计的音频接口包括I2C时序协议接口模块,I2S时钟控制接口模块和I2S时序协议接口模块。

3.1 I2C接口模块的设计

I2C总线是由飞利浦公司开发的串行总线,总线由两根信号线构成,其中SCLK为时钟信号线,SDA为双向数据线。I2C总线上的所有设备均可做为主设备,每个设备在总线上都有唯一的地址。

立体声音频编解码器TLV320AIC23B中,共有11个寄存器需要配置,所有寄存器为只写寄存器。这些寄存器分别控制芯片输出音频的左右耳机音量、左右功放音量、芯片电源、采样率等参数。在芯片的配置参数传输时,以I2C的数据线(SDA)在时钟线(SCLK)为高时下降沿条件作为数据的起始位,此后每当FPGA向TLV320AIC23B传输8位数据时,TLV320 AIC23B在第9个时钟时通过SDA向FPGA返回一个ACK信号。如果FPGA确认收到ACK信号则继续传输下一组数据,否则将重复传输此组数据。实际中示波器测量的传输波形如图4所示。

图4

3.2 I2S时钟控制接口模块的设计

由于不同的音频数据有着不同的采样级别频率,所以在传输不同音频文件时,FPGA提供给TLV320AIC23B的时钟频率不同,为使不同采样频率的声音文件都能在本系统上正常播放,故在FPGA内部使用其DCM由主时钟12.288 MHz生成16 kHz和32 kHz两种采样时钟频率,接入缓冲器BUFGMUX中,并且通过在PCI的配置空间中开辟一个寄存器,寄存器的值接至BUFGMUX的选择端,这样通过配置PCI总线配置此寄存器即可根据播放音频的情况选择时钟频率。

3.3 I2S时序协议接口模块的设计

I2S时序接口模块的主时钟由FPGA内部提供,模块内通过对主时钟进行分频产生BCLK与LRCin,模块在每个LRCin的上升沿由缓存FIFO中读取一个16 bit的数据放入临时寄存器,此后在BCLK的每个上升沿依次由高至低读取寄存器中的每一位并赋值给数据线SDIN,并且在LRCIN的下降延时重复传输此数据,从而完成音频数据的I2S协议传输。

4 系统测试及结果

通过在上位机中向CPU内部Flash烧录一段音频数据,此后通过访问FPGA的配置寄存器将此段数据传入至FPGA内64 kB的FIFO中,后端音频模块检测到FIFO非空即开始工作。首选通过逻辑仿真软件对系统进行仿真,结果如图5所示,信号线SDIN、 LRclk,BCLK输出结果符合I2S协议规范中左对齐模式。此后可以在音频芯片模拟输出端接入耳机或功放等音频播放设备,用示波器测量其模拟输出。结果证明此系统工作正常,可以按照要求播放16 kbit/s与32kbit/s WAV音频文件。通过示波器测量的模拟输出如图6所示,可以看出明显的包络信号。通过以上结论可以看出,系统可以充分利用FPGA 片内资源,从而减少对板内面积占用并减低系统功耗,也易于移植入同类的嵌入式系统中。

图5

在本文的基础上,可以进一步发挥FPGA的灵活性,比如在开发FPGA上支持PCI从设备DMA模式,以进一步加强PCI总线的读写效率、I2S总线的右对齐和DSP模式等,并且可以开发语音芯片上的语音采集功能,使系统实现语音采集、转换、传输等功能。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

FPGA?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈