2016-05-24 3 views
2

Hier ist der Code, den ich geschrieben habe:Ich habe ein unvermeidlichen Quartus Syntaxfehler für Verilog

reg number; 
always @(posedge clk) 
begin 
case(SW[3:1]) 
     000: number = 32h'A65D; 
     001: number = 32h'BAB9; 
     010: number = 32h'9430; 
     011: number = 32h'8BEB; 
     100: number = 32h'7CB8; 
     101: number = 32h'62F1; 
     110: number = 32h'6EF9; 
     111: number = 32h'5D5C; 
     default: number = 32h'0000; 
endcase 
end 

ich immer einen Fehler in quartus für jede Zeile immer

„Fehlermeldung, (10170): Verilog HDL Syntaxfehler bei test.v (181) in der Nähe von Text "h"; erwarten ""“

ich bin neu in Verilog, so wollte ich irgendwelche eklatanten Fehler, wenn es fragen sind, dass Ich habe gemacht und wie ich diesen Fehler beheben kann, danke!

Antwort

1

Sie müssen eine Bitbreite für number angeben; Es ist derzeit 1 Bit breit und Sie möchten wahrscheinlich 32 Bit. Sie müssen eine Größe und eine Basis radix (3'b) zu jedem der Fall Artikel hinzufügen:

reg [31:0] number; 
always @(posedge clk) 
begin 
case(SW[3:1]) 
     3'b000: number <= 32'hA65D; 
     3'b001: number <= 32'hBAB9; 
     3'b010: number <= 32'h9430; 
     3'b011: number <= 32'h8BEB; 
     3'b100: number <= 32'h7CB8; 
     3'b101: number <= 32'h62F1; 
     3'b110: number <= 32'h6EF9; 
     3'b111: number <= 32'h5D5C; 
     default: number <= 32'h0000; 
endcase 
end 

Sie nonblocking Zuweisungen verwenden sollten (<=) für die sequentielle Logik.

UPDATE: ... und natürlich, nachdem Sie Eugenio Lyattes Antwort gesehen haben, beheben Sie auch den Syntaxfehler 'h.

1

Sie müssen 32h'A65D für 32'hA65D ändern. Dies wird Ihren Fehler beheben.

reg [31:0]number 
always @(posedge clk) 
begin 
case(SW[3:1]) 
3'b000: number <= 32'hA65D; 
3'b001: number <= 32'hBAB9; 
    3'b010: number <= 32'h9430; 
    3'b011: number <= 32'h8BEB; 
    3'b100: number <= 32'h7CB8; 
    3'b101: number <= 32'h62F1; 
    3'b110: number <= 32'h6EF9; 
    3'b111: number <= 32'h5D5C; 
endcase 
enter code here 
Verwandte Themen