Что-то не могу в него въехать.
Например есть вектор переменной длины.
Пытаюсь установить в нём все единицы - он ругается:
делаю так
output SCLK[N-1:0];
...
SCLK <= {N{1'b0}};
получаю
Error (10673): SystemVerilog error: assignments to unpacked arrays must be aggregate expressions
Без ошибки получается только с помощью цикла, но как-то не нравится. Хочется без цикла.
И вообще не пойму идеологию.
Например мне надо выдать синхросигнал определенной длины по сигналу clk на языке программирования это было бы так:
setSinhro()
{
static counter = 0;
if(counter == 1600) { clkSin = 0; counter = 0; }
else { clkSin = 1; couter++; }
}
Вроде как по идее надо делать счетчик, но если так описывать каждый триггер то по моему помереть можно?
Сейчас написал так но не уверен:
module setSinhro (clk, sclk);
parameter N = 8;
input clk;
output sclk[N-1:0];
integer counter = 0;
always @(negedge clk)
begin
if(counter == 1537)
begin
// sclk <= {N{1'b0}}; // ругается
counter = 0;
end
else
begin
counter++;
// sclk <= {N{1'b1}}; // ругается
end
endmodule