본문 바로가기
[Nexys4 DDR]

[Nexys4 DDR 프로젝트] Dataflow Modeling

by choice1219 2019. 2. 21.

안녕하세요. 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 ;


와 같이 표현할 수 있습니다


이때, #33unit delay를 의미하며, c aband의 결과를 얻을 수 있는 것을 볼 수 있습니다.

 

Dataflow에 대한 설명은 이강 교수님 저 “VHDL 사용자를 배려한 Verilog-2001 디지털시스템설계에 잘 기술되어 있으므로, 참고하시면 될 것 같습니다.



 

오늘은 Dataflow Modeling을 이용해서 1bit Full Adder4bit Full Adder를 만들어 보겠습니다.

 

먼저 1 bit Full Adder를 만들어 보겠습니다. 코드는 아래와 같습니다.





위의 코드를 보시면, 모든 InputOutput1bit입니다


따라서, 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를 사용하는 방법에 대해서 배워보겠습니다. 


Full_Adder_fourbit.v

Full_Adder_onebit.v

Nexys4DDR_Master.xdc