Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用verilog、Modelsim制作计数器_Verilog_Counter_Modelsim - Fatal编程技术网

用verilog、Modelsim制作计数器

用verilog、Modelsim制作计数器,verilog,counter,modelsim,Verilog,Counter,Modelsim,我想用verilog制作循环计数器 module rr_arbiter ( clk, // positive edge trigger reset, // negative edge trigger req0, req1, req2, req3, grant0, grant1, grant2, grant3, priority, priority_req); input clk, reset; input req0, req1, req2, req3; input priority; in

我想用verilog制作循环计数器

module rr_arbiter (
clk, // positive edge trigger
reset,  // negative edge trigger
req0, req1, req2, req3, 
grant0, grant1, grant2, grant3,
priority, priority_req);

input clk, reset;
input req0, req1, req2, req3;
input priority;
input [1:0] priority_req;

output grant0, grant1, grant2, grant3;  

reg x 

always(posedge clk or negedge reset) begin
pirority_req = priority;

if (reset) begin
    grant0 <= 1'b0;
    grant1 <= 1'b0;
    grant2 <= 1'b0;
    grant3 <= 1'b0;
   end
else
begin
    if(priority == 1)
        if (priority req == 2b'00)
            begin
            x=1;
            grant0 <= (grant0*(~x))+(grant1*x);     
            x=0;
            grant0 <= (grant0*(~x))+(grant1*x);
            grant1 <= grant2;
            grant2 <= grant3;
            grant3 <= grant1;
            //  counter 0012300123
            end
        else if (priority req == 2b'01)
            begin
            grant0 <= grant1;
            x=1;
            grant1 <= (grant1*(~x))+(grant2*x);
            x=0;
            grant1 <= (grant1*(~x))+(grant2*x);
            grant2 <= grant3;
            grant3 <= grant1;
            //  counter 0112301123
            end
        else if (priority req == 2b'10)
            begin
            grant0 <= grant1;
            grant1 <= grant2;
            x=1;
            grant2 <= (grant2*(~x))+(grant3*x);
            x=0;
            grant2 <= (grant2*(~x))+(grant3*x);
            grant3 <= grant1;
            //  counter 0122301223
            end
        else if (priority req == 2b'11)
            begin
            grant0 <= grant1;
            grant1 <= grant2;
            grant2 <= grant3;
            x=1;
            grant3 <= (grant3*(~x))+(grant1*x);
            x=0;
            grant3 <= (grant3*(~x))+(grant1*x);
            //  counter 0123301233
            end
    end

    else 
    begin
        grant0 <= ~grant2 * grant3;
        grant1 <= grant0;
        grant2 <= grant1;
        grant3 <= grant2;
        //counter 01230123
    end
end
end

end

endmodule 
模块rr\U仲裁器(
clk,//正边缘触发器
复位,//负边缘触发器
需求0,需求1,需求2,需求3,
grant0,grant1,grant2,grant3,
优先级,优先级(req);
输入时钟,复位;
输入req0、req1、req2、req3;
输入优先级;
输入[1:0]优先级要求;
输出grant0、grant1、grant2、grant3;
注册号x
始终(posedge clk或negedge重置)开始
优先级=优先级;
如果(重置)开始

grant0第17行的错误消息是不言自明的。它期待一个“;”。你少了一个“;”第15行


如果错误消息看起来毫无意义,请始终注视屏幕,查看问题是否出在前一行。

第17行的错误消息是不言自明的。它期待一个“;”。你少了一个“;”第15行


如果错误消息似乎没有任何意义,请始终向上看屏幕,看看问题是否出在前一行。

Thx。我找到并修复了它,但我真正想做的是一个RR计数器,它根本不工作。你能帮我吗?应该是这样的:当重置=1时,所有授权=0优先级==0计数器:01 2 3 0 1 2 3…优先级==1和优先级需求==0计数器:01 2 3 0 1 2 3…优先级==1和优先级需求==1计数器:01 1 2 0 1 2 3…优先级=1和优先级需求==2计数器:01 2 3 0 1 2 2 2 3…优先级=1和优先级=3计数器:01 2 3 3 0 1 2 3 3 3…我如何才能使该计数器系统。。!你需要把问题分解开来,想想你需要什么样的障碍。具有两个状态以跟踪重复计数的FSM;计数0-3但与FSM交互以进行重复计数的计数器;一个4-2编码器,用于将req0-req3转换为两位二进制数,以便与计数器输出进行比较(您需要考虑如果多个req为1,该怎么办);2-4解码器,用于将计数器输出转换为grant0-grant3。如果你像这样把问题分解,你可能会发现你的头脑比试图在一个巨大的
始终
block.Thx中编码要容易得多。我找到并修复了它,但我真正想做的是一个RR计数器,它根本不工作。你能帮我吗?应该是这样的:当重置=1时,所有授权=0优先级==0计数器:01 2 3 0 1 2 3…优先级==1和优先级需求==0计数器:01 2 3 0 1 2 3…优先级==1和优先级需求==1计数器:01 1 2 0 1 2 3…优先级=1和优先级需求==2计数器:01 2 3 0 1 2 2 2 3…优先级=1和优先级=3计数器:01 2 3 3 0 1 2 3 3 3…我如何才能使该计数器系统。。!你需要把问题分解开来,想想你需要什么样的障碍。具有两个状态以跟踪重复计数的FSM;计数0-3但与FSM交互以进行重复计数的计数器;一个4-2编码器,用于将req0-req3转换为两位二进制数,以便与计数器输出进行比较(您需要考虑如果多个req为1,该怎么办);2-4解码器,用于将计数器输出转换为grant0-grant3。如果你像这样把问题分解,你可能会发现,比起试图在一个巨大的
始终
块中编码,你更容易把问题解决。