首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

数字电路设计逻辑优化

数字电路设计逻辑优化

很多时候我们进行数字电路设计的时候,我们综合出来的东西会有latch。latch会使得大型的硬件系统变得不可靠。那么我们如何消除这种现象呢?做法应该就那么几种,我举一个栗子,这样可以更好地说明这个问题。        在使用case语句的时候,如果使用的位数会大于case的数目,比如case的是两位数,只写了三种情况,还有一种情况没有写,那么就会导致latch。那么怎么避免这个问题呢?一般人会采取以下做法:
        module dec(y,sel)
                  input   [1:0]sel;
                  output   [2:0]y;
                   reg       [2:0]y;

        always@(sel)
             case(sel)
                    2'b00:      y  =  3'b001;

                    2'b01:      y  =  3'b010;

                    2'b10:      y  =  3'b100;
                    default:    y  =  3'b000;

              endcase
        endmodule

         如果要是default只是为了消除latch的话,那么可以这样做。
         module dec(y,sel)
                  input      [1:0]sel;
                  output    [2:0]y;
                  reg         [2:0]y;

         always@(sel)
              case(sel)
                     2'b00:      y  =  3'b001;

                     2'b01:      y  =  3'b010;

                     2'b10:      y  =  3'b100;
                     default:    y  =  3'bxxx;

               endcase
         endmodule
          这样做有什么好处呢?你看看综合出来的效果你就知道了。这个东西看似简单,可是还是需要很多工业设计经验才可得到的。
返回列表