哈尔滨理工大学
单片机原理及接口技术
课程设计报告
设计题目:简易电子琴实验
专 业: 电机与电器
班 级: 电机10-1
姓 名: 刘国生
学 号: 1030350111
《单片机原理及接口技术》课程设计任务书
课题描述
随着社会发展,计算机硬件技术越来越多的应用到生活中的各个领域,人们对软硬件技术结合开发出来的产品的要求越来越迫切,需求日益增加,如今用软硬件结合设计电子产品已经成为了一大时尚。本设计编写的一个用开关模拟电子琴的程序,以8086作为处理器,用8255接八个开关K1~K8,做电子琴按键输入,以8253控制扬声器,拨动不同的开关,发出相应的音阶。其中K1代表静音,K2发si的音,K3发la的音,K4发sol的音, K5发fa的音, K6发mi的音,K7发re的音,K8发do的音。
开发工具:汇编语言 ;DICE-8086K实验系统。
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
一、课程设计目的
1、通过本次课程设计加深对单片机课程的认识和掌握,对单片机的应用做进一步了解。
2、通过本次课程设计提高学生的编程能力、调试能力、文献资料查阅能力,为毕业设计 和以后工作打基础。
3、学生的创新意识,巩固了解汇编语言知识并要掌握8255芯片的使用并熟悉实验系统。
4、掌握蜂鸣器的使用方法;掌握蜂鸣器的不同发音的方法。
二、实验内容
1、简易电子琴原理:
(1)蜂鸣器输入不同频率的方波,会发出不同的声音
(2)通过按键,由单边机控制产生不同频率的方波,从而发出不同的声音。
2、实验过程
(1)通过单边机,使G6区的1到7号键由低到高发出1到7的音阶。
三、功能简介
本简易电子琴的设计可实现的功能如下:
通过一个独立键盘可以实现对该音乐的播放和停止操作的控制。连续按下不同的按键,可以实现乐曲的演奏。当按下某一按键,会发出相应的音调。按下按键时,扬声器会发出声音,松开按键后,扬声器停止发声。
四、连线说明
1、D1区:CTRL——A3区:P1.7
G6区:JP65——A3区:JP51(P1口)
2、运行程序,按G6区的1——7号键,输出7种音阶
3、使用G6区的1——7号键,弹一首生日快乐
五、实验原理图
六、程序流程图
实验一简易电子琴试验
主程序:
节拍1子程序(手动按键时用) 节拍2子程序(手动按键时用)
节拍3子程序(手动按键时用) 节拍4子程序(手动按键时用)
节拍5子程序(手动按键时用) 节拍6子程序(手动按键时用)
节拍7子程序(手动按键时用) 节拍1子程序(自动放音时用,时间约0.2s)
节拍2子程序(自动放音时用,时间约0.2s) 节拍3子程序(自动放音时用,时间约0.2s)
节拍4子程序(自动放音时用,时间约0.2s) 节拍5子程序(自动放音时用,时间约0.2s)
节拍6子程序(自动放音时用,时间约0.2s) 节拍7子程序(自动放音时用,时间约0.2s)
七、实验程序
K1 BIT P1.0 ;按键1
K2 BIT P1.1 ;按键2
K3 BIT P1.2 ;按键3
K4 BIT P1.3 ;按键4
K5 BIT P1.4 ;按键5
K6 BIT P1.5 ;按键6
K7 BIT P1.6 ;按键7
Buzzer BIT P1.7 ;蜂鸣器
M1 EQU 17
M2 EQU 16
M3 EQU 15
M4 EQU 14
M5 EQU 13
M6 EQU 12
M7 EQU 11
ORG 0000H
LJMP START
ORG 0100H
START: MOV SP,#60H
MAIN: MOV P1,#0FFH ;P1口初始化
LCALL Demo ;播放一段演示音乐
MAIN_1: JB K1,MAIN_2 ;判断1号键是否按下,否则检测2号键
LCALL Sound1 ;发音子程序
MAIN_2: JB K2,MAIN_3 ;判断2号键是否按下,否则检测3号键
LCALL Sound2 ;发音子程序
MAIN_3: JB K3,MAIN_4 ;判断2号键是否按下,否则检测4号键
LCALL Sound3 ;发音子程序
MAIN_4: JB K4,MAIN_5 ;判断4号键是否按下,否则检测5号键
LCALL Sound4 ;发音子程序
MAIN_5: JB K5,MAIN_6 ;判断5号键是否按下,否则检测6号键
LCALL Sound5 ;发音子程序
MAIN_6: JB K6,MAIN_7 ;判断6号键是否按下,否则检测7号键
LCALL Sound6 ;发音子程序
MAIN_7: JB K7,MAIN_73 ;判断7号键是否按下,否则跳回检测1号键
LCALL Sound7 ;发音子程序
MAIN_73: SJMP MAIN_1 ;返回从1号键开始扫描
;播放演示音乐
Demo: MOV DPTR,#Music
Demo_1: CLR A
MOVC A,@A+DPTR
INC DPTR
JZ Demo_Ret
LCALL SoundMCU ;放音子程序
JMP Demo_1
Demo_Ret: RET
;乐曲:),0-结果标志
Music: DB M1,M2,M3,M4,M5,M6,M7,M7,M7,M6,M5,M4,M3,M2,M1
DB M1,M2,M1,M2,M3,M2,M3,M4,M3,M4,M5,M4,M5,M6,M5
DB M6,M7,M6,M7,M7,M6,M6,M6,0
;程序控制发音
SoundMCU: MOV R5,#40H ;控制放音时间
MOV R7,A
ACALL Time
MOV R6,A
SoundMCU_0: PUSH 06H
SoundMCU_1: ACALL MusicalScale
DJNZ R6,SoundMCU_1
POP 06H
DJNZ R5,SoundMCU_0
RET
;计算时长
Time: MOV B,#0FFH
XCH A,B
DIV AB
XCH A,B
CJNE A,#8,$+3
JC Time_1
INC B
Time_1: XCH A,B
RET
MusicalScale: MOV A,R7
MusicalScale1: CLR Buzzer ;1号键发音
LCALL Delay ;延时
DJNZ ACC,MusicalScale1
MOV A,R7
MusicalScale2: SETB Buzzer
LCALL Delay ;延时
DJNZ ACC,MusicalScale2
RET
;1号键发音
Sound1: MOV R7,#M1 ;发音频率,越大频率越低
Sound1_1: ACALL MusicalScale
JNB K1,Sound1_1
RET
;2号键发音
Sound2: MOV R7,#M2 ;发音频率,越大频率越低
Sound2_1: ACALL MusicalScale
JNB K2,Sound2_1
RET
;3号键发音
Sound3: MOV R7,#M3
Sound3_1: ACALL MusicalScale
JNB K3,Sound3_1
RET
;4号键发音
Sound4: MOV R7,#M4
Sound4_1: ACALL MusicalScale
JNB K4,Sound4_1
RET
;5号键发音
Sound5: MOV R7,#M5
Sound5_1: ACALL MusicalScale
JNB K5,Sound5_1
RET
;6号键发音
Sound6: MOV R7,#M6
Sound6_1: ACALL MusicalScale
JNB K6,Sound6_1
RET
;7号键发音
Sound7: MOV R7,#M7 ;发音频率,越大频率越低
Sound7_1: ACALL MusicalScale
JNB K7,Sound7_1
RET
;延时
Delay: NOP
RET
END
八、测试结果
此次系统设计结果较好,分别播动8个按键会发出8种高低不同的声音,如果送入音乐程序,则会播放歌曲。
九、总结
本次所设计的具有存储功能的电子琴是由STC89C52单片机、小键盘和扬声器组成的。利用该电子琴电路。可以自由地输入音符,从而使扬声器发出悦耳的音乐,也可以通过特定的按键式扬声器自动播放音乐。此外,通过改变按键式电子琴的控制程序,也可以设计不同类型的电子琴。还可以通过扩展RAM的方法增加内存容量,从而更大地发挥电子琴的存储功能。
经过老师对硬件连接图的纠正,自己又调整.了程序最后终于方仿真成功.心情很激动,一方面:觉得很有成就感;另一方面:收获很大,不但锻炼了编程的能力,而且通过编程对硬件的整个流程了解了。用单片机控制播放模块和按键控制模块制作出的电子琴,结构简单,可靠性高,并且价格低廉,具有实用的价值。这种电子琴能够支持单音和复音弹奏,如果与高品质的音源芯片连接,音质更可与高档电子琴相媲美。
通过本次课程设计,不仅让我更深入的了解《单片机原理及接口技术
》这门学科,更使自己有了继续探索的兴趣。对我来说,在之前的学习过程中没有能够很好的掌握单片机原理及接口技术的学习,在很多地方还有生疏和遗漏,并且在此次课程设计过程中也遇到困难不能自已独立解决。但是,通过这次程序设计,除了增加了自己的编程能力,提高了自己的动手能力。同时我也深感“认真严谨”这个词的重要性,一点点小的马虎,便会导致整个程序不能正常运行。在今后的学习中,我将继续保持严谨的学习态度。与此同时,在同学的帮助下,让我体会到了相互学习的重要性,而更让人难以忘怀的是在热烈讨论问题时,那激情横溢的场面。总之,此次课程设计让我获益匪浅。
十一、参考文献:
1 马家辰,孙玉德,MCS—51单片机原来及接口技术(修订版) 【M】 .哈尔滨:哈尔滨工业大学出版社,1998.
2 徐淑华,程退安,姚万生.单片微型机原理及应用【M】.哈尔滨工业大学出版社,1997.
3 李朝青.单片机原理及接口技术【M】.北京:北京航空航天大学出版社1999.
4 何利民,MCS-51单片机及应用系统设计 【M】.北京:北京航空航天大学出版社,1998.
5 张洪洞,蓝清华,单片机应用技术教程【M】,北京:清华大学出版社,1998.
第二篇:数字电子技术综合实验报告——简易电子琴
数字电子技术综合实验报告
2012--2013学年第二学期
姓名:
学号:
班级:
实验时间:
实验指导老师:
目录
一、设计任务·········································································2
二、设计方案·········································································2
三、系统框图·········································································3
四、方案实现·········································································3
1.乐曲演奏的原理······································································3
2.总体方案·················································································4
五、实验结果·········································································6
六、方案优化·········································································7
七、心得体会·········································································7 附录·························································································7
1. VHDL源程序·····································································7
2. 各层次原理图·································································35
3.编译报告··········································································40
1
题目: 简易电子琴设计
摘要
电子琴的设计大规模可编程逻辑器件(FPGA)作为系统的核心控制部分通过软件的设计编写然后进行软硬件的调试运行最终达到设计电路的乐器演奏、选歌及显示功能。设计中采用计数原理控制演奏器发声,对音乐发生所必须确定的音符和节拍分别用程序语言实现。可以用它来弹奏和播放乐曲。特点是设计思路简单、清晰。
关键字:电子琴CPLD
一、设计任务
1. 基本要求
(1) 具有一般弹奏功能;
(2) 自动播放功能;
(3) 数码显示音符功能。
2.发挥部分
(1)能通过选择键在多首歌曲中选择播放;
(2)输出增加功率放大电路,增加歌曲容量;
(3)增加音效或节拍可调;
(4)无线弹奏。
二、设计方案
采用大规模可编程逻辑器件(FPGA),利用quartusII,通过verilog代码实现简易电子琴演奏电路。
2
三、系统框图
四、方案实现
1.乐曲演奏的原理:
乐曲演奏的原理:组成乐曲的每个音符的频率值(音调)以及持续时间(音长)是乐曲能持续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号的频率的高低和持续的时间,就可以使扬声器发出持续的乐曲声。 ? 音调的控制
频率的高低决定了音调的高低。音乐的十二平均率规定:每两个八度音(如简谱中的中音1与高音1)之间的频率相差一倍。在两个八度音之间,又可分为十二个半音,每半个音的频率比为
。另外,音名A(简谱中的低音6)
的频率为440HZ,音名B到C之间,E到F之间为半音,其余为全音。由此可以计算出简谱中从低音1至高音1之间的每个音名对应的频率如图所示: 3
所有不同频率均从同一基准频率分频得到。将分频数四舍五入进行取整,并尽量减小误差。在本设计中选取6MHZ作为基准频率。从下表中可以看出最大分频系数为11468,采用14位二进制计数器分频可满足要求。此外还应给出预置数,对应不同的预置数,只需加载不同的预置数即可。采用加载预置数实现分频的方法比采用反馈复零法节省资源,实现起来更加容易。
? 音长的控制
音符的持续时间须根据音乐的速度及每个音符的节拍数来确定。如果设定全音符的持续时间为1S的话,假设产生4分音符,则产生四分频即可实现四分音符的时长,并提供4HZ分频器。如图为乐曲演奏的原理图,其中,乐谱产生电路用来控制音乐的音调和时长。控制音调通过设置计数器的预置数来实现,预置不同的数值会可以使计数器产生不同频率的信号,从而产生不同的音调。控制音长是通过控制计数器预置数的停留时间来实现的,预置数的停留时间越长,则该音符的演奏时间越长,如2分音符,在记谱时将该音符记录两次即可。
2.总体方案
系统设计运用了自上而下的模块化设计思想,整个系统可分为分频,播放,弹奏,显示四个部分。 1. 分频部分
分频部分为一个可预置数的加计数器、二分频器和预置数选择器。预置数选择器选择来自播放和弹奏部分的不同的预置数。从预置数起循环作加计数,计到16383时产生一个高电平,否则得到低电平,将信号再进行二分频便可得到方波信号。预制数不同,产生的方波信号频率也不同。因此,只要
4
改变加计数器的预置数,便可由6MHz的时钟信号分频得到不同频率的方波。将方波信号输出到扬声器,便可发出不同音调的声音。
2. 播放部分
播放部分为一个节拍发生器、预置数获得器和一个存储器。节拍发生器将一个64Hz的时钟信号分为32Hz,16Hz,8Hz和4Hz的信号,以适应不同歌曲的播放速度。预置数获得器将音阶信号转换为对应的预置数。存储器将歌曲的预置数传送给分频器,实现曲目的不同音调和音长。
3. 弹奏部分
弹奏部分有十四个按键,每个按键对应一个音阶,及对应一个预置数,将预置数传递给分频部分便可得到不同频率的方波,从而产生不同的音调。
4. 显示部分
在进行音乐播放或弹奏时,将产生的预置数传递给此模块。根据不同的预置数,产生不同的信号,输出到数码管,便可显示出音阶数字。
5. 功能仿真
(1) 综合
仿真结果:设置输入信号key1为高电平,此时设置key=8192,即
key2=1,key3~key15=0。功能为播放第一首歌,在仿真结束后,如图示,fout为蜂鸣器的输出,led为数码管显示。如图示也正确,所以本设计经过仿真证明正确可行。
5
(2) 总电路原理图
(3)引脚分配
输入信号:1个6MHz时钟信号,1个64Hz时钟信号,1个功能
选择按键,14个弹奏(选择)按键;
输出信号:3个数码管输出,一个蜂鸣器输出声音。
五、实验结果
在编译并仿真后下载,通过硬件测试,实验达到预期效果,当key1=0时,通过key2~key15这14个按键的键入蜂鸣器可以发出中音及高音的do~xi十四个音阶的音,即表示了电子琴的弹奏功能;当key1=1时,key2=1
时播放了第一首
6
歌;key3=1时,播放了第二首歌;key4=1时,播放第三首歌;key5=1时,播放了第四首歌。发出声音的同时,数码管可以显示不同的代表音符的数字。通过硬件的测试,所有的设计目标均实现。
六、方案优化
若采用正弦波代替方波来驱动扬声器将会有更好的效果。
七、心得体会
本次设计要用quartusII软件,由于之前对此软件不是太熟悉所以导致了一些错误和问题的发生,所以这次课程设计中认真学习了quartusII软件的具体使用步骤和操作流程,对所有可能出现的问题进行逐一攻破。通过这次实验,我不但熟悉了quartusII软件,也了解了开发的最基本流程和方法,也进一步加深了对Verilog编程语言的理解,最重要的是锻炼了我独立思考和分析的逻辑能力,通过从顶向下的设计方法,一步步实现,然后将整个设计串套起来,是我对设计的流程以及编程有了很大的提高。
附录:
1.VHDL源程序
modulechange_fenpinbi(clk_6m, prenum,tofout);//通过预置数改 变分频比; input clk_6m; input [13:0]prenum; outputtofout; wire clk_6m; reg [13:0]divider; regtofout;
always@(posedge clk_6m) begin
if(divider==16383) begin tofout=1'b1; divider=prenum; end else begin tofout=1'b0;
divider=divider+14'd1; end end
7
endmodule
moduleer_fen_pin(tofout,fout); //二分频模块; inputtofout; outputfout; regfout;
always@(posedgetofout) begin fout=~fout; end endmodule
modulefenpin(clk_64,clk_16,clk_8,clk_4); //获得适应不同曲目不同的时钟信号;input clk_64;
output clk_16,clk_8,clk_4; wire clk_64;
reg clk_32,clk_16,clk_8,clk_4; reg counter2; reg [1:0]counter4; always@(posedge clk_64) begin
clk_32=~clk_32; end
always@(posedge clk_32) begin
clk_16=~clk_16; if(counter2==1'b1) begin clk_8=~clk_8; counter2=1'b0; end else
counter2=counter2+1'b1; if(counter4==2'd3) begin clk_4=~clk_4; counter4=2'd0; end else
counter4=counter4+2'd1; end endmodule
moduleget_prenum(clk_sing,scale, prenum_s);//将音阶信号转换为预置数; inputclk_sing; input [4:0]scale; output [13:0]prenum_s; wireclk_sing; wire [4:0]scale; reg [13:0]prenum_s; always@(posedgeclk_sing)
8
begin case(scale)
5'd0:prenum_s=14'd16383; 5'd1:prenum_s=14'd4915; 5'd2:prenum_s=14'd6168; 5'd3:prenum_s=14'd7281; 5'd4:prenum_s=14'd7792; 5'd5:prenum_s=14'd8730; 5'd6:prenum_s=14'd9565; 5'd7:prenum_s=14'd10301; 5'd8:prenum_s=14'd10647; 5'd9:prenum_s=14'd11272; 5'd10:prenum_s=14'd11831; 5'd11:prenum_s=14'd12074; 5'd12:prenum_s=14'd12556; 5'd13:prenum_s=14'd12974; 5'd14:prenum_s=14'd13346; 5'd15:prenum_s=14'd13516; 5'd16:prenum_s=14'd13829; 5'd17:prenum_s=14'd14109; 5'd18:prenum_s=14'd14235; 5'd19:prenum_s=14'd14470; 5'd20:prenum_s=14'd14678; 5'd21:prenum_s=14'd14846; endcase end endmodule
modulepremusic(clk_16,clk_8,clk_4, key,clk_sing,scale); //预置曲目模块; input clk_16,clk_8,clk_4; input [13:0]key; output [4:0]scale; outputclk_sing; regclk_sing; reg [4:0]scale; reg [4:0]scale1; reg [4:0]scale2; reg [4:0]scale3; reg [4:0]scale4; reg [7:0]counter8_1; reg [7:0]counter8; reg [8:0]counter9; reg [8:0]counter9_1; always@(key)//选择曲目; begin case(key) 14'd8192: begin
scale=scale1;clk_sing=clk_4; end 14'd4096: Begin
9
scale=scale2;clk_sing=clk_4; end 14'd512: begin
scale=scale3;clk_sing=clk_8; end 14'd1024: Begin
scale=scale4;clk_sing=clk_8; end default:begin
scale=5'd0;clk_sing=clk_4; end endcase end
always@(posedge clk_4)//梁祝;begin
if(counter8==8'd134) counter8=8'd0; else
counter8=counter8+8'd1; case(counter8) 8'd0: scale1=5'd3; 8'd1: scale1=5'd3; 8'd2: scale1=5'd3; 8'd3: scale1=5'd3; 8'd4: scale1=5'd5;
8'd5: scale1=5'd5; 8'd6: scale1=5'd5; 8'd7: scale1=5'd6; 8'd8: scale1=5'd8; 8'd9: scale1=5'd8; 8'd10: scale1=5'd8; 8'd11: scale1=5'd9; 8'd12: scale1=5'd6; 8'd13: scale1=5'd8; 8'd14: scale1=5'd5; 8'd15: scale1=5'd5; 8'd16: scale1=5'd12; 8'd17: scale1=5'd12; 8'd18: scale1=5'd12; 8'd19: scale1=5'd15; 8'd20: scale1=5'd13; 8'd21: scale1=5'd12; 8'd22: scale1=5'd10; 8'd23: scale1=5'd12; 8'd24: scale1=5'd9; 8'd25: scale1=5'd9; 8'd26: scale1=5'd9; 8'd27: scale1=5'd9; 8'd28: scale1=5'd9; 8'd29: scale1=5'd9; 8'd30: scale1=5'd0; 8'd31: scale1=5'd0;
10
8'd32: scale1=5'd9; 8'd33: scale1=5'd9; 8'd34: scale1=5'd9; 8'd35: scale1=5'd10; 8'd36: scale1=5'd7; 8'd41: scale1=5'd5; 8'd42: scale1=5'd5; 8'd43: scale1=5'd6; 8'd44: scale1=5'd8; 8'd45: scale1=5'd8; 8'd46: scale1=5'd9; 8'd47: scale1=5'd9; 8'd48: scale1=5'd3; 8'd49: scale1=5'd3; 8'd50: scale1=5'd8; 8'd51: scale1=5'd8; 8'd52: scale1=5'd6; 8'd53: scale1=5'd5; 8'd54: scale1=5'd6; 8'd55: scale1=5'd8; 8'd56: scale1=5'd5; 8'd57: scale1=5'd5; 8'd58: scale1=5'd5; 8'd59: scale1=5'd5; 8'd60: scale1=5'd5; 8'd61: scale1=5'd5; 8'd62: scale1=5'd5;
8'd37: scale1=5'd7; 8'd38: scale1=5'd6; 8'd39: scale1=5'd6; 8'd40: scale1=5'd5;
8'd63: scale1=5'd5; 8'd64: scale1=5'd10; 8'd65: scale1=5'd10; 8'd66: scale1=5'd10; 8'd67: scale1=5'd12; 8'd68: scale1=5'd7; 8'd69: scale1=5'd7; 8'd70: scale1=5'd9; 8'd71: scale1=5'd9; 8'd72: scale1=5'd6; 8'd73: scale1=5'd8; 8'd74: scale1=5'd5; 8'd75: scale1=5'd5; 8'd76: scale1=5'd5; 8'd77: scale1=5'd5; 8'd78: scale1=5'd0; 8'd79: scale1=5'd0; 8'd80: scale1=5'd3; 8'd81: scale1=5'd5; 8'd82: scale1=5'd5; 8'd83: scale1=5'd3; 8'd84: scale1=5'd5;
11
8'd85: scale1=5'd6; 8'd86: scale1=5'd7; 8'd87: scale1=5'd9; 8'd88: scale1=5'd6; 8'd89: scale1=5'd6; 8'd90: scale1=5'd6; 8'd91: scale1=5'd6; 8'd92: scale1=5'd6; 8'd93: scale1=5'd6; 8'd94: scale1=5'd5; 8'd95: scale1=5'd6; 8'd96: scale1=5'd8; 8'd97: scale1=5'd8; 8'd98: scale1=5'd8; 8'd99: scale1=5'd9; 8'd100: scale1=5'd12; 8'd101: scale1=5'd12; 8'd102: scale1=5'd10; 8'd103: scale1=5'd10; 8'd104: scale1=5'd9; 8'd105: scale1=5'd9; 8'd106: scale1=5'd10; 8'd107: scale1=5'd9; 8'd108: scale1=5'd8; 8'd109: scale1=5'd8; 8'd110: scale1=5'd6; 8'd111: scale1=5'd5;
8'd112: scale1=5'd3; 8'd113: scale1=5'd3; 8'd114: scale1=5'd3; 8'd115: scale1=5'd3; 8'd116: scale1=5'd8; 8'd117: scale1=5'd8; 8'd118: scale1=5'd8; 8'd119: scale1=5'd8; 8'd120: scale1=5'd6; 8'd121: scale1=5'd8; 8'd122: scale1=5'd6; 8'd123: scale1=5'd5; 8'd124: scale1=5'd3; 8'd125: scale1=5'd5; 8'd126: scale1=5'd6; 8'd127: scale1=5'd8; 8'd128: scale1=5'd5; 8'd129: scale1=5'd5; 8'd130: scale1=5'd5; 8'd131: scale1=5'd5; 8'd132: scale1=5'd5; 8'd133: scale1=5'd5; 8'd134: scale1=5'd0; 8'd135: scale1=5'd0; default:scale1=5'd0; endcase end
12
always@(posedge clk_4)//小情歌; begin
if(counter9==9'd334) counter9=9'd0; else
counter9=counter9+9'd1; case(counter9) 9'd0: scale2=5'd0; 9'd1: scale2=5'd0; 9'd2: scale2=5'd15; 9'd3: scale2=5'd14; 9'd4: scale2=5'd15; 9'd5: scale2=5'd15; 9'd6: scale2=5'd14; 9'd7: scale2=5'd14; 9'd8: scale2=5'd15; 9'd9: scale2=5'd15; 9'd10: scale2=5'd14; 9'd11: scale2=5'd14; 9'd12: scale2=5'd12; 9'd13: scale2=5'd12; 9'd14: scale2=5'd10; 9'd15: scale2=5'd10; 9'd16: scale2=5'd12; 9'd17: scale2=5'd12; 9'd18: scale2=5'd12; 9'd19: scale2=5'd12;
9'd20: scale2=5'd14; 9'd21: scale2=5'd14; 9'd22: scale2=5'd14; 9'd23: scale2=5'd14; 9'd24: scale2=5'd13; 9'd25: scale2=5'd13; 9'd26: scale2=5'd13; 9'd27: scale2=5'd13; 9'd28: scale2=5'd13; 9'd29: scale2=5'd13; 9'd30: scale2=5'd13; 9'd31: scale2=5'd13; 9'd32: scale2=5'd0; 9'd33: scale2=5'd0; 9'd34: scale2=5'd15; 9'd35: scale2=5'd14; 9'd36: scale2=5'd15; 9'd37: scale2=5'd15; 9'd38: scale2=5'd14; 9'd39: scale2=5'd14; 9'd40: scale2=5'd15; 9'd41: scale2=5'd15; 9'd42: scale2=5'd14; 9'd43: scale2=5'd14; 9'd44: scale2=5'd15; 9'd45: scale2=5'd15; 9'd46: scale2=5'd17;
13
9'd47: scale2=5'd0; 9'd48: scale2=5'd17; 9'd49: scale2=5'd17; 9'd50: scale2=5'd17; 9'd51: scale2=5'd17; 9'd52: scale2=5'd17; 9'd53: scale2=5'd17; 9'd54: scale2=5'd17; 9'd55: scale2=5'd17; 9'd56: scale2=5'd0; 9'd57: scale2=5'd0; 9'd58: scale2=5'd0; 9'd59: scale2=5'd0; 9'd60: scale2=5'd0; 9'd61: scale2=5'd13; 9'd62: scale2=5'd15; 9'd63: scale2=5'd13; 9'd64: scale2=5'd15; 9'd65: scale2=5'd15; 9'd66: scale2=5'd15; 9'd67: scale2=5'd15; 9'd68: scale2=5'd15; 9'd69: scale2=5'd15; 9'd70: scale2=5'd16; 9'd71: scale2=5'd17; 9'd72: scale2=5'd16; 9'd73: scale2=5'd16;
9'd74: scale2=5'd16; 9'd75: scale2=5'd16; 9'd76: scale2=5'd0; 9'd77: scale2=5'd12; 9'd78: scale2=5'd14; 9'd79: scale2=5'd12; 9'd80: scale2=5'd14; 9'd81: scale2=5'd14; 9'd82: scale2=5'd14; 9'd83: scale2=5'd14; 9'd84: scale2=5'd16; 9'd85: scale2=5'd16; 9'd86: scale2=5'd15; 9'd87: scale2=5'd0; 9'd88: scale2=5'd15; 9'd89: scale2=5'd15; 9'd90: scale2=5'd15; 9'd91: scale2=5'd15; 9'd92: scale2=5'd15; 9'd93: scale2=5'd15; 9'd94: scale2=5'd15; 9'd95: scale2=5'd15; 9'd96: scale2=5'd17; 9'd97: scale2=5'd17; 9'd98: scale2=5'd17; 9'd99: scale2=5'd16; 9'd100: scale2=5'd16;
14
9'd101: scale2=5'd16; 9'd102: scale2=5'd15; 9'd103: scale2=5'd15; 9'd104: scale2=5'd16; 9'd105: scale2=5'd16; 9'd106: scale2=5'd16; 9'd107: scale2=5'd15; 9'd108: scale2=5'd15; 9'd109: scale2=5'd15; 9'd110: scale2=5'd12; 9'd111: scale2=5'd12; 9'd112: scale2=5'd12; 9'd113: scale2=5'd12; 9'd114: scale2=5'd12; 9'd115: scale2=5'd12; 9'd116: scale2=5'd12; 9'd117: scale2=5'd15; 9'd118: scale2=5'd14; 9'd119: scale2=5'd13; 9'd120: scale2=5'd12; 9'd121: scale2=5'd12; 9'd122: scale2=5'd12; 9'd123: scale2=5'd12; 9'd124: scale2=5'd12; 9'd125: scale2=5'd12; 9'd126: scale2=5'd12; 9'd127: scale2=5'd12;
9'd128: scale2=5'd0; 9'd129: scale2=5'd0; 9'd130: scale2=5'd15; 9'd131: scale2=5'd14; 9'd132: scale2=5'd15; 9'd133: scale2=5'd15; 9'd134: scale2=5'd14; 9'd135: scale2=5'd14; 9'd136: scale2=5'd15; 9'd137: scale2=5'd15; 9'd138: scale2=5'd14; 9'd139: scale2=5'd14; 9'd140: scale2=5'd12; 9'd141: scale2=5'd12; 9'd142: scale2=5'd10; 9'd143: scale2=5'd10; 9'd144: scale2=5'd12; 9'd145: scale2=5'd12; 9'd146: scale2=5'd12; 9'd147: scale2=5'd12; 9'd148: scale2=5'd14; 9'd149: scale2=5'd14; 9'd150: scale2=5'd14; 9'd151: scale2=5'd14; 9'd152: scale2=5'd15; 9'd153: scale2=5'd15; 9'd154: scale2=5'd15;
15
9'd155: scale2=5'd15; 9'd156: scale2=5'd15; 9'd157: scale2=5'd15; 9'd158: scale2=5'd15; 9'd159: scale2=5'd15; 9'd159: scale2=5'd0; 9'd160: scale2=5'd0; 9'd161: scale2=5'd15; 9'd162: scale2=5'd14; 9'd163: scale2=5'd15; 9'd164: scale2=5'd15; 9'd165: scale2=5'd14; 9'd166: scale2=5'd14; 9'd167: scale2=5'd15; 9'd168: scale2=5'd15; 9'd169: scale2=5'd14; 9'd170: scale2=5'd14; 9'd171: scale2=5'd15; 9'd172: scale2=5'd15; 9'd173: scale2=5'd17; 9'd174: scale2=5'd20; 9'd175: scale2=5'd19; 9'd176: scale2=5'd19; 9'd177: scale2=5'd19; 9'd178: scale2=5'd19; 9'd179: scale2=5'd19; 9'd180: scale2=5'd19;
9'd181: scale2=5'd19; 9'd182: scale2=5'd19; 9'd183: scale2=5'd19; 9'd184: scale2=5'd19; 9'd185: scale2=5'd19; 9'd186: scale2=5'd19; 9'd187: scale2=5'd0; 9'd188: scale2=5'd19; 9'd189: scale2=5'd18; 9'd190: scale2=5'd17; 9'd191: scale2=5'd18; 9'd192: scale2=5'd18; 9'd193: scale2=5'd18; 9'd194: scale2=5'd18; 9'd195: scale2=5'd18; 9'd196: scale2=5'd18; 9'd197: scale2=5'd19; 9'd198: scale2=5'd19; 9'd199: scale2=5'd16; 9'd200: scale2=5'd16; 9'd201: scale2=5'd16; 9'd202: scale2=5'd16; 9'd203: scale2=5'd0; 9'd204: scale2=5'd18; 9'd205: scale2=5'd17; 9'd206: scale2=5'd16; 9'd207: scale2=5'd17;
16
9'd208: scale2=5'd17; 9'd209: scale2=5'd17; 9'd210: scale2=5'd17; 9'd211: scale2=5'd16; 9'd212: scale2=5'd16; 9'd213: scale2=5'd16; 9'd214: scale2=5'd15; 9'd215: scale2=5'd15; 9'd216: scale2=5'd15; 9'd217: scale2=5'd15; 9'd218: scale2=5'd15; 9'd219: scale2=5'd15; 9'd220: scale2=5'd15; 9'd221: scale2=5'd15; 9'd222: scale2=5'd15; 9'd223: scale2=5'd17; 9'd224: scale2=5'd17; 9'd225: scale2=5'd17; 9'd226: scale2=5'd16; 9'd227: scale2=5'd16; 9'd228: scale2=5'd16; 9'd229: scale2=5'd17; 9'd230: scale2=5'd17; 9'd231: scale2=5'd18; 9'd232: scale2=5'd18; 9'd233: scale2=5'd18; 9'd234: scale2=5'd17;
9'd235: scale2=5'd17; 9'd236: scale2=5'd17; 9'd237: scale2=5'd15; 9'd238: scale2=5'd15; 9'd239: scale2=5'd16; 9'd240: scale2=5'd16; 9'd241: scale2=5'd16; 9'd242: scale2=5'd16; 9'd243: scale2=5'd16; 9'd244: scale2=5'd16; 9'd245: scale2=5'd16; 9'd246: scale2=5'd16; 9'd247: scale2=5'd0; 9'd248: scale2=5'd0; 9'd249: scale2=5'd12; 9'd250: scale2=5'd12; 9'd251: scale2=5'd0; 9'd252: scale2=5'd13; 9'd253: scale2=5'd15; 9'd254: scale2=5'd15; 9'd255: scale2=5'd0; 9'd256: scale2=5'd17; 9'd257: scale2=5'd17; 9'd258: scale2=5'd0; 9'd259: scale2=5'd17; 9'd260: scale2=5'd17; 9'd261: scale2=5'd16;
17
9'd262: scale2=5'd15; 9'd263: scale2=5'd17; 9'd264: scale2=5'd16; 9'd265: scale2=5'd15; 9'd266: scale2=5'd17; 9'd267: scale2=5'd17; 9'd268: scale2=5'd16; 9'd269: scale2=5'd15; 9'd270: scale2=5'd0; 9'd271: scale2=5'd15; 9'd272: scale2=5'd0; 9'd273: scale2=5'd15; 9'd274: scale2=5'd13; 9'd275: scale2=5'd15; 9'd276: scale2=5'd16; 9'd277: scale2=5'd17; 9'd278: scale2=5'd0; 9'd279: scale2=5'd17; 9'd280: scale2=5'd17; 9'd281: scale2=5'd17; 9'd282: scale2=5'd17; 9'd283: scale2=5'd0; 9'd284: scale2=5'd12; 9'd285: scale2=5'd13; 9'd286: scale2=5'd15; 9'd287: scale2=5'd0; 9'd288: scale2=5'd0;
9'd289: scale2=5'd15; 9'd290: scale2=5'd13; 9'd291: scale2=5'd15; 9'd292: scale2=5'd16; 9'd293: scale2=5'd17; 9'd294: scale2=5'd16; 9'd295: scale2=5'd17; 9'd296: scale2=5'd12; 9'd297: scale2=5'd12; 9'd298: scale2=5'd12; 9'd299: scale2=5'd0; 9'd300: scale2=5'd12; 9'd301: scale2=5'd13; 9'd302: scale2=5'd15; 9'd303: scale2=5'd0; 9'd304: scale2=5'd0; 9'd305: scale2=5'd15; 9'd306: scale2=5'd13; 9'd307: scale2=5'd15; 9'd308: scale2=5'd16; 9'd309: scale2=5'd17; 9'd310: scale2=5'd16; 9'd311: scale2=5'd17; 9'd312: scale2=5'd0; 9'd313: scale2=5'd16; 9'd314: scale2=5'd16; 9'd315: scale2=5'd15;
18
9'd316: scale2=5'd15; 9'd317: scale2=5'd16; 9'd318: scale2=5'd16; 9'd319: scale2=5'd15; 9'd320: scale2=5'd15; 9'd321: scale2=5'd15; 9'd322: scale2=5'd15; 9'd323: scale2=5'd15; 9'd324: scale2=5'd15; 9'd325: scale2=5'd15; 9'd326: scale2=5'd15; 9'd327: scale2=5'd15; 9'd328: scale2=5'd15; 9'd329: scale2=5'd15; 9'd330: scale2=5'd15; 9'd331: scale2=5'd15; 9'd332: scale2=5'd15; 9'd333: scale2=5'd15; 9'd334: scale2=5'd15; default:scale2=5'd0; endcase end
always@(posedge clk_8)//真的爱你;begin
if(counter8_1==8'd159) counter8_1=8'd0; else
counter8_1=counter8_1+8'd1; case(counter8_1) 8'd0: scale3=5'd0; 8'd1: scale3=5'd0; 8'd2: scale3=5'd0; 8'd3: scale3=5'd0; 8'd4: scale3=5'd0; 8'd5: scale3=5'd0; 8'd6: scale3=5'd0; 8'd7: scale3=5'd0; 8'd8: scale3=5'd0; 8'd9: scale3=5'd0; 8'd10: scale3=5'd5; 8'd11: scale3=5'd5; 8'd12: scale3=5'd8; 8'd13: scale3=5'd8; 8'd14: scale3=5'd9; 8'd15: scale3=5'd9; 8'd16: scale3=5'd10; 8'd17: scale3=5'd10; 8'd18: scale3=5'd10; 8'd19: scale3=5'd0; 8'd20: scale3=5'd10; 8'd21: scale3=5'd9; 8'd22: scale3=5'd8; 8'd23: scale3=5'd9; 8'd24: scale3=5'd9;
19
8'd25: scale3=5'd9; 8'd26: scale3=5'd9; 8'd27: scale3=5'd9; 8'd28: scale3=5'd9; 8'd29: scale3=5'd0; 8'd30: scale3=5'd9; 8'd31: scale3=5'd10; 8'd32: scale3=5'd9; 8'd33: scale3=5'd9; 8'd34: scale3=5'd8; 8'd35: scale3=5'd8; 8'd36: scale3=5'd7; 8'd37: scale3=5'd8; 8'd38: scale3=5'd7; 8'd39: scale3=5'd7; 8'd40: scale3=5'd6; 8'd41: scale3=5'd6; 8'd42: scale3=5'd6; 8'd43: scale3=5'd6; 8'd44: scale3=5'd6; 8'd45: scale3=5'd6; 8'd46: scale3=5'd8; 8'd47: scale3=5'd9; 8'd48: scale3=5'd10; 8'd49: scale3=5'd10; 8'd50: scale3=5'd10; 8'd51: scale3=5'd10;
8'd52: scale3=5'd10; 8'd53: scale3=5'd9; 8'd54: scale3=5'd8; 8'd55: scale3=5'd9; 8'd56: scale3=5'd9; 8'd57: scale3=5'd9; 8'd58: scale3=5'd9; 8'd59: scale3=5'd9; 8'd60: scale3=5'd9; 8'd61: scale3=5'd8; 8'd62: scale3=5'd7; 8'd63: scale3=5'd8; 8'd64: scale3=5'd8; 8'd65: scale3=5'd8; 8'd66: scale3=5'd8; 8'd67: scale3=5'd5; 8'd68: scale3=5'd8; 8'd69: scale3=5'd12; 8'd70: scale3=5'd7; 8'd71: scale3=5'd8; 8'd72: scale3=5'd12; 8'd73: scale3=5'd12; 8'd74: scale3=5'd5; 8'd75: scale3=5'd5; 8'd76: scale3=5'd8; 8'd77: scale3=5'd8; 8'd78: scale3=5'd9;
20
8'd79: scale3=5'd9; 8'd80: scale3=5'd10; 8'd81: scale3=5'd10; 8'd82: scale3=5'd10; 8'd83: scale3=5'd0; 8'd84: scale3=5'd10; 8'd85: scale3=5'd9; 8'd86: scale3=5'd8; 8'd87: scale3=5'd9; 8'd88: scale3=5'd9; 8'd89: scale3=5'd9; 8'd90: scale3=5'd9; 8'd91: scale3=5'd9; 8'd92: scale3=5'd9; 8'd93: scale3=5'd0; 8'd94: scale3=5'd9; 8'd95: scale3=5'd10; 8'd96: scale3=5'd9; 8'd97: scale3=5'd9; 8'd98: scale3=5'd8; 8'd99: scale3=5'd8; 8'd100: scale3=5'd7; 8'd101: scale3=5'd8; 8'd102: scale3=5'd7; 8'd103: scale3=5'd7; 8'd104: scale3=5'd6; 8'd105: scale3=5'd6;
8'd106: scale3=5'd6; 8'd107: scale3=5'd6; 8'd108: scale3=5'd6; 8'd109: scale3=5'd6; 8'd110: scale3=5'd8; 8'd111: scale3=5'd9; 8'd112: scale3=5'd10; 8'd113: scale3=5'd10; 8'd114: scale3=5'd10; 8'd115: scale3=5'd10; 8'd116: scale3=5'd10; 8'd117: scale3=5'd9; 8'd118: scale3=5'd8; 8'd119: scale3=5'd9; 8'd120: scale3=5'd9; 8'd121: scale3=5'd9; 8'd122: scale3=5'd9; 8'd123: scale3=5'd9; 8'd124: scale3=5'd9; 8'd125: scale3=5'd8; 8'd126: scale3=5'd7; 8'd127: scale3=5'd8; 8'd128: scale3=5'd8; 8'd129: scale3=5'd8; 8'd130: scale3=5'd8; 8'd131: scale3=5'd5; 8'd132: scale3=5'd8;
21
8'd133: scale3=5'd12; 8'd134: scale3=5'd7; 8'd135: scale3=5'd8; 8'd136: scale3=5'd12; default:scale3=5'd0; endcase end
always@(posedge clk_8)//星月神话; 8'd137: scale3=5'd12; 8'd138: scale3=5'd5; 8'd139: scale3=5'd5; 8'd140: scale3=5'd8; 8'd141: scale3=5'd8; 8'd142: scale3=5'd9; 8'd143: scale3=5'd9; 8'd144: scale3=5'd8; 8'd145: scale3=5'd8; 8'd146: scale3=5'd8; 8'd147: scale3=5'd8; 8'd148: scale3=5'd5; 8'd149: scale3=5'd5; 8'd150: scale3=5'd4; 8'd151: scale3=5'd4; 8'd152: scale3=5'd3; 8'd153: scale3=5'd3; 8'd154: scale3=5'd0; 8'd155: scale3=5'd0; 8'd156: scale3=5'd0; 8'd157: scale3=5'd0; 8'd158: scale3=5'd0; 8'd159: scale3=5'd0;
begin
if(counter9_1==9'd479) counter9_1=9'd0; else
counter9_1=counter9_1+9'd1; case(counter9_1) 9'd0: scale4=5'd10; 9'd1: scale4=5'd10; 9'd2: scale4=5'd10; 9'd3: scale4=5'd10; 9'd4: scale4=5'd9; 9'd5: scale4=5'd9; 9'd6: scale4=5'd8; 9'd7: scale4=5'd8; 9'd8: scale4=5'd9; 9'd9: scale4=5'd9; 9'd10: scale4=5'd9; 9'd11: scale4=5'd9; 9'd12: scale4=5'd8; 9'd13: scale4=5'd8; 9'd14: scale4=5'd7; 9'd15: scale4=5'd7; 9'd16: scale4=5'd8;
22
9'd17: scale4=5'd8; 9'd18: scale4=5'd8; 9'd19: scale4=5'd8; 9'd20: scale4=5'd7; 9'd21: scale4=5'd7; 9'd22: scale4=5'd6; 9'd23: scale4=5'd6; 9'd24: scale4=5'd5; 9'd25: scale4=5'd5; 9'd26: scale4=5'd5; 9'd27: scale4=5'd5; 9'd28: scale4=5'd5; 9'd29: scale4=5'd5; 9'd30: scale4=5'd5; 9'd31: scale4=5'd5; 9'd32: scale4=5'd6; 9'd33: scale4=5'd6; 9'd34: scale4=5'd6; 9'd35: scale4=5'd6; 9'd36: scale4=5'd8; 9'd37: scale4=5'd8; 9'd38: scale4=5'd7; 9'd39: scale4=5'd7; 9'd40: scale4=5'd7; 9'd41: scale4=5'd7; 9'd42: scale4=5'd7; 9'd43: scale4=5'd7;
9'd44: scale4=5'd5; 9'd45: scale4=5'd5; 9'd46: scale4=5'd3; 9'd47: scale4=5'd3; 9'd48: scale4=5'd3; 9'd49: scale4=5'd3; 9'd50: scale4=5'd3; 9'd51: scale4=5'd3; 9'd52: scale4=5'd3; 9'd53: scale4=5'd3; 9'd54: scale4=5'd3; 9'd55: scale4=5'd3; 9'd56: scale4=5'd3; 9'd57: scale4=5'd3; 9'd58: scale4=5'd3; 9'd59: scale4=5'd3; 9'd60: scale4=5'd8; 9'd61: scale4=5'd8; 9'd62: scale4=5'd9; 9'd63: scale4=5'd9; 9'd64: scale4=5'd10; 9'd65: scale4=5'd10; 9'd66: scale4=5'd10; 9'd67: scale4=5'd10; 9'd68: scale4=5'd9; 9'd69: scale4=5'd9; 9'd70: scale4=5'd8;
23
9'd71: scale4=5'd8; 9'd72: scale4=5'd9; 9'd73: scale4=5'd9; 9'd74: scale4=5'd9; 9'd75: scale4=5'd9; 9'd76: scale4=5'd8; 9'd77: scale4=5'd8; 9'd78: scale4=5'd7; 9'd79: scale4=5'd7; 9'd80: scale4=5'd8; 9'd81: scale4=5'd8; 9'd82: scale4=5'd8; 9'd83: scale4=5'd8; 9'd84: scale4=5'd7; 9'd85: scale4=5'd7; 9'd86: scale4=5'd6; 9'd87: scale4=5'd6; 9'd88: scale4=5'd5; 9'd89: scale4=5'd5; 9'd90: scale4=5'd5; 9'd91: scale4=5'd5; 9'd92: scale4=5'd5; 9'd93: scale4=5'd5; 9'd94: scale4=5'd5; 9'd95: scale4=5'd5; 9'd96: scale4=5'd6; 9'd97: scale4=5'd6;
9'd98: scale4=5'd6; 9'd99: scale4=5'd6; 9'd100: scale4=5'd10; 9'd101: scale4=5'd10; 9'd102: scale4=5'd7; 9'd103: scale4=5'd7; 9'd104: scale4=5'd7; 9'd105: scale4=5'd7; 9'd106: scale4=5'd7; 9'd107: scale4=5'd7; 9'd108: scale4=5'd8; 9'd109: scale4=5'd8; 9'd110: scale4=5'd9; 9'd111: scale4=5'd9; 9'd112: scale4=5'd8; 9'd113: scale4=5'd8; 9'd114: scale4=5'd8; 9'd115: scale4=5'd8; 9'd116: scale4=5'd8; 9'd117: scale4=5'd8; 9'd118: scale4=5'd8; 9'd119: scale4=5'd8; 9'd120: scale4=5'd8; 9'd121: scale4=5'd8; 9'd122: scale4=5'd8; 9'd123: scale4=5'd8; 9'd124: scale4=5'd8;
24
9'd125: scale4=5'd8; 9'd126: scale4=5'd8; 9'd127: scale4=5'd8; 9'd128: scale4=5'd6; 9'd129: scale4=5'd6; 9'd130: scale4=5'd6; 9'd131: scale4=5'd6; 9'd132: scale4=5'd6; 9'd133: scale4=5'd6; 9'd134: scale4=5'd8; 9'd135: scale4=5'd8; 9'd136: scale4=5'd7; 9'd137: scale4=5'd7; 9'd138: scale4=5'd7; 9'd139: scale4=5'd7; 9'd140: scale4=5'd8; 9'd141: scale4=5'd8; 9'd142: scale4=5'd9; 9'd143: scale4=5'd9; 9'd144: scale4=5'd10; 9'd145: scale4=5'd10; 9'd146: scale4=5'd10; 9'd147: scale4=5'd10; 9'd148: scale4=5'd10; 9'd149: scale4=5'd10; 9'd150: scale4=5'd12; 9'd151: scale4=5'd12;
9'd152: scale4=5'd10; 9'd153: scale4=5'd10; 9'd154: scale4=5'd10; 9'd155: scale4=5'd10; 9'd156: scale4=5'd10; 9'd157: scale4=5'd10; 9'd158: scale4=5'd10; 9'd159: scale4=5'd10; 9'd160: scale4=5'd6; 9'd161: scale4=5'd6; 9'd162: scale4=5'd6; 9'd163: scale4=5'd6; 9'd164: scale4=5'd6; 9'd165: scale4=5'd6; 9'd166: scale4=5'd8; 9'd167: scale4=5'd8; 9'd168: scale4=5'd7; 9'd169: scale4=5'd7; 9'd170: scale4=5'd7; 9'd171: scale4=5'd7; 9'd172: scale4=5'd8; 9'd173: scale4=5'd8; 9'd174: scale4=5'd9; 9'd175: scale4=5'd9; 9'd176: scale4=5'd8; 9'd177: scale4=5'd8; 9'd178: scale4=5'd8;
25
9'd179: scale4=5'd8; 9'd180: scale4=5'd8; 9'd181: scale4=5'd8; 9'd182: scale4=5'd8; 9'd183: scale4=5'd8; 9'd184: scale4=5'd8; 9'd185: scale4=5'd8; 9'd186: scale4=5'd8; 9'd187: scale4=5'd8; 9'd188: scale4=5'd8; 9'd189: scale4=5'd8; 9'd190: scale4=5'd9; 9'd191: scale4=5'd9; 9'd192: scale4=5'd10; 9'd193: scale4=5'd10; 9'd194: scale4=5'd10; 9'd195: scale4=5'd10; 9'd196: scale4=5'd9; 9'd197: scale4=5'd9; 9'd198: scale4=5'd8; 9'd199: scale4=5'd8; 9'd200: scale4=5'd9; 9'd201: scale4=5'd9; 9'd202: scale4=5'd9; 9'd203: scale4=5'd9; 9'd204: scale4=5'd8; 9'd205: scale4=5'd8;
9'd206: scale4=5'd7; 9'd207: scale4=5'd7; 9'd208: scale4=5'd8; 9'd209: scale4=5'd8; 9'd210: scale4=5'd8; 9'd211: scale4=5'd8; 9'd212: scale4=5'd7; 9'd213: scale4=5'd7; 9'd214: scale4=5'd6; 9'd215: scale4=5'd6; 9'd216: scale4=5'd5; 9'd217: scale4=5'd5; 9'd218: scale4=5'd5; 9'd219: scale4=5'd5; 9'd220: scale4=5'd5; 9'd221: scale4=5'd5; 9'd222: scale4=5'd5; 9'd223: scale4=5'd5; 9'd224: scale4=5'd6; 9'd225: scale4=5'd6; 9'd226: scale4=5'd6; 9'd227: scale4=5'd6; 9'd228: scale4=5'd8; 9'd229: scale4=5'd8; 9'd230: scale4=5'd7; 9'd231: scale4=5'd7; 9'd232: scale4=5'd7;
26
9'd233: scale4=5'd7; 9'd234: scale4=5'd7; 9'd235: scale4=5'd7; 9'd236: scale4=5'd8; 9'd237: scale4=5'd8; 9'd238: scale4=5'd9; 9'd239: scale4=5'd9; 9'd240: scale4=5'd10; 9'd241: scale4=5'd10; 9'd242: scale4=5'd10; 9'd243: scale4=5'd10; 9'd244: scale4=5'd10; 9'd245: scale4=5'd10; 9'd246: scale4=5'd9; 9'd247: scale4=5'd9; 9'd248: scale4=5'd9; 9'd249: scale4=5'd9; 9'd250: scale4=5'd9; 9'd251: scale4=5'd9; 9'd252: scale4=5'd8; 9'd253: scale4=5'd8; 9'd254: scale4=5'd9; 9'd255: scale4=5'd9; 9'd256: scale4=5'd10; 9'd257: scale4=5'd10; 9'd258: scale4=5'd10; 9'd259: scale4=5'd10;
9'd260: scale4=5'd9; 9'd261: scale4=5'd9; 9'd262: scale4=5'd8; 9'd263: scale4=5'd8; 9'd264: scale4=5'd9; 9'd265: scale4=5'd9; 9'd266: scale4=5'd9; 9'd267: scale4=5'd9; 9'd268: scale4=5'd8; 9'd269: scale4=5'd8; 9'd270: scale4=5'd7; 9'd271: scale4=5'd7; 9'd272: scale4=5'd8; 9'd273: scale4=5'd8; 9'd274: scale4=5'd8; 9'd275: scale4=5'd8; 9'd276: scale4=5'd7; 9'd277: scale4=5'd7; 9'd278: scale4=5'd6; 9'd279: scale4=5'd6; 9'd280: scale4=5'd5; 9'd281: scale4=5'd5; 9'd282: scale4=5'd5; 9'd283: scale4=5'd5; 9'd284: scale4=5'd8; 9'd285: scale4=5'd8; 9'd286: scale4=5'd5;
27
9'd287: scale4=5'd5; 9'd288: scale4=5'd6; 9'd289: scale4=5'd6; 9'd290: scale4=5'd6; 9'd291: scale4=5'd6; 9'd292: scale4=5'd10; 9'd293: scale4=5'd10; 9'd294: scale4=5'd7; 9'd295: scale4=5'd7; 9'd296: scale4=5'd7; 9'd297: scale4=5'd7; 9'd298: scale4=5'd7; 9'd299: scale4=5'd7; 9'd300: scale4=5'd8; 9'd301: scale4=5'd8; 9'd302: scale4=5'd9; 9'd303: scale4=5'd9; 9'd304: scale4=5'd8; 9'd305: scale4=5'd8; 9'd306: scale4=5'd8; 9'd307: scale4=5'd8; 9'd308: scale4=5'd8; 9'd309: scale4=5'd8; 9'd310: scale4=5'd8; 9'd311: scale4=5'd8; 9'd312: scale4=5'd8; 9'd313: scale4=5'd8;
9'd314: scale4=5'd8; 9'd315: scale4=5'd8; 9'd316: scale4=5'd10; 9'd317: scale4=5'd10; 9'd318: scale4=5'd12; 9'd319: scale4=5'd12; 9'd320: scale4=5'd13; 9'd321: scale4=5'd13; 9'd322: scale4=5'd13; 9'd323: scale4=5'd13; 9'd324: scale4=5'd13; 9'd325: scale4=5'd13; 9'd326: scale4=5'd13; 9'd327: scale4=5'd13; 9'd328: scale4=5'd12; 9'd329: scale4=5'd12; 9'd330: scale4=5'd9; 9'd331: scale4=5'd9; 9'd332: scale4=5'd9; 9'd333: scale4=5'd9; 9'd334: scale4=5'd12; 9'd335: scale4=5'd12; 9'd336: scale4=5'd10; 9'd337: scale4=5'd10; 9'd338: scale4=5'd8; 9'd339: scale4=5'd8; 9'd340: scale4=5'd8;
28
9'd341: scale4=5'd8; 9'd342: scale4=5'd6; 9'd343: scale4=5'd6; 9'd344: scale4=5'd6; 9'd345: scale4=5'd6; 9'd346: scale4=5'd6; 9'd347: scale4=5'd6; 9'd348: scale4=5'd6; 9'd349: scale4=5'd6; 9'd350: scale4=5'd7; 9'd351: scale4=5'd7; 9'd352: scale4=5'd8; 9'd353: scale4=5'd8; 9'd354: scale4=5'd8; 9'd355: scale4=5'd8; 9'd356: scale4=5'd10; 9'd357: scale4=5'd10; 9'd358: scale4=5'd9; 9'd359: scale4=5'd9; 9'd360: scale4=5'd9; 9'd361: scale4=5'd9; 9'd362: scale4=5'd9; 9'd363: scale4=5'd9; 9'd364: scale4=5'd12; 9'd365: scale4=5'd12; 9'd366: scale4=5'd10; 9'd367: scale4=5'd10;
9'd368: scale4=5'd10; 9'd369: scale4=5'd10; 9'd370: scale4=5'd10; 9'd371: scale4=5'd10; 9'd372: scale4=5'd10; 9'd373: scale4=5'd10; 9'd374: scale4=5'd10; 9'd375: scale4=5'd10; 9'd376: scale4=5'd10; 9'd377: scale4=5'd10; 9'd378: scale4=5'd10; 9'd379: scale4=5'd10; 9'd380: scale4=5'd10; 9'd381: scale4=5'd10; 9'd382: scale4=5'd12; 9'd383: scale4=5'd12; 9'd384: scale4=5'd13; 9'd385: scale4=5'd13; 9'd386: scale4=5'd13; 9'd387: scale4=5'd13; 9'd388: scale4=5'd13; 9'd389: scale4=5'd13; 9'd390: scale4=5'd13; 9'd391: scale4=5'd13; 9'd392: scale4=5'd12; 9'd393: scale4=5'd12; 9'd394: scale4=5'd9;
29
9'd395: scale4=5'd9; 9'd396: scale4=5'd9; 9'd397: scale4=5'd9; 9'd398: scale4=5'd12; 9'd399: scale4=5'd12; 9'd400: scale4=5'd10; 9'd401: scale4=5'd10; 9'd402: scale4=5'd8; 9'd403: scale4=5'd8; 9'd404: scale4=5'd8; 9'd405: scale4=5'd8; 9'd406: scale4=5'd6; 9'd407: scale4=5'd6; 9'd408: scale4=5'd6; 9'd409: scale4=5'd6; 9'd410: scale4=5'd6; 9'd411: scale4=5'd6; 9'd412: scale4=5'd10; 9'd413: scale4=5'd10; 9'd414: scale4=5'd9; 9'd435: scale4=5'd6; 9'd436: scale4=5'd6; 9'd437: scale4=5'd6; 9'd438: scale4=5'd6; 9'd439: scale4=5'd6; 9'd440: scale4=5'd6; 9'd441: scale4=5'd6;
9'd415: scale4=5'd9; 9'd416: scale4=5'd8; 9'd417: scale4=5'd8; 9'd418: scale4=5'd8; 9'd419: scale4=5'd8; 9'd420: scale4=5'd10; 9'd421: scale4=5'd10; 9'd422: scale4=5'd9; 9'd423: scale4=5'd9; 9'd424: scale4=5'd9; 9'd425: scale4=5'd9; 9'd426: scale4=5'd9; 9'd427: scale4=5'd9; 9'd428: scale4=5'd10; 9'd429: scale4=5'd10; 9'd430: scale4=5'd6; 9'd431: scale4=5'd6; 9'd432: scale4=5'd6; 9'd433: scale4=5'd6; 9'd434: scale4=5'd6; 9'd442: scale4=5'd6; 9'd443: scale4=5'd6; 9'd444: scale4=5'd0; 9'd445: scale4=5'd0; 9'd446: scale4=5'd0; 9'd447: scale4=5'd0; 9'd448: scale4=5'd6;
30
9'd449: scale4=5'd6; 9'd450: scale4=5'd6; 9'd451: scale4=5'd6; 9'd452: scale4=5'd6; 9'd453: scale4=5'd6; 9'd454: scale4=5'd6; 9'd455: scale4=5'd6; 9'd456: scale4=5'd6; 9'd457: scale4=5'd6; 9'd458: scale4=5'd6; 9'd459: scale4=5'd6; 9'd460: scale4=5'd10; 9'd461: scale4=5'd10; 9'd462: scale4=5'd12; 9'd463: scale4=5'd12; 9'd464: scale4=5'd6; 9'd465: scale4=5'd6; 9'd466: scale4=5'd6; 9'd467: scale4=5'd6; 9'd468: scale4=5'd6; 9'd469: scale4=5'd6; 9'd470: scale4=5'd6; 9'd471: scale4=5'd6; 9'd472: scale4=5'd6; 9'd473: scale4=5'd6; 9'd474: scale4=5'd6; 9'd475: scale4=5'd6;
9'd476: scale4=5'd13; 9'd477: scale4=5'd13; 9'd478: scale4=5'd12; 9'd479: scale4=5'd12; default:scale4=5'd0; endcase end endmodule
module play(key,prenum_p);//弹奏模块; input [13:0]key; output [13:0]prenum_p; wire [13:0]key; reg [13:0]prenum _p;
always@(key) begin case(key)
14'd0:prenum_p=14'd16383; 14'd8192:prenum_p=14'd10647; 14'd4096:prenum_p=14'd11272; 14'd2028:prenum_p=14'd11831; 14'd1024:prenum_p=14'd12074; 14'd512:prenum_p=14'd12556; 14'd256:prenum_p=14'd12974; 14'd128:prenum_p=14'd13346; 14'd64:prenum_p=14'd13516;
31
14'd32:prenum_p=14'd13829; 14'd16:prenum_p=14'd14109; 14'd8:prenum_p=14'd14235; 14'd4:prenum_p=14'd14470; 14'd2:prenum_p=14'd14678; 14'd1:prenum_p=14'd14846; default :prenum_p=14'd16383; endcase end endmodule
modulechoose_prenum(prenum_s, prenum_p,prenum,sing_play);//选择预置数;
input [13:0]prenum_s,prenum_p; inputsing_play; output [13:0]prenum;
wire [13:0]prenum_s,prenum_p; reg [13:0]prenum; wiresing_play; always@(sing_play) begin
if(sing_play==1'b1) prenum=prenum_s; else
prenum=prenum_p; end
endmodule
module show(clk_sing,clk_6m,prenum, led,code_low,code_med,code_high); //显示模块; input clk_sing,clk_6m; input [13:0]prenum; output [6:0]led;
outputcode_low,code_med,code_high; wire clk_sing,clk_6m; wire [13:0]prenum; reg [6:0]led;
regcode_low,code_med,code_high; always@(posedgeclk_sing) begin case(prenum)
14'd16383 : led=7'b0000000;//休止符; 14'd4915 : led=7'b0110000;//低音1; 14'd6168 : led=7'b1101101;//低音2; 14'd7281 : led=7'b1111001;//低音3; 14'd7792 : led=7'b0110011;//低音4; 14'd8730 : led=7'b1011011;//低音5; 14'd9565 : led=7'b1011111;//低音6; 14'd10301 : led=7'b1110000;//低音7; 14'd10647 : led=7'b0110000;//中音1; 14'd11272 : led=7'b1101101;//中音2; 14'd11831 : led=7'b1111001;//中音3;
32
14'd12074 : led=7'b0110011;//中音4; 14'd12556 : led=7'b1011011;//中音5; 14'd12974 : led=7'b1011111;//中音6; 14'd13346 : led=7'b1110000;//中音7; 14'd13516 : led=7'b0110000;//高音1; 14'd13829 : led=7'b1101101;//高音2; 14'd14109 : led=7'b1111001;//高音3; 14'd14235 : led=7'b0110011;//高音4; 14'd14470 : led=7'b1011011;//高音5; 14'd14678 : led=7'b1011111;//高音6; 14'd14846 : led=7'b1110000;//高音7; default : led=7'd0; endcase end
always@(posedgeclk_sing) begin
if(prenum>=14'd4195&&prenum<= 14'd10301||prenum==14'd16383) begin
code_low=1'b1; code_med=1'b0; code_high='b0; end
else if(prenum>=14'd10647&&prenum<= 14'd13346) begin wire clk_16;
code_low=1'b0; code_med=1'b1; code_high='b0; end
else if(prenum>=14'd13516&&prenum<= 14'd14846) begin
code_low=1'b0; code_med=1'b0; code_high='b1; end end endmodule
moduleelectronic_organ(clk_6m,clk_64, key,sing_play,fout,led,code_low,code_med, code_high);
input clk_6m,clk_64,sing_play; input [13:0]key;
outputfout,code_low,code_med, code_high; output [6:0]led; wire [13:0]key; wiresing_play; wire clk_6m; wire clk_64;
33
wire clk_8;
wire clk_4;
wireclk_sing;
wirefout,code_low,code_med,code_high;
wire [13:0]prenum,prenum_s,prenum_p;
wiretofout;
wire [4:0]scale;
change_fenpinbifpb(clk_6m,prenum,tofout);
er_fen_pinefp(tofout,fout);
fenpinfp(clk_64,clk_16,clk_8,clk_4);
get_prenumgpn(clk_sing,scale,prenum_s);
premusic pm(clk_16,clk_8,clk_4,key,clk_sing,scale);
play p(key,prenum_p);
choose_prenumcp(prenum_s,prenum_p,prenum,sing_play);
show s(clk_sing,clk_6m,prenum,led,code_low,code_med,code_high); endmodule
34
2.各层次原理图 (1) 加计数器
(2) 二分频器
(3) 预置数选择器
35
(4) 节拍发生器
(5) 预置数获得器
36
6)存储器
37
(
(7)弹奏模块
38
(8)显示模块
39
3.编译报告
40