📄 musicpro_try.v
字号:
/* 乐曲演奏电路子模块
与musicpro.v的区别是这里均使用阻塞赋值语句*/
module musicpro_try(clk_6M,clk_4,clr,speaker,high,mid,low,carry);
input clk_6M,clk_4,clr; //clk_6M: 用于产生各种音阶频率的基准频率;clk_4: 用于控制音长(节拍)的时钟频率
output speaker,carry; //speaker:用于激励扬声器的输出信号,为方波;carry:计数器divider的进位输出
output [3:0]high,mid,low; //分别用于显示高音、中音和低音音符,各用一个数码管来显示
reg[3:0]high,mid,low;
reg[13:0]divider,origin; //divider :对clk_6M进行分频的计数器;origin:各种音阶频率对应的预置数
reg[7:0]counter; //用于控制每个音符的时长及演奏的循环进行
reg speaker;
wire carry;
/* (1)反馈预置计数器 */
assign carry=(divider==16383);
always @(posedge clk_6M )
begin
if(divider==16383)
divider=origin;
else
divider=divider+1;
end
/* (2)2分频器 */
always @(posedge carry or posedge clr)
begin
if(clr) // 异步清零,高有
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -