基于 ARM 和 VS1103b 的 ...
 
Notifications
Clear all

基于 ARM 和 VS1103b 的 MIDI 伴奏系统设计  

 
Mark
 Mark
(@mark)
Active Member

摘要

为了在嵌入式声控伴奏机中获得较好的音源质量, 设计了基于 ARM7 和 VS1103b 的 MIDI 模块伴奏机系统, 阐 明了 VS1103b 的 SPI 接口编程原理和 S3C44B0 的 SIO 接口具体实现方法及编程。 通过运行 MIDI 模块主程序, 实现了良好的伴奏效果。

1 引言

随着计算机技术的发展, 嵌入式系统获得了越来越广泛的应用, 其在消费电子方面的应用则更加广泛, 而将 MP3/MIDI 等音乐技术与嵌入式系统相结合的方法已广泛应用于手机等一些多媒体设备中。 我们利用嵌入式技术将 S3C44B0 芯片应用到基于 MIDI 模块的声控伴奏机中取得了良好的效果, 但在研制过程中我们发现伴奏效果的好坏最终取决于音源芯片的质量, 通过对不同音源芯片的综合对比, 我们采用了芬兰 VLSI Solution Oy 公司 生产的单片 WMA/MIDI 解码和 ADPCM 编码芯片 VS1103b 作为 MIDI 音源 , 取得了良好的伴奏效果。 本文就 VS1103b 在伴奏机 MIDI 模块中的设计及具体应用做了详细的介绍。

2  嵌入式声控伴奏机的基本原理及硬件设计

2.1 嵌入式声控伴奏机的基本原理
众所周知声音是由物体的振动产生的, 而根据物体振动是否规则, 声音又分为乐音和噪音。 人声也是由于声带的振动而产生的, 将人的声带振动视作激励源, 将口腔和鼻腔视作滤波器, 语音就是在这种滤波器对激励源的滤波作用下产生的。 其中激励源的振动频率, 称为基频, 反映了语音声调的高低。 而乐器演奏出的音乐也可以视 作由具有某种特性的滤波器对周期性激励信号的滤波结果。 如果建立人声和器乐声在激励源振动频率上的对应关系, 就可以将人声的基频信息转换为乐调, 再由电子音乐合成技术转换为器乐声, 从而实现为人声配乐, 嵌入式声控伴奏机就是依据这一原理来设计的。
2.2 基于 ARM7 和 VS1103b 的 MIDI 模块伴奏机系统硬件电路设计

ARM7 系列的微处理器为低功耗的 32 位 RISC 处理器, 最适合对价位和功耗要求较高的消费类应用, 其型号较多, 设计使用了较为常见的三星公司生产的 S3C44B0, 它包含了一个运算能力强大的 ARM7TDMI 核和大量实用的外设。 根据最基本的应用需要为其配置了 2M×16Bit 的 Flash AM29LV160DB 和 8M× 16Bit 的 SDRAM HY57V641620 和两个 RS232 串行接口。
MIDI 解码芯 片 VS1103b 是芬兰 VLSI Solution Oy 公司生产的单片 WMA/MIDI 解码和 ADPCM 编码芯片, 其拥有一个高性能低功耗的 DSP 处理器核 VS_DSP, 一个工作内存, 5KB 的指令 RAM, 0.5KB 的数据 RAM, 串行的控制和数据输入接口,4 个通用 I/O 口, 一个 UART 口, 同时片内带有一个可变采样率的 ADC、一个立体声 DAC 以及立体声音频耳机放大器 。 VS1103b 支持 MIDI/ADPCM/WAV 解码和 ADPCM 编码,可以同时接收这三种数据流, 其可以支持的 MIDI 格式有通用 MIDI、SP-MIDI 和 实时 RT-MIDI, 最高可达 64 和弦, 支持多种音色。
系统框图如图 1 所示, 其中 S3C44B0 与 VS1103b 的内核电压同为 2.5V, 由 1117S2.5 提供,I/O 引脚由 1117S3.3 驱动。

