高速EDA设计 实验二
实验1:多路选择器
实验要求
- 做一个4选1的mux,并且进行波形仿真 ;
- 和2选1的mux对比,观察资源消耗的变化。
实验内容
4选1的MUX代码如下:
module MUX41(
IN0 ,
IN1 ,
IN2 ,
IN3 ,
SEL1 ,
SEL2 ,
OUT );
parameter WL = 16;
input [WL-1:0] IN0, IN1, IN2, IN3 ;
input SEL1, SEL2;
output[WL-1:0] OUT;
reg [WL-1:0] OUT;
always@ (IN0 or IN1 or IN2 or IN3 or SEL1 or SEL2) begin
if(SEL1==0&& SEL2==0)
OUT = IN0;
else if(SEL1==1 && SEL2==0)
OUT = IN1;
else if(SEL1==0 && SEL2==1)
OUT = IN2;
else
OUT = IN3;
end
endmodule
4选1mux时序图:
4选1mux结构:
2选1mux结构:
2选1mux资源消耗:
4选1mux资源消耗:
实验2 交叉开关
实验要求
- 编写一个4X4路交叉开关的RTL,然后编译;
- 看RTL View 比较2x2与4x4之间消耗资源的区别;
- 通过对比资源,你有什么结论?
实验内容
4X4路交叉开关代码:
module CrossSwitch44(
IN0 , // input 1
IN1 , // input 2
IN2 , // input 3
IN3 , // input 4
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 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 or SEL1 or SEL2 or SEL3) begin
if(SEL0==0 && SEL1==0)
OUT0 = IN0;
else if(SEL0==1 && SEL1==0)
OUT0 = IN1;
else if(SEL0==0 && SEL1==1)
OUT0 = IN2;
else
OUT0 = IN3;
end
// get the OUT1
always @ (IN0 or IN1 or IN2 or IN3 or SEL0 or SEL1 or SEL2 or SEL3) begin
if(SEL1==0 && SEL2==0)
OUT1 = IN0;
else if(SEL1==1 && SEL2==0)
OUT1 = IN1;
else if(SEL1==0 && SEL2==1)
OUT1 = IN2;
el