2016-04-12 6 views
0

поэтому у меня этот код в verilog, и я не знаю, что это проблема? в даного из «если», в условиях, в регистрах, я не знаю, пожалуйста, помогите мнеverilog HDLCompiler 806 ошибка около <=

здесь код и mesages ошибки:

module top(
    input [31:0] din, 
    output [31:0] dout 
    ); 

reg [4:0] i, j; 
reg [31:0] max =0; 
reg [4:0] cnt; 
reg [4:0] comp; 


for(i=0; i<=31; i=i+1) begin 
    if(din[i]== 1'b0) begin 
     comp <= comp; 
     end 

     else if(din[i]==1 & din[i+1]==1) begin 
      cnt<=cnt+1; 
      if(cnt>comp) begin 
       comp<=cnt; 
       end else begin 
        comp<=comp; 
        end 
       end 
      end 

проблемы, появляться на и включаются и исчезают:

INFO:HDLCompiler:1845 - Analyzing Verilog file "D:/ProiecteISE/verilog proj/teme 2016/tema1/top.v" into library work ERROR:HDLCompiler:806 - "D:/Proiecte ISE/verilog proj/teme2016/tema1/top.v" Line 34: Syntax error near "<=". ERROR:HDLCompiler:806 - "D:/Proiecte ISE/verilog proj/teme2016/tema1/top.v" Line 38: Syntax error near "<=". ERROR:HDLCompiler:806 - "D:/Proiecte ISE/verilog proj/teme2016/tema1/top.v" Line 40: Syntax error near "<=". ERROR:HDLCompiler:806 - "D:/Proiecte ISE/verilog proj/teme2016/tema1/top.v" Line 42: Syntax error near "<=". ERROR:ProjectMgmt - 4 error(s) found while parsing design hierarchy.

и если я удалю ";" в строках с ошибками, его apears как это:

module top(
    input [31:0] din, 
    output [31:0] dout 
    ); 

reg [4:0] i, j; 
reg [31:0] max =0; 
reg [4:0] cnt; 
reg [4:0] comp; 


for(i=0; i<=31; i=i+1) begin 
    if(din[i]== 0) begin 
     comp <= comp 
     end 
     else if(din[i]==1 & din[i+1]==1) begin 
      cnt<=cnt+1 
      if(cnt>comp) begin 
       comp<=cnt 
       end else begin 
        comp<=comp 
        end 
       end 
      end 





endmodule 

и получить только одну ошибку

INFO: HDLCompiler: 1845 - Анализ Verilog файла «D:/Proiecte ISE/Verilog PROJ/Теме 2016/tema1 /top.v "в библиотечную работу ОШИБКА: HDLCompiler: 806 -" D:/Proiecte ISE/verilog proj/teme 2016/tema1/top.v "Строка 34: Синтаксическая ошибка около" < = ". ОШИБКА: ProjectMgmt - 1 ошибка, обнаруженная при анализе иерархии дизайна.

+0

Пожалуйста, не добавляйте много дополнительных сведения в неотформатированных комментариях. Вместо этого, пожалуйста, отредактируйте вопрос, чтобы включить дополнительный способ, который легко читать. – AdrianHHH

+0

спасибо за совет, его мой первый вопрос –

+0

решил сам, я должен вставить «alwasy @ (*) начать» перед «для» –

ответ

4

Во-первых, вам нужны точки с запятой, чтобы прервать каждое назначение/операцию, поэтому избавление от них не является правильным исправлением.

Ошибка .: жалоба не входит в обозначение <=. Это связано с тем, что вы используете стиль присвоений, который действителен только в блоке или initial.

Оберните for петли в [email protected](*), если вы ищете, чтобы сделать комбинационную логику (в этот момент вы должны использовать блокирование назначения =) или [email protected](posedge clk) блок, если вы делаете последовательную логику.

Например:

[email protected](*) begin 
    for(i=0; i<=31; i=i+1) begin 
     .... 
    end 
end 
+0

thnks для поддержки, он отлично работает сейчас –