基于VHDL的电子琴设计(含完整程序)


    
    课程设计报告




    题 目
    专业学号
    授课班号
    学生姓名
    指导教师
    完成时间





    课程设计(报告)务书
    (理 工 科 类)
    Ⅰ课程设计(报告)题目:
    电子琴
    Ⅱ课程设计(文)工作容
    课程设计目标
    1培养综合运知识独立开展实践创新力
    2提高独立发现问题分析问题解决问题力
    3更加解掌握Verilog HDL基知识基编写程序更加深入解门课程
    4理学基础通完成涉时序逻辑组合逻辑声光输出具实性趣味性系统设计
    5理知识实际应结合起够独立进行某数字应系统开发设计工作定基础
    二研究方法手段应
    1务分成干模块查阅相关文资料分模块调试完成务
    2Verilog HDL语言编写程序
    3Modesim60 Quartus II软件进行仿真
    4硬件完成实验效果调试演示
    三课程设计预期效果
    1熟练掌握Verilog HDL语言
    2实现功电子琴FPGA实验箱查效果
    3键盘key1key7输入中音七音符发音DOREMIFASOLASI控制应音响
    4户编制乐曲存入电子琴电子琴完成动演奏功通第八键key8动演奏曲子两老虎第九键key9演奏梁祝第八第九键时蜂鸣器动播放曲子天空城
    5数码实时显示音调值
    学生姓名: 专业年级:

    着EDA技术进展基编程数字电子系统设计完整方案越越受重视利微处理器(CPUMCU)实现乐曲演奏相纯硬件完成乐曲演奏电路逻辑复杂果助功强EDA工具硬件描述语言仅传统数字逻辑技术简单演奏电路难实现课程设计Modesim60利Verilog HDL语言完成软件编写 Quartus Ⅱ软件台编译载FPGA实验箱采FPGA器件驱动扬声器构成乐曲演奏电路该电子琴设计体三模块构成分控制模块乐曲存储循环播放模块顶层模块设计实现手动电子琴动播放音乐功

    关键词 EDA Verilog HDL FPGA Quartus Ⅱ 电子琴


    ABSTRACT
    With the progress of EDA technology based on programmable digital electronic system design complete solutions more and more attention And the use of a microprocessor (CPU or MCU) to achieve the music play compared to the pure hardware logic circuit to play complete songs much more complex without the help of powerful EDA tools and hardware description language the mere number of traditional logic technology even the simplest circuit performance is difficult to achieve This course is designed primarily to use Verilog HDL language in Modesim60 complete software development software platform in the Quartus Ⅱ downloaded to the FPGA compile test cases the use of FPGA devices drive a small speaker to play music to form a circuit The design of the keyboard in general consists of three modules namely control module music storage and playback module cycle the top module The design of manual and automatic keyboard to play music









    Key words:EDA Verilog HDL FPGA Quartus ⅡElectronic keyboard

















    目录

    第章 系统设计 4
    第节 设计目标 4
    基功 4
    二 提高部分 4
    第二节 设计语言 4
    Verilog HDL语言介绍 4
    第三节 设计原理 5
    乐曲演奏原理 5
    第四节 设计方案较 7
    方案较 7
    二方案选择 8
    第五节 总体设计方案 8
    第二章 单元模块设计 9
    第节 电子琴输入控制模块 9
    基原理 9
    二原理框图分频系数产生 9
    第二节 乐曲存储循环播放模块 10
    第三节 顶层模块 11
    第三章 软件设计 12
    第四章 实验结果讨 14
    第节 调试步骤 14
    第二节 调试现象出现问题分析 15
    第五章 总结 15
    致谢 17
    参考文献 18
    附 录 18
    电子琴程序: 18
    顶层模块 18
    二输入控制模块 21
    三曲目1乐谱存储循环播放模块 22
    三曲目 二乐谱存储循环播放模块 26


    第章 系统设计

    第节 设计目标
    基功
    设计电子琴键盘输入中音七音符发音(DOREMIFASOLASI)控制蜂鸣器发出应音响

    二 提高部分
    数码显示出发出音调值说:发出DO’音调显示1设计歌曲动演奏器户编制乐曲存入电子琴电子琴完成动演奏功

    第二节 设计语言
    Verilog HDL语言介绍
    Verilog HDL种硬件描述语言算法级门级开关级种抽象设计层次数字系统建模建模数字系统象复杂性介简单门完整电子数字系统间数字系统够层次描述相描述中显式进行时序建模[2]
    作种通化硬件描述语言Verilog HDL语言具述描述力:设计行特性设计数流特性设计结构组成包含响应监控设计验证方面时延波形产生机制种建模语言外Verilog HDL语言提供编程语言接口通该接口模拟验证期间设计外部访问设计包括模拟具体控制运行[3]
    Verilog HDL语言仅定义语法语法结构定义清晰模拟仿真语义种语言编写模型够Verilog仿真器进行验证语言C编程语言中继承种操作符结构Verilog HDL提供扩展建模力中许扩展初难理解Verilog HDL语言核心子集非常易学数建模应说已足够然完整硬件描述语句足复杂芯片完整电子系统进行描述
    Verilog HDL语言已成种标准硬件描述语言具特点:
    (1)作种途硬件描述语言具易学性易性
    (2)Verilog HDL语言允许模块中进行抽象层次描述
    (3)数逻辑综合工具支持Verilog HDL成设计员选择
    (4)制造厂商提供Verilog HDL工艺库支持仿真
    (5)Verilog HDL程序语言接口拥强功允许户C语言部数结构进行描述[3]
    正优点Verilog HDL语言广泛流行

    第三节 设计原理
    乐曲演奏原理
    组成乐曲音符频率值(音调)持续时间(音长)乐曲连续演奏需两基数控制输出扬声器激励信号频率高低持续时间扬声器发出连续乐曲声

    1音调控制
    频率高低决定音调高低音乐十二均率规定:两8度音(简谱中中音1高音1)间频率相差倍两8度音间分12半音两半音频率12√2 外音名A(简谱中低音6)频率440Hz音名BC间EF间半音余全音[4]计算出简谱中低音1高音1间音名应频率表131示:
    表131 简谱中音名频率关系
    音名
    频率Hz

    音名
    频率Hz

    音名
    频率Hz
    低音1
    2616

    中音1
    5233

    高音1
    10465
    低音2
    2937

    中音2
    5873

    高音2
    11747
    低音3
    3296

    中音3
    6593

    高音3
    13185
    低音4
    3492

    中音4
    6985

    高音4
    13969
    低音5
    392

    中音5
    784

    高音5
    1568
    低音6
    440

    中音6
    880

    高音6
    1760
    低音7
    4939

    中音7
    9878

    高音7
    19755
    频率信号基准频率分频音阶频率非整数分频系数数必须计算分频数四舍五入取整基准频率低分频太四舍五入取整误差较基准频率高然误差变分频数变实际设计综合考虑两方面素量减频率误差前提取合适基准频率[4]例中选取6MHz基准频率6MHz基准频率先分频6MHz换新基准频率实际音名间相频率关系变演奏出乐曲听起会走调
    例需演奏梁祝乐曲该乐曲音阶频率相应分频表2示减输出偶次谐波分量输出扬声器波形应称方波达扬声器前二分频分频器表2中分频6MHz频率二分频3MHz频率基础计算出分频系数9102采14位二进制计数器分频满足需表2中出分频外出应音阶频率时计数器预置数分频系数加载预置数采加载预置数实现分频方法采反馈复零法节省资源实现起容易表132示:

    表132 音阶频率应分频预置数
    音名
    分频
    预置数

    音名
    分频
    预置数
    低音3
    9102
    7281

    中音2
    5111
    11272
    低音5
    7653
    8730

    中音3
    4552
    11831
    低音6
    6818
    9565

    中音5
    3827
    12556
    低音7
    6073
    10310

    中音6
    3409
    12974
    中音1
    5736
    10647

    高音1
    2867
    13516
    外乐曲中休止符分频系数设0初始值214116383时扬声器会发声

    2音长控制
    音符持续时间必须根乐曲速度音符节拍数确定果全音符持续时间设1s话需提供4Hz时钟频率产生4分音符时长
    图131示乐曲演奏电路原理框图中乐谱产生电路控制音乐音调音长控制音调通设置计数器预置数实现预置数值计数器产生频率信号产生音调控制音长通控制计数器预置数停留时间实现预置数停留时间越长该音符演奏时间越长音符演奏时间025s整数倍节拍较长音符2分音符记谱时该音名连续记录两次
    预置数

    6MHZ 扬声器



    乐谱产生电路

    4HZ音调名显示电路

    数码

    图131乐曲演奏电路原理图

    演奏循环进行需外设置时长计数器乐曲演奏完成时保证动头开始演奏

    第四节 设计方案较
    方案较
    方案:采单逻辑器件组合实现样然较直观逻辑器件分工鲜明思路清晰目然元器件种类数繁复杂硬件电路容易引起系统精度高体积等利素例八音符八频率控制发出采方案运分频器信号进行程度分频仪器显易见
    方案二:采Verilog HDL语言编程实现电子琴项功系统输入控制电路顶层模块乐曲存储循环播放模块模块组成

    二方案选择
    方案相较方案二显较笼统整系统分干模块牵涉具体硬件电路必须硬件描述语言Verilog HDL优势仅具良电路行描述系统描述力通俗易懂   
    两种方案分析较总结选方案二进行电子琴设计

    第五节 总体设计方案

    利EDA软件中Verilog HDL硬件描述语言编程进行控制然烧程序FPGA实验箱实现系统原理图图151示
    控制输入模块
    (手动输入音符功)





    ()






    顶层模块
    (调功)




    乐曲存储循环播放模块
    (动循环播放)





    乐曲1模块
    乐曲3模块

    乐曲2模块



    图151 系统总体设计方框图

    中输入控制模块户设计起输入控制作通该模块通键输入音符乐曲乐曲存储循环播放模块储存事先编写乐谱通循环播放部分产生频率驱动扬声器输出顶层模块实现调功通调输入控制模块乐曲存储循环播放模块选择手动播放者动播放曲目1曲目2曲目3三模块相互联系实现电子琴基功发挥功



    第二章 单元模块设计

    第节 电子琴输入控制模块

    基原理
      电子输入控制模块电子琴核心部分程序控制分频模块分频系数部集成1分频器输出端口外部扩音器接受处理外部输入命令(端功控制键乐曲存入写出控制键命令)部分中分频器根分频系数分出七频率发出相应七音符声音通数码观察音符输出里定义秒节拍

    二原理框图分频系数产生

    基原理图图211

    50MHz基准脉
    6MHz分频
    状态预置
    控制分频系数分频模块
    选择音符输出

    图211输入控制模块基原理
    输入控制模块目基准脉分频1234567七音符应频率该模块Verilog HDL描述中包含三进程首先50MHz基准脉进行分频6MHz脉然tone1输入分频系数6MHz脉次分频便需频率终根状态预置情况选择音符输出中音符相应分频系数根音符频率计算

    第二节 乐曲存储循环播放模块
    该模块实现音调存储发生循环播放功音调发生器作产生获音阶分频预置值12位(高音中音低音分4位)发声输入控制中某位某两位某三位高电时应某音阶数值端口{highmidlow}输出作获该音阶分频预置值该值作数控分频器输入4Hz脉进行分频音阶相应频率例输入{ highmidlow } 12'b000000100000应音符中音RE产生分频系数便10216根已知乐谱利分频系数产生方法实现乐谱存储存储乐谱时计数器state蜂鸣器输出音调计数达值时计数器清零(state<0)计数器0开始重新计数实现循环播放中具体原理框图图221示
    4Hz分频

    6MHz分频
    50MHz基准脉
    音调发生器
    乐谱存储
    循环播放

    图221乐曲存储循环播放模块原理图

    第三节 顶层模块
    该模块电子琴系统设计核心模块通该模块实现两节子模块调模块包括两进程:进程50MHz基准脉分频产生6MHz进程二曲目方式进行控制选择该部分采两位状态标识寄存器mm应实验箱开关key8key9key8拨低电0时调循环演奏曲目1模块输出曲目1dip9拨低电0时调循环演奏曲目2模块输出曲目2key8key8时拨低电0时调循环演奏曲目3模块输出曲目3key8key9时处高电1时调手动演奏模块通键key1~key7实现手动演奏曲目
    中顶层模块原理图图231示

    控制选择曲目演奏方式
    6MHz分频
    50MHz基准脉
    手动演奏
    动演奏曲目1
    动演奏曲目2
    动演奏曲目1
    调循环演奏曲目1模块
    调循环演奏曲目2模块
    调循环演奏曲目3模块
    调手动演奏模块

    图231 顶层模块原理图


    第三章 软件设计
    设计EDA软件系统Quartus Ⅱ完成采顶[2]设计方法图311软件流程图


    图311 系统软件流程图
    软件设计采结构化程序设计方法功模块独立实际设计中键输入乐曲存储分放四模块中(中动循环播放三曲目原理相)软件设计核心部分数控分频器键输入乐曲储存提供相应分频输入基准时钟进行次分频终输出想音阶频率Verilog HDL描述语言见附录



    第四章 实验结果讨

    第节 调试步骤

    设计采FPGA器件驱动扬声器构成乐曲演奏电路图411典型FPGACPLD设计流程:

    图411系统调试图
    设计求Quartus IIEDA软件台运Verilog HDL语言进行编程实现相应功
    调试时采分模块调试首先子模块调试顶层模块调试总体分三步骤:
    1电子琴输入控制模块调试
    2乐曲存储循环播放模块调试:
    (1)曲目1存储循环播放模块调试
    (2)曲目2存储循环播放模块调试
    (3)曲目3存储循环播放模块调试
    3顶层模块调试

    第二节 调试现象出现问题分析

    问题:进行电子琴输入控制模块调试时编译正确成功载[2]实验箱DOREMEFASOLASI应键时蜂鸣器发出音调检查程序误猜想问题出实验箱检查音符应引脚发现键开关引脚拨动开关蜂鸣器发出音调开关均拨高电键蜂鸣器发出相应音调
    问题二:进行乐曲存储循环播放模块调试时程序载实验箱曲目够动播放蜂鸣器发出音调音调刺耳发现时硬件蜂鸣器换蜂鸣器
    问题三:调试数码电路时发现数码乱码观察数码编码引脚分配改编码
    问题四:子模块顶层模块实例引中输入输出匹配反复确认顶层模块误曲目1播放猜想问题出曲目1子模块检查发现曲目1子模块中输入设置复位端口信号顶层模块调时没连接该端口信号曲目1子模块调没产生曲目1子模块中复位信号重新编译载够播放曲目1子模块
    调试发现问题解决问题够实现基功发挥功


    第五章 总结
    设计利硬件描述语言Verilog HDL实现电子琴动演奏键盘输入发音简易功编程综合仿真载芯片烧制终做出成品通系统测试结果数分析计算测试结果符合预期结果测试情况良够基实现音阶发音功切换动演奏存储乐曲根需更改程序实现乐曲存储
    课程设计培养综合运学知识发现提出分析解决实际问题锻炼实践力重环节学生实际工作力具体训练考察程着科学技术发展日新月异EDA技术已成计算机应中空前活跃领域生活中说处作二十世纪学生说掌握EDA技术十分重
    第次接触课程设计开始窍通慢慢解历长时间回顾起次HDL课程设计感慨良确审题编程理实践三星期日子里受益匪浅仅巩固前学知识学书没学知识通次课程设计懂理实际相结合重理知识远远够学理知识实践相结合起理中出结解决实际中问题提高实际动手力独立思考力毕竟第次做课程设计难免会遇种样问题时设计程中发现足处前学知识理解够深刻掌握够牢固通次课程设计进步加深HDL解更加浓厚兴趣
    复杂工程分成干基模块进行分步设计测试模块连接起实验基设计思想然测试时遇困难终实现感觉扩展方说播放乐曲时显示出音调加复位暂停快进等功













    致谢
    课程设计程中知识理解遇困难然设计存足处通学老师帮助问题步步解决课程设计程中学知识解HDL编程精深程断调试断实践断付出努力预期结果课程设计学老师支持深表感谢



    参考文献
    [1] 潘松黄继业EDA技术教程北京:科学出版社2002
    [2] 王伟Verilog HDL程序设计应 北京:民邮电出版社2005
    [3] 刘秋云王佳Verilog HDL设计实践指导北京:机械工业出版社2005
    [4] 王金民 数字系统设计Verilog HDL(第二版) 北京:电子工业出版社2005
    [5] 李国洪沈明山胡辉.编程器件EDA技术实践[M].北京:机械工业出版社2004年7月.
    [6] 付家.EDA工程实践技术[M].北京:工业出版社2005年1月.

    附 录

    电子琴程序:
    顶层模块
    module yiranliang(inclkoutclkkey1key2key3key4key5key6key7key8key9shumaguan)
    input inclk
    input key1key2key3key4key5key6key7key8key9
    output outclk
    output [110] shumaguan
    reg outclkclk_6M
    reg [110] shumaguan
    reg [30]c
    wire out1out2out3out4
    wire[80] key
    reg [10]mm
    wire [30]num
    assign key {key1key2key3key4key5key6key7key8key9} 键拼键变量key
    调子调块
    digital_piano m1(inclk(inclk)key1(key1)key2(key2)key3(key3)key4(key4)
    key5(key5)key6(key6)key7(key7)beep2(out2)num(num))

    bell m2(inclk(inclk)beep1(out1))
    bell2 m3(inclk(inclk)beep3(out3))
    bell3 m4(inclk(inclk)beep4(out4))

    always @(num)
    begin
    if(num3'd1)
    shumaguan<{4'b11101'b1led7(1)}
    else if(num4'd2)
    shumaguan<{4'b11101'b1led7(2)}
    else if(num4'd3)
    shumaguan<{4'b11101'b1led7(3)}
    else if(num4'd4)
    shumaguan<{4'b11101'b1led7(4)}
    else if(num4'd5)
    shumaguan<{4'b11101'b1led7(5)}
    else if(num4'd6)
    shumaguan<{4'b11101'b1led7(6)}
    else if(num4'd7)
    shumaguan<{4'b11101'b1led7(7)}
    end

    always @(posedge clk_6M) 时钟升检测否键
    begin
    if(key 9'b111111110)
    mm < 2'b01
    else if(key9'b111111101)
    mm < 2'b10
    else if(key9'b111111100)
    mm < 2'b11
    else mm < 2'b00
    end
    always@(posedge inclk)
    begin
    if(c<4'd4)
    c else
    begin
    c<4'd0
    clk_6M~clk_6M
    end
    end

    always @(posedge clk_6M)
    begin
    if(mm 2'b01)
    outclk < out1
    else if(mm 2'b00)
    outclk < out2
    else if(mm 2'b10)
    outclk < out3
    else outclk < out4
    end

    *数码段码表*
    function [60] led7
    input [30] dis_input
    begin
    case (dis_input)
    0 led7 ~7'b011_1111
    1 led7 ~7'b000_0110
    2 led7 ~7'b101_1011
    3 led7 ~7'b100_1111
    4 led7 ~7'b110_0110
    5 led7 ~7'b110_1101
    6 led7 ~7'b111_1101
    7 led7 ~7'b000_0111
    8 led7 ~7'b111_1111
    9 led7 ~7'b110_0111
    default led7 ~7'b111_1111
    endcase
    end
    endfunction

    endmodule


    二输入控制模块

    digital_piano子模块
    module digital_piano(inclkkey1key2key3key4key5key6key7beep2num)
    input inclkkey1key2key3key4key5key6key7
    output[30]num
    output beep2
    wire [60] key_code
    reg [30]c
    reg clk_6M
    reg beep_r
    reg [30]num
    reg [150] count
    reg [150] count_end
    parameter Do 7'b1111110 状态机7编码分应中音7音符
    re 7'b1111101
    mi 7'b1111011
    fa 7'b1110111
    so 7'b1101111
    la 7'b1011111
    si 7'b0111111
    assign key_code {key7key6key5key4key3key2key1}
    assign beep2 beep_r 输出音乐

    always@(posedge inclk)
    begin
    if(c<4'd4)
    c else
    begin
    c<4'd0
    clk_6M~clk_6M
    end
    end

    always@(posedge clk_6M) 分频模块出乐谱
    begin
    count < count + 16'd1 计数器加1
    if(count count_end)
    begin
    count <16'd0 计数器清零
    beep_r < beep_r
    end
    end

    always@(posedge clk_6M) 状态机根键状态选择音符输出
    begin
    case(key_code)
    Do count_end < 16'd11450
    re count_end < 16'd10204
    mi count_end < 16'd09090
    fa count_end < 16'd08571
    so count_end < 16'd07802
    la count_end < 16'd06802
    si count_end < 16'd06060
    defaultcount_end < 16'd0
    endcase
    end

    always @ (posedge clk_6M)
    begin
    case(key_code)
    Do num<4'b0001
    re num<4'b0010
    mi num<4'b0011
    fa num<4'b0100
    so num<4'b0101
    la num<4'b0110
    si num<4'b0111
    endcase
    end
    endmodule

    三曲目1乐谱存储循环播放模块
    bell子模块 两老虎
    module bell (inclkbeep1)
    input inclk 系统时钟
    output beep1 蜂鸣器输出端
    reg [30]highmedlow
    reg [150]origin
    reg beep_r 寄存器
    reg [70]state
    reg [150]count
    assign beep1beep_r 输出音乐

    时钟频率6MHz
    reg clk_6MHz
    reg [20] cnt1
    always@(posedge inclk)
    begin
    if(cnt1<3'd4)
    cnt1 else
    begin
    cnt1<3'b0
    clk_6MHz<~clk_6MHz
    end
    end
    时钟频率4MHz
    reg clk_4Hz
    reg [240] cnt2
    always@(posedge inclk)
    begin
    if(cnt2<25'd6250000)
    cnt2 else
    begin
    cnt2<25'b0
    clk_4Hz<~clk_4Hz
    end
    end

    always @(posedge clk_6MHz)
    begin
    count < count + 1'b1 计数器加1
    if(count origin)
    begin
    count < 16'h0 计数器清零
    beep_r < beep_r 输出取反
    end
    end

    always@(posedge clk_4Hz)
    begin
    case({highmedlow})
    'b000000000101origin14447
    'b000000000110origin13636
    'b000000000111origin12149
    'b000000010000origin11466
    'b000000100000origin10216
    'b000000110000origin9101
    'b000001000000origin8590
    'b000001010000origin7653
    'b000001100000origin6818
    'b000001110000origin6074
    'b000100000000origin5733
    'b001000000000origin5108
    'b001100000000origin4551
    endcase
    end


    always @(posedge clk_4Hz) 歌曲
    begin
    if(state 171) state 0计时实现循环演奏
    else
    state state + 1
    case(state)
    0 {highmedlow}'b0000000001015
    1234 {highmedlow}'b0000001100003
    5 {highmedlow}'b0000001000002
    6 {highmedlow}'b0000000100001

    78910111213141516 {highmedlow}'b0000001000002
    17 {highmedlow}'b0000000100001
    18 {highmedlow}'b0000000001106
    192021222324252627 {highmedlow}'b0000000100001

    28 {highmedlow}'b0000000001117
    29 {highmedlow}'b0000000001106
    303132333435363738 {highmedlow}'b0000000001117
    39 {highmedlow}'b0000000001106
    40 {highmedlow}'b0000000001015
    4142434445 {highmedlow}'b0000000001106

    46 {highmedlow}'b0000000001015
    47484950 {highmedlow}'b0000001100003
    51 {highmedlow}'b0000001000002
    52 {highmedlow}'b0000000100001
    53545556 {highmedlow}'b0000001000002

    57 {highmedlow}'b0000000001015
    58596061 {highmedlow}'b0000001000002
    62 {highmedlow}'b0000000100001
    63 {highmedlow}'b0000000001106
    64656667 {highmedlow}'b0000000100001

    68 {highmedlow}'b0000000001015
    69707172 {highmedlow}'b0000000001117
    73 {highmedlow}'b0000000001106
    74 {highmedlow}'b0000000001015
    757677787980 {highmedlow}'b0000000001117

    8182 {highmedlow}'b0000000100001
    83 {highmedlow}'b0000000001106
    84 {highmedlow}'b0000001000002
    85 {highmedlow}'b0000000100001
    86 {highmedlow}'b0000001000002
    878889909192939495 {highmedlow}'b0000001100003

    969798 {highmedlow}'b0000001100003
    99100101102 {highmedlow}'b0000011000006
    103 {highmedlow}'b0000010100005
    104 {highmedlow}'b0000011000006
    105106107108109110 {highmedlow}'b0000001100003
    111112113114 {highmedlow}'b0000010000004
    115 {highmedlow}'b0000010100005
    116 {highmedlow}'b0000011000006
    117118119120121122 {highmedlow}'b0000001100003

    123124125126 {highmedlow}'b0000001000002
    127 {highmedlow}'b0000001100003
    128 {highmedlow}'b0000010000004
    129130 {highmedlow}'b0000001100003
    131 {highmedlow}'b0000011000006
    132 {highmedlow}'b0000001100003
    133 {highmedlow}'b0000001000002
    134 {highmedlow}'b0000000100001

    135 {highmedlow}'b0000001000002
    136 {highmedlow}'b0000000100001
    137138 {highmedlow}'b0000000001117
    139 {highmedlow}'b0000000001015
    140 {highmedlow}'b0000010100005
    141 {highmedlow}'b0000001000002
    142 {highmedlow}'b0000010100005

    143144145146147148 {highmedlow}'b0000001100003
    149150151152 {highmedlow}'b0000011000006
    153 {highmedlow}'b0000011100007
    154 {highmedlow}'b0001000000001
    155156157158159160 {highmedlow}'b0011000000003
    161162163164 {highmedlow}'b0010000000002
    165 {highmedlow}'b0000011100007
    166 {highmedlow}'b0001000000001
    167168169170171 {highmedlow}'b0000011000006
    default {highmedlow}12'bx
    endcase
    end
    三曲目 二乐谱存储循环播放模块
    bell2子模块康定情歌
    module bell2 (inclkbeep3)
    input inclk 系统时钟
    output beep3 蜂鸣器输出端
    reg [30]highmedlow
    reg [150]origin
    reg beep_r 寄存器
    reg [70]state
    reg [150]count
    assign beep3beep_r 输出音乐

    时钟频率6MHz
    reg clk_6MHz
    reg [20] cnt1
    always@(posedge inclk)
    begin
    if(cnt1<3'd4)
    cnt1 else
    begin
    cnt1<3'b0
    clk_6MHz<~clk_6MHz
    end
    end
    时钟频率4MHz
    reg clk_4Hz
    reg [240] cnt2
    always@(posedge inclk)
    begin
    if(cnt2<25'd6250000)
    cnt2 else
    begin
    cnt2<25'b0
    clk_4Hz<~clk_4Hz
    end
    end

    always @(posedge clk_6MHz)
    begin
    count < count + 1'b1 计数器加1
    if(count origin)
    begin
    count < 16'h0 计数器清零
    beep_r < beep_r 输出取反
    end
    end
    always@(posedge clk_4Hz)
    begin
    case({highmedlow})
    'b000000000011origin<7281 低音3
    'b000000000101origin<8730 低音5
    'b000000000110origin<9565 低音6
    'b000000000111origin<10310 低音7
    'b000000010000origin<10647 中音1
    'b000000100000origin<11272 中音2
    'b000000110000origin<11831 中音3
    'b000001010000origin<12556 中音5
    'b000001100000origin<12974 中音6
    'b000100000000origin<13516 高音1
    'b000000000000origin<16383 休止符

    endcase
    end
    always @(posedge clk_4Hz)
    begin
    if(state 151)
    state 0
    else
    state state + 1 梁祝
    case(state)
    0 {highmedlow}<'b000000000011 低音3
    1 {highmedlow}<'b000000000011 持续4时钟节拍
    2 {highmedlow}<'b000000000011
    3 {highmedlow}<'b000000000011
    4 {highmedlow}<'b000000000101 低音5
    5 {highmedlow}<'b000000000101 发3时钟节拍
    6 {highmedlow}<'b000000000101
    7 {highmedlow}<'b000000000110 低音6
    8 {highmedlow}<'b000000010000 中音1
    9 {highmedlow}<'b000000010000 发3时钟节拍
    10 {highmedlow}<'b000000010000
    11 {highmedlow}<'b000000100000 中音2
    12 {highmedlow}<'b000000000110 低音6
    13 {highmedlow}<'b000000010000 中音1
    14 {highmedlow}<'b000000000101 低音5
    15 {highmedlow}<'b000000000101
    16 {highmedlow}<'b000001010000 中音5
    17 {highmedlow}<'b000001010000 发3时钟节拍
    18 {highmedlow}<'b000001010000
    19 {highmedlow}<'b000100000000 高音1
    20 {highmedlow}<'b000001100000 中音6
    21 {highmedlow}<'b000001010000 中音5
    22 {highmedlow}<'b000000110000 中音3
    23 {highmedlow}<'b000001010000 中音5
    24 {highmedlow}<'b000000100000 中音2
    25 {highmedlow}<'b000000100000 持续11时钟节拍
    26 {highmedlow}<'b000000100000
    27 {highmedlow}<'b000000100000
    28 {highmedlow}<'b000000100000
    29 {highmedlow}<'b000000100000
    30 {highmedlow}<'b000000100000
    31 {highmedlow}<'b000000100000
    32 {highmedlow}<'b000000100000
    33 {highmedlow}<'b000000100000
    34 {highmedlow}<'b000000100000
    35 {highmedlow}<'b000000110000 中音3
    36 {highmedlow}<'b000000000111 低音7
    37 {highmedlow}<'b000000000111
    38 {highmedlow}<'b000000000110 低音6
    39 {highmedlow}<'b000000000110
    40 {highmedlow}<'b000000000101 低音5
    41 {highmedlow}<'b000000000101
    42 {highmedlow}<'b000000000101
    43 {highmedlow}<'b000000000110 低音6
    44 {highmedlow}<'b000000010000 中音1
    45 {highmedlow}<'b000000010000
    46 {highmedlow}<'b000000100000 中音2
    47 {highmedlow}<'b000000100000
    48 {highmedlow}<'b000000000011 低音3
    49 {highmedlow}<'b000000000011
    50 {highmedlow}<'b000000010000 中音1
    51 {highmedlow}<'b000000010000
    52 {highmedlow}<'b000000000110 低音6
    53 {highmedlow}<'b000000000101 低音5
    54 {highmedlow}<'b000000000110 低音6
    55 {highmedlow}<'b000000010000 中音1
    56 {highmedlow}<'b000000000101 低音5
    57 {highmedlow}<'b000000000101 持续8时钟节拍
    58 {highmedlow}<'b000000000101
    59 {highmedlow}<'b000000000101
    60 {highmedlow}<'b000000000101
    61 {highmedlow}<'b000000000101
    62 {highmedlow}<'b000000000101
    63 {highmedlow}<'b000000000101
    64 {highmedlow}<'b000000110000 中音3
    65 {highmedlow}<'b000000110000 发3时钟节拍
    66 {highmedlow}<'b000000110000
    67 {highmedlow}<'b000001010000 中音5
    68 {highmedlow}<'b000000000111 低音7
    69 {highmedlow}<'b000000000111
    70 {highmedlow}<'b000000100000 中音2
    71 {highmedlow}<'b000000100000
    72 {highmedlow}<'b000000000110 低音6
    73 {highmedlow}<'b000000010000 中音1
    74 {highmedlow}<'b000000000101 低音5
    75 {highmedlow}<'b000000000101 持续4时钟节拍
    76 {highmedlow}<'b000000000101
    77 {highmedlow}<'b000000000101
    78 {highmedlow}<'b000000000000 休止符
    79 {highmedlow}<'b000000000000
    80 {highmedlow}<'b000000000011 低音3
    81 {highmedlow}<'b000000000101 低音5
    82 {highmedlow}<'b000000000101
    83 {highmedlow}<'b000000000011 低音3
    84 {highmedlow}<'b000000000101 低音5
    85 {highmedlow}<'b000000000110 低音6
    86 {highmedlow}<'b000000000111 低音7
    87 {highmedlow}<'b000000100000 中音2
    88 {highmedlow}<'b000000000110 低音6
    89 {highmedlow}<'b000000000110 持续6时钟节拍
    90 {highmedlow}<'b000000000110
    91 {highmedlow}<'b000000000110
    92 {highmedlow}<'b000000000110
    93 {highmedlow}<'b000000000110
    94 {highmedlow}<'b000000000101 低音5
    95 {highmedlow}<'b000000000110 低音6
    96 {highmedlow}<'b000000010000 中音1
    97 {highmedlow}<'b000000010000 发3时钟节拍
    98 {highmedlow}<'b000000010000
    99 {highmedlow}<'b000000100000 中音2
    100 {highmedlow}<'b000001010000 中音5
    101 {highmedlow}<'b000001010000
    102 {highmedlow}<'b000000110000 中音3
    103 {highmedlow}<'b000000110000
    104 {highmedlow}<'b000000100000 中音2
    105 {highmedlow}<'b000000100000
    106 {highmedlow}<'b000000110000 中音3
    107 {highmedlow}<'b000000100000 中音2
    108 {highmedlow}<'b000000010000 中音1
    109 {highmedlow}<'b000000010000
    110 {highmedlow}<'b000000000110 低音6
    111 {highmedlow}<'b000000000101 低音5
    112 {highmedlow}<'b000000000011 低音3
    113 {highmedlow}<'b000000000011 持续4时钟节拍
    114 {highmedlow}<'b000000000011
    115 {highmedlow}<'b000000000011
    116 {highmedlow}<'b000000010000 中音1
    117 {highmedlow}<'b000000010000 持续4时钟节拍
    118 {highmedlow}<'b000000010000
    119 {highmedlow}<'b000000010000
    120 {highmedlow}<'b000000000110 低音6
    121 {highmedlow}<'b000000010000 中音1
    122 {highmedlow}<'b000000000110 低音6
    123 {highmedlow}<'b000000000101 低音5
    124 {highmedlow}<'b000000000011 低音3
    125 {highmedlow}<'b000000000101 低音5
    126 {highmedlow}<'b000000000110 低音6
    127 {highmedlow}<'b000000010000 中音1
    128 {highmedlow}<'b000000000101 低音5
    129 {highmedlow}<'b000000000101 持续6时钟节拍
    130 {highmedlow}<'b000000000101
    131 {highmedlow}<'b000000000101
    132 {highmedlow}<'b000000000101
    133 {highmedlow}<'b000000000101
    134 {highmedlow}<'b000000110000 中音3
    135 {highmedlow}<'b000001010000 中音5
    136 {highmedlow}<'b000000100000 中音2
    137 {highmedlow}<'b000000110000 中音3
    138 {highmedlow}<'b000000100000 中音2
    139 {highmedlow}<'b000000010000 中音1
    140 {highmedlow}<'b000000000111 低音7
    141 {highmedlow}<'b000000000111
    142 {highmedlow}<'b000000000110 低音6
    143 {highmedlow}<'b000000000110
    144 {highmedlow}<'b000000000101 低音5
    145 {highmedlow}<'b000000000101 持续8时钟节拍
    146 {highmedlow}<'b000000000101
    147 {highmedlow}<'b000000000101
    148 {highmedlow}<'b000000000101
    149 {highmedlow}<'b000000000101
    150 {highmedlow}<'b000000000101
    151 {highmedlow}<'b000000000101

    endcase
    end
    endmodule
    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 10 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    基于VHDL语言的交通灯设计

     基于VHDL语言的 交通灯设计 专业班级: 应电班 作 者: 指导老师: ...

    5年前   
    1257    0

    基于单片机的电子琴设计

    综合课程设计题 目:可演奏的电子琴 学 院:管理科学与工程学院可演奏的电子琴摘要:随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。我们...

    3周前   
    74    0

    基于VHDL语言的HDB3编译码器的设计毕业论文

    数字基带信号的传输是数字通信系统的重要组成部分。在数字通信中,有些场合可不经过载波调制和解调过程,而对基带信号进行直接传输。为使基带信号能在基带信道中传输,必须选择合适的码型,HDB3码因具有无...

    5年前   
    959    0

    veriloghdl电子琴课程设计

    XX学院课程设计报告 题 目 Verilog hdl课程设计专 业 自动化 学生姓名 指导教师 ...

    3年前   
    607    0

    基于微信小程序的测试设计与分析

    基于微信小程序的测试设计与分析Testing Design and Analysis Based on WeChat Mini Program日成绩评定 成绩项论文成绩(百分制)折合比例...

    3年前   
    963    0

    基于FPGA的键盘扫描程序的设计毕业设计

    X X 学 院 CHANGSHA UNIVERSITY本科生毕业设计设计(论文)题目: 基于FPGA的键盘扫描程序的设计 ...

    4年前   
    863    0

    基于DS18B20的温度显示及其报警控制系统(含完整原理图及C程序)毕业论文

     XX 大 学 毕 业 设 计( 论 文 ) 题目 基于单片机的数字温度计及其报警系统 作者 学院 物理学院 专业 电子信息科学与技术 学号 ...

    5年前   
    1711    0

    基于微信小程序的游戏玩家互动社区的设计与实现

     基于微信小程序的游戏玩家互动社区的设计与实现 ...

    10个月前   
    359    0

    基于“过程创新”的《VB程序设计》实验教学改革

    从世界上第一台电子计算机诞生直至今天,经过几十年的发展计算机已近广泛应用到人们生活的各个领域,改变着大众原有的生活、学习和工作方式。CNNIC第35次中国互联网络发展统计报告指出,随着互联网技术...

    2年前   
    360    0

    电子琴教学心得

    电子琴教学心得  音乐教师要通过一系列的电子琴教学活动,使学生掌握基础知识和基本技能,进而发展音乐智力与音乐的审美能力,培养其团结协作的集体主义思想品德与高尚的情操。要达到这个目的,首先要撰写...

    11年前   
    415    0

    eda课程设计vhdl语言的简易出租车计费器设计

    XX 学 院《EDA技术》课 程 设 计 题 目 简易出租车计费器设计 系 (部) 信息工程系 班 级 电本班 ...

    3年前   
    540    0

    基于51单片机的电子秒表实训报告(含有程序和图)

    实 训 报 告题 目:基于AT89C51单片机的电子秒表的设计与制作专 业: 计算机科学与技术 班 级: 计算机科学与技术本科班 姓 名: ...

    1年前   
    620    0

    基于单片机的音乐喷泉论文(含原理图、PCB图、程序)

    咅乐喷泉控制器是咅乐喷泉的核心部分。在咅乐喷泉中,喷头的多姿造型和 缤纷的水下灯光都受喷泉控制器的控制。由于不同的喷泉对水泵和彩灯组数的要 求各不相同,因此可以设计一种简单、通用、组数可灵活扩充...

    5年前   
    1836    0

    单片机简易电子琴单片机课程设计

    XX学院课程设计报告课程名称:单片机原理及应用课程设计设计题目: 电子琴设计 系 别: 通信与控制工程系 专 ...

    2年前   
    493    0

    基于TCPIP协议的网络通信小应用程序课程设计

    XX大学理学院( 计算机网络 )课程设计实验时间: 2010学年第二学期 专业年级: 2008级应数X班 ...

    3年前   
    587    0

    基于单片机的出租车计价器设计(附源程序)

    基于单片机的出租车计价器设计(附源程序)摘 要本设计的是一个基于单片机AT89S52的出租车自动计费设计,附有复位电路,时钟电路,键盘电路等。复位电路是单片机的初始化操作,除了正常的初始化外...

    2年前   
    281    0

    全自动电热水壶的设计(包含原理图和程序)

    单片机控制电热水壶温度的设计中文摘要随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。本设计论述了一种以S...

    3年前   
    597    0

    基于UML的图书管理系统设计课程设计

    滨江学院 统一建模语言课程设计报告( 2013 -- 2014 年度第 二 学期)课程名称: 统一建模语言课程设计 题 目: 图书馆管理系统 院 系: ...

    1年前   
    398    0

    基于8051的智能小车设计课程设计

    测控电路课程设计题目名称: 智能循迹小车 专业班级: ...

    2年前   
    584    0

    基于plc的交通灯的设计课程设计

    任务说明书一、 控制要求:1、系统控制示意图由十字路口交通灯示意图可以知道,在南北和东西主干道上各有一盏红绿灯;在南北和东西人行道上各有一盏红灯和绿灯。2、控制要求 启动及停止按钮的控制...

    3年前   
    887    0

    文档贡献者

    文***享

    贡献于2019-06-05

    下载需要 10 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档