Verilog 我得到这个错误vlog-13069

Verilog 我得到这个错误vlog-13069,verilog,modelsim,Verilog,Modelsim,首先,对不起我的英语水平 我正在学习Verilog,我有这个代码 module paralelo_serie ( data_in,clk, D_serie, nSyn, Done ); input wire [12:0] data_in; input clk; output reg D_serie, nSyn, Done; genvar i; 84 if (data_in == 0) Done= 1; else.... 当我尝试编译此代码时,会收到以下错误消息: 错误:(vlog-1306

首先,对不起我的英语水平

我正在学习Verilog,我有这个代码

module paralelo_serie ( data_in,clk,  D_serie, nSyn, Done );
input wire [12:0] data_in;
input clk;
output reg D_serie, nSyn, Done;
genvar i;

84 if (data_in == 0) Done= 1;
else....
当我尝试编译此代码时,会收到以下错误消息:

错误:(vlog-13069)C:/Users/Pedro/Documents/master/asignaturas/primer cuatrimestre/Metodologia de desño y herramientas cad/proyecto digital/proyecto digital.v(84):接近“=”:语法错误,意外“=”

错误:C:/Users/Pedro/Documents/master/asignaturas/primer cuatrimestre/Metodologia de diseño y herramientas cad/proyecto digital/proyecto digital.v(84):(vlog-13205)在“完成”后的范围内发现语法错误。是否缺少一个“::”

我是这门语言的初学者,我不知道发生了什么。我在代码中多次遇到这个错误,但有时我可以通过将reg改为wire和其他时间将阻塞分配改为no blocking来解决它。。。我真的不知道我该怎么解决,我真的很沮丧。。。请帮忙,你是我最后的希望


抱歉,我忘了,我使用modelsim 10.4学生版,因为toolic提到了
84
,看起来它只是从代码中意外剪切粘贴而来

If语句,除非它们用于需要包含在进程中的generate语句(有些人称之为块)。这可以是
首字母
始终

对于组合逻辑:

always @* begin
  if (data_in == 0) begin 
    Done = 'b1;
  end
  else begin
     Done = 'b0; 
    //...
  end
end
如果不在else分支中定义Done,将导致创建闩锁

在学习过程中,我建议使用begin end语句和缩进代码,因为这有助于澄清代码的结构,并使打字更容易识别

如果
Done
作为一根电线留下,您可以直接使用:

assign Done = (data_in == 0) ;
另一方面,如果希望同步驱动
Done

always @(posedge clk) begin
  if (data_in == 0) begin 
    Done <= 'b1;
  end
  else begin
    //...
  end
end
始终@(posedge clk)开始
如果(数据_in==0)开始

何时执行
if(data\u in==0)
语句?