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. 我为什么很烦在DB服务器上安装杀毒软件

    常见的数据库连接问题无外乎是在数据库服务器本地可以连接SQL Server,但通过其他服务器就不可以连接.但这次我却碰到了相反的情况,在服务器本地无法通过IP/实例名连接,但从其他服务器却可以.而且每 ...

  2. CSharpGL(1)从最简单的例子开始使用CSharpGL

    CSharpGL(1)从最简单的例子开始使用CSharpGL 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo ...

  3. 容易被忽略CSS特性

    CSS初学感觉很简单,但随着学习的深入才感觉CSS的水由多深,平常总会遇到各种坑,先总结一些经常遇到的坑 大小写不敏感 虽然我们平时在写CSS的时候都是用小写,但其实CSS并不是大小写敏感的 .tes ...

  4. Oracle客户端连接远程Oracle服务中文乱码问题

    在本机远程连接远程Oracle服务的时候,写了如下检索语句 select * from sys_employee 结果集中出现了中文乱码,但是远程服务器本身的PL/SQL检索出来没有问题 解决方案: ...

  5. 程序中保存状态的方式之Cookies

    程序中保存状态的方式之 Cookies,之前写过一篇关于ViewState的.现在继续总结Cookies方式的 新建的测试页面login <%@ Page Language="C#&q ...

  6. Leetcode-206 Reverse Linked List

    #206.  Reverse Linked List Reverse a singly linked list. /** * Definition for singly-linked list. * ...

  7. 数据库的Disk Space usage

    SQL Server占用的存储空间,包含数据库file占用的存储空间,数据库对象占用的存储空间. 一,数据库file占用的存储空间 1,使用 sys.master_files 查看数据库中各个file ...

  8. Dijkstra算法优先队列实现与Bellman_Ford队列实现的理解

    /* Dijkstra算法用优先队列来实现,实现了每一条边最多遍历一次. 要知道,我们从队列头部找到的都是到 已经"建好树"的最短距离以及该节点编号, 并由该节点去更新 树根 到其 ...

  9. 10年C#历程的MVP之路与MVP项目介绍

            本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html  1.意外的惊喜 10月份收到微软总部寄来的荣誉证书,非常激动, ...

  10. Util应用程序框架公共操作类(八):Lambda表达式公共操作类(二)

    前面介绍了查询的基础扩展,下面准备给大家介绍一些有用的查询封装手法,比如对日期范围查询,数值范围查询的封装等,为了支持这些功能,需要增强公共操作类. Lambda表达式公共操作类,我在前面已经简单介绍 ...