如何驱动一枚30年前的音源芯片,YMF288驱动手记(上)

前言

最近想着做合成音乐,于是看到了雅马哈的音乐芯片,最终选定了YMF288

YM F288是雅马哈(Yamaha)在20世纪80年代末至90年代初开发的一款FM合成音频芯片,广泛应用于个人计算机和游戏机中。它也被称为OPN3,他最广泛的使用是被用在日本本土电脑——PC98电脑里面

居然是3,那必然有其他的咯,比如YM2203就同时被称为OPN,属于一个更早的型号,而YMF288可以实现无损替换升级,但是一些寄存器有差别

下面是雅马哈(Yamaha)芯片及其前后替代关系的表格展示:

芯片型号别名类型应用特征替代关系
YM2149AY-3-8910PSG (Programmable Sound Generator)Amstrad CPC, Atari ST3个方波通道-
YM2203OPNFM音源 + PSGNEC PC-88, MSX3个FM音源通道 + 3个PSG通道被YMF288替代
YM2413OPLL简化版FM音源MSX音频扩展卡, Sega Master System9个FM通道,但可编程性较低-
YM2608OPNA高级FM音源NEC PC-986个FM通道 + 3个SSG通道, 支持ADPCM-
YMF288OPN3FM音源NEC PC-986个FM通道 + 3个SSG通道, 功耗更低, 兼容性良好替代YM2203
YM3812OPL2FM音源AdLib声卡, IBM PC声卡9个FM通道,基本FM合成被YMF262替代
YMF262OPL3先进FM音源Sound Blaster 16声卡18个FM通道,支持立体声输出替代YM3812
YMF278OPL4高级FM音源 + 波形表合成高端声卡(如Yamaha SW1000XG)包含波形表合成功能,使声音更逼真-
YMF7xx系列-音频控制器现代PC声卡(如Yamaha XG系列)集成FM音源和波形表合成,兼容OPL3,支持MIDI合成-

YMF288 在雅马哈音频芯片家族中处于一个承前启后的位置。它继承了YM2203的FM音源特性,并在降低成本和功耗的同时,保持了较高的音质。随着技术的发展,雅马哈逐渐推出了更高级的FM合成芯片,如YMF262(OPL3)和YMF278(OPL4),最终发展到集成多种音频合成技术的YMF7xx系列。

雅马哈这些芯片可以在微机,游戏机,声卡等地方使用,曾在20世纪80至90年代广泛装载,但随着技术进步逐渐被淘汰。

为什么呢,因为数字音频技术的普及使FM合成音频被更高音质的波形表合成和全数字音频取代。现代计算机的多核处理器可以实时处理音频,集成度的提高也使得独立音频芯片不再必要。市场对高质量音频的需求和游戏音频的进化推动了对更先进技术的采用。

还有一点是FM合成音效通过软件模拟就能完美实现,讲究一个向下兼容,所以也就不需要额外配置硬件芯片来合成了。

详细介绍

YMF288设计上是为了替代YM2608B,这一款音源LSI芯片,在保持与YM2608B的音源部、节奏音源部和SSG音源部的寄存器兼容性的同时,删除了ADPCM音源部、I/O端口和SSG音源用的A/D转换器,从而减少了引脚数量,并采用了CMOS工艺。它新增了待机模式和低电压运行的支持。

因此,与YM2608B相比,它实现了更低的功耗和更小的占用空间,适合用于笔记本电脑等设备。

FM音源部- 与YM2608B兼容
- 4操作员,6声道同时发音
- 提供8种FM运算算法
- 内置LFO功能,用于振幅频率调制
- 立体声输出
节奏音源部- 与YM2608B兼容
- 最大6声道同时发音
(分别为:低音鼓、军鼓、边鼓、镲片、钹、踩镲,每种音色1声道)
- 内置ADPCM方式的音色数据ROM
- 立体声输出
SSG音源部- 与YM2608B兼容
- 同时发音数:3声道方波,1声道噪声
- 提供8种声
其他功能- 内置2个可编程定时器
- 音频数据为立体声16位,2's补码,MSB优先输出
- 所有寄存器均可读
- 支持低功耗模式(待机模式)
- 工作电源电压为+5V或+3.3V
- 28引脚塑料SOP封装(YMF288-M),48引脚塑料SQFP封装(YMF288-S)

引脚定义

这一芯片目前还能在闲鱼上面搜到,并且确实有卖价格也比较便宜,主要能找到的是YMF288-M,和S比较只有封装上面的差别其他没有差异

157VSS-地线
259D0I/OCPU接口数据0
360D1I/OCPU接口数据1
461D2I/OCPU接口数据2
53D3I/OCPU接口数据3
65D4I/OCPU接口数据4
77D5I/OCPU接口数据5
810D6I/OCPU接口数据6
912D7I/OCPU接口数据7
1014/TEST1ILSI测试端子1(请务必保持未连接)
1120/ICI初始化清除输入端子
12215V/3VI电源电压切换端子("H":5V,"L":3.3V)
1322/TEST2ILSI测试端子2(请务必保持未连接)
1424VSS-地线
1525/IRQOCPU接口中断信号
1626/COMIYM2608/YMF288模式切换("H":YM2608,"L":YMF288)
1727/CSICPU接口芯片选择
1828/WRICPU接口写使能
1935/RDICPU接口读使能
2037A0ICPU接口地址0
2139A1ICPU接口地址1
2242/STBYO待机模式输出("H":正常工作,"L":待机模式)
2343BCOODAC接口bit时钟
2446SDODAC接口串行数据
2552WCOODAC接口Byte时钟
2654LROODAC接口L/R时钟
2755VDD-+5V(或+3.3V)电源
2856MCLKI主时钟输入(7.9872MHz)

解析

根据上面的资料可以了解到,这一款芯片是I2S输出的所以我们需要加一个这个

然后,可以看到它只有一个MCLK,也就是说并不是普通单片机那样采用无源晶振提供时钟,而是用有源晶振,因此最终测试板电路如下。这里主控我使用Arduino Nano,I2S也使用插件方式支持

同时有三个机械键盘轴,以及一个I2C的OLED来实现交互,后面会把控制器换成STM32或者树莓派Pico以实现SD卡读取文件,并且能够有更多的引脚可用

PCB板设计上做了3mm的打孔以匹配外壳设计

 下一期来说明这个设计成功与否,到底能不能实现YMF288芯片的测试以及通过串口实现合成音乐的播放

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值