当前位置:首页 > 电源 > 数字电源
[导读]在嵌入式系统中经常采用IIS(Inter-IC Sound)总线连接专用音频器件以实现音频输入输出。不少嵌入式处理器带有专用的通过操作特殊功能寄存器实现对外接音频器件的操作,但也有一些嵌入式处理器没有扩展IIS总线,如ARM7

在嵌入式系统中经常采用IIS(Inter-IC Sound)总线连接专用音频器件以实现音频输入输出。不少嵌入式处理器带有专用的通过操作特殊功能寄存器实现对外接音频器件的操作,但也有一些嵌入式处理器没有扩展IIS总线,如ARM7芯片S3C4510B。近年来,FPGA技术发展迅速,现已成为可编程片上系统(SoPC)的硬件载体。采用FPGA实现IIS总线及与总线相关的接口控制,一方面可以用硬件的方法实现IIS总线操作,使嵌入式系统很容易扩展音频功能;另一方面由于FPGA可以实现大量的组合逻辑和时序逻辑,还可以用来实现DSP算法,增加了系统的灵活性。

  1 基本原理

  1.1 系统方案

  嵌入式处理器采用Samsung公司的ARM7芯片S3C4510B;音频芯片使用Philips 公司开发的UDA1341TS,这是一款适用于MiniDisc(MD)、PDA等便携式设备的高性能低功耗的经济型音频编码解码器;FPGA芯片则使用 Xilinx公司的Spartan-II 系列芯片XC2S100。系统示意图如图1。

  

 

  图1中FPGA负责连接S3C4510B和UDA1341TS,为此需要按照访问UDA1341TS的时序要求实现IIS总线和L3接口,同时要按照S3C4510B总线时序要求,实现按存储器方式操作的特殊功能寄存器,并将对UDA1341TS的操作转换成对特殊功能寄存器的操作。这样S3C4510B便可以直接访问FPGA实现的特殊功能寄存器,从而实现对UDA1341TS的控制。

  1.2 IIS和UDA1341TS简介

  IIS又称I2S, 是Philips公司提出的串行数字音频总线协议,专用于芯片间进行高速高效的音频数据传输。IIS总线只处理声音数据,其他信号必须单独传输,如控制信号。IIS总线包括3 个信号线,即1个双向数据传输线SD(Serial Data)、一个声道选择线WS(Word Select)和1个时钟线SCK(Serial Clock)。在数据传输过程中,发送端和接收端具有相同的时钟信号,发送端作为主装置(Master)时,产生位时钟信号和声道选择信号,接收端被动响应。为了实现全双工传输模式,一些IIS实现时使用了Dout和Din两个数据线。

  UDA1341TS片内集成了立体声ADC、DAC以及模拟输入通道,其中模拟输入通道包括可编程增益放大器(PGA)、数字自动增益控制(AGC)、 数字声音处理(DSP)等。UDA1341TS的重放过程也具有可编程的DSP功能,如去加重、音量控制、低音增强、高音增强以及软件配置静音等。

  根据串行音频数据输入输出格式和每声道字长的不同,UDA1341TS支持4种操作模式,分别是:(1)字长不超过20位的IIS总线模式;(2)字长不超过20位的最高位对齐(MSB-justified)模式;(3)字长为16、18或20位的最低位对齐(LSB-justified)模式;(4)输出采用最高位对齐,输入采用字长为16、18或20位的最低位对齐模式。其中IIS总线模式和最高位对齐模式操作时序如图2所示。二者具有相同的信号线,但左右声道控制电平和位延迟不同,对于IIS总线,声道控制电平改变后,最高位推迟一个时钟周期才发送。

  

 

  对UDA1341TS的所有功能控制和状态获取均通过3线串行接口L3实现。该接口包含3个信号线,分别是串行数据线L3DATA、接口模式选择线L3MODE和串行时钟线L3CLOCK。L3接口操作有两种模式,即地址模式和数据传输模式。地址模式用于选中后续操作所要访问的芯片及其内部寄存器,被地址模式选中的芯片和寄存器一直保持有效,直到UDA1341TS收到一个新的地址模式命令字节。数据传输模式用于将音频处理和系统控制参数写入UDA1341TS并可以读取回放的音频数据的峰值电平。L3MODE为低电平时操作为地址模式,高电平时操作为数据传输模式。

  地址模式下由主器件按标准时序送出8位地址,其中高6位表示UDA1341TS芯片地址000101,最低2位选择要访问的该芯片内部寄存器,分别是DATA0、DATA1和STATUS,由此产生下面的3种寄存器操作模式。

  (1)STATUS操作模式可以控制芯片复位、系统时钟频率、数据输入格式、DC滤波器、输入增益、输出增益、ADC和DAC极性控制、倍速播放和功率控制等。

  (2)DATA0操作模式又分为两种:直接地址模式和扩展地址模式。数据最高2位非‘11’时为直接地址模式,在这种模式下,可以直接控制音量、低音增强、高音增强、峰值检测位置、去加重、静音等功能;数据最高2位为‘11’时为扩展地址模式,可以通过3位选择6个5位的扩展寄存器,分别控制通道混合增益、MIC灵敏度、自动增益控制、输入放大器增益器等。

  (3)DATA1操作模式用于读取音频数据重放时的峰值电平。[!--empirenews.page--]2 FPGA设计及功能仿真

 

  如图1所示,FPGA负责连接S3C4510B和UDA1341TS,需要实现S3C4510B总线接口、IIS总线和L3接口等。采用模块化设计思想,划分几个功能相对独立的模块,并将各个功能模块封装成元件(Component),分别设计、仿真、测试、验证各元件,最后在顶层调用各元件,并将元件信号与实际输入输出信号关联,实现整体功能。实际实现了4个元件,如图2所示。

  图2中,元件ARM_Interface负责实现与S3C4510B接口,主要是实现几个可以映射成存储器的地址单元,并提供这些单元与其他元件的接口。其中左右声道单元为16位,在内部分别与2个FIFO相连接,以便音频数据以选定的速率回放;IIS_out元件负责产生IIS总线或MSB对齐模式时序;L3_3B_Mod元件实现UDA1341TS数据传输模式中的DATA0扩展地址模式,共需传输3个字节;L3_2B_Mod元件则负责UDA1341TS其余的操作模式,只需传输2字节,即1字节地址和1字节数据。采用这种元件模块设计的方法主要考虑到FPGA容易实现并行操作,但对复杂条件操作和逻辑判断则不如处理器编程实现方便。因此并行实现多个元件,再由简单逻辑和条件及输入参数控制选定的元件工作,以实现需要的功能,这是FPGA设计的主要思想。

  2.1 嵌入式处理器接口实现

  此模块主要负责处理与嵌入式系统的数据传输接口。主要输入信号包括全局时钟GCLK、片选信号nCS、写信号nWBE0、读信号nOE以及地址信号ADDR[4..0],其中地址信号确定相对于片选地址的偏移地址,5位地址信号最多可寻址32个16位地址单元。所有总线数据操作与全局时钟同步。根据需要,实际设计实现了7个寄存器,分别是DATA0直接地址寄存器、DATA0扩展地址寄存器、DATA1寄存器、STATUS寄存器、左声道音频数据缓存器、右声道音频数据缓存器、FPGA控制寄存器,它们的偏移地址分别是0x00100、0x00110、0x01000、0x10100、0x00000、0x00010、0x01100。上述寄存器中,只有左右声道音频数据缓存器为16位,其余均为8位,因此只能实现不超过16位的IIS总线和MSB对齐模式。

  测试本元件时,首先应测试单元的读写特性,通过ARM仿真器直接对编程单元进行读写即可验证扩展的正确性。对于内建16x8的FIFO的左右声道数据缓存器,可以通过读写多次测试其满空状态,并通过1个接在FPGA的I/O口线上的LED直接观察。测试无误后,该元件便可使用。

  2.2 IIS总线实现

  IIS总线通过IIS_out元件来实现,其接口信号如图3所示。输入信号是ARM_Interface提供的左右声道音频数据,输出信号是IIS总线要求的3个串行信号,即bclk、sync和dout,分别与SCK、WS和SD对应,这3个信号通过FPGA的I/O口线与UDA1341的BCK、WS以及DATAI与DATAO信号线相连。IIS 格式的信号无论有多少位有效数据,数据的最高位(MSB)总是被最先传输,在WS 变化后的第2 个SCK脉冲处,因此最高位拥有固定的位置,而最低位的位置则依赖于数据的有效位数。实际设计的数据有效位是16位,低于16位数据时高位填充‘0’,处理器将数据以16位方式写入左右声道音频数据缓存器时,自动进行高位填充。

  

 

  实现IIS总线时序时,关键是要正确处理各种时钟信号之间以及生成的IIS总线3个信号之间的时序关系。要依据音频信号的采样速率选择FPGA系统时钟和UDA1341时钟选项,同时要合理使用计数器并正确读取左右声道音频数据缓存器,最终实现音频数据通过IIS总线的正确传输。

  设计实现的IIS时序仿真图如图4所示。

  

 

  图4显示的是IIS_out元件将左右声道音频数据缓存器内2个16位数据由IIS总线输出的时序仿真结果。bclk信号的上升沿数据dout稳定有效,在bclk为低电平时dout才变化。当左右声道控制信号sync为低电平时,传输左声道数据‘0111011101110111’;当sync为高电平时,传输右声道数据‘1010101010101010’。从仿真波形可知,每声道数据反映在dout波形上是从sync电平变化后的第2个bclk周期开始的。

  图2所示的最高位对齐模式与IIS使用相同的信号,很容易在IIS总线的基础上修改实现。实际实现的最高位对齐模式仿真时序正确,在此不再详述。

   [!--empirenews.page--]2.3 L3接口实现

 

  由于IIS总线只处理声音数据,其他信号必须单独传输,所以为了控制UDA1341TS而设计了L3接口。在FPGA实现L3接口时,根据UDA1341TS操作模式的不同,设计了两个元件。图3中元件L3_2B_Mod用于只需传输1字节地址和1字节数据的情况,而L3_3B_Mod则用来传输1字节地址和两字节数据。

  为了便于控制,在元件ARM_Interface中专门设置了一个控制寄存器来控制L3接口的工作模式,该寄存器偏移地址为0x01100,其高4位有定义。最高位为接口允许位TRANS_EN,为‘1’时L3接口启动工作,为‘0’时停止;次高位为L3接口工作模式选择位TRANSMODE,为‘0’时选择L3_2B_Mod,为‘1’时选择L3_3B_Mod;接下来的二位用于选择寄存器。

  实际设计实现的元件L3_3B_Mod时序仿真图见图5。

  图5显示的是L3接口DATA0扩展地址模式时序图,共传输了3字节数据,即1个地址字节、2个数据字节。地址字节的高6位为UDA1341TS地址,低2位选择DATA0操作模式,紧接着的数据字节最高两位为‘11’选择扩展地址模式,这意味着该字节后面还要传输1字节数据。图5中的3字节分别为0x14、0xC4和0xF0,该命令将打开输入通道的自动增益控制。L3接口要求串行数据的低位在前传输,这一点与IIS有所不同。

  实现L3_3B_Mod元件时引入了一个参考时钟REF_CLK,由一个5位计数器对该时钟信号计数,根据L3接口在3字节操作时的时钟信号图案,控制由REF_CLK生成L3CLOCK,得到L3CLOCK之后,L3接口的操作均以此时钟信号来同步。

  元件L3_2B_Mod设计及仿真结果与L3_2B_Mod类似。

  3 测试方法及结果

  在以S3C4510B为核心的嵌入式系统中,根据存储器配置情况,选择一段未用的存储空间,将FPGA实现的寄存器映射成S3C4510B在该段存储空间中的存储单元,这样就可以用C语言编程来访问这些存储单元,从而实现对UDA1341TS的控制。实际选择了S3C4510B的可重定位片选信号nRCS1作为FPGA实现的寄存器基地址选择信号,并将该片选地址定位为0x12000000,这样各寄存器的实际地址如表1。

  

 

  根据UDA1341TS命令列表,在Hitool For ARM support μClinux软件开发环境下,编写C语言程序,测试STATUS操作和DATA0操作功能及结果。程序运行之前需要用JTAG下载电缆将ISE开发环境下生成的bit文件下载 到FPGA芯片中,以实现要求的功能。

  经实际测试,通过FPGA实现的IIS总线和L3接口,S3C4510B可以控制UDA1341TS芯片完成各种操作,实现STATUS操作模式和DATA0模式的各种控制功能,并可用DATA1操作模式获取音频数据重放时的峰值电平。

  编写测试程序,输出1kHz正弦信号,并控制声道、音量、静音等变化,示波器观察和耳机听到的结果正确。

  编写测试程序,读入麦克风音频信号,分时由左右声道输出,测试结果正确。

  本设计采用音频接口专用芯片UDA1341TS,并通过FPGA实现了IIS总线和L3接口,使得基于S3C4510B的嵌入式系统可以方便地扩展音频功能,实验结果正确。

  在本文工作的基础上,可以进一步发挥FPGA的灵活性。如可以利用FPGA实现DSP功能,从而提供音频DSP处理或编码解码;也可以与SoPC相结合,作为音频接口模块,为片上系统提供音频接口

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在当今数字化时代,汽车不再仅仅是一种交通工具,更是一个移动的智能空间。随着人们对汽车电子设备依赖程度的不断提高,车内 USB 接口的重要性也日益凸显。从最初单纯为手机充电,到如今支持数据传输、连接各种智能设备,USB 接...

