from palette import colorful_colors

[verilog] 1:4 DEMUX 구현 (디멀티플렉서, Demultiplexer) 본문

EE 학부과목/verilog

[verilog] 1:4 DEMUX 구현 (디멀티플렉서, Demultiplexer)

colorful-palette 2023. 3. 13. 12:24

dmux14.v 파일 

module dmux14(y0, y1, y2, y3, in, sel); 
	
	input [3:0] in;	
	input [1:0] sel; 
	output reg [3:0] y0, y1, y2, y3;
 
	always @(*) begin	
		case(sel)	//일반 모듈에서도 당연히 숫자 부여 가능.
			2'b00 : begin y0 = in; y1 = 0;  y2 = 0;  y3 = 0;  end	//begin문으로 묶어주면 c언어에서 {}와 같은 역할!!!! 중요.
			2'b01 : begin y0 = 0;  y1 = in; y2 = 0;  y3 = 0;  end	
			2'b10 : begin y0 = 0;  y1 = 0;  y2 = in; y3 = 0;  end	
			2'b11 : begin y0 = 0;  y1 = 0;  y2 = 0;  y3 = in; end	 
		endcase
	end
endmodule



/* 다르게 짠 코드
module demux14(in0, sel, out0, out1, out2, out3);
  input [3:0] in0;
  input [1:0] sel;
  output reg [3:0] out0, out1, out2, out3;

  always @(*) begin
    case(sel)
	2'b00 :  begin
			 out0 <= in0;
	         out1 <= 4'b0000;
	         out2 <= 4'b0000;
	         out3 <= 4'b0000;			
			 end
    2'b01 :  begin
			 out0 <= 4'b0000;
	         out1 <= in0;
	         out2 <= 4'b0000;
	         out3 <= 4'b0000;
			end
	2'b10 : begin
			 out0 <= 4'b0000;
	         out1 <= 4'b0000;
	         out2 <= in0;
	         out3 <= 4'b0000;
			end
	default : begin
		     out0 <= 4'b0000;
	         out1 <= 4'b0000;
	         out2 <= 4'b0000;
	         out3 <= in0;
			end
    endcase
  end

endmodule

 

dmux_tb.v 파일

`timescale 1ns / 1ns
module dmux14_tb;  

	integer i;	//for문을 위해 integer 변수 선언
	reg [3:0] in;	//4bit 입력 4개 선언
	reg [1:0] sel; //2bit select 선언
	wire [3:0] y0, y1, y2, y3; //4bit 출력 하나 선언


dmux14 u1 (.y0(y0), .y1(y1), .y2(y2), .y3(y3), .in(in), .sel(sel)); 


	initial begin 
		in = 4'b1101; sel = 0;s
		//y0 = 0; y1 = 0; y2 = 0; y3 = 0; 
		sel =$random;	
		//input들의 initial value: a~b는 0000~1111로 할당, sel은 00~11로 할당
		
		for(i = 1 ;i<20; i=i+1)	
			#2 sel = $random;	
		
	end 

initial begin
	$dumpfile("output.vcd");
	$dumpvars(0);
end

endmodule

'EE 학부과목 > verilog' 카테고리의 다른 글

[verilog] d-flipflop 구현  (0) 2023.03.13
[verilog] 16bit ALU구현  (0) 2023.03.13
[verilog] 4:1 MUX 구현 (멀티플렉서, multiplexer)  (0) 2023.03.13
[verilog] Full Adder, 4bit Adder 구현  (2) 2023.03.13
[verilog] NAND 구현  (0) 2023.03.13