电路描述:
- 实际上是MUX的组合体。
- 通常用在复杂一些的信号选通的场合。
- 每一个输出端都有对应的选通信号。
- 用选通信号控制输出端选通到哪个输入端。
- 当输入和输出的端口增加时,该电路会消耗非常多的电路资源。
- 电路在不同应用时的变化。
- 数据信号的宽度。
- 选通逻辑的变化,选择信号为0或1时选通哪个通道。
代码
module csc44(
IN0 , // input 1
IN1 , // input 2
IN2 , // input 1
IN3 , // input 1
SEL0 , // select the output0 source
SEL1 , // select the output1 source
SEL2 , // select the output2 source
SEL3 , // select the output3 source
OUT0 , // output data 0
OUT1 , // output data 1
OUT2 , // output data 2
OUT3 ); // output data 3
parameter WL = 16;
input [WL-1:0] IN0, IN1,IN2,IN3;
input [1:0] SEL0, SEL1,SEL2,SEL3;
output[WL-1:0] OUT0, OUT1,OUT2,OUT3;
reg [WL-1:0] OUT0, OUT1,OUT2,OUT3;
// get the OUT0
always @ (IN0 or IN1 or IN2 or IN3 or SEL0) begin
if(SEL0==2'b00)
OUT0 = IN0;
else if(SEL0==2'b01)
OUT0 = IN1;
else if(SEL0==2'b10)
OUT0 = IN2;
else if(SEL0==2'b11)
OUT0 = IN3;
end
// get the OUT1
always @ (IN0 or IN1 or IN2 or IN3 or SEL1) begin
if(SEL1==2'b00)
OUT1 = IN0;
else if(SEL1==2'b01)
OUT1 = IN1;
else if(SEL1==2'b10)
OUT1 = IN2;
else if(SEL1==2'b11)
OUT1 = IN3;
end
// get the OUT2
always @ (IN0 or IN1 or IN2 or IN3 or SEL2) begin
if(SEL2==2'b00)
OUT2 = IN0;
else if(SEL2==2'b01)
OUT2 = IN1;
else if(SEL2==2'b10)
OUT2 = IN2;
else if(SEL2==2'b11)
OUT2 = IN3;
end
// get the OUT3
always @ (IN0 or IN1 or IN2 or IN3 or SEL3) begin
if(SEL3==2'b00)
OUT3 = IN0;
else if(SEL3==2'b01)
OUT3 = IN1;
else if(SEL3==2'b10)
OUT3 = IN2;
else if(SEL3==2'b11)
OUT3 = IN3;
end
endmodule
// endmodule top
RTLViewer
波形仿真