verilog 的一个奇怪的问题

2019-03-25 10:28发布

我用Synplify做了个普通定点格式(第47位是符号位,46到29位是整数位,28到0位是小数位)转换成ieee754格式的模块,但是编译中出现了这样一条编译错误信息@E:CL104 : changeto754.v(62) | Couldn't find binding for variable index。。。我都束手无策了,index明明已经定义了,为什么编译会提示index未加约束这样的错误信息呢??求助啊!!!(下面是全部代码)
  1. `define M 18
  2. `define N 29
  3. //????????????256
  4. module changeto754(data754,datain,clk,rst_n);
  5. output [31:0] data754;
  6. input [`M+`N:0] datain;
  7. input clk,rst_n;
  8. reg [7:0] index;
  9. //reg [7:0] j;
  10. reg [`M+`N-1:0] data,men[`M+`N];
  11. reg [7:0] E;
  12. reg [22:0] F;
  13. reg [2:0] state;
  14. reg S;
  15. parameter s0=0;
  16. parameter s1=1;
  17. parameter s2=2;
  18. parameter s3=3;
  19. assign data754[31]=S;
  20. assign data75[30:23]=E;
  21. assign data754[22:0]=F;
  22. always@(posedge clk)
  23. begin
  24. if(rst_n==0)
  25. begin
  26. index<=`M+`N-1;
  27. E<=8'd0;
  28. F<=23'd0;
  29. state<=s0;
  30. S<=1'b0;
  31. //for(j=8'd0;j<=(`M+`N);j=j+8'd1)
  32. // men[j]={{(`M+`N-j){1'b0}},{j{1'b1}}};
  33. end
  34. else
  35. begin
  36. case(state)
  37. s0:
  38. begin
  39. if(datain[`M+`N])
  40. begin
  41. data<=~datain[`M+`N-1:0]+1;
  42. S<=1'b1;
  43. end
  44. //else S<=1'b0;
  45. state<=s1;
  46. end
  47. s1:
  48. begin
  49. if(data[index]) //?????????1
  50. begin
  51. E<=8'd127+index-`N;
  52. if(index==0) F<=23'd0;
  53. else
  54. begin
  55. if(index>22) F<=data>>(index-23);//data cut
  56. else //F[22:23-index]<=data[index-1:0];
  57. begin
  58. if(`M+`N>22) F<=(data|{{(`M+`N-index){1'b0}},{index{1'b1}}})<<(23-index);
  59. else F<=({{(23-`M-`N){1'b0}},data}|{{(23-index){1'b0}},{index{1'b1}}})<<(23-index);
  60. end
  61. end
  62. state<=s2;
  63. end
  64. else
  65. begin
  66. if(index==0) //???????1
  67. begin
  68. E<=8'd127;
  69. F<=23'd0;
  70. state<=s2;
  71. end
  72. else
  73. begin
  74. index<=index-1;
  75. end
  76. end
  77. end
  78. endcase
  79. end
  80. end
  81. endmodule
复制代码 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。