2013-02-23 116 views
1

我目前正在使用Verilog進行隨機數生成。消息來源指出,使用線性反饋移位寄存器是隨機化MSB的最佳方法之一。所以我決定編寫和測試一個LFSR。片段如下:Verilog:解析錯誤

module lfsr_counter(clk, reset, ce, lfsr_done); 

input clk, reset, ce; 
output lfsr_done; 

reg lfsr_done; 
reg [10:0] lfsr; 
initial lfsr_done = 0; 
wire d0,lfsr_equal; 

xnor(d0,lfsr[10],lfsr[8]); 
assign lfsr_equal = (lfsr == 11'h359); 

always @(posedge clk,posedge reset) begin 
    if(reset) begin 
     lfsr <= 0; 
     lfsr_done <= 0; 
    end 
    else begin 
     if(ce) 
      lfsr <= lfsr_equal ? 11'h0 : {lfsr[9:0],d0}; 
      lfsr_done <= lfsr_equal; 
    end 
end 
endmodule 


module testbench(); 

reg clk, reset, ce; 
wire lfsr_done; 

lfsr_counter dut(clk, reset, ce, lfsr_done); // Design Under Test 

initial 
begin 

    reset = 0; 
     clk = 1; 
    ce = 0; 

     #100 
    ce = 1; 
     #200 $finish; 
end 

//Generate Clock 
always #10 clk = !clk; 

endmodule 

但我不斷收到這些解析錯誤:

enter image description here

所以是的,我真的不明白這一點。我使用的是Verilogger Pro btw

回答

1

我覺得總是用塊來分隔or,而不是逗號。

always @(posedge clk or posedge reset) begin

+0

永遠不知道!非常感謝! – Erasmus 2013-02-23 05:28:56

+2

只有最早版本的verilog,IEEE 1364-1995需要使用'或'。後來的版本和SystemVerilog允許使用逗號或'或'。 – 2013-02-23 16:22:08