/TJ-FPGA_MP3

同济大学数字逻辑课程期末大作业

Primary LanguageVerilogMIT LicenseMIT

同济大学数字逻辑大作业🐨


VS1003B+蓝牙+OLED实现的简单音乐播放器,希望能为学弟学妹提供一点力所能及的帮助


简介

  • VS1003B模块:用这个模块来入门是个很不错的选择。由于我刚开始写大作业时也是一头雾水,所以我也是借鉴了一份学长的代码(虽然出处已经无从考究😓),十分感谢。首先要说的是,这个模块是无法发声的,需要连接耳机或音响(也许你认为这是废话,但我因为这个卡了两三天😅)。我播放的是几首MIDI格式的音乐,将音乐转换成coe文件存储在ip核里,要注意的是只支持播放单音轨的midi。事实上它也可以播放mp3格式的音乐,但是转换后的二进制文件一般都很大,不能使用ip核,所以需要解决存储问题。

  • HC-06模块:蓝牙模块实际上是有一对的,HC-05负责发送,HC-06负责接收,我用这个模块来实现手机遥控(但答辩现场有人实现了HC-06发送数据)。这个模块最大的难点是实现uart协议,不过网上的资料有很多,也有verilog实现的代码,稍微简化一下就可以跑起来。手机端需要安装一个蓝牙串口调试工具来发送八位的指令,至于模块文档上的指令集我个人并没有用到。

  • OLED模块:这个模块我最先参考的是某个学长的上千行代码,给我留下了很大的心理阴影😷。其实oled和VS1003B都是采用SPI协议,所以我模仿VS1003B的状态机实现了比较简洁的版本、。个人感觉OLED最大的难点在于图像的生成,因为它只能接收16位的RGB像素,而我们一般都用的24位或32位,经过摸索,得出的一套方法是:用PS把图片转成16位色的bmp格式(大小是64*96,和屏幕大小保持一致),之后下载一个能以二进制格式打开图片的软件(我用的Hex Editor Neo),打开后编辑一下就可以直接用了(好像是删除前几行?记不清了)。