7541|2

569

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

批量产生警告,请指点!!!!!!!!!! [复制链接]

module        state(rst,clk,bale,iow,la,ld,dout,ad);
input        rst;
input        clk;
input        bale;
input        iow;
input[3:0]        la;
input[7:0]        ld;
output[7:0]        dout;
output[7:0]        ad;

reg[7:0]        dout;
reg[7:0]        ad;



parameter        st0=4'b0001,st1=4'b0010,st2=4'b0100,st3=4'b1000;

reg[3:0]        current_st,next_st;

always        @(posedge        clk        or        negedge        rst)
        begin
                if(!rst)
                        current_st<=st0;
                else
                        current_st<=next_st;
        end

always        @(current_st        or        bale        or        iow)
        begin
                case        (current_st)
                st0:
                        begin
                                if(bale)
                                        next_st=st1;
                                else
                                        next_st=st0;
                        end
                st1:
                        begin
                                if(!iow)       
                                        next_st=st2;
                                else
                                        next_st=st0;
                        end
                st2:
                        begin
                                next_st=st3;
                        end
                st3:
                        begin
                                next_st=st0;
                        end
                default:
                        begin
                                next_st=st0;
                        end
                endcase
end

always        @(current_st        or        la        or        ld)
        begin
                case        (current_st)
                st0:begin
                                dout<=0;
                                ad<=0;
                        end
                st1:begin
                                dout<=0;
                                ad<=0;
                        end
                st2:begin
                        case        (la)
                                4'b000:
                                        begin
                                                dout<=ld;
                                       
                                        end
                                4'b001:
                                        begin
                                                ad<=ld;
                                                                                                
                                        end
                                default:begin
                                                dout<=ld;
                                                end
                        endcase
                        end
                st3:begin
                                dout<=dout;
                                ad<=ad;
                        end
                endcase
        end



endmodule

在quartus中编译出现这样的警告:
Warning (10240): Verilog HDL Always Construct warning at state.v(61): inferring latch(es) for variable "dout", which holds its previous value in one or more paths through the always construct
Warning (10240): Verilog HDL Always Construct warning at state.v(61): inferring latch(es) for variable "ad", which holds its previous value in one or more paths through the always construct
Warning: Latch ad[0]$latch has unsafe behavior
     Warning: Ports D and ENA on the latch are fed by the same signal la[1]
Warning: Latch ad[1]$latch has unsafe behavior
     Warning: Ports D and ENA on the latch are fed by the same signal la[1]
Warning: Latch ad[2]$latch has unsafe behavior
     Warning: Ports D and ENA on the latch are fed by the same signal la[1]
Warning: Latch ad[3]$latch has unsafe behavior
     Warning: Ports D and ENA on the latch are fed by the same signal la[1]
Warning: Latch ad[4]$latch has unsafe behavior
     Warning: Ports D and ENA on the latch are fed by the same signal la[1]
Warning: Latch ad[5]$latch has unsafe behavior
     Warning: Ports D and ENA on the latch are fed by the same signal la[1]
Warning: Latch ad[6]$latch has unsafe behavior
     Warning: Ports D and ENA on the latch are fed by the same signal la[1]
Warning: Latch ad[7]$latch has unsafe behavior
     Warning: Ports D and ENA on the latch are fed by the same signal la[1]
怎么解决啊?
此帖出自FPGA/CPLD论坛

最新回复

刚才看了下你代码, st3:begin                                 dout  详情 回复 发表于 2010-10-14 11:42
点赞 关注
 

回复
举报

68

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
第二个状态机中case语句末尾加defualt语句,并在语句中给ad和dout赋值。
此帖出自FPGA/CPLD论坛
 
 

回复

68

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
刚才看了下你代码,
st3:begin
                                dout<=dout;
                                ad<=ad;
                        end
代码中这个状态本身就会生成锁存器,楼主你自己检查下,如果这是功能需要的话,就不用去改了。。
此帖出自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
快速回复 返回顶部 返回列表