6203|4

199

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

verilog 的一个奇怪的问题 [复制链接]

我用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
复制代码
此帖出自FPGA/CPLD论坛

最新回复

好,解析的好!  详情 回复 发表于 2011-3-31 12:22
点赞 关注
 

回复
举报

6892

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

等待VERILOG高手出现!解决所有的问题!

此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 

回复

34

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
没看懂程序,但
1、assign data75[30:23]=E; 此处有错误,应该是笔误
2、index报错。Error (10734): Verilog HDL error at changeto754.v(62): index is not a constant
这两句有问题
if(`M+`N>22) F<=(data|{{(`M+`N-index){1'b0}},{index{1'b1}}})<<(23-index);
else F<=({{(23-`M-`N){1'b0}},data}|{{(23-index){1'b0}},{index{1'b1}}})<<(23-index);
此处,拼接运算符里面加逗号就编译通过了!
但楼主的意思应该是{4{a}} = {a,a,a,a}这种意思。刚查了下书,这里,这个4,必须是常数表达式!!

[ 本帖最后由 xieqiang 于 2011-3-30 21:00 编辑 ]
此帖出自FPGA/CPLD论坛
 
 
 

回复

6892

帖子

0

TA的资源

五彩晶圆(高级)

4
 

好,解析的好!

此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 
 

回复

199

帖子

0

TA的资源

一粒金砂(初级)

5
 

回复 板凳 xieqiang 的帖子

谢谢,那个4确实只能是常量,问题已经解决了,谢谢
此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表