在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3509|回复: 6

[求助] 出现警告没法找不到原因

[复制链接]
发表于 2013-5-21 20:55:23 | 显示全部楼层 |阅读模式

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

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

x
module decoder
(
num, num_seg
);
input[3:0] num;
output[7:0] num_seg;
reg[7:0] num_seg;
always @(num)
begin
case(num[3:0])
4'd0 : num_seg = 8'b1100_0000;
4'd1 : num_seg = 8'b1111_1001;
4'd2 : num_seg = 8'b1010_0100;
4'd3 : num_seg = 8'b1011_0000;
4'd4 : num_seg = 8'b1001_1001;
4'd5 : num_seg = 8'b1001_0010;
4'd6 : num_seg = 8'b1000_0010;
4'd7 : num_seg = 8'b1111_1000;
4'd8 : num_seg = 8'b1000_0000;
4'd9 : num_seg = 8'b1001_0000;
endcase
end
endmodule

Warning (10240): Verilog HDL Always Construct warning at decoder.v(10): inferring latch(es) for variable "num_seg", which holds its previous value in one or more paths through the always construct

Warning: Latch decoder:u3|num_seg[0] has unsafe behavior

运行是没有问题,就是会有这个警告,有没有遇到过这个问题的朋友呢
发表于 2013-5-21 21:08:40 | 显示全部楼层
就是有锁存器啊。
你的case语句没写全,又没default语句,你想写的组合电路就会生成锁存器。
 楼主| 发表于 2013-5-21 21:14:40 | 显示全部楼层
回复 2# orlye
default语句没有写全,是另一个警告,应该不是这个原因,但是我如果把clk加进去,然后写成always @(posedge clk),这个问题就没有了
发表于 2013-5-21 22:28:17 | 显示全部楼层
回复 3# piscesfate

你把default放进去试一下,保证这个也会没有。
 楼主| 发表于 2013-5-21 23:02:55 | 显示全部楼层
回复 4# orlye
好的,我会试一下的,多谢帮忙
发表于 2013-5-22 10:47:18 | 显示全部楼层
回复 3# piscesfate


   原代码是组合逻辑,你列出的警告就是提示case语句不完全,会产生锁存器;   加入“always @(posedge clk)”,即时钟上升沿触发,这时是时序逻辑,本身就具有锁存上一状态的功能,所以不会有警告。
 楼主| 发表于 2013-5-22 15:55:52 | 显示全部楼层
回复 6# rvnistelrooy
多谢,初学入门,好像书上提到这是常见错误
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 07:14 , Processed in 0.022809 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表