module liangzhu(clk_50M,rst,speaker);
input clk_50M,rst;
output speaker;
reg speaker;

//分频计数器
parameter wide=15;
reg[7:0] cnt; //音名数
reg[3:0] cnt1; //5MHz基频
reg[23:0] cnt2;//节拍频率5Hz
reg[wide-1:0] origin;//预置数寄存器
reg[wide-1:0] drive;
reg[1:0] count;
reg carrier;
//分频产生5MHz和5Hz的频率
always @(posedge clk_50M,negedge rst)
begin
if(!rst)
begin
cnt1<=4'd0;
cnt2<=24'd0;
end
else
begin
cnt1<=cnt1+1'b1;
cnt2<=cnt2+1'b1;
if(cnt1==4'd4)
cnt1<=4'd0;
if(cnt2==4999999)
cnt2<=24'd0;
end
end
always @(posedge clk_50M,negedge rst)
begin
if(!rst)
drive<=15'h0;
else if(cnt1==4'd4)
begin
if(drive==15'h3fff)
begin
drive<=origin;
carrier<=1'b1;
end
else begin drive<=drive+1'b1;carrier<=1'b0; end
end
end

//carrier的频率是每个音阶的频率  音乐里面的节拍

always @(posedge carrier)
begin
count<=count+1'b1;
if(count==4'd0)
speaker<=1'b1;
else speaker<=1'b0;

end
always @(posedge clk_50M,negedge rst)
begin
if(!rst)
begin
origin<=15'h0;
cnt<=8'd0;
end
else if(cnt2==24'h98967F/2)
begin
if(cnt==8'd139)
cnt<=8'd0;
else
cnt<=cnt+1'b1;

case (cnt)
8'd0:origin<=15'h625F/2; //中音3,4个节拍
8'd1:origin<=15'h625F/2;
8'd2:origin<=15'h625F/2;
8'd3:origin<=15'h625F/2;
8'd4:origin<=15'h6715/2; //中音5,3个节拍
8'd5:origin<=15'h6715/2;
8'd6:origin<=15'h6715/2;
8'd7:origin<=15'h69cd/2;//中音6
8'd8:origin<=15'h6d55/2; //高音1,3个节拍
8'd9:origin<=15'h6d55/2;
8'd10:origin<=15'h6d55/2;

8'd11:origin<=15'h6f5f/2; //高音2
8'd12:origin<=15'h69cd/2; //中音6
8'd13:origin<=15'h6d55/2; //高音1
8'd14:origin<=15'h6715/2; //中音5
8'd15:origin<=15'h6715/2;
8'd16:origin<=15'h738a/2; //高音5
8'd17:origin<=15'h738a/2;
8'd18:origin<=15'h738a/2;
8'd19:origin<=15'h76aa/2; //倍高音1
8'd20:origin<=15'h69cd/2; //高音6

8'd21:origin<=15'h6715/2;//高音5
8'd22:origin<=15'h712f/2;//高音3
8'd23:origin<=15'h6715/2;//高音5
8'd24:origin<=15'h6f5f/2; //高音2
8'd25:origin<=15'h6f5f/2;
8'd26:origin<=15'h6f5f/2;
8'd27:origin<=15'h6f5f/2;
8'd28:origin<=15'h6f5f/2;
8'd29:origin<=15'h6f5f/2;
8'd30:origin<=15'h6f5f/2;
8'd31:origin<=15'h6f5f/2;
8'd32:origin<=15'h6f5f/2;
8'd33:origin<=15'h6f5f/2;
8'd34:origin<=15'h6f5f/2;
8'd35:origin<=15'h712f/2;//高音3
8'd36:origin<=15'h6c39/2; //中音7
8'd37:origin<=15'h6c39/2;
8'd38:origin<=15'h69cd/2;//中音6
8'd39:origin<=15'h69cd/2;
8'd40:origin<=15'h6715/2; //中音5
8'd41:origin<=15'h6715/2;
8'd42:origin<=15'h6715/2;
8'd43:origin<=15'h69cd/2;//中音6
8'd44:origin<=15'h6d55/2;//高音1

8'd45:origin<=15'h6d55;
8'd46:origin<=15'h6f5f/2;//高音2
8'd47:origin<=15'h6f5f/2;
8'd48:origin<=15'h625f/2;//中音3
8'd49:origin<=15'h625f/2;
8'd50:origin<=15'h6d55/2; //高音1
8'd51:origin<=15'h6d55/2;

8'd52:origin<=15'h69cd/2;//中音6
8'd53:origin<=15'h6715/2;//中音5
8'd54:origin<=15'h69cd/2; //中音6
8'd55:origin<=15'h6d55/2;//高音1
8'd56:origin<=15'h6715/2;//中音5
8'd57:origin<=15'h6715/2;
8'd58:origin<=15'h6715/2;
8'd59:origin<=15'h6715/2;
8'd60:origin<=15'h6715/2;
8'd61:origin<=15'h6715/2;
8'd62:origin<=15'h6715/2;
8'd63:origin<=15'h6715/2;
8'd64:origin<=15'h712f/2;//高音3
8'd65:origin<=15'h712f/2;
8'd66:origin<=15'h712f/2;
8'd67:origin<=15'h738a/2;//高音5
8'd68:origin<=15'h6c39/2;//中音7
8'd69:origin<=15'h6c39/2;
8'd70:origin<=15'h6f5f/2;//高音2
8'd71:origin<=15'h6f5f/2;

8'd72:origin<=15'h69cd/2; //中音6
8'd73:origin<=15'h6d55/2;//高音1
8'd74:origin<=15'h6715/2;//中音5
8'd75:origin<=15'h6715/2;
8'd76:origin<=15'h6715/2;
8'd77:origin<=15'h6715/2;
8'd78:origin<=15'h6715/2;

8'd79:origin<=15'h6715;
8'd80:origin<=15'h625f/2; //中音3

8'd81:origin<=15'h6715/2;//中音5
8'd82:origin<=15'h625f/2;//中音3
8'd83:origin<=15'h625f/2;
8'd84:origin<=15'h6715/2;//中音5
8'd85:origin<=15'h69cd/2;//中音6
8'd86:origin<=15'h6c39/2;//中音7
8'd87:origin<=15'h6f5f/2;//高音2
8'd88:origin<=15'h69cd/2;//中音6
8'd89:origin<=15'h69cd/2;
8'd90:origin<=15'h69cd/2;
8'd91:origin<=15'h69cd/2;
8'd92:origin<=15'h69cd/2;
8'd93:origin<=15'h69cd/2;
8'd94:origin<=15'h6715/2;//中音5
8'd95:origin<=15'h69cd/2;//中音6
8'd96:origin<=15'h6d55/2;//高音1
8'd97:origin<=15'h6d55/2;
8'd98:origin<=15'h6d55/2;
8'd99:origin<=15'h6f5f/2;////高音2
8'd100:origin<=15'h738a/2; //高音5
8'd101:origin<=15'h738a/2;
8'd102:origin<=15'h738a/2;
8'd103:origin<=15'h712f/2;//高音3
8'd104:origin<=15'h6f5f/2;//高音2
8'd105:origin<=15'h6f5f/2;
8'd106:origin<=15'h712f/2;//高音3
8'd107:origin<=15'h6f5f/2;//高音2
8'd108:origin<=15'h6d55/2;//高音1
8'd109:origin<=15'h6d55/2;
8'd110:origin<=15'h69cd/2;//中音6

8'd111:origin<=15'h6715/2;//中音5
8'd112:origin<=15'h625f/2;//中音3

8'd113:origin<=15'h625f;
8'd114:origin<=15'h625f/2;
8'd115:origin<=15'h625f/2;
8'd116:origin<=15'h6d55/2;//高音1
8'd117:origin<=15'h6d55/2;
8'd118:origin<=15'h69cd/2;//中音6
8'd119:origin<=15'h6d55/2;//高音1
8'd120:origin<=15'h69cd/2;//中音6

8'd121:origin<=15'h625f/2;//中音3
8'd122:origin<=15'h625f/2;
8'd123:origin<=15'h6f5f/2;//高音2
8'd124:origin<=15'h625f/2;//中音3
8'd125:origin<=15'h6715/2;//中音5
8'd126:origin<=15'h69cd/2;//中音6
8'd127:origin<=15'h6d55/2;//高音1
8'd128:origin<=15'h6715/2;//中音5
8'd129:origin<=15'h6715/2;
8'd130:origin<=15'h6715/2;
8'd131:origin<=15'h6715/2;
8'd132:origin<=15'h6715/2;
8'd133:origin<=15'h6715/2;
8'd134:origin<=15'h6715/2;
8'd135:origin<=15'h6715/2;
8'd136:origin<=15'h3fff/2;
8'd137:origin<=15'h3fff/2;
8'd138:origin<=15'h3fff/2;
8'd139:origin<=15'h3fff/2;
default:origin<=15'h3fff/2;
endcase
end
end
endmodule

25M时钟的梁祝演奏的更多相关文章

  1. 基于FPGA的飞机的小游戏

    基于FPGA的飞机的小游戏 实验原理 该实验主要分为4个模块,采用至上而下的设计方法进行设计.由50M的晶振电路提供时钟源,VGA显示控制模块.图形显示控制模块.移动模块的时钟为25M,由时钟分频电路 ...

  2. 【lattice软核】ROM的使用

    =======================>>>>> 一.ROM核调用:==================>>>>> ======== ...

  3. S3C2416裸机开发系列十六_sd卡驱动实现

    S3C2416裸机开发系列十六 sd卡驱动实现 象棋小子    1048272975 SD卡(Secure Digital Memory Card)具有体积小.容量大.传输数据快.可插拔.安全性好等长 ...

  4. 关于VGA显示实验的问题

    今天做了一个关于VGA的显示实验,但是由于产生的25M时钟不正确所以一直没有图像产生.刚开始的程序如下 虽然仿真的时候出现了时序,但是在下载到硬件的时候不正确. 后来改成 结果就正确了. 另外之前关于 ...

  5. 解析stm32的时钟

    STM32 时钟系统  http://blog.chinaunix.net/uid-24219701-id-4081961.html STM32的时钟系统 ***   http://www.cnblo ...

  6. STM32F2系列系统时钟默认配置

    新到一家公司后,有个项目要用到STM32F207Vx单片机,找到网上的例子照猫画虎的写了几个例子,比如ADC,可是到了ADC多通道转换的时候就有点傻眼了,这里面的时钟跑的到底是多少M呢?单片机外挂的时 ...

  7. LPC2478时钟模块详解

    时钟框图如上图,系统时钟来源分别是内部4M的RC振荡器和外置晶振,RTC模块在某些情况下也可以作为主时钟,经过系统时钟选择s\de时钟需要经过PLL倍频(或者不倍频),处理过的PLL输出USB时钟分频 ...

  8. HDMI ip中的时钟 vid_clk与ls_clk

    由TMDS_Bit_clock_Ratio.TMDS_clk和色彩深度,就可以确定出tmds_clk,cdr_clk,vid_clk和ls_clk之间的关系. 1.Tmds_clk时钟频率的确定: 原 ...

  9. 第15章 RCC—使用HSE/HSI配置时钟

    第15章     RCC—使用HSE/HSI配置时钟 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku. ...

随机推荐

  1. 浅析UPnP协议

    摘要:文章介绍了UPnP结构规范和开发流程,指出:UP nP协议使所有联网的设备实现互联,设备工作不需要传统的驱动程序,便可以实现设备间的 相互控制. 关键词:UPnP协议:开发流程:电子技术:工作 ...

  2. Go语言的堆栈分析

    本文为理解翻译,原文地址:http://www.goinggo.net/2015/01/stack-traces-in-go.html Introduction 在Go语言中有一些调试技巧能帮助我们快 ...

  3. Android学习第三天-打包常用命令

    在前面<Android学习第一天-adb常用命令>和 <Android学习第二天-android常用命令>两篇博文中,我们重点讲解了adb和android的常用命令,下面我们讲 ...

  4. 几个常用Json组件的性能测试

    上一篇文章中我已经介绍了JsonBuilder方案的整体思路以及一个版本的雏形代码,他现在已经是可以使用的了,但是因为是实时反射的,所以效率并不高. 鉴于几位博友对Json转换组件的性能有兴趣,我先放 ...

  5. C语言 · 求矩阵各个元素的和

    问题描述 这里写问题描述. 输入格式 测试数据的输入一定会满足的格式. 例:输入的第一行包含两个整数n, m,分别表示矩阵的行数和列数.接下来n行,每行m个正整数,表示输入的矩阵. 输出格式 要求用户 ...

  6. 《Entity Framework 6 Recipes》中文翻译系列 (46) ------ 第八章 POCO之领域对象测试和仓储测试

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 8-8  测试领域对象 问题 你想为领域对象创建单元测试. 这主要用于,测试特定的数 ...

  7. Using assembly writing algorithm programs

    This's my first version.The logic is simple, just the selection sort. I spent much time learning how ...

  8. 我的SQL总结---未完待续

    我的SQL总结---未完待续 版权声明:本文为博主原创文章,未经博主允许不得转载. 总结: 主要的SQL 语句: 数据操作(select, insert, delete, update) 访问控制(g ...

  9. GitHub iOS-Top 100 简介

    GitHub排名前100的iOS第三方汇总简介,方便开发者选择适合的第三方框架. 项目名称 项目信息 1. AFNetworking 作者是 NSHipster 的博主, iOS 开发界的大神级人物, ...

  10. 链接(extern、static关键词\头文件\静态库\共享库)

    原文链接:http://www.orlion.ga/781/ 一. 多目标文件的链接 假设有两个文件:stack.c: /* stack.c */ char stack[512]; int top = ...