Soy nuevo en verilog y HDL, así que ten paciencia conmigo.
En un código, tengo una variable de entrada clk
, dos muestras de entrada de 16 bits, que se almacenan en [31:16] ddc_out_sample
y [15:0] ddc_out_sample
y una luz estroboscópica de entrada llamada ddc_out_strobe
.
Lo que quiero hacer es tomar el bit de 8 MSB de [31:16] ddc_out_sample
y [15:0] ddc_out_sample
, con una muestra de 16 bits en lugar de 32 uno. Luego combine 4 de esas muestras para alimentarlas directamente a la salida [31:0] bb_sample
. El estroboscopio de salida es bb_strobe
.
Había pensado en la siguiente implementación para lograr esto:
reg count = 0;
always @(posedge clk)
i_msb <= ddc_chain_out[31:24]
q_msb <= ddc_chain_out[15:8]
assign bb_strobe = 1'b0;
if(count % 4 == 3)
assign bb_strobe = ddc_out_strobe;
end
count = count + 1;
end
Sé que deben evitarse las condiciones asíncronas , pero no veo cómo implementar esto de otra manera .
Cualquier comentario y opinión será apreciada.