могу ли я использовать целое число в операторе case в verilog?

Я не уверен, является ли следующий код допустимым в Verilog. В частности, можно ли использовать целое число в операторе case в качестве условия, например:

input [2:0]W;
integer k=1;
output [7:0]Y;
case (W)
k:y[k]=1;
endcase

person Sadman Sarar    schedule 26.05.2015    source источник
comment
зачем вам целое число?   -  person inye    schedule 26.05.2015
comment
Чего именно вы пытаетесь достичь?   -  person Qiu    schedule 26.05.2015
comment
если вы хотите использовать метку для своего случая вместо необработанного значения, возможно, рассмотрите возможность использования parameter или localparam?   -  person wilcroft    schedule 26.05.2015
comment
По крайней мере, с этим кодом, почему бы не просто y[W] = 1;?   -  person Unn    schedule 26.05.2015


Ответы (1)


В опубликованном вопросе ваш вывод Y в верхнем регистре, y в назначении в нижнем регистре, после того, как это разрешено, операторы case не могут стоять сами по себе, они должны быть внутри всегда или начального блока.

Например:

always @* begin
  case (W)
    k: y[k]=1;
  endcase
end

Целое число — это всего лишь 32-битная (или 64-битная) запись. Синтаксически ничем не отличается использование целого числа вместо reg.

person Morgan    schedule 27.05.2015