一个程序,要不不能综合,要不不能仿真.

2019-03-25 07:38发布

如果把shifter设置成wire就不可以综合,设置成reg仿真时候就Illegal output port connection



  1. module test0(clk, mr, data,out,shifter);
  2. input clk;
  3. input data;
  4. input mr;
  5. output out;
  6. output [15:0] shifter;

  7. reg out;
  8. reg [4:0] cnt;

  9. wire [15:0] shifter;

  10. always @(posedge clk or negedge mr)
  11. begin
  12.     if (!mr)
  13.     begin
  14.         cnt <= 16'b0;
  15.         out <= 1'b0;
  16.     end
  17.     else if(cnt == 5'd7)
  18.     begin
  19.         out <= ~out;
  20.         cnt <= 5'd0;
  21.     end
  22.     else
  23.     begin
  24.         cnt <= cnt + 5'd1;
  25.     end
  26. end

  27. always@(posedge clk)
  28. begin
  29.         if (!out)
  30.                 begin
  31.                         shifter[0]<=0;
  32.                         shifter[1]<=0;
  33.                         shifter[2]<=0;
  34.                         shifter[3]<=0;                        
  35.                         shifter[4]<=0;
  36.                         shifter[5]<=0;
  37.                         shifter[6]<=0;
  38.                         shifter[7]<=0;                        
  39.                         shifter[8]<=0;
  40.                         shifter[9]<=0;
  41.                         shifter[10]<=0;
  42.                         shifter[11]<=0;                        
  43.                         shifter[12]<=0;
  44.                         shifter[13]<=0;
  45.                         shifter[14]<=0;
  46.                         shifter[15]<=0;                                                
  47.                 end
  48.         else
  49.                 begin
  50.                         shifter[0]<=data;
  51.                         shifter[1]<=shifter[0];
  52.                         shifter[2]<=shifter[1];
  53.                         shifter[3]<=shifter[2];
  54.                         shifter[4]<=shifter[3];
  55.                         shifter[5]<=shifter[4];
  56.                         shifter[6]<=shifter[5];
  57.                         shifter[7]<=shifter[6];
  58.                         shifter[8]<=shifter[7];
  59.                         shifter[9]<=shifter[8];
  60.                         shifter[10]<=shifter[9];
  61.                         shifter[11]<=shifter[10];
  62.                         shifter[12]<=shifter[11];
  63.                         shifter[13]<=shifter[12];
  64.                         shifter[14]<=shifter[13];
  65.                         shifter[15]<=shifter[14];        
  66.                 end
  67. end

  68. endmodule
复制代码

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。