1。选择器
//2选1多路选择器
module mux2to1(w0,w1,s,f);
input w0,w1,s;
output f;
assign f=s?w0:w1;
endmodule
或者:
module mux2to1(w0,w1,s,f);
input w0,w1,s;
output reg f;
always @(w0,w1,s)
f=s?w0:w1;
endmodule
//4选一多路选择器
module mux4to1(w0,w1,w2,w3,s0,s1,f);
input w0,w1,w2,w3,s0,s1;
output f;
assign f=s1?(s0?w3,w2):(s0?w1,w0);//可以用向量法的。。
endmudule
用if...else 语句
//2选一
module mux2to1(w0,w1,s,f);
input w0,w1,s;
output reg f;
always @(w0,w1,s)
begin
if(s==0)
f=w0;
else
f=w1;
end
endmodule
//4选一,if...else 语句实现
module mux4to1(w0.w1,w2,w3,S,f);
input w0.w1,w2,w3;
input [1:0] S;
output reg f;
always @(*)
if(S==0)
f=w0;
else if(S==1)
f=w1;
else if(S==2)
f=w2;
else
f=w3;
endmodule
//case 实现的4选一
module mux4to1(W,S,f);
input [3:0] W;
output [1:0] S;
output reg f;
always @(W,S)
case (S)
0: f=W[0];
1: f=W[1];
2: f=W[2];
3: f=W[3];
endcase
endmodule
2.译码器
//2-4译码器
module dec2to4(W,Y,En);
input [1:0] W;
input En;
output [3:0] reg Y;
always @(X,En)
case({En,W})
3'b100 : Y=1000;
3'b101 : Y=0100;
3'b110 : Y=0010;
3'b111 : Y=0001;
default : Y=0000;
endcase
endmodule
//2-4译码器令一种形式
module dec2to4(W,Y,En);
input [1:0] W;
input En;
output [0:3] reg Y;
always @(X,En)
if(EN==0)
Y=0000;
else
case(W)
3'b100 : Y=1000;
3'b101 : Y=0100;
3'b110 : Y=0010;
3'b111 : Y=0001;
endcase
endmodule
//for语句实现的2-4译码器
module dec2to4(W,Y,En);
input [1:0] W;
input En;
output [0:3] reg Y;
integer k;
always @(W,En)
for(k==0;k<4;k=k+1)
if((W==k)&&(En==1))
Y[k]=1;
else
Y[k]=0;
endmodule