Verilog/기본모듈 및 이론
Day 1 기본 개념 및 Full Adder
onthejobtrain
2024. 6. 11. 13:59
이제 앞으로 사용할 보드 (clk : 100M Hz)
Assign문을 사용하여 오른쪽 사진처럼 하드웨어를 설계하였다.
소프트웨어 언어와 달리 코딩에 따라 하드웨어 Schematic이 설계되는것을 볼 수있다.
Open Elaborated Design을 누르고 코드에 이상이없다면 Schematic을 확인할 수 있다.
이런식으로 미리 설계하려던 Schematic과 같은지 확인하면 오류를 줄 일 수있다.
constrs = XDC constrait 조건 파일
( xdc 파일은 xilinux 툴에서 사용하는 design constrant 파일)
sources = deign 설계 파일
Verilog코드를 보드에 다운하는 과정
Verilog code → H/W Netlist회로 → FPGA 맞는 배치회로 → FPGA 회로 파일
→ FPGA Download
반도체 설계과정이다. 나는 이중에 전반부 설계에서 verification, PI, RTL설계를 하고싶다.
LUT(Look Up Table) : 조합회로를 모아서 간단하게 표시하는 것
탑모듈을 간단하게 표현할때 많이 사용된다.
구조적 모델
구조적 모델링이란 상위모듈과 하위모듈을 나누어 설계하는것을 뜻한다.
과제 (4bit-adder)
module halfAdder(
input a,
input b,
output sum,
output carry
);
assign sum = a^b;
assign carry = a&b;
endmodule
module fullAdder(
input a,
input b,
input cin,
output sum,
output carry
);
wire w_sum1 , w_carry1 , w_carry2;
halfAdder u_HA1(
.a(a),
.b(b),
.sum(w_sum1),
.carry(w_carry1)
);
halfAdder u_HA2(
.a(w_sum1),
.b(cin),
.sum(sum),
.carry(w_carry2)
);
assign carry = w_carry1 | w_carry2;
endmodule
module FA_4bit(
input a,
input b,
input c,
input d,
input e,
input f,
input g,
input h,
output sum0,
output sum1,
output sum2,
output sum3,
output carry
);
wire FA_carry0 , FA_carry1 , FA_carry2, FA_carry3;
halfAdder HA1(
.a(a),
.b(b),
.sum(sum0),
.carry(FA_carry0)
);
fullAdder FA1(
.a(c),
.b(d),
.cin(FA_carry0),
.sum(sum1),
.carry(FA_carry1)
);
fullAdder FA2(
.a(e),
.b(f),
.cin(FA_carry1),
.sum(sum2),
.carry(FA_carry2)
);
fullAdder FA3(
.a(g),
.b(h),
.cin(FA_carry2),
.sum(sum3),
.carry(FA_carry3)
);
assign carry = FA_carry3;
endmodule