Я хочу реплицировать один бит в определенное время, используя оператор репликации {}, но я получаю только первый бит, как я хочу, а другие - нули, независимо от того, равен ли бит нулю или единице.
module(logic output [7:0] a);
assign a = {8{1}};
endmodule
Я получаю равно 00000001 Не 11111111





В Verilog необоснованный литерал (например, 1) является (а) десятичным, (б) знаковым и (в) 32-битным. Из-за (с),
{8{1}}
такой же как
{8{32'sb00000000000000000000000000000001}}
это 256-битное число, которое затем усекается до 8 бит, когда ему присваивается a. Вот почему вы получаете a равным 8'b00000001.
Тебе нужно
{8{1'b1}}
а = {8{другой ввод[5]}}
Спасибо . В этом случае он работал нормально, но если вы хотите расширить определенный бит из другого ввода, например a = {8anotherInput[5]}; это делает ту неправильную вещь