音乐发生器 这样写代码 能行的通么

2019-03-25 09:52发布

module music(clk,h);
input clk;         //-----------50MHZ
output h;
reg clk_4,clk_5;
reg [19:0] div ;
reg   [7:0] counter;
reg   [19:0]  cnt,rnt1,rnt2,rnt3; //-------------------------音符定义 parameter
        D1=
        D2=
        D3=
        M1=
        M2=
        M3=
        H1=
        H2=
        H3= //-----------------------节拍控制模块
always @(posedge clk_4)
if(counter==  )
   counter<=0;
else counter<=counter+1;
case(counter)
   0:  div=
   1:  div=
   2:  div=
   3:  div=
   4:  div=
   5:  div=
   6:  div=
   7:  div=
   8:  div=
defualt: div='bfffffff;
// ------------------------ 频率产生模块
always @(posedge clk_5)   
if(cnt==div)
   begin
     h<=~h;
     cnt<=0;
   end
else
   cnt<=cnt+1;     //-------------------------clk_5产生模块 750 Hz always @(posedge clk)
if(cnt2== )
begin
  cnt2=0;
  clk_5<=~clk_5;
end
else cnt2<=cnt2+1;  
//--------------------------clk_4 产生模块 4HZ
always @(posedge clk)
if(cnt3==)
begin
  cnt3<=0;
   clk_4<=~clk_4;
end
else
cnt3<=cnt3+1; endmodule   节拍时钟clk_4 和 基准时钟 clk_5放到这里没有问题吧? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
eeleader
1楼-- · 2019-03-25 14:55
< /

//-------------------------clk_5产生模块 750 Hz

always @(posedge clk)
if(cnt2== )
begin
cnt2=0;
clk_5<=~clk_5;
end
else cnt2<=cnt2+1;




//--------------------------clk_4 产生模块 4HZ
always @(posedge clk)
if(cnt3==)
begin
cnt3<=0;
clk_4<=~clk_4;
end
else
cnt3<=cnt3+1;

endmodule



节拍时钟clk_4 和 基准时钟 clk_5放到这里没有问题吧?

 

有点问题!

 (CNT==?) 差数据哦!

leomeng
2楼-- · 2019-03-25 19:02
这是个大体的构架 ,做的时候 我会写上相对应的数据 ;有的书上说,分频最好不要用计数器去分,用quartus自带的pll锁相环去实现;有区别么?
turs
3楼-- · 2019-03-25 21:09

一样的问题

jjkwz
4楼-- · 2019-03-26 00:48
用计数器去分频的话是你的一个大概计数,但是如果用pll锁相环分频的话会好些,但是如果是分频的话建议差不多的时候还是用自己写的程序吧,pll锁相环如果用于分频的话,占用资源比较多,还是用于倍频比较好!
常见泽1
5楼-- · 2019-03-26 04:15
 精彩回答 2  元偷偷看……
eeleader
6楼-- · 2019-03-26 04:39

一个音乐器引发大家讨论分频器设计,真好真好!

 

一周热门 更多>