错误(10170):在文本“default”附近的final_lab.sv(46)处的Verilog HDL语法错误;期待“结束”

时间:2016-03-07 02:25:19

标签: verilog

你好我在verilog中得到以下错误,我不知道为什么似乎无法搞清楚。请帮忙

  

错误:错误(10170):final_lab.sv上的Verilog HDL语法错误(46)   接近文本“默认”;期待“结束”

代码

module final_lab (CLOCK_50,  SW, LEDR, KEY, HEX5, HEX4, HEX3, HEX2, HEX1,HEX0); 
    input logic CLOCK_50; 
    input logic [6:1] SW; 
    input logic [3:0] KEY;

    output logic [9:0] LEDR; 
    output logic [6:0] HEX5, HEX4, HEX3, HEX2, HEX1, HEX0;

    logic [6:1] whatWeHave;
    logic reset;
    logic keyOne , keyThree;  


    assign whatWeHave = 6'b000000;

    always_comb 
        begin
        if (whatWeHave[6:1] == SW[6:1])
            begin
            keyThree = 0;
            keyOne = 0;
            whatWeHave = whatWeHave;
            end

        else if (whatWeHave[6:1] < SW[6:1])
            begin
            whatWeHave = whatWeHave+1;
            keyThree = 1;
            keyOne = 0;
            end

        else if (whatWeHave[6:1] > SW[6:1])
            begin
            whatWeHave = whatWeHave-1;
            keyOne = 1;
            keyThree = 0;
            end

        else
            begin
            whatWeHave = whatWeHave;
            keyOne = 0;
            keyThree = 0; 
            end 

        default
            begin 
            whatWeHave = 6'bxxxxxx;
            keyOne = 1'bx;
            keyThree = 1'bx;
            end
        end


    normalLight one (.clk(CLOCK_50), .reset(SW[9]), .L(keyThree), .R(keyZero), .NL(LEDR[2]), .NR(1'b0), .lightOn(LEDR[1]));

    normalLight two (.clk(CLOCK_50), .reset(SW[9]), .L(keyThree), .R(keyZero), .NL(LEDR[3]), .NR(LEDR[1]), .lightOn(LEDR[2]));

    normalLight three (.clk(CLOCK_50), .reset(SW[9]), .L(keyThree), .R(keyZero), .NL(LEDR[4]), .NR(LEDR[2]), .lightOn(LEDR[3]));

    normalLight four (.clk(CLOCK_50), .reset(SW[9]), .L(keyThree), .R(keyZero), .NL(LEDR[5]), .NR(LEDR[3]), .lightOn(LEDR[4]));

    normalLightLight five (.clk(CLOCK_50), .reset(SW[9]), .L(keyThree), .R(keyZero), .NL(LEDR[6]), .NR(LEDR[4]), .lightOn(LEDR[5]));

    normalLight six (.clk(CLOCK_50), .reset(SW[9]), .L(keyThree), .R(keyZero), .NL(1'b0), .NR(LEDR[5]), .lightOn(LEDR[6]));
endmodule

3 个答案:

答案 0 :(得分:1)

在您的逻辑中使用默认的地方是不合适的。 默认关键字通常与案例语句一起使用,而不与 if-else 条件一起使用。

在嵌套的if-else中,最终的else(没有条件)将被执行类似于default。看起来你正试图有两个默认条件。尝试重写你的逻辑。

答案 1 :(得分:0)

与前两个答案相同, if-else 语句中不存在默认
如果您考虑一下,在默认语句之前就有 else 语句,该语句将涵盖之前未涵盖的所有案例,然后执行默认的操作案例声明中。

答案 2 :(得分:-1)

这是错误的语法。基本上我们使用默认作为案例语句的最后一部分。您不能将默认 if-else 语句一起使用。 只需删除默认关键字,然后使用其他 if-else 语句。 而不是所有 if-else 语句;您可以在最后一部分使用案例语句和默认关键字。