안녕하세요. VeriLog입니다.
오늘은 HDL의 두번째 방법인 Dataflow Modeling에 대해서 배워보도록 하겠습니다.
Dataflow Modeling은 입력 – 출력 사이의 신호 흐름을 연산자를 사용하여 직접적으로 나타내는 방법입니다.
Dataflow Modeling의 문법은 다음과 같습니다.
assign (delay) (list_of_assignments)
(delay)는 옵션이고, (list_of_assignment)는 LSH = RHS expression의 형식입니다. 예를 들어보면,
assign #3 c = a & b ;
와 같이 표현할 수 있습니다.
이때, #3은 3unit delay를 의미하며, c 는 a와 b의 and의 결과를 얻을 수 있는 것을 볼 수 있습니다.
Dataflow에 대한 설명은 이강 교수님 저 “VHDL 사용자를 배려한 Verilog-2001 디지털시스템설계”에 잘 기술되어 있으므로, 참고하시면 될 것 같습니다.
오늘은 Dataflow Modeling을 이용해서 1bit Full Adder와 4bit Full Adder를 만들어 보겠습니다.
먼저 1 bit Full Adder를 만들어 보겠습니다. 코드는 아래와 같습니다.
위의 코드를 보시면, 모든 Input과 Output이 1bit입니다.
따라서, A, B, CIN 중 두개 이상이 1일 때, overflow가 발생하게 됩니다.
하지만, 위와 같이 작성하시면, overflow 되는 비트는 COUT에 저장이 되고, 나머지 비트가 SUM에 저장되게 됩니다.
위의 수식을 Table로 표현하면 아래와 같습니다.
이와 같이 Dataflow Modeling을 사용하면 쉽게 Adder를 설계할 수 있습니다.
그렇다면, 이제 위에서 만든 1-bit Full Adder를 사용하여 4-bit Full Adder를 만들어 보겠습니다.
코드는 아래와 같습니다.
위 코드를 그림으로 표현하자면, 아래와 같이 표현할 수 있습니다.
즉, 각 비트에 대한 연산을 해서 결과를 출력하는 방법입니다.
위의 코드를 Nexys4ddr에 심어서 결과를 확인하기위해 Switch와 LED를 아래와 같이 연결합니다,
A[3:0] : Switch 3~0
B[3:0] : Switch 7~4
CIN : Switch 8
SUM[3:0] : LED 3~0
COUT : LED 4
심어서 보면 결과는 아래와 같습니다.
A에 1110 -> 14
B에 1000 -> 8
CIN 에 1 을 입력으로 주었을 때,
결과가
SUM 0111
COUT 1
로 10111 -> 23의 결과를 얻은것을 볼 수 있습니다.
1-bit Full Adder, 4bit Full Adder, Constraint 파일을 첨부하니 한번 돌려보시면 바로 이해가 되실 것 같습니다.
다음 시간에는 Behavioral Modeling을 통해서 7-segment를 사용하는 방법에 대해서 배워보겠습니다.
'[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 프로젝트] Gate-Level Modeling (0) | 2019.01.15 |
[Nexys4 DDR 프로젝트] Vivado 설치 및 프로젝트 만들기 (0) | 2018.12.11 |