verilog代码quartus II下时序仿真出现两个时钟延时,请问怎么...

2019-07-16 01:38发布

本帖最后由 disoncxj 于 2013-5-13 17:39 编辑

      我用verilog编了一个减法代码,但是在FPGA下的时序仿真却出现了时钟延时,请问我的代码有什么问题吗?(代码的内容:输入x和y,e=y-x,eo表示正负,ec是后一个e与前一个e的误差,co表示正负)
代码如下:
module jianfa (x, y, clk, e, ec, eo, co);
   input[7:0] x;
   input[7:0] y;
   input clk;
   output[7:0] e;
   reg[7:0] e;
   output[7:0] ec;
   reg[7:0] ec;
   output eo;
   reg eo;
   output co;
   reg co;
   reg[7:0] a;
   reg[7:0] b;
   reg m;
   reg n;
   always @( posedge clk)
      begin
         if (y >= x)
         begin
            a <= y - x ;
            m <= 1'b1 ;
         end
         else if (y < x)
         begin
            a <= x - y ;
            m <= 1'b0 ;
         end
         n <= m ;
         eo <= m ;
         b <= a;
      end  
   always @(posedge clk)
      begin
         if (m == 1'b0 & n == 1'b0)
         begin
            if (a >= b)
            begin
               ec <= a - b ;
               co <= 1'b0 ;
            end
            else if (a < b)
            begin
               ec <= b - a ;
               co <= 1'b1 ;
            end
         end
         else if (m == 1'b0 & n == 1'b1)
         begin
            ec <= a + b ;
            co <= 1'b0 ;
         end
         else if (m == 1'b1 & n == 1'b0)
         begin
            ec <= a + b ;
            co <= 1'b1 ;
         end
         else if (m == 1'b1 & n == 1'b1)
         begin
            if (a >= b)
            begin
               ec <= a - b ;
               co <= 1'b1 ;
            end
            else if (a < b)
            begin
               ec <= b - a ;
               co <= 1'b0 ;
            end
         end
         e <= a ;
      end
endmodule
仿真结果如下:
15149.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。