[verilog] 请教一个三分频代码问题,谢谢

[复制链接]
 楼主| martinawd 发表于 2020-6-8 20:44 | 显示全部楼层 |阅读模式
本帖最后由 martinawd 于 2020-6-8 21:22 编辑

写了个三分频的模块

module fenpin(clk,rst,out);
input clk,rst;
output out;
reg out;
reg [1:0] i,j;

always @(posedge clk)
begin
if(!rst)
begin
i<=2'b00;
j<=2'b00;
end
else if (i==2'b10)
i<=2'b00;
else
i=i+1;
end

always @(negedge clk)
if(j==2'b10)
j<=2'b00;
else
j<=j+1;

always @(posedge clk)
begin
  if(!rst)
  out<=0;
   else if (i==2'b10)
   out<=~out;
  else
  out<=out;
end   

always @(negedge clk)
begin
  if(!rst)
  out<=0;
   else if (j==2'b01)
   out<=~out;
   else
   out<=out;
end   

endmodule


仿真结果在画圈的地方信号不应该有跳变,却产生了跳变,请教大神是什么问题,谢谢啦!



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
honest1185 发表于 2020-6-9 08:59 | 显示全部楼层
本帖最后由 honest1185 于 2020-6-9 09:03 编辑

不明白为什么 posedge和negedge同时触发,同时计数?这样是不是会导致 分频 在上升沿下降沿都跳变,你红色部分正好是ppsedge的第三个触发位置。
 楼主| martinawd 发表于 2020-6-9 14:13 | 显示全部楼层
honest1185 发表于 2020-6-9 08:59
不明白为什么 posedge和negedge同时触发,同时计数?这样是不是会导致 分频 在上升沿下降沿都跳变,你红色 ...

是的,我也发现是这个问题了,谢谢
zlf1208 发表于 2020-6-10 08:58 | 显示全部楼层
作为一个设计原则,不要同时使用时钟的二个跳变沿
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

1

主题

7

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部