2、关于4X4交叉开关
在已有代码的基础上进行了修改
module mux44(in0,in1,in2,in3,out0,out1,out2,out3,sl0,sl1,sl2,sl3);
parameter WL = 16;
input [WL-1:0] in0,in1,in2,in3;
input sl0,sl1,sl2,sl3;
output[WL-1:0] out0,out1,out2,out3;
reg [WL-1:0] out0,out1,out2,out3;
always @ (in0 or in1 or in2 or in3 or out0 or sl0 or sl1) begin
if((sl0)&&(sl1))
out0=in3;
else
if((!sl0)&&(sl1))
out0=in2;
else
if((sl0)&&(!sl1))
out0=in1;
else
out0=in0;
end
always @ (in0 or in1 or in2 or in3 or out1 or sl1 or sl2) begin
if((sl1)&&(sl2))
out1=in3;
else
if((!sl1)&&(sl2))
out1=in2;
else
if((sl1)&&(!sl2))
out1=in1;
else
out1=in0;
end
always @ (in0 or in1 or in2 or in3 or out2 or sl2 or sl3) begin
if((sl2)&&(sl3))
out2=in3;
else
if((!sl2)&&(sl3))
out2=in2;
else
if((sl2)&&(!sl3))
out2=in1;
else
out2=in0;
end
always @ (in0 or in1 or in2 or in3 or out3 or sl0 or sl3) begin
if((sl0)&&(sl3))
out3=in3;
else
if((!sl0)&&(sl3))
out3=in2;
else
if((sl0)&&(!sl3))
out3=in1;
else
out3=in0;
end
endmodule
下面是进行编译之后的资源消耗的显示。上图为4X4,下图是2X2的显示:
编译之后,RTL view如下图所示:
3、这题为做一个8位优先选择器,代码相对简单,如下面展示:
module YX(
IN ,
OUT );
input [7:0] IN;
output[3:0] OUT;
reg [3:0] OUT;
always @ (IN) begin
if(IN[7])
OUT = 3'b0111;
else if(IN[6])
OUT = 3'b0110;
else if(IN[5])
OUT = 3'b0101;
else if(IN[4])
OUT = 3'b0100;
else if(IN[3])
OUT = 3'b0011;
else if(IN[2])
OUT = 3'b0010;
else if(IN[1])
OUT = 3'b0001;
else if(IN[0])
OUT = 3'b0000;
else
OUT = 3'b1111;
end
endmodule
编译之后,观看RTL View.如图
4、关于38译码器和416译码器<