Verilog_RTL 설계

[Verilog_RTL]_Module Instantiation

juniha 2025. 6. 26. 19:41

Module Instantiation 방법

  • 포트 순서에 의한 포트 매핑(ordered port) 
    -   모듈의포트목록에나열된포트순서와1:1로대응되어연결 
    -   포트에연결되는신호가없는경우에는해당위치를빈칸으로남겨둔다  주로Test bench에서 사용 
  • 포트 이름에 의한 포트 매핑(named port)
    -   포트이름과그포트에연결되는신호이름을명시적으로지정 
    -   포트의비트선택, 부분선택, 결합등을사용할수없음  주로DUT에서사용

예시 1

module mode(wa, wb, c, d);
	input wa, wb;
	output c, d;
 	wire   c, d;
    
 	assign c = wa & wb;
 	assign d = wa ^ wb;
    
 endmodule

Oredered Port

module topmod;
	
    wire [4:0] v;
	wire c, w;
	
    mode u1(v[0], v[3], w, v[4]);

endmodule

 

Named Port

module topmod;

    wire [4:0] v;
    wire a,b,c,w;

    modeu1e.wb(
        .wv[3]),
        .wa(v[0]), 
        .d(v[4]), 
        .c(w));
    
endmodule

 

예시 2

module bus_driver(busin, bushigh, buslow, enh, enl);
 	input [15:0] busin;
 	input enh, enl;
 	output [7:0] bushigh, buslow;
 	
    driver busar3(busin[15:12], bushigh[7:4], enh);
 	driver busar2(busin[11:8],  bushigh[3:0], enh);
 	driver busar1(busin[7:4],   buslow[7:4],  enl);
 	driver busar0(busin[3:0],   buslow[3:0],  enl);
 
 endmodule

인스턴스 배열 사용

module bus_driver(busin, bushigh, buslow, enh, enl);
 	input [15:0] busin;
 	input enh, enl;
 	output [7:0] bushigh, buslow;
 
 	driver busar[3:0] (.in(busin),
 		.out( {bushigh, buslow}), 
		.en( {enh, enh, enl, enl}) );
 
 endmodule

'Verilog_RTL 설계' 카테고리의 다른 글

[Basys 3_Vivado] Decoder / Seg_7  (0) 2025.07.03
[Basys 3_Vivado] Simulation 방법_and  (0) 2025.07.03
[Verilog_RTL]_모듈 분할  (0) 2025.06.26
[Verilog_RTL]_FSM_mealy  (0) 2025.06.20
[Verilog_RTL]_FSM_moore  (0) 2025.06.20