atom100 发表于 2017-7-16 12:32:46

always@(posedge clk )中的多个if else 语句的执行顺序?

always@(posedge clk )
   begin
      if
      
      elseif   1

      elseif   2

      elseif   3


      end
上面 always@(posedge clk )中的多个if   else 语句是按12   3从上到下 顺序执行的吧 ?同一个时钟周期只能判断一个条件,

liwei_jlu 发表于 2017-7-16 12:57:29

不要用程序执行语句的思想看,硬件上一次直接把所有条件都判断了

yuyu87 发表于 2017-7-16 14:37:37

有= 和<=区别,不要想像成软件,要把它理解成硬件电路

advantech 发表于 2017-7-16 14:40:23

if的优先级最高,后面依次减低。

mcu5i51 发表于 2017-7-16 14:47:34

分步执行,不过用时是一个时钟;IF太多对最高时钟有影响

Nuker 发表于 2017-7-16 15:05:43

是同一个时钟周期判断所有的条件,但是只能进入一个分支

yangff 发表于 2017-8-6 23:11:55

if(...)里的条件是在一个时钟周期里同时判断的
多个if-else表示的是优先编码器,也就是之前的条件满足了就不会管后面的了
也就是说,综合的结果可能是多个2:1 mux……如果可以的话尽可能避免这种做法

lusson 发表于 2017-8-7 08:12:34

用case就是并行判断了。

kongethan 发表于 2017-8-7 15:42:23

同样建议用case并行判断

yf869778412 发表于 2017-8-10 13:34:04

Nuker 发表于 2017-7-16 15:05
是同一个时钟周期判断所有的条件,但是只能进入一个分支

再补充一句,在一个周期内从上往下判断是有顺序的,先判断上面的。
页: [1]
查看完整版本: always@(posedge clk )中的多个if else 语句的执行顺序?