거북이처럼 천천히

Verilog RTL 설계 (6월 24일 - 3) 본문

Verilog/Verilog RTL 설계

Verilog RTL 설계 (6월 24일 - 3)

유로 청년 2024. 6. 25. 22:19

1. FPGA에서는 Gate 관점이 아닌 MUX 관점에서 회로를 설계한다.

  • FPGA 내부에는 D Flip-Flop와 LUT (Look Up Table)를 기본 구성 요소로 갖고 있다.
  • LUT는 임의의 Gate의 Truth Table를 보고, Truth Table에 맞게 설계 및 프로그래밍할 수 있다.
  • LUT는 MUX 구조로 구현된다.

 

      

Q) Gate 기반으로 회로 설계와 비교 했을 때, MUX 기반으로 회로 설계의 장점은 무엇인가?

  • 유연성 : Truth Table만 있다면 MUX를 통해 다양한 게이트 및 논리 함수를 구현할 수 있다.
    즉, 하드웨어 수정 없이 프로그래밍을 통한 기능 변경이 가능하다.

    아래는 간단하게 AND, OR gate를 MUX를 통해 구현한 경우이다. 
    아래 사진을 통해 알 수 있듯이 진리표만 갖고 있다면 이에 따른 Look up table를 만들 수 있다.

AND Gate를 LUT (Look up table)로 구현한 경우
OR Gate를 LUT (Look up table)로 구현한 경우

 

  • 면적 효율성 : 복잡한 논리회로를 구현할 때에는 여러 개의 게이트를 필요로 하지만, MUX 기반의 회로 설계는 단일 MUX를 통해 구현이 가능하여 면적 효율성을 높일 수 있다.

    예를 들어 Half adder인 경우에 게이트로 구성할 경우, AND Gate와 XOR Gate가 필요로 하지만, MUX는 단 하나로 동일한 기능을 수행하는 회로를 설계 할 수 있다.

  • 표준화 및 모듈화 : LUT 기반 설계는 표준화된 구조를 제공하여 설계의 모듈화와 재사용성을 높다.

  • 높은 추상화 수준 : 설계자가 낮은 수준의 게이트 로직보다는 높은 수준의 함수적 동작에 집중할 수 있다.

 

Q) Look up table에 대한 정의 및 구제적인 설명은 어떻게 되는가?

  • Look up table은 기본적으로 MUX와 메모리 요소 구성된다.
  • Truth table에 정의된 입출 조합을 MUX에 저장하게 되면 해당 MUX가 LUT(Look up table)이 된다.
  • 즉, MUX는 고정되지 않은 입력값이 들어오지만, LUT는 고정된 입력값이 들어온다는 차이점을 갖는다. 
  • 이렇게 생성된 LUT는 n개의 선택선에 의해 선택된 하나의 입력선이 갖는 값은 출력으로 내보낸다.
  • FPGA내에는 D Flip-Flop과 LUT로 구성되어 있는데, LUT를 사용함으로서 다양한 게이트와 다양한 함수들을 구현할 수 있게 되어 유연성이 높아졌다.

 

 

 

 

 

2. MUX를 공부하게 되면서 알게 된 정보들

 

2.1.  왜 Gate 를 통한 회로 설계 대신 MUX 를 통한 회로 설계를 하는가?

 

A) MUX를 통한 논리 회로 설계가 Gate를 통해 회로 설계하는 것에 비해 비용적, 면적, 효율적, 범용성 측면에서 유리하기 때문이다.

 

 

 

2.2. 왜 Structural Modeling으로 Module를 구현하지 않고, Behavioral Modeling이나 Dataflow Modeling으로 구현하는가?

 

