为什么Xilinx ISE不会在状态机中接受此声明?

时间:2015-12-22 21:09:14

标签: verilog fpga xilinx-ise

所以我目前正在做一个涉及hd44780显示器的小项目。但是因为我想编写自己的init序列,所以决定使用状态机。我对FPGA很新,他们的编程来自Java背景。

这是我的状态机Block。

我这状态可行,IDE不显示任何错误。

df.rdd
  .aggregateByKey(Map[String,Int]())
  (
    (wordMap, word) => wordMap + (word -> (1 + wordMap.getOrElse(word, 0))), 
    (wordMap1, wordMap2) => wordMap1 ++ wordMap2.map{ case(k,v) => (k -> (v + wordMap1.getOrElse(k,0))) }
  )

但是如果我在其中一个状态的开头和结尾之间添加任何分配,它会向我显示"第n行:"< ="附近的语法错误。"

例如:

    always @(posedge reset)
    begin
    en_timeout <= 2'b00;
    timeout <= 14'b00000000000000;
    init <= 4'b000;
    data <= 8'b00000000;
    en <= 1'b1; //active low
    rs <= 1'b0;
    rw <= 1'b0;
    state <= 4'b0000;
    next_state <= 4'b0000;

    debug <= 1'b0;
    end

if(timeout == 0)
    begin //Begin of Initiation state machine
        case(state)
            s0:
                begin
                end

            s1:
                begin
                end
            s2:
                begin
                end
            s3:
                begin
                end
            s4:
                begin
                end
            s5:
                begin
                end
            s6:
                begin
                end
            s7:
                begin
                end
            s8:
                begin
                end
            s9:
                begin
                end
            s10:
                begin
                end
            normal:
                begin
                end
        endcase
    end //End of Initiation state machine

到目前为止我的DisplayDriver的完整代码:

            case(state)
            s0:
                begin
                state <= s1;
                end

有没有人知道它为什么会这样?

1 个答案:

答案 0 :(得分:2)

我假设您正在尝试合成&#34; state&#34;的寄存器,在这种情况下更新&#34;&lt; =&#34;需要始终在里面(@posedge clk)。