GLY_2002 2022-10-03 23:43 采纳率: 33.3%
浏览 74
已结题

verilog中利用计数器实现循环语句出现错误

为了得到满足括号内条件的count数值,在我利用计数器实现以下操作的时候,得到的count数值比正确的数值大1(代码中count的正确值应为27,得到的却是28),但是如果将代码中的a,b,c,p数值做更改,有时候,却能得到正确的count值。不明白为什么,希望有懂的能指点迷津。

``c
module yan_zheng(
input clk,
input rst,
output reg[7:0] led
);

wire signed[7:0] a;
wire signed[7:0] b;
wire signed[7:0] c;
wire signed[7:0] p;
reg[7:0] count;
assign a = 8'd19;
assign b = 8'd28;
assign c = 8'd20;
assign p = 8'd29;

always @(posedge clk or negedge rst)
if(!rst)
count <= 8'b0;
else if((a*count)%p == c)
led <= count;
else
count <= count + 1'b1;

endmodule



  • 写回答

2条回答 默认 最新

  • 逆游的懒喵喵 2022-10-04 08:27
    关注

    请问仿真文件你是怎么写的呢?还有reg推荐赋初值0,这可能是个隐患。还有推荐把非阻塞赋值改为阻塞赋值试试

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月5日
  • 创建了问题 10月3日