基于CPLD的I2S语音总线接口 | |
| |
摘要:本文介绍了利用Xilinx公司的XC9500系列CPLD器件,以I2S接口方式对四路输入语音信号进行处理与传输,并用VHDL进行建模,通过ISE软件仿真得出了比较理想的结果,并在工程应用中使用良好。 1 引言 CPLD器件被广泛地应用在通信系统、网络、计算机系统及控制系统等电子系统中。XC9500系列CPLD器件tPD最快达3.5ns,系统时钟可达200MHz。XC9500系列器件采用第二代“支持ISP”的引脚锁定结构,它拥有一个54比特输入函数块,是用户可以在进行多种改变的同时保持输出引脚固定。这个特点使设计更具有灵活性,如时钟完全受控,用户既可以对每个宏单元作输出使能反转,也可以对个别的乘积项时钟作使能反转。在视频监控光端机设备设计中,采用XC95144XL芯片实现了视频采集和处理,语音采集和处理,RS485、RS232通信、与光通信模块一起实现了远程监控系统,本文仅就语音采集和处理、传输的编程、仿真、实现作详细地阐述。该系统在实际工程中性能稳定可靠,具有一定的参考价值。 2 系统硬件设计 该语音处理系统由四路音频输入输出、信源编码解码、数据处理和数据发送接收等几个部分组成。语音处理系统框图如图1。
图1 语音处理系统框图 系统各部分设计如下。 信源编码解码 信源编码采用CS5331A音频模数转换器把四输入模拟的音频信号转换成数字信号。CS5331A是一个完全的音频模数转换器,它实行反向滤波、采样,模数转换产生左右输入的18bit连续序列。输入采样率能达到2~50KHz。其数据输出时序图如图2。
图2 数据输出时序图 信源解码采用CS4334芯片音频数模转换器把四输入数字信号转换成模拟信号的音频信号。CS4334的特性主要有:完善的立体声D/A转换系统,插入补偿,D/A转换,输出模拟滤波,24位转换,96dB动态范围。其时序如图3。
图3 CS4334时序图 数据处理 在数据处理中,CLPLD需要完成以下几个方面的任务。把外部石英晶体提供的50MHz脉冲经过时钟提取进程,得到模数转换器所需的MCLK、SCLK、LRCK时钟和数据采集进程、多路复用及数据传输所需的控制时钟。把四路数据信号通过数据采集进程分别锁存1bit数据再与插入比特0、同步码一起进入多路复用及数据传输进程,在时钟的控制下,输出一路数据信号,这就完成4路立体声信号的复接。然后把数据信号以串行的方式发送出去。 在这部分中,怎样把多路信号转换为一路数据信号,并通过串行通信方式传送数据是很关键的问题。当然在接收端怎样把一路数据信号转换为多路信号也是同样重要的问题。发送端CPLD的功能示意图如图4。
图4 发送端CPLD功能示意图 串行传输通道 数据发送采用DS90C031芯片,它是一个四芯线低功率损耗、高数据传输率的CMOS差分芯片。芯片被设计支持数据传输率超过155.5Mbps(77.7MHz),利用低电压差分技术作信号(LVDS)的传输。DS90C031兼容TTL/CMOS输入并且能将他们译成低电压(350mV)差分输出信号。除此之外,芯片支持TRI-STATE功能。数据接收采用DS90C032芯片,它是内嵌CMOS的微分线性接收器,它主要应用于低功耗及高频率的数据传输,同时利用低压差分信号技术来提供大于155.5Mbps(77.7MHz)的数据传输率。DS90C032接收不同的低压输入信号并把他们传输给CMOS的输出端。接受器提供一个TRI-STATE的功能,它能用于复用输出。 DS90C032与DS90C031组成低压差分信号传输系统,其中DS90C031作为信号驱动器(应用与发送端),而DS90C032作为该系统的接收端。它们共同为信号传输提供一个高速的点对点接口传输技术。 3 系统软件设计 随着半导体技术的迅速发展,在现代数字系统设计中,现场可编程器件(FPGA和CPLD)的使用越来越广泛。Xilinx公司的ISE软件是一系列完全集成的、方便易用的EDA工具,支持所有的Xilinx FPGA和CPLD,便于仿真调试及验证电路。在系统软件设计中,我们有两条主线:一条是时钟控制部分,另一条是数据部分,这在前面数据处理过程中都有所介绍。 时钟提取 我们用VHDL描述了一个输入时钟为50MHz、10位二进制的分频器,利用二进制的前4位分频得到所需时钟信号MCLK、SCLK,后6位则构成一个64位的计数器。在设计中,时钟同步比较重要,只有时钟同步,数据的传输才不会出现错误。分频器的部分VHDL描述如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY audio IS PORT ( mclk0,mclk1,mclk2,mclk3 : OUT STD_LOGIC; lrck0,lrck1,lrck2,lrck3 : OUT STD_LOGIC; sclk0,sclk1,sclk2,sclk3 : OUT STD_LOGIC; sdata0,sdata1,sdata2,sdata3 : IN STD_LOGIC; clk50m : IN STD_LOGIC; 数据采集 我们利用D触发器对四路数据分别进行锁存,以备稍后数据传输的需要。触发器是带时钟的存储电路,触发器的数据只有在时钟的上升沿或者下降沿才可能被存储。描述触发器的关键在于对时钟的描述,或者更为准确地说是对时钟沿的描述。 描述时钟主要是用了信号的事件属性。事件的属性包括STABLE、EVENT、LAST_EVENT、LAST_VALUE。要描述时钟只需用到事件的EVENT,EVENT属性直接检测信号在当前时间上是否有事件产生,实际上就是检测信号的值是否变化。 同步码设定 在右声道传输完毕与下一个左声道到来之间,我们需要插入同步码,以便接受方可以同步接受所传输的数据。经收发双方商定决定选用帧同步的有限序列连贯插入法,在111000~111010(即:56~58个SCLK脉冲)发送同步码101011101001。 多路复用及数据传输 在主时钟12.5MHz每连续4个上升沿,它的2分频fdivider(2) 6.25MHz和4分频 fdivider(3) 3.125MHz有4种不同的组合,即:01,11,00,10,根据此4种组合可以把4路数据信号复合成一路以便传输。选择器又叫多路选择器,简称MUX。其功能是:在地址信号的控制下,从多路输入信息中选择某一路信息作为输出。其结构是:地址选择线的个数为n,输入通道线个数为2n,输出线为1个。选择器的名称一般就是根据数据输入端数和输出端数来命名的。我们所需的是一个有2根地址线和4个输入通道的选择器。 4 软件仿真 通过Modelsim 6.0软件仿真,得到了下面的数据传输仿真图。
图5 数据发送仿真图
图6 数据接收仿真图 从数据传输仿真图可以看出,该程序的运行结果已经达到程序设计要求。 5 结束语 本文采用XC9500系列CPLD器件,以 接口方式来实现语音信号的处理与传输,并用VHDL对数据处理进行建模。通过ISE软件进行实验和仿真,得出了比较理想的结果,在工程应用中也比较好。在通信领域中的视频和语音处理与传输中有一定的参考价值。 本文作者创新点: 常规情况是把四声道信号采集、打包进行传送,但实践证明此种方法占用芯片空间过大,所以我们在实际中采用四路分时采集、一位一位传送的方法,这样减少了占用芯片的空间,同时还解决了解码时的时序问题。 参考文献: [1]段吉海, 黄智伟. 基于CPLD/FPGA的数字通信系统建模与设计. 电子工业出版社 ,2004.8 [2]韩相军, 嵌入式视频采集系统的设计与实现, 微计算机信息, 2006,1-2;26-28 [3]林明权等. VHDL数字控制系统设计范例. 2003.1 [4]EDA先锋工作室. FPGA/CPLD设计工具--XilinxISE5.X使用详解.人民邮电出版社 ,2003.6 [5]郑碧月等. 数字通信原理及应用. 广东科技出版社, 2003.10 |
联系客服