我正在使用生成块来创建流水线多路复用器:有没有办法在案例语句中对案例进行参数化?
module muxNto1byW(
input clk,
input reset,
input wire[(SELECT_WIDTH-1):0] select,
input wire[(DATA_WIDTH*NUM_INPUTS-1):0] din,
output reg[(DATA_WIDTH-1):0] y
);
/* 4 LUT_WIDTH = 6, SEL DATA_INPUTS = 2 */
parameter SELECT_WIDTH = LUT_WIDTH - DATA_INPUTS;
...
generate
/* some for loops */
// register this stage's muxes
reg[(DATA_WIDTH-1):0] pipelineStage;
// assign values to each mux in this stage
always@(posedge reset or posedge clk)
if( reset )
pipelineStage <= {DATA_WIDTH{1'b0}};
else
begin
if( i == 0 ) // Stage 0 evaluates the inputs
case ( select[(SELECT_BITS_PER_STAGE-1):0] )
2'b00 : /* do something */
2'b01 : /* do something different */
2'b10 : /* you get the picture */
2'b11 : /* the last case */
endcase
endgenerate
我的目标技术中的 SELECT_BITS_PER_STAGE 是 2,所以情况是 2 位宽 00, 01, 10 , 11
如何编写此代码,以便如果不同的技术只能实现 2 比 1 多路复用器(SELECT_BITS_PER_STAGE == 1),case 语句会自动更改为:
case ( )
1'b0: /* do something */
1'b1: /* do something different
endcase