2017-08-08 1 views
-2

In diesem Code-Snippet:Verilog Syntaxfehler in der Nähe von "<=" innerhalb einer case-Anweisung

reg [4:0] status_led = 5'b00100; 
    case (status_led) 
     default: begin     
      if (rotation) begin 
       status_led[4] <= status_led[3]; 
       status_led[3] <= status_led[2]; 
       status_led[2] <= status_led[1]; 
       status_led[1] <= status_led[0]; 
       status_led[0] <= status_led[4]; 
      end else if (~rotation) begin 
       status_led[4] <= status_led[0]; 
       status_led[3] <= status_led[4]; 
       status_led[2] <= status_led[3]; 
       status_led[1] <= status_led[2]; 
       status_led[0] <= status_led[1]; 
      end 
     end 
    endcase 

ich die Fehlermeldung "Syntaxfehler in der Nähe von < =" get. Warum ist das ein Fehler?

+1

Was kommt vor dem Code, den Sie angezeigt haben? Ist das ein Teil eines 'immer' Blocks oder einer Funktion? – mkrieger1

+0

Und warum verwenden Sie eine 'case' Anweisung mit nichts als einem' default' Fall? – mkrieger1

+0

Dieser Code ist eigenständig. Ursprünglich hatte ich andere Fälle, aber ich habe den Code geändert. Ich habe diesen Code bereits durch einen besseren Code ersetzt, aber ich bin neugierig, warum ich den oben erwähnten Fehler bekomme, falls ich ähnlichen Code in der Zukunft schreiben muss. –

Antwort

0

Sie haben Ihren Fall nicht immer im Inneren definiert, daher der Fehler. Dies sollte dein Problem lösen. Eine gute Idee wäre es nicht kombinatorische und sequentielle Blöcke immer zusammen zu mischen.

reg [4:0] status_led = 5'b00100; 

    [email protected](posedge clk) begin 
    case (status_led) 
     default: begin     
      if (rotation) begin 
       status_led[4] <= status_led[3]; 
       status_led[3] <= status_led[2]; 
       status_led[2] <= status_led[1]; 
       status_led[1] <= status_led[0]; 
       status_led[0] <= status_led[4]; 
      end else if (~rotation) begin 
       status_led[4] <= status_led[0]; 
       status_led[3] <= status_led[4]; 
       status_led[2] <= status_led[3]; 
       status_led[1] <= status_led[2]; 
       status_led[0] <= status_led[1]; 
      end 
     end 
    endcase 
    end 
Verwandte Themen