打印
[verilog]

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

[复制链接]
837|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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

粉丝