Verilog—比特位选择
在有规律的代码,经常会根据输入信号来选择需要的数据。
assign output=cfg_assert[tx_client_in*16+:16];
表示tx_client_in为0时,outupt= cfg_assert[15:0]
表示tx_client_in为1时,outupt= cfg_assert[31:16]
在generate模块中还可以采用以下方式:
genvar i;
generate
for(i=0;i<CLIENT_NUM;i=i+1) begin:data_save_gen
always@(posedge clk or negedge rst_n)
if(!rst_n)
data_save[(i*16)+15:(i*16)]<= 16’b0;
else(tx_vld&&(tx_client_in=i))
data_save[(i*16)+15:(i*16)]<= data_in ;
end
endgenerate