通过Verilog反击

时间:2018-04-05 18:50:50

标签: verilog

我在Verilog开发了一个计数器,循环通过以下系列:

0, 1, 3, 7, 6, 4, 0, 1, ...

并重置为0上的reset_b

到目前为止,这是我的代码,它似乎没有在周期中超过3

module Counter_1(output reg [2: 0] Count, input clock, reset);

    reg [2: 0] last;

    always @(posedge clock, negedge reset) begin

        if (!reset) begin
            Count <= 3'b000;
        end

        else begin

            case (last)
                3'b000: Count <= 3'b001;
                3'b001: Count <= 3'b011;
                3'b011: Count <= 3'b111;
                3'b111: Count <= 3'b110;
                3'b110: Count <= 3'b100;
                3'b100: Count <= 3'b000;
            endcase

        end

        last <= Count;

    end

endmodule

2 个答案:

答案 0 :(得分:2)

查看序列总是有用的:

000
001
011
111
110
100

分析模式,您可以通过以下方式找到序列:

if (!reset) 
   Count <= 3'b000;
else
   Count <= {Count[1:0],~Count[3]};

要遵循您的方法:您可以使用Count作为下一个值的输入。使用&#39; last&#39;不需要:

case (Count)
3'b000 : Count <= 3'b001;
3'b001 : Count <= 3'b011;

答案 1 :(得分:0)

你当然应该在重置块中指定最后一个:

router.get('/', function(req, res) {
    var employeeDetails; // JSON File Containing Details
    employeeDetails=employeeDetails.parse;
    res.render('your site',{data:employeeDetails});
});

我想这会解决您的问题,因为我没有看到您的代码有任何其他问题(假设您的时钟和重置输入正常工作,并且您正在使用有效的高重置)。

另外,为什么要包括重置在你的常态?我相信你永远的条件可能只是:

    if (!reset) begin
        last <= 3'b000;
        Count <= 3'b000;
    end