代码问题请教——急~~
时间:10-02
整理:3721RD
点击:
代码如下:
module clk(rst,sclk,dll,mclk,fsmclk1,fsmclk2,fsmclk3,fsmclk4,tmpclk1,tmpclk2,tmpclk3,tmpclk4,tmpclk12,tmpclk34,trkclk2,trkclk4,tempclk);
input sclk,dll,rst;
outputmclk,tempclk,fsmclk1,fsmclk2,fsmclk3,fsmclk4,tmpclk1,tmpclk2,tmpclk3,tmpclk4,tmpclk12,tmpclk34,trkclk2,trkclk4;
reg tempclk,tmpclk1,tmpclk2,tmpclk3,tmpclk4;
assign mclk=~dll;
assign fsmclk1=sclk & mclk & tempclk & rst;
assign fsmclk2=sclk & mclk & ~tempclk & rst;
assign fsmclk3=~sclk & mclk & tempclk & rst;
assign fsmclk4=~sclk & mclk & ~tempclk & rst;
always @(posedge dll or negedge rst)
begin
if(~rst)
tempclk<=1;
else
tempclk<=~tempclk;
end
always @(posedge sclk or negedge rst)
if(~rst)
tmpclk1 <= 1'b0;
else
tmpclk1 <= ~tmpclk1;
always @(posedge sclk or negedge rst)
if(~rst)
tmpclk2 <= 1'b0;
else if(~tmpclk1)
tmpclk2 <= ~tmpclk2;
always @(negedge sclk or negedge rst)
if(~rst)
tmpclk3 <= 1'b0;
else
tmpclk3 <= ~tmpclk3;
always @(negedge sclk or negedge rst)
if(~rst)
tmpclk4 <= 1'b0;
else if(~tmpclk3)
tmpclk4 <= ~tmpclk4;
assign tmpclk12=tmpclk1 & tmpclk2;
assign trkclk2=tmpclk1 & tmpclk2 & fsmclk2;
assign tmpclk34=tmpclk3 & tmpclk4;
assign trkclk4=tmpclk1 & tmpclk2 & fsmclk4;
endmodule
编译的波形图如图所示:
module clk(rst,sclk,dll,mclk,fsmclk1,fsmclk2,fsmclk3,fsmclk4,tmpclk1,tmpclk2,tmpclk3,tmpclk4,tmpclk12,tmpclk34,trkclk2,trkclk4,tempclk);
input sclk,dll,rst;
outputmclk,tempclk,fsmclk1,fsmclk2,fsmclk3,fsmclk4,tmpclk1,tmpclk2,tmpclk3,tmpclk4,tmpclk12,tmpclk34,trkclk2,trkclk4;
reg tempclk,tmpclk1,tmpclk2,tmpclk3,tmpclk4;
assign mclk=~dll;
assign fsmclk1=sclk & mclk & tempclk & rst;
assign fsmclk2=sclk & mclk & ~tempclk & rst;
assign fsmclk3=~sclk & mclk & tempclk & rst;
assign fsmclk4=~sclk & mclk & ~tempclk & rst;
always @(posedge dll or negedge rst)
begin
if(~rst)
tempclk<=1;
else
tempclk<=~tempclk;
end
always @(posedge sclk or negedge rst)
if(~rst)
tmpclk1 <= 1'b0;
else
tmpclk1 <= ~tmpclk1;
always @(posedge sclk or negedge rst)
if(~rst)
tmpclk2 <= 1'b0;
else if(~tmpclk1)
tmpclk2 <= ~tmpclk2;
always @(negedge sclk or negedge rst)
if(~rst)
tmpclk3 <= 1'b0;
else
tmpclk3 <= ~tmpclk3;
always @(negedge sclk or negedge rst)
if(~rst)
tmpclk4 <= 1'b0;
else if(~tmpclk3)
tmpclk4 <= ~tmpclk4;
assign tmpclk12=tmpclk1 & tmpclk2;
assign trkclk2=tmpclk1 & tmpclk2 & fsmclk2;
assign tmpclk34=tmpclk3 & tmpclk4;
assign trkclk4=tmpclk1 & tmpclk2 & fsmclk4;
endmodule
编译的波形图如图所示:
问题:
fsmclk1、fsmclk2、fsmclk3、fsmclk4这四个信号是由已经得到的3个信号与产生的,但是fsmclk1、fsmclk2、fsmclk3、fsmclk4这四个信号必须是fsmclk1最先出现高电平,然后依次是fsmclk1、fsmclk2、fsmclk3、fsmclk4出现高电平
不知道怎么来解决这个问题
希望得到高人指点,谢谢!