혼자공부하는 Verilog_hdl_3

윤현식·2023년 5월 8일
0

Verilog_독학

목록 보기
3/5
post-thumbnail

모듈과 포트

모듈

모듈의 정의는 항상 키워드 module로 시작한다.

모듈 정의의 처음에는 모듈 이름, 포트 리스트, 포트 선언, 선택적으로 파라미터가 온다.

endmodule문은 반드시 모듈 정의의 마지막에 와야 한다.

module SR_latch(Q,Qbar,Sbar,Rbar);

output Q,Qbar;
input Sbar, Rbar;

nand n1(Q,Sbar,Qbar);
nand n2(Qbar,Rbar,Q);

endmodule

module top;

wire q,qbar;
reg set,reset;

SR_latch m1(q,qbar,~set,~reset);

initial
begin
$monitor($time, "set = %b, reset=%b, q=%b\n",set,reset,q);
set = 0; reset = 0;
#5 reset = 1;
#5 reset = 0;
#5 reset = 1;
end

endmodule

포트

포트는 모듈이 외부 환경과 소통할 수 있는 인터페이스임.

포트 선언

포트 리스트의 모든 포트는 모듈 안에서 선언되어야 한다.

Verilog에서 모든 포트 선언은 wire로 선언된다.

그러나 만약, output포트가 값을 유지해야한다면, 반드시 reg로 선언되어야 한다.

module DFF(q,d,clk,reset);
output q;
reg q;
input d,clk,reset;
.......
endmodule

포트 연결하기

위치에 의한 포트 연결

module TOP;

reg[3:0]a,b;
reg c_in;
wire [3:0] sum;
wire c_out;

fulladd4 fa_ordered(sum,c_out,a,b,c_in);

endmodule

module fulladd4(sum, c_out, a, b, c_in);
output [3:0]sum;
output c_cout;
input [3:0]a,b;
input c_in;

endmodule

이름에 의한 포트 연결

verilog는 위치 대신 포트 이름에 의해 외부 신호를 연결할 수 있다.

fulladd4 fa_byname(.c_out(c_out),.sum(SUM),.b(b),.c_in(c_in),.a(a));
profile
Verilog, C, HW 개발

0개의 댓글