图2:系统方框图
随着现代可编程SOC的出现,除了一些无源器件之外,实施完整的设计不再需要额外的外部
元件。SOC可以发送命令并通过I2C端口从调FM radio芯片接收状态信息。SOC通过已有的 USB接口与平板电脑相连。平板电脑上的前端应用可以访问FM radio信息,用于进行频道扫描和选择。一旦FM radio接收到锁定特定频率的命令,它会在特定引脚上输出模拟音频。FM radio接收器的模拟输出由SOC进一步处理,得到的数字音频会通过USB传输给平板电脑。FM radio芯片的工作电源由USB总线提供。大多数FM radio芯片需要的电流一般只有几毫安,电压甚至不到1.8V,USB总线完全能够满足这一需求,而且这种功耗对于便携式设备来说完全可以接受。
在SOC中实施收音机配件需要以下资源:
●放大器
●模数转换器(ADC)
●通信协议(I2C/SPI)
●USB接口
●滤波器模块
通常来说,调频收音机芯片输出音频信号的强度约为100mV的水平。放大器用来放大FM接收器的模拟音频信号,随后将信号提供给SOC中的ADC。如方框图所示,模拟音频输出的强度在通过可编程增益放大器(PGA)之后得到了加强。这就能确保整个ADC的输入范围得到了利用,从而在FM radio芯片输出端真实地复制音频。此外,我们也可以采用输入范围较窄的 ADC对信号进行数字化。但是,信号强度越低,就越容易受到系统噪声的影响。
模数转换器(ADC)以44.1 kHz的频率采样放大器的模拟输出,并将其转换为16位的数字信号。采样率设为44.1 kHz是为了满足Nyquist原理,该原理要求采样频率必须至少为最大工作频率的2倍。
通信协议:如I2C或SPI等标准协议,可用于连接SOC和FM接收器。如果使用I2C协议,则SOC将作为主机,无线电接收芯片作为从机,数据速率为100/400 kHz。改变频道或扫描FM频段的命令可由I2C主机通过I2C 总线发送给FM接收芯片。FM接收芯片能够解码预定义的命令,从而执行各种任务。如果使用RDS协议,则接收的数字信息可由控制器通过I2C接口从 FM接收器读取。我们也能读取其它状态信息(如FM radio接收器通过I2C接收到的信号强度指示(RSSI)信息),并在平板电脑或PC上显示出来。
直接存储器存取(DMA):在许多微控制器中,DMA都是一种强大的特性,有助于减轻存储器不同位置之间的数据传输任务,从而提高性能。DMA可用来将经过转换的数字信息从ADC传输到存储器或直接传输到USB,从而使CPU能够处理其它关键任务。
USB:USB是主机平板电脑与SOC之间的接口。USB中断端点可用来接收主机发送的各种命令,如频道扫描、频道加减等。请注意,如果命令数据比较小,那么USB设备上的控制端点也可用来传输命令。我们可以用控制端点来发送命令。命令可作为厂商定义的命令发送,然而在控制端点上,一个USB数据包最多包含8个字节的数据内容。来自ADC的44.1 kHz数字数据通过同步USB传输模式发送给主机。同步传输在这里是最理想的方式,原因在于它的延迟性能有保障、分配了总线带宽并且没有错误校正和握手过程,因此能保持交付时间的一致性。请注意,CRC字段可以检查错误,但并不予以校正。人耳无法听出偶然的数据错误或传输丢失,除非是频繁的停顿才会引起注意。由于没有错误校正,因此即便数据包有错误也不会中断数据传输。对于同步端点来说,微控制器支持的最大数据包为1023字节。
提高音质
在移动操作系统中,通常采用专用的媒体服务器或媒体引擎来播放音频。如果用户需要,该媒体引擎也可用来增强或修改音频特性。在某些移动处理器中,有专用的DSP硬件实现这一目的。使用媒体引擎或DSP会消耗额外的电量,降低性能,也可能对用户体验造成不利影响。还有一种办法是在SOC中处理音频,然后通过USB将处理后的音频流发送到主机(Host)平板电脑。平板电脑需要做的仅仅是播放音频。利用SOC中的资源还能实现低音、高音等控制选项,使用户可以更加精细地控制音质。这一功能是通过赛普拉斯PSoC 3等器件中的数字滤波器模块(DFB)实现的。DFB模块接收数字输入数据,并将处理后的数字数据进行输出。在本应用中,数据流通过DMA进入DFB,按照音质要求加以过滤,再通过USB发送至终端进行播放。可通过图形用户界面(GUI)控制音质。GUI提供了一个类似于音乐播放器均衡器的界面。整个音频范围可被分为多个分立频段。我们通过改变GUI上的控件位置,可以向 DFB加载新的调节系数,这些系数会改变每个频段的增益,从而改变输出音质。
主机应用
主机运行一个用于控制音频接收器的前端应用。如果主机运行的是Android操作系统,则可以用标准的Java和Android库创建简单的GUI。如果是Windows平板电脑,则可以用C# GUI完成同样的工作。用户通过按钮等控制对象能够实现频道选择、加减频道等操作。
Windows操作系统中的DirectSound驱动程序与USB的同步传输模式配合使用,可将音频流传输到扬声器。这项功能在Windows 7操作系统中同样适用。专为平板电脑设计的Windows 8 操作系统也支持GUI和音频驱动器,且无需任何变化。同步传输目前还无法支持Android平板电脑。Apple的iPad和少数其它iOS设备具有内置的USB主机和同步传输模式,可用于音频播放。
前端主机应用或Windows Form应用可根据用户的如下请求生成事件:
●频道扫描请求
●频道上调请求
●频道下调请求
●从接收器请求接收信号强度指示器 (RSSI)
对于Windows而言,可在Visual Studio中利用C#开发应用。USB设备和端点可通过标准库或SOC制造商提供的定制库来进行访问。库提供了通过USB接口访问SOC的方法和对象。我们可以创建Windows Form来发送命令并显示状态信息,如下所示。
图3:FM Radio GUI
可添加按钮等控制对象,用来实施频道扫描、下一频道、上一频道和音量控制等各种不同操作。除此之外,还可以将数字音频录制为.WAV文件。也可以针对Android操作系统和 Apple的iOS开发类似应用。
PSoC 3等现代SOC可以通过单芯片的方式实现即插即用型调频收音机配件。模拟音频放大、数字化、滤波、向主机传输音频流以及控制FM接收器等操作都能得到高效处理。当不工作时,这种由总线供电的设备可以使FM接收器和SOC在待机和断电等低功耗模式下运行,因此它在平板电脑等电池供电的主机中使用时具有很高的能效。平板电脑的时代已然开启,这种微型配件将利用计算设备中的已有资源实现巨大价值。(end)
1