ET创芯网论坛(EETOP)

找回密码

  登录   注册  

搜帖子
汽车电子资料大全(下载奖励300信元)
查看: 2269|回复: 8

[求助] 二进制转BCD码verilog代码的综合警告

[复制链接]
发表于 2014-10-24 21:58:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
今天遇到一个二进制转BCD码的代码如下:module bin_to_BCD(
input [5:0] bin_in,

output reg [3:0] bcd_unit,bcd_dec);


reg [7:0] bcd_temp;
reg [5:0] bin_data;
integer i;


always@(bin_in)

begin

bcd_temp=8'b0;

bin_data=bin_in;

for(i=0;i<5;i=i+1)

begin

bcd_temp={bcd_temp[6:0],bin_data[5]};

if(bcd_temp[3:0]>4'd4)

bcd_temp[3:0]=bcd_temp[3:0]+4'd3;

else if(bcd_temp[7:4]>4'd4)

bcd_temp[7:4]=bcd_temp[7:4]+4'd3;

bin_data=bin_data<<1;

end

{bcd_dec,bcd_unit}={bcd_temp[6:0],bin_data[5]};

end


endmodule

最后综合的时候却提示:
WARNING:Xst:646 - Signal <bin_data> is assigned but never used. This unconnected signal will be trimmed during the optimization process.
WARNING:Xst:646 - Signal <bcd_temp<7:4>> is assigned but never used. This unconnected signal will be trimmed during the optimization process.
程序经过了功能仿真,看了半天也没琢磨透为什么会有这个警告,求大神指导啊!!!
 楼主| 发表于 2014-10-25 12:41:28 | 显示全部楼层
要利用这个代码做实验了,求助啊 !!!
回复 支持 反对

使用道具 举报

发表于 2014-10-25 19:35:17 | 显示全部楼层
组合逻辑的输入条件不全,也就是always @()括号里面的条件不全。bin_data也是输入条件,但并未在列表里。最好的方法就是组合逻辑都用always @(*),这样就不会掉输入条件了。
                                                                                         .....做好事不留名...哈哈哈
回复 支持 反对

使用道具 举报

发表于 2014-10-26 00:04:54 | 显示全部楼层
赞一个
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-26 23:49:57 | 显示全部楼层
我添加进去后又综合了一遍,还是存在一样的警告啊
回复 支持 反对

使用道具 举报

发表于 2014-10-27 09:24:31 | 显示全部楼层
之所以出现这种Warnings,是因为这条语句是阻塞赋值语句
那么,bin_data和bcd_temp这两个中间变量,就会被优化掉了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-27 23:31:58 | 显示全部楼层
回复 6# jun_dahai

原来是这样子,那就不用管他的警告了,另外再请教一下啊,我在网上看到状态机的这么一段描述,状态机中状态变量初始化赋值:如果所有的状态都使用到了,可以使用x,它可以让综合器删除不必要的译码电路,使生成的电路简洁,并与设计要求一致,另外调试的时候很方便;如果状态没有使用完,有多余的状态,则不能使用x,应该设置为IDLE或者0。这样做能使状态机若偶然进入多余状态后仍能在下一时钟跳变沿时返回正常工作状态,否则会引起死锁。
对于第一句话,如果所有的状态都使用到了,这是指什么意思啊,比如我设定5个状态,用三位二进制编码,只利用了其中的五个值,那么剩下的三个是不是没有用到的状态?这时存在多余的状态,就不能使用x?还有这个所谓的初始化赋值的效果是不是和将其放在default里一样啊?希望能得到大神的指点,小弟感激不尽!
回复 支持 反对

使用道具 举报

发表于 2014-10-28 08:56:59 | 显示全部楼层
我没有这么赋值过,但是考虑到某些要求精准时钟个数的设计,或者支持级联模式的设计,这个赋值方式必然是不行的
无效的状态放在default里,可以避免死锁
我的建议是:在保证设计健壮运行的前提下,可以使用某些手段进行电路优化
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-28 12:20:39 | 显示全部楼层
恩恩,多谢!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

关闭

小黑屋| 关于我们| 联系我们| 在线咨询 |  ET创芯网 ( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2019-12-13 01:43 , Processed in 0.073576 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表