A) Structural Modeling으로 구현한다는 것은 Gate를 통해 모듈 및 소자, 회로를 설계한다는 것이기 때문에 MUX를 통해 논리 회로 설계하는 것과 맞지 않다. 단, 다른 모듈을 가져와 사용할 때에는 Structural modeling을 사용해야 하지만, 해당 경우가 아닌 라이브러리 게이트를 이용하여 모듈 설계하는 것은 Gate를 통해 설계하는 것이기 때문에 MUX로 설계하는 것과 맞지 않다.

 

그리고, FPGA는 D Flip-Flop과 LUT 병렬 형태로 구성되어 있기 때문에 Structural modeling과 적합하지 않다.

 

 

 

         

2.3. Behavioral modeling에서 always 블록내에 입력에 대한 출력을 정의할 때, 왜 가능한 모든 입력에 대한 출력을 정의하는 이유가 무엇인가?

 

A) 먼저, 2가지 부분에 대해서 집고, 넘어갈 필요가 있다. 
1) 가능한 모든 입력에 대한 출력을 정의하라

2) Sensitive variable이 level trigger인 경우에 해당된다.

 

첫 번째, "가능한 모든 입력에 대한 출력을 정의하라" 의미는 동작적 모델링에서 입력에 대한 출력을 정의할 때, 정해진 입력에 대한 출력을 정의하는데, 나머지 정해지지 않은 입력 및 예외의 경우를 발생시킬 수 있는 입력에 대해서 if-else문에서는 else, case문에서는 default를 정의하라는 의미이다. 

 

두 번째, "Sensitive variable이 level trigger인 경우에 해당된다."  의미는 감지 변수가 Level의 변화가 발생했을 때 동작하는 always문에 대해서 "가능한 모든 입력에 대한 출력을 정의하라" 는 의미이다. 감지 변수가 edge trigger인 경우에는 해당 되지 않는다.

 

그럼, 왜 감지변수가 level trigger인 경우 가능한 모든 입력에 대한 출력을 정의하라는 이유에 대해서 설명하면 다음과 같다.

 

왜냐하면 감지 변수가 Level trigger인 경우, 모든 입력 값에 대해서 출력 값을 정의하지 않으면 Verilog는 해당 입력값이 들어왔을 경우, 이전 상태를 그대로 유지시키기 위해 D-Latch를 자동적으로 생성한다. 하지만, FPGA는 D Flip-Flop과 LUT (Look up table)로 구성되어 있기 때문에 다른 리소를 이용하여 D-Latch를 구현해야하는데, 이는 비효율적이다. 

 

따라서 FPGA내에는 D Flip-Flop로 구성되어 있음을 생각하고, 최대한 Latch가 생성되지 않도록 하기 위해서 가능한 always문의 감지 변수가 Level trigger인 경우, 모든 입력 값에 대한 출력값을 정의하는 것이 좋다.

 

 

 

 

2.4. Behavioral modeling에서 always 블록의 감지 변수가 edge trigger인 경우에는 어떤가? 

 

A) 감지 변수가 edge trigger인 경우에는 모든 입력 값에 대한 출력 값을 정의하지 않으면 이전 출력값을 유지하기 위해서 D Flip Flop이 생성된다. 하지만, FPGA은 D Flip-Flop과 LUT로 구성되어 있기 때문에 감지 변수가 edge trigger인 경우에는 문제가 되지 않는다.

 

 

 

 

2.5. 규칙성을 갖지 않는 진리표에 대해서 MUX로 구현이 가능한가?

 

A) 아래 그림은 규칙성을 갖지 않는 진리표에 대해서 LUT(Look up table)로 표현한 것이다. 

LUT(Look up table)은 각각의 입력 단자를 진리표의 입력 부분이라고 생각하고, 해당 입력 단자에 들어오는 전압에 진리표의 출력 부분에 맞게 Vcc, GND에 연결해주면 구현이 가능하기 때문에 진리표를 갖고 있다면 다양한 논리 함수 및 게이트를 MUX로 표현이 가능하다.

 

규칙성을 갖지 않는 진리표에 대해서 8X1 MUX로 표현한 경우