求大神帮忙详细分析一下此程序:
/********锯齿波************************************/
module j_b(
input clk,
input rst,
input [3:0]Open,
input [3:0]Frequency,
output [11:0]out_j_d
);
/************************************************/
reg [17:0] cnt;//4096计数器
reg [11:0] rout_d;
always @ (posedge clk,negedge rst)
begin
if(!rst)
begin
cnt<=18'd0;
rout_d<=12'd0;
end
else if(Open==4'd4)//检测是否开启锯齿波
begin
if(cnt>=18'd81920)
begin
cnt<=18'd0;
rout_d<=12'd0;
end
else
begin
cnt<=cnt+Frequency+4'd5;//可变计数器
rout_d<=cnt;
end
end
else
begin
cnt<=18'd0;
rout_d<=12'd0;
end
end
/***************************************************************/
assign out_j_d=rout_d;
endmodule
/********锯齿波************************************/
module j_b(
input clk,
input rst,
input [3:0]Open,
input [3:0]Frequency,
output [11:0]out_j_d
);
/************************************************/
reg [17:0] cnt;//4096计数器
reg [11:0] rout_d;
always @ (posedge clk,negedge rst)
begin
if(!rst)
begin
cnt<=18'd0;
rout_d<=12'd0;
end
else if(Open==4'd4)//检测是否开启锯齿波
begin
if(cnt>=18'd81920)
begin
cnt<=18'd0;
rout_d<=12'd0;
end
else
begin
cnt<=cnt+Frequency+4'd5;//可变计数器
rout_d<=cnt;
end
end
else
begin
cnt<=18'd0;
rout_d<=12'd0;
end
end
/***************************************************************/
assign out_j_d=rout_d;
endmodule