module example1 (x1, x2, s, f); //module 회로 기능 정의
input x1, x2, s;
output f;
not (k, s);
and (g, k, x1);
and (h, s, x2);
or (f, g, h);
endmodule // 선언종료
module example3 (x1, x2, s, f);
input x1, x2, s;
output f;
assign f = (~s & x1) | (s & x2);
endmodule
module example5 (x1, x2, s, f);
input x1, x2, s;
output f;
reg f;
always @(x1 or x2 or s)
if (s == 0)
f = x1;
else
f = x2;
endmodule
→ 간략화 가능
module example5(input x1,x2,s,output reg f);
always @(x1,x2,s)
if (s == 0)
f <= x1; // 논리 대입이 아닌 non-blocking 대입
else
f <= x2;
end
assign 문 : 연속 할당(continuous assignment)
하드웨어를 코드(Verilog/VHDL)로 기술하고,
그 코드를 FPGA(tool)에게 내려줘서 보드에 즉시 논리회로를 구현
FPGA 내부의 각 논리 블록은 수십억 개의 트랜지스터 스위치로 이루어져 있음
트랜지스터 하나하나는 스위치 역할을 함
FPGA 내부의 각 논리 소자는 트랜지스터 스위치로 이루어져 있음
트랜지스터의 게이트 단자(gate)에 걸리는 전압을 조절(switching)해서 AND·OR·NOT 등을 구현
• Closed switch when
Gate에 충분히 높은 전압 이 걸리면,
Drain→Source 사이에 전도 채널이 형성되어 전류가 흐름
→ 스위치가 닫힌(ON) 상태
• Open switch when
Gate에 0 V(논리 0)가 걸리면,
채널이 닫혀 전류가 흐르지 않음
→ 스위치가 열린(OFF) 상태
x₁=1 & x₂=1일 때 둘 다 ON일 때
GND(0V)로 f 노드를 강하게 끌어당김 → 논리 0
어느 하나라도 ON() 상태이면
Drain→Source 경로가 닫히면서 f 노드를 GND로 끌어내림 → 논리 0