- UID
- 1029342
- 性别
- 男
|
设计实现的IIS时序仿真图如图4所示。
图4显示的是IIS_out元件将左右声道音频数据缓存器内2个16位数据由IIS总线输出的时序仿真结果。bclk信号的上升沿数据dout稳定有效,在bclk为低电平时dout才变化。当左右声道控制信号sync为低电平时,传输左声道数据‘0111011101110111’;当sync为高电平时,传输右声道数据‘1010101010101010’。从仿真波形可知,每声道数据反映在dout波形上是从sync电平变化后的第2个bclk周期开始的。
图2所示的最高位对齐模式与IIS使用相同的信号,很容易在IIS总线的基础上修改实现。实际实现的最高位对齐模式仿真时序正确,在此不再详述。
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相结合,作为音频接口模块,为片上系统提供音频接口。 |
|