|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
代码如下:
module clk(rst,sclk,dll,mclk,fsmclk1,fsmclk2,fsmclk3,fsmclk4,tmpclk1,tmpclk2,tmpclk3,tmpclk4,tmpclk12,tmpclk34,trkclk2,trkclk4,tempclk);
input sclk,dll,rst;
output mclk,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
编译的波形图如图所示: |
-
|