基于FPGA的音乐流水灯控制系统的设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
参考文献
[1] 赵新民.智能仪器设计基础[M].哈尔滨:哈尔滨工业 大学出版社,1999.
[2] 刘选忠,杨拴科.实用电源技术手册一模块式电源分册 [M].沈阳:辽宁科学技术出版社,1999.
[3]刘和平,严利平,张学锋.TMs320LF240x DsP结构、
原理及应用[M].北京:北京航空航天大学出版 社,2002.
[8]杨振江.A/D,D/A转换器接口技术[M].西安:西安 电子科技大学出版社,1996.
[9]李朝青.单片机原理及接口技术[M].北京:北京航空 航天大学出版社,1998.
音乐播放就是通过外部的8 Hz时钟驱动,内部 以计数器进行计数、产生地址,送到ROM单元中作 为存储器地址,将对应地址的数据——音阶索引值 输出。
在本设计中,每个音的发出由另一个8 Hz的时 钟信号来控制。乐谱中的4分音符由4个时钟信号来 驱动。.每个时钟下,其对应的音阶输出以索引值的形 式存储在ROM中。文中ROM的地址线为10位,数
收稿日期:2010.05.10 作者简介:陶小苗(1985一),女,硕士研究生。研究方向: 电路与系统。
以LcD来显示音阶的高低长短,不懂乐理知识的人 便可以直观的看到不同音调对应的音阶。
总体设计要求如下: (1)分频主要是通过一个可控分频器实现的。采 用时钟的频率越高,分频系数越大,分频后的音阶频 率就越准确。但同时由于分频系数大使用的计数单元 增加,从而耗费更多的硬件逻辑单元,因此可以采取 一个较为适中的时钟频率12 MHz。 (2)经过分频后的信号是一个脉宽极窄的时钟信 号,必须对其进行脉冲宽度调整,增大占空比,才能 有效地驱动蜂鸣器。在脉冲宽度调整时会对此信号再 次二分频,所以在计算时,以乐音音阶的二倍频率去 求取在特定时钟信号下的分频系数,以便在调整占空 比后得到正确的音阶频率。 (3)乐曲的频率变化多端,对应的分频系数也不 断变化,因此需要将播放的乐曲的分频系数事先存放 在ROM中便于读取。如果将分频系数直接作为存储 码存放在寄存器中,势必会占有更大的容量。因此在 这里选取索引值来作为存储码以减小容量。 (4)开发平台上的LED灯数量有限,可以选用有 规律的闪烁,例如从左到右依次点亮、渐亮、渐灭 等;也可以用灯闪烁的多少来表示频率的大小。本设 计选用第二种。 图1为音乐流水灯控制系统的总统原理框图。可
表l音阶索引表
图l原理框图
2模块设计
2.1 乐曲播放控制模块 乐曲播放控制模块的主要功能是在一定的时钟信
号驱动下将事先存储在ROM里的乐谱所对应的索引 值依次输出,控制分频,并产生相应的分频信号频 率,以此来控制蜂鸣器的发声。 2.1.1音阶分频器的设计
为了能够在播放乐曲的同时显示当前音阶,用 LED的位数来指示当前音阶的高低音。程序中的音阶 分频系数通过索引值来进行选取,即在音乐播放过程 中由乐谱存储电路传递来的当前音阶的索引值。 2.1.2音阶频率产生的设计
万方数据
按照乐谱,将音阶对应的索引值连续地存储到 RoM中。例如,乐谱上一个4分音符的中音3,在 ROM存储器中对应的索引值是10,并且连续放置4 次,而一个8分音符5也就是半拍的5,则是将对应 索引值5在ROM中连续存放两次。播放时在播放时 钟(8 Hz)的驱动下,索引值不断地从ROM输出。索 引值送到音阶分频模块中,转换为计数初值输出,再 送到音阶分频产生模块中,作为计数初值,产生音阶 频率输出驱动蜂鸣器。这样,就能在蜂鸣器上发出要 播放的乐曲了。确定了乐谱后,即ROM的存储内容 后,就可以定制ROM,将其初始化文件指定为.mif 文件即可。 2.2流水灯控制模块设计
Keywords FPGA;LCD;hardware description language;DE2
FPGA是现场可编程门阵列的简称,它既有门阵 列器件的高度集成和通用性,又有可编程逻辑器件用 户可编程的灵活性¨。2 J。通过FPGA实现音乐流水灯 的控制,实质上就是将不同音阶与特定频率的方波信 号对应起来,以方波信号驱动蜂鸣器发出音乐,再根 据不同音阶来控制流水灯的闪烁。与借助微处理器实 现乐曲演奏相比,以纯硬件方式完成乐曲演奏电路更 直观。EDA工具和硬件描述语言发挥了强大功能, 提供了设计可能性。
Design of a Music Water Lamp Controller System Based on FPGA
1'ao Xiaomiao,Wang Ziting (Institute of Electronic肌d In缸111ation En百nee—ng,Lanzhou Jiaotong University,Lanzhou 730070,China)
鼋a叶技2010年第23卷第ll期
EJectmnic Scj.&T备c}L/Nov.15,2010
基于FPGA的音乐流水灯控制系统的设计
陶小苗,王紫婷
(兰州交通大学电子与信息工程学院,甘肃兰州730070) 摘要介绍一种基于FPGA的音乐流水灯控制器,采用硬件描述语言对其进行描述,分别实现乐曲的播放和同 步流水灯的闪烁。并构建一个s0Pc系统,集成LcD模块来显示实时音乐的音阶值和频率强度。最后在Altera公司的 FPGA多媒体开发平台DE2上进行实现。 关键词FPGA;LCD;硬件描述语言;DE2 中图分类号TP332.3 文献标识码A 文章编号1007—7820(2010)11—082—04
万方数据
号输入,可在FPGA内部设计分频器,将其分频到 8 Hz再使用,还可以在此基础上更改。另外还可以在 一个ROM种存储多首乐曲,通过按键选择播放乐曲。
(下转第87页)
傅莉:数控ቤተ መጻሕፍቲ ባይዱ流稳压电源设计
3 结束语
如前所述,虽然方案3比前两者有许多优点,但 方案1、方案2对于完成设计要求并非不可行,而且 在某些方面还具有优势,之所以采用方案4,一个很 重要的考虑是系统使用了单片机,使得进一步的功能 扩展较为方便。
3顶层设计和验证
系统的顶层设计就是将各个底层功能模块例化, 在顶层调用,进行正确的连接,构成最后的系统。整 个系统的硬件电路如图3所示。
图3系统硬件电路
至此,一个硬件音乐流水灯电路就完成了。外部 提供两路时钟信号(12 MHz和8 Hz),再将乐曲输出 端连接到带有驱动装置的蜂鸣器或扬声器上,就可以 欣赏所添加的乐曲了。若硬件设计上只有一路时钟信 甜
万方数据
陶小苗,等:基于FPGA的音乐流水灯控制系统的设计
以看到该系统包含乐曲播放控制模块,流水灯控制模 块和LcD显示模块3个模块。其中乐曲播放控制模 块分为乐谱播放控制模块,音阶分频模块和音阶频率 产生模块。
据线宽度为4位。ROM里存储的数据即各音节的索 引值,根据乐谱转换的需要,16个索引值即可满足 乐曲曲谱编写的需求,所以设置了4位数据线。地址 线的宽度主要取决于乐曲的长度。本设计中用到了约 520个4 bit单元,为了留有一定裕度,将数据线宽度 定义为10位,即1 024个4 bit单元。其中不同的音 阶对应的索引值如表l所示。
IOWR(base,2,data) #define lcd r.ead data(base)
IORD(base,3) 这样编写是为了和具体的硬件电路相对应,在 LCD模块的硬件描述语言中,液晶模块Rw和RS的 地址分配如下: assiP田LCD—Rw=address【0] assign LcD—RS=address[1] 其中Rs信号是命令与数据线,高电平表示目前 数据线上交换的是数据,低电平表示目前数据线上交 换的是命令。液晶模块根据这个信号做出正确的响 应。RW是电平信号,高电平表示对液晶模块执行读 取操作,低电平表示对液晶模块写入数据或命令。这 样便可以确定各读写操作对应于基地址的偏移量。
音阶频率产生电路在获取上面的音阶索引值对应 的分频系数后,通过可控计数器进行分频。分频电路 中的计数器进行减l计数,计数器的进位信号即为分 频信号。因为此信号的脉冲宽度极小,所以需要调整 占空比才使外部驱动电路提供足够的驱动蜂鸣器的功 率,而具体是对分频信号再进行二分频实现的。 2.1.3乐谱播放控制模块设计
LCD初始化
LcD定位到首行首列
写字符“jian pu:” 到第一行
色塑笆I LCD显爪换行
图2 LCD软件流程图
其中LCD初始化包括对LCD的功能设置,显示 开关设置和模式设置。LCD定位到首行首列是通过对 LcD写定位指令,将显示位置确定到第一行第一列。 写字符“jian pu”到第一行是通过写数据指令将字符 jian pu:和实时变化的乐谱显示在液晶屏的第一行。 低、中、高音分别用L、M、H表示并且加上对应的 音阶值进行显示。LCD显示换行是通过定位指令来实 现的。显示音频强度到第二行是用符号“>”的个数 表示音调的高低,一个表示低音1,两个表示低音2, 依次类推。
[4]王顺棋.稳压电源设计[M].北京:国防工业出版 社,1983.
[5] 赵学泉,张国华.电源电路[M].北京:电子工业出版 社,1995.
[6] 全国大学生电子设计竞赛组委会.全国大学生电子设计 竞赛获奖作品精选(1994一1999)[M].北京:北京理工 大学出版社,2003,
[7]何希才,姜余祥.新型稳压电源及其应用[M].北京: 国防工业出版社。2002.
Abstract A music water lamp controller based on FPGA is introduced and described by a hardware desc^ption language to complete music playing and synchI.0nous lalllp nashing respectiVely. An SOPC system is built and LCD module is inte铲ated to show scale value of real time music and f诧quency intensity.Finally,the whole system is real· ized at Altem’s FPGA multimedia development platfoⅡn—DE2 board.
首先需要在SOPC Builder中构建SOPC系统,按 要求依次添加NiosII处理器,4 kB的片上RAM,LCD 模块,4位输入口,给处理器分配复位向量地址和异 常向量地址p1。
LCD显示模块用来实现乐谱和音频强度的实时显
83
陶小苗,等:基于FPGA的音乐流水灯控制系统的设计
示,可以显示16×2个字符,其软件流程如图2 所示。
1 总体设计方案
音乐流水灯主要是点缀公共场合的装饰品,音乐 的播放和流水灯有节奏地闪烁,同时达到听觉和视觉 的完美结合,成为构成其必不可少的条件。要了解如 何产生不同音阶的音乐,首先要对乐音的特性有所了 解。乐音实际上是有固定频率的信号。在乐曲的构成 中,乐音的频率和持续的时间是其构成的要素。音阶 的频率可以通过高频时钟进行分频得到。音频的高低 可以通过外部的LED灯的闪烁来显示,这样在音乐 和流水灯的配合下可以使人产生强烈的节奏感。再辅
在对LcD模块进行显示控制时,用到了写控制命 令和写数据命令H]。这些命令是针对具体配置的硬件
电路而编写的.h头文件。LcD模块的头文件如下 #define lcd—write—cmd(base,data)
10WR(base,0,data) #define lcd—read—cmd(base)
IORD(base,1) #denne lcd—wdte—data(base,data)
由于此设计是基于DE2.70开发板之上的,因此 将对应的音阶输出,应用LED灯来显示流水灯闪烁 效果。根据音调”hight”的高低设置点亮灯的数量, 当”hi曲t”为低时播放低音信号,为高时播放中音信 号。如果要用到高音信号可以将”hi曲t”长度改为2 bit。选取板上的oLEDR[6..0]前7盏灯与低音信号 对应,oLEDR[13..7]与中音信号对应。在本设计中, 为了看到明显的流水灯变化,当发出中音音频时低音 显示灯全亮。 2.3 LCD显示模块设计
[1] 赵新民.智能仪器设计基础[M].哈尔滨:哈尔滨工业 大学出版社,1999.
[2] 刘选忠,杨拴科.实用电源技术手册一模块式电源分册 [M].沈阳:辽宁科学技术出版社,1999.
[3]刘和平,严利平,张学锋.TMs320LF240x DsP结构、
原理及应用[M].北京:北京航空航天大学出版 社,2002.
[8]杨振江.A/D,D/A转换器接口技术[M].西安:西安 电子科技大学出版社,1996.
[9]李朝青.单片机原理及接口技术[M].北京:北京航空 航天大学出版社,1998.
音乐播放就是通过外部的8 Hz时钟驱动,内部 以计数器进行计数、产生地址,送到ROM单元中作 为存储器地址,将对应地址的数据——音阶索引值 输出。
在本设计中,每个音的发出由另一个8 Hz的时 钟信号来控制。乐谱中的4分音符由4个时钟信号来 驱动。.每个时钟下,其对应的音阶输出以索引值的形 式存储在ROM中。文中ROM的地址线为10位,数
收稿日期:2010.05.10 作者简介:陶小苗(1985一),女,硕士研究生。研究方向: 电路与系统。
以LcD来显示音阶的高低长短,不懂乐理知识的人 便可以直观的看到不同音调对应的音阶。
总体设计要求如下: (1)分频主要是通过一个可控分频器实现的。采 用时钟的频率越高,分频系数越大,分频后的音阶频 率就越准确。但同时由于分频系数大使用的计数单元 增加,从而耗费更多的硬件逻辑单元,因此可以采取 一个较为适中的时钟频率12 MHz。 (2)经过分频后的信号是一个脉宽极窄的时钟信 号,必须对其进行脉冲宽度调整,增大占空比,才能 有效地驱动蜂鸣器。在脉冲宽度调整时会对此信号再 次二分频,所以在计算时,以乐音音阶的二倍频率去 求取在特定时钟信号下的分频系数,以便在调整占空 比后得到正确的音阶频率。 (3)乐曲的频率变化多端,对应的分频系数也不 断变化,因此需要将播放的乐曲的分频系数事先存放 在ROM中便于读取。如果将分频系数直接作为存储 码存放在寄存器中,势必会占有更大的容量。因此在 这里选取索引值来作为存储码以减小容量。 (4)开发平台上的LED灯数量有限,可以选用有 规律的闪烁,例如从左到右依次点亮、渐亮、渐灭 等;也可以用灯闪烁的多少来表示频率的大小。本设 计选用第二种。 图1为音乐流水灯控制系统的总统原理框图。可
表l音阶索引表
图l原理框图
2模块设计
2.1 乐曲播放控制模块 乐曲播放控制模块的主要功能是在一定的时钟信
号驱动下将事先存储在ROM里的乐谱所对应的索引 值依次输出,控制分频,并产生相应的分频信号频 率,以此来控制蜂鸣器的发声。 2.1.1音阶分频器的设计
为了能够在播放乐曲的同时显示当前音阶,用 LED的位数来指示当前音阶的高低音。程序中的音阶 分频系数通过索引值来进行选取,即在音乐播放过程 中由乐谱存储电路传递来的当前音阶的索引值。 2.1.2音阶频率产生的设计
万方数据
按照乐谱,将音阶对应的索引值连续地存储到 RoM中。例如,乐谱上一个4分音符的中音3,在 ROM存储器中对应的索引值是10,并且连续放置4 次,而一个8分音符5也就是半拍的5,则是将对应 索引值5在ROM中连续存放两次。播放时在播放时 钟(8 Hz)的驱动下,索引值不断地从ROM输出。索 引值送到音阶分频模块中,转换为计数初值输出,再 送到音阶分频产生模块中,作为计数初值,产生音阶 频率输出驱动蜂鸣器。这样,就能在蜂鸣器上发出要 播放的乐曲了。确定了乐谱后,即ROM的存储内容 后,就可以定制ROM,将其初始化文件指定为.mif 文件即可。 2.2流水灯控制模块设计
Keywords FPGA;LCD;hardware description language;DE2
FPGA是现场可编程门阵列的简称,它既有门阵 列器件的高度集成和通用性,又有可编程逻辑器件用 户可编程的灵活性¨。2 J。通过FPGA实现音乐流水灯 的控制,实质上就是将不同音阶与特定频率的方波信 号对应起来,以方波信号驱动蜂鸣器发出音乐,再根 据不同音阶来控制流水灯的闪烁。与借助微处理器实 现乐曲演奏相比,以纯硬件方式完成乐曲演奏电路更 直观。EDA工具和硬件描述语言发挥了强大功能, 提供了设计可能性。
Design of a Music Water Lamp Controller System Based on FPGA
1'ao Xiaomiao,Wang Ziting (Institute of Electronic肌d In缸111ation En百nee—ng,Lanzhou Jiaotong University,Lanzhou 730070,China)
鼋a叶技2010年第23卷第ll期
EJectmnic Scj.&T备c}L/Nov.15,2010
基于FPGA的音乐流水灯控制系统的设计
陶小苗,王紫婷
(兰州交通大学电子与信息工程学院,甘肃兰州730070) 摘要介绍一种基于FPGA的音乐流水灯控制器,采用硬件描述语言对其进行描述,分别实现乐曲的播放和同 步流水灯的闪烁。并构建一个s0Pc系统,集成LcD模块来显示实时音乐的音阶值和频率强度。最后在Altera公司的 FPGA多媒体开发平台DE2上进行实现。 关键词FPGA;LCD;硬件描述语言;DE2 中图分类号TP332.3 文献标识码A 文章编号1007—7820(2010)11—082—04
万方数据
号输入,可在FPGA内部设计分频器,将其分频到 8 Hz再使用,还可以在此基础上更改。另外还可以在 一个ROM种存储多首乐曲,通过按键选择播放乐曲。
(下转第87页)
傅莉:数控ቤተ መጻሕፍቲ ባይዱ流稳压电源设计
3 结束语
如前所述,虽然方案3比前两者有许多优点,但 方案1、方案2对于完成设计要求并非不可行,而且 在某些方面还具有优势,之所以采用方案4,一个很 重要的考虑是系统使用了单片机,使得进一步的功能 扩展较为方便。
3顶层设计和验证
系统的顶层设计就是将各个底层功能模块例化, 在顶层调用,进行正确的连接,构成最后的系统。整 个系统的硬件电路如图3所示。
图3系统硬件电路
至此,一个硬件音乐流水灯电路就完成了。外部 提供两路时钟信号(12 MHz和8 Hz),再将乐曲输出 端连接到带有驱动装置的蜂鸣器或扬声器上,就可以 欣赏所添加的乐曲了。若硬件设计上只有一路时钟信 甜
万方数据
陶小苗,等:基于FPGA的音乐流水灯控制系统的设计
以看到该系统包含乐曲播放控制模块,流水灯控制模 块和LcD显示模块3个模块。其中乐曲播放控制模 块分为乐谱播放控制模块,音阶分频模块和音阶频率 产生模块。
据线宽度为4位。ROM里存储的数据即各音节的索 引值,根据乐谱转换的需要,16个索引值即可满足 乐曲曲谱编写的需求,所以设置了4位数据线。地址 线的宽度主要取决于乐曲的长度。本设计中用到了约 520个4 bit单元,为了留有一定裕度,将数据线宽度 定义为10位,即1 024个4 bit单元。其中不同的音 阶对应的索引值如表l所示。
IOWR(base,2,data) #define lcd r.ead data(base)
IORD(base,3) 这样编写是为了和具体的硬件电路相对应,在 LCD模块的硬件描述语言中,液晶模块Rw和RS的 地址分配如下: assiP田LCD—Rw=address【0] assign LcD—RS=address[1] 其中Rs信号是命令与数据线,高电平表示目前 数据线上交换的是数据,低电平表示目前数据线上交 换的是命令。液晶模块根据这个信号做出正确的响 应。RW是电平信号,高电平表示对液晶模块执行读 取操作,低电平表示对液晶模块写入数据或命令。这 样便可以确定各读写操作对应于基地址的偏移量。
音阶频率产生电路在获取上面的音阶索引值对应 的分频系数后,通过可控计数器进行分频。分频电路 中的计数器进行减l计数,计数器的进位信号即为分 频信号。因为此信号的脉冲宽度极小,所以需要调整 占空比才使外部驱动电路提供足够的驱动蜂鸣器的功 率,而具体是对分频信号再进行二分频实现的。 2.1.3乐谱播放控制模块设计
LCD初始化
LcD定位到首行首列
写字符“jian pu:” 到第一行
色塑笆I LCD显爪换行
图2 LCD软件流程图
其中LCD初始化包括对LCD的功能设置,显示 开关设置和模式设置。LCD定位到首行首列是通过对 LcD写定位指令,将显示位置确定到第一行第一列。 写字符“jian pu”到第一行是通过写数据指令将字符 jian pu:和实时变化的乐谱显示在液晶屏的第一行。 低、中、高音分别用L、M、H表示并且加上对应的 音阶值进行显示。LCD显示换行是通过定位指令来实 现的。显示音频强度到第二行是用符号“>”的个数 表示音调的高低,一个表示低音1,两个表示低音2, 依次类推。
[4]王顺棋.稳压电源设计[M].北京:国防工业出版 社,1983.
[5] 赵学泉,张国华.电源电路[M].北京:电子工业出版 社,1995.
[6] 全国大学生电子设计竞赛组委会.全国大学生电子设计 竞赛获奖作品精选(1994一1999)[M].北京:北京理工 大学出版社,2003,
[7]何希才,姜余祥.新型稳压电源及其应用[M].北京: 国防工业出版社。2002.
Abstract A music water lamp controller based on FPGA is introduced and described by a hardware desc^ption language to complete music playing and synchI.0nous lalllp nashing respectiVely. An SOPC system is built and LCD module is inte铲ated to show scale value of real time music and f诧quency intensity.Finally,the whole system is real· ized at Altem’s FPGA multimedia development platfoⅡn—DE2 board.
首先需要在SOPC Builder中构建SOPC系统,按 要求依次添加NiosII处理器,4 kB的片上RAM,LCD 模块,4位输入口,给处理器分配复位向量地址和异 常向量地址p1。
LCD显示模块用来实现乐谱和音频强度的实时显
83
陶小苗,等:基于FPGA的音乐流水灯控制系统的设计
示,可以显示16×2个字符,其软件流程如图2 所示。
1 总体设计方案
音乐流水灯主要是点缀公共场合的装饰品,音乐 的播放和流水灯有节奏地闪烁,同时达到听觉和视觉 的完美结合,成为构成其必不可少的条件。要了解如 何产生不同音阶的音乐,首先要对乐音的特性有所了 解。乐音实际上是有固定频率的信号。在乐曲的构成 中,乐音的频率和持续的时间是其构成的要素。音阶 的频率可以通过高频时钟进行分频得到。音频的高低 可以通过外部的LED灯的闪烁来显示,这样在音乐 和流水灯的配合下可以使人产生强烈的节奏感。再辅
在对LcD模块进行显示控制时,用到了写控制命 令和写数据命令H]。这些命令是针对具体配置的硬件
电路而编写的.h头文件。LcD模块的头文件如下 #define lcd—write—cmd(base,data)
10WR(base,0,data) #define lcd—read—cmd(base)
IORD(base,1) #denne lcd—wdte—data(base,data)
由于此设计是基于DE2.70开发板之上的,因此 将对应的音阶输出,应用LED灯来显示流水灯闪烁 效果。根据音调”hight”的高低设置点亮灯的数量, 当”hi曲t”为低时播放低音信号,为高时播放中音信 号。如果要用到高音信号可以将”hi曲t”长度改为2 bit。选取板上的oLEDR[6..0]前7盏灯与低音信号 对应,oLEDR[13..7]与中音信号对应。在本设计中, 为了看到明显的流水灯变化,当发出中音音频时低音 显示灯全亮。 2.3 LCD显示模块设计