关键字: 接口 数据传输 汽车供电

根据Semico Research的预测,到2025年RISC-V芯片出货量将达到624亿颗,覆盖计算、消费电子和工业等领域。而在这其中,RISC-V MCU是整个RISC-V生态的基本盘,以高质量、应用驱动的解决方案为...

关键字: 青稞 RISC-V 沁恒 接口 MCU

压电陶瓷换能器作为一种能够实现电能与机械能相互转换的关键元件,在超声加工、医学超声成像、水声通信等众多领域有着广泛应用。其性能的优劣与驱动电路紧密相关,而压电陶瓷换能器的阻抗特性,无论是高阻抗还是低阻抗,都对驱动电路提出...

关键字: 压电陶瓷换能器 驱动电路 元件

在电子电路中,尖峰电流是一种常见且具有潜在危害的现象。它通常在电路接通或断开的瞬间,以及负载发生突变时出现,其幅值可能远远超过正常工作电流。尖峰电流不仅会对电路中的元件造成损害,还可能引发电磁干扰,影响其他设备的正常运行...

关键字: 尖峰电流 电磁干扰 元件

NodeMCU是一个开源物联网平台,包含运行在expressif Systems ESP8266 Wi-Fi SoC上的固件,硬件基于ESP-12模块。NodeMCU的特点之一是可以使用Arduino IDE进行简单的编...

关键字: GPS NodeMCU ESP8266 接口 物联网

在现代电子设备的设计中,电容作为电路中不可或缺的元件,扮演着储能、滤波、耦合和去耦等多种角色。从基础的消费电子到复杂的工业控制系统,电容的性能直接影响系统的稳定性和可靠性。

关键字: 电容 电路 元件

纹波有什么影响?进行电源纹波测试需要哪些步骤?电源纹波是指电源输出电压中存在的交流成分。

关键字: 元件 电子设备

推挽式电路是一种放大电路,它按功放输出级放大元件的数量,可以分为单端放大器和推挽放大器。

关键字: 推挽式 放大电路 元件

反馈是电子电路中的一种重要概念,它是指将电路输出信号的一部分或全部通过特定的元件和网络送回到输入端,与原始输入信号进行比较和处理的过程。

关键字: 反馈 电路反馈 元件

在浩瀚的电子科技海洋中,GPIO(General Purpose Input/Output)作为一个基础而强大的概念,始终扮演着连接微控制器与物理世界的桥梁角色。它不仅仅是一组简单的引脚,更是赋予电子设备感知与响应能力的...

关键字: GPIO 接口 微控制器
关闭