微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 为什么一个always块里面只让对一个变量进行操作

为什么一个always块里面只让对一个变量进行操作

时间:10-02 整理:3721RD 点击:
如题,为什么一个always块里面只让对一个变量进行操作啊?这样写代码的啊好处是什么呢?

一个always里面可以对多个变量赋值。
但是可以综合的代码,一个变量只能在一个always里面赋值。(不综合的代码随便写)

这样写的代码易于管理和维护



   谢谢!



  哦,这样的啊我以为还有什么特别的好处呢像二楼说的在一个always块里对多个变量进行操作是不是就不可综合呢?



    在一个always模块里对多个变量是可以综合的,这你可以自己编个简单代码试试



   因为我之前一直是在一个always块里写多个语句的也是可以综合的,但是今天突然有人跟我这么说,我还以为有什么特别之处呢,谢谢啊

一个always里面可以对多个变量赋值;
但是一个变量只能在一个always里面赋值,如果是在多个always里面对其赋值会是出现多驱动的情况!



   正解!

可以对多个变量赋值,也可以综合,只是要加上 begin ... end
例如:always @(posedge clk) begin
              if(rst)  begin
                    a<= 1'b0;
                    b<= 1'b0;
              end
             else begin
                   a<= 1'b1;
                  b<= 1'b1;
              end
      end

一个always块里只写一个信号,也有利于避免生成latch。

一个always可以对多个变量赋值,但是不可以在多个always对同一个变量赋值。
不过还是建议一个always对相关变量赋值,利于代码维护。
毕竟HDL是并行执行的,变量写在一个always里面,便于修改和理解。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top