Estoy proporcionando entrada a una interfaz SPI. La señal de entrada es una concatenación de varias señales diferentes. Lo que me gustaría hacer en la simulación es tener una concatenación continua de las diferentes señales en una cadena final que se enviará al SPI:
logic [7:0] foo; // Signal 1
logic [7:0] bar; // Signal 2
logic [15:0] combine; // Final signal
assign combine = {foo, bar};
task SendSPI;
begin
foo = 8'hFF;
bar = 8'h00;
SendToSpi(combine); // Want it to send 16'hFF00;
endtask;
El código anterior se compila y se ejecuta en el simulador (simulación de Cadence NC), pero el valor de la combinación es indefinido (xxxx). Sé que puedo solucionar esto teniendo una tarea de concatenación:
task CombineSignal;
begin
combine = {foo, bar};
endtask;
y llamaría a esa tarea cada vez que quisiera concatenar, ¡pero tener un trabajo continuo de asignación sería muy bueno! ¿Alguien sabe si la asignación continua es posible en una situación como esta?