안녕하세요. VeriLog입니다.
오늘은 HDL (Hardware Design Language)의 방법 중 하나인, Gate-Level Modeling에 대해서 이야기 하고자 합니다.
Digital Logic에 대해서 배워보신 분들은 (AND / OR / NOR / XOR / NAND) Gate 등에 대해서 들어보셨을겁니다.
Gate-Level Modeling은 위와 같은 Gate들을 이용해서 Hardware를 디자인 하는 방법입니다. 즉, Primitive 게이트들의 연결을 통해서 모듈의 기능을 기술하는 방법입니다.
Vivado는 Primitive Gate들을 사용자가 정의하지 않더라도 사용할 수 있도록 제공해줍니다.
and / or / nand / nor / xor / nor / buf / not 등을 사용할 수 있습니다.
사용하는 방법은 아래와 같습니다.
위와 같은 'and' 게이트를 만든다고 할 때, 아래와 같이 표현합니다.
-----------------------
wire out;
and g1 (out, A, B);
-----------------------
여기서 g1은 게이트의 이름을 정의하는 부분입니다. 생략을 해도 상관 없습니다.
참 쉽죠?
그렇다면 조금 복잡한 시스템을 예제로 해보도록 해보겠습니다.
2x1 mux입니다. select 값인 A에 의해서, output 값이 I0 또는 I1으로 나오는 시스템입니다.
위의 시스템은 아래처럼 표현할 수 있습니다.
-----------------------
wire s0, s1, Q;
nand g1 (s0, A, I0);
nand g2 (s1, A!, I1);
nand g3 (Q, s0, s1);
-----------------------
그림에는 nand 게이트가 4개인데, 코드상에는 왜 3개가 되었는지는, 조금 생각해보시면 바로 아실 겁니다!
Gate-Level Modeling의 장점은 직관적으로 디자인 할 수 있고, Synthesis 과정에서, 우리가 원하는대로 Hardware Logic을 생성할 수 있다는 점입니다. 하지만, 시스템이 조금만 복잡해져도, 시스템을 Gate-Level에서 기술하기 어렵다는 단점을 가지고 있습니다.
마지막 예시로, 1-bit Full Adder를 만들어 보겠습니다.
1-bit Full Adder 는 1 bit 짜리 input 2개가 들어갔을 때, 1bit 결과 Sum과 Carry -out이 출력되는 시스템입니다.
이 예제에 대한 해답은 첨부파일로 올려놓겠습니다.
직접 디자인을 해보시고 답과 맞춰보시기 바랍니다.
다음 포스팅에는 두번째 HDL 방법인 Dataflow Modeling에 대해서 다루겠습니다.
'[Nexys4 DDR]' 카테고리의 다른 글
[Nexys4 DDR 프로젝트] Flip Flop 만들기 (0) | 2019.03.16 |
---|---|
[Nexys4 DDR 프로젝트] Multi 7-Segment 구현 (2) | 2019.03.10 |
[Nexys4 DDR 프로젝트] Behavioral Modeling (4) | 2019.02.21 |
[Nexys4 DDR 프로젝트] Dataflow Modeling (2) | 2019.02.21 |
[Nexys4 DDR 프로젝트] Vivado 설치 및 프로젝트 만들기 (0) | 2018.12.11 |