verilog语法错误(HDLCompiler:806)

时间:2015-08-18 09:14:19

标签: verilog

我是Verilog的新手,我不断收到这些编译错误。我已经搜索了错误,但我没有得到答案。这是我的代码和错误。

always @(*) begin
     //seed=32'habcd123cd;//assigning seed
     if(posedge axi_clk & first[0]) begin
          load_seed=1'b1;
     end

     if(load_seed) begin
          first[1]=1'b1;
     end

     if(negedge axi_clk & first[1]) begin
          load_seed=1'b0;
          first=2'b00;
     end
 end

我的错误

  

错误:HDLC编译器:806 - " K:/ final project / codes / v2 / input_arbiter.v"第252行:" posedge"附近的语法错误   错误:HDLC编译器:806 - " K:/ final project / codes / v2 / input_arbiter.v"第258行:" negedge"附近的语法错误   错误:HDLC编译器:598 - " K:/ final project / codes / v2 / input_arbiter.v"第46行:由于先前的错误而忽略了模块。

1 个答案:

答案 0 :(得分:1)

您以错误的方式使用posedge / negedge。这些关键字应该在always block的灵敏度列表中使用,例如:

always @(posedge clk)

always @(negedge clk)

always @(*)用于描述组合逻辑或逻辑门。你想要实现的是顺序逻辑。

您还应该知道(请参阅this主题)

  

当您在边沿敏感的始终块中分配寄存器时,您将定义一个触发器。 FPGA没有可以在时钟的两个边沿触发的触发器。 这就是为什么你需要两个独立的始终块,一个用于时钟的每个边缘,然后找出一种方法来组合两个块的输出而不会产生毛刺。