forked from Github_Repos/cvw
		
	
		
			
				
	
	
		
			52 lines
		
	
	
		
			1023 B
		
	
	
	
		
			Systemverilog
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1023 B
		
	
	
	
		
			Systemverilog
		
	
	
		
			Executable File
		
	
	
	
	
module mux2 #(parameter WIDTH = 8)
 | 
						|
   (input  logic [WIDTH-1:0] d0, d1, 
 | 
						|
    input logic 	     s, 
 | 
						|
    output logic [WIDTH-1:0] y);
 | 
						|
   
 | 
						|
   assign y = s ? d1 : d0;
 | 
						|
   
 | 
						|
endmodule // mux2
 | 
						|
 | 
						|
module mux3 #(parameter WIDTH = 8)
 | 
						|
   (input  logic [WIDTH-1:0] d0, d1, d2,
 | 
						|
    input logic [1:0] 	     s, 
 | 
						|
    output logic [WIDTH-1:0] y);
 | 
						|
   
 | 
						|
   assign y = s[1] ? d2 : (s[0] ? d1 : d0);
 | 
						|
   
 | 
						|
endmodule // mux3
 | 
						|
 | 
						|
module mux4 #(parameter WIDTH = 8)
 | 
						|
   (input  logic [WIDTH-1:0] d0, d1, d2, d3,
 | 
						|
    input logic [1:0] 	     s, 
 | 
						|
    output logic [WIDTH-1:0] y);
 | 
						|
   
 | 
						|
   assign y = s[1] ? (s[0] ? d3 : d2) : (s[0] ? d1 : d0);
 | 
						|
   
 | 
						|
endmodule // mux4
 | 
						|
 | 
						|
module mux21x32 (Z, A, B, Sel);
 | 
						|
 | 
						|
   input logic [31:0]  A;
 | 
						|
   input logic [31:0]  B;
 | 
						|
   input logic	       Sel;
 | 
						|
 | 
						|
   output logic [31:0] Z;
 | 
						|
   
 | 
						|
   assign Z = Sel ? B : A;
 | 
						|
   
 | 
						|
endmodule // mux21x32
 | 
						|
 | 
						|
module mux21x64 (Z, A, B, Sel);
 | 
						|
 | 
						|
   input logic [63:0]  A;
 | 
						|
   input logic [63:0]  B;
 | 
						|
   input logic 	       Sel;
 | 
						|
 | 
						|
   output logic [63:0] Z;
 | 
						|
   
 | 
						|
   assign Z = Sel ? B : A;
 | 
						|
   
 | 
						|
endmodule // mux21x64
 | 
						|
 |