Что делает эта функция присвоения verilog? - PullRequest
1 голос
/ 07 апреля 2019

Если sig_in = 0000, 0001, 0010, ..., 1111

sig_out = {sig_in[3], sig_in[3], sig_in[3: 2]};

Если я читаю это право, sig_out [3] будет sig_in [3], sig_out [2] будеттакже будьте sig_in [3], и я не уверен, что делает sig_in [3: 2].Может ли кто-нибудь помочь?

1 Ответ

0 голосов
/ 07 апреля 2019

В правой части назначения у вас есть оператор concatination {...};Он объединяет биты из своих аргументов в единый битовый поток.

поэтому, если sign_in[3:0] равно 0101, результат в вашем примере будет следующим:

sign_in[3:0] = 4'b0101
        bit 3 ----^
        bit 0 -------^

{
   1'b0, // sign_in[3]
   1'b0, // sigh_in[3]
   2'b01 // sign_in[3:2] -- extracts 2 bits - bit 3 (0) an d bit 2 (1)
}

так, sign_out [3: 0] будет выглядеть следующим образом

==>          4'b0001;
sign_in[3]    --^
sign_in[3]    ---^
sign_in[3:2]  ----^^
...