3.1 SPI 总线接口简介
SPI, 是英语 Serial Peripheral interface 的缩写, 就是串行外围设备接口, 是 Motorola 首先在其 MC68HCXX 系列处理器上定义的。 SPI 接口主要应用在 EEPROM, FLASH, 实时时钟, AD 转换器, 还有数字信号处理器和数字信号解码器之间, 它是一种高速的, 全双工, 同步的通信总线。
3.2 VS1103b 的 SPI 总线控制协议实现
VS1103b 通过一个工作于从模式的 SPI 串行总线与主机进行数据和控制信息的交流, 控制数据通过串行控制接口 (SCI) 传送, 音频数据则通过串行数据接口 (SDI) 来传送, 控制数据总是为 16 位, 通过读/写不同的寄存 器来实现对 VS1103b 的控制。 VS1103b 的 SPI 接口具有两种工作模式: VS1002 新模式和 VS1001 兼容模式。 设置 SM_SDINEW 为 1, 使 VS1103b 处于 VS1002 新模式。 当 SM_SDISHARE 为 0 时, 控制信号和数据信号的传送分别采用 xCS 和 xDCS 作为同步信号, 而当 SM_SDISHARE 为 1 时, 共用 xCS 作为同步信号, 设置 SM_SDINEW 为 0, 使 VS1103b 处于 VS1001 兼容模式, 该模式仅以 xCS 作用同步信号。 VS1103b 通过一个信号线 DREQ 指示是否可以接收主机传送的数据, 当 DREQ 为高时, 表示内部的 FI- FO 缓冲为空, 可以接收至少 32KB 的 SDI 数据或者 SCI 控制命令, 当条件不合适的时候, DREQ 会转换到低电平, 此时应该停止向 VS1103b 发送新数据。
SCI 协议包括 1 个控制指令字节、1 个地址字节和 1 个 16 位数据字节, 每次读写控制可以操作一个寄存器, 每次读取或写入操作均可以访问单个寄存器。 由于数据位是在上升沿读取的, 因此, 用户只能在下降沿更新数据, 字节的高位 MSb 总是被首先发送。 在整个操作的期间, XCS 必须要保持为低电平。 VS1103b 在每次 (传送) SCI 的操作之后会将 DREQ 设置为低, 这是因为它正处于相关的操作期间, 而在 DREQ 信号变高之前, 不允许启动新的 SCI/SDI (传送) 操作。 这些操作是通过一个特殊的 8 位指令操作码实现的, 该指令支持读取或写入, 读命令和写命令分别为 0x03 和 0x02。

4 VS1103b 与 S3C44B0 的 SIO 接口
具体实现方法及编程
4.1 S3C44B0 的 SIO 接口简介及编程步骤
S3C44B0 具有一个同步的 I/O 口即 SIO 口, 它能与各种类型的串行外设接口, 以一定的频率发送或接收 8 位串行数据。
对 SIO 模块编程, 主要配置 I/O 脚 (SIOTXD,SIOCLK, SIORXD)、SIOCON 和 SIO 中断允许位, 如果想发送数据, 写数据到 SIODAT 然后设置 SIOCON 为 1, 即可开始数据移位操作。
4.2 SPI 总线硬件接口模块电路设计及编程
4.2.1 SPI 总线硬件接口设计
S3C44B0 的 GPF7、GPF5 和 GPF6 端口被配置为 SIO 模式, GPF0、GPF1 和 GPF6 配置为输出端口, 端口 E 的 GPE7 口配置为输入口, 作为 DREQ 请求端。 VS1103b 输入时钟频率为 12-13MHz, 推荐值为 12.288MHz。
4.2.2 VS1103b 初始化编程
VS1103b 共有 16 个 16 位的寄存器, 地址分别为 0x0-0xF, 除了模式寄存器 MODE 和状态寄存器 STATUS 在复位后的初始值分别为 0x800 和 0x3C 外, 其余均为 0。 初始化工作主要是完成对模式寄存器 MODE、时钟寄存器 CLOCKF 和音量控制寄存器 VOL 以及采样率寄存器 AUDATA 的设置。
5 系统测试及结果
为了测试系统性能, 可事先写入一组基频数据, 写入的数据构成了一个一维数组:
该数组是根据歌曲《寸草心》曲谱编制, 是该曲主旋律的标准 MIDI 音阶数据, 将它写入 RAM 数据段, 运行程序即可得出测试结果, 测试时可以选择不同的音色, 使用扬声器监听或示波仪器检测。
本文作者创新点: 在声控伴奏系统中首次采用 SPI 通信方式, 有效提高了人声基频数据转换为 MIDI 乐音的速率; 采用 VS1103b 专用 MIDI 芯片作为 MIDI 音源, 提高了伴奏乐音质量, 使伴奏效果更加丰富。 通过测试,系统成功的将基频数据转换为 MIDI 乐音, 达到了预期目的。

原文出处: 《微计算机信息》(嵌入式与 SOC) 2010年第 26卷 第10-2期

http://read.pudn.com/downloads304/ebook/1353118/%E5%9F%BA%E4%BA%8EARM%E5%92%8CVS1103b%E7%9A%84MIDI%E4%BC%B4%E5%A5%8F%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1.pdf

 
Quote
Posted : 06/05/2020 8:10 am