Как установить определенный бит в 1 в массиве, скажем, 16 бит (15: 0) и очистить оставшиеся биты одновременно - PullRequest
0 голосов
/ 04 июня 2019

У меня есть массив, скажем, 16 бит (15: 0).У меня есть зарегистрированная 4-битная переменная, скажем, «pos», которая меняется в зависимости от других условий.в зависимости от значения переменной pos я хочу установить бит и очистить оставшиеся биты (0).например, если pos = 5, бит 5 должен стать 1, а все остальные должны быть установлены в 0 (очищены).0000 0000 0010 0000 - желаемое значение.это должно быть синтезировано в системном verilog

Я могу установить желаемый бит, но очистка оставшихся битов была проблемой.

Ответы [ 2 ]

3 голосов
/ 04 июня 2019

Используйте оператор логического сдвига, чтобы установить бит

value = 16'b1 << pos;
0 голосов
/ 04 июня 2019

1) См. Другой ответ со сдвигом
2) Для более сложных случаев, например, если вы хотите оставить правую или левую часть другого значения после или до 1, вы можете просто назначить полный ответ /результат из 16 возможных, с оператором case.
3) Вы также можете использовать цикл по всем битам, устанавливая их собственное логическое уравнение, например, 1, если равен счетчику, 0, если выше, бит источника, если под /еще и так далее ...

...