所以我目前正在做一个涉及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
有没有人知道它为什么会这样?
答案 0 :(得分:2)
我假设您正在尝试合成&#34; state&#34;的寄存器,在这种情况下更新&#34;&lt; =&#34;需要始终在里面(@posedge clk)。