Notice
Recent Posts
Recent Comments
Link
관리 메뉴

거북이처럼 천천히

Verilog RTL 설계(7월 12일 - 1, 비동기 카운터까지 복습) 본문

RTL Design/Verilog RTL 설계

Verilog RTL 설계(7월 12일 - 1, 비동기 카운터까지 복습)

유로 청년 2024. 7. 13. 16:19

1. Combinational Logic Circuit 

  • Verilog에서 증감 연산자, 복합 대입 연산자를 지원하지 않는다.
  • 비교기는 가산기처럼 단순 병렬 연결함으로서 2bit 이상의 비교기를 설계할 수 없다.
    - 따라서 2bit 이상의 비교기는 별도로 설계해야 한다.
    - 하지만, 32bit 비교기를 설계한다면 32 이하 비트에서 비교를 할 때, 특정 비트만 값을 넣고,
      나머지 bit에 대해서 0으로 채워줌으로서 32bit 비교기를 통해 비교 연산 수행 가능하다.
  •  Decoder와 Encoder도 가산기처럼 병렬 연결하여 사용할 수 있다.
  • DEMUX를 구현에서 선택선에 의해 선택 받지 못한 출력선에 대해서 0을 출력하도록 설계했다.
    - 선택 받지  못한 출력선에 대해서 0으로 출력하지 않도록 설계한다면 해당 출력선들은 임피던스
      상태를 갖게 된다.

 

 

2. Sequential Logic Circuit 

  • RTL : Register Transfer Level
  • LUT : Look Up Table
    - FPGA는 Gate가 없는대신 MUX를 갖고 있기 때문에 각각의 Gate의 진리표를 토대로 MUX를 Gate처럼 동작하도록 설계할 수 있으며, 이를 LUT 이라 한다.
  • Q) JK Flip Flop으로 어떻게 D Flip Flop을 설계하는가?
    A) SR Flip Flop에서 D Flip Flop을 설계하는 것 처럼 JK Flip Flop에서 두 개의 입력을 받는 것이 아닌 하나의 입력을 받고, 하나의 입력값에 대해서 Flip Flop내에서 Invertor를 이용하여 반전된 입력값을 얻어 서로다른 두개의 입력값을 얻는다.
  • Sensitive variable 을 Sensitive list 라고도 부른다.
  • Flip Flop의 enable 값과 reset 값을 정의하지 않으면 자동적으로 enable 값은 Vcc, reset 값은 GND로 초기화 된다.

 

 

 

 

★★★★★★★★★★★

  • Q) D Flip Flop을 통해 T Flip Flop을 구현하면 RTL analysis와 Synthesis 회로가 서로 다름을 확인할 수 있다.
       왜 같은 설계에 대해서 서로 다른 회로가 나타나는가?
  • A) D Flip Flop을 통해 T Flip Flop을 구현하였을 때, RTL analysis, Synthesis를 통해 그려진 회로 다음과 같다.

간략하게 표현된 블록도
RTL Analysis of T Flip Flop
Synthesis of T Flip Flop

 

두 회로 모두 D Flip Flop을 기반으로 T Flip Flop을 설계한 것이기 때문에 T Flip Flop이다. 하지만, 두 논리 회로가 다른 이유는 RTL Analysis와 Synthesis 단계에서 회로의 표현 방식 및 최적화 수준이 다르기 때문이다. 

 

 

[1] RTL analysis

  • RTL Analysis는 코드의 논리적 구조를 가장 단순하고, 직관적으로 표현한 회로를 만들어 준다.
  • RTL analysis는 복잡한 최적한 보다는 코드의 논리 그대로 반영한 단순한 회로 생성에 초점을 두고 있다.
  • 따라서 설계자는 의도대로 회로가 구성되었는지 여부를 쉽게 확인할 수 있다.

 

[2] Synthesis

  • Synthesis는 실제 하드웨어 구현을 위해 최적화 작업을 수행한다.
  • 따라서 Vivado가 판단하기를 "D Flip Flop을 기반으로 T Flip Flop을 구현함에 있어 T와 Q를 XOR 하는 것은 NOT gate를 사용한 것 보다 효율적이다." 라고 판단한 것이다.

 

[3] 결론

  • 두 회로 모두 동일한 기능을 수행하지만, Synthesis 단계에서는 최적화한 회로를 제공하기 때문에 실제 하드웨어 상에서 더 효율적인 성능을 제공한다.

 

 

 

 

 

★★★★★★★★★★★

  • Q) Synthesis 단계에서 LUT3 는 무엇을 의미하며, 어떤 진리표 및 동작을 하는가?
  • A) LUT3는 입력 값으로 T (Toggle), Q (출력) 을 입력 받는다. (Enable 은 제외) 
        T값에 따라 출력 값, Q를 반전시킬 여부를 결정하여 그에 대한 출력 값을 다시 D Flip Flop의 D에
        넣어야 하기 때문에 다음과 같은 진리표를 가질 것이다. 
T (Toggle) Q (Output)  Output of LUT
0 0 0
0 1 1
1 0 1
1 1 0

 

그러나, FPGA에는 Gate가 없기 때문에 이를 LUT (Look Up Table)로 구현하면 다음과 같다.

LUT3 (Look Up Table 3)의 블록도

 

즉, D Flip Flop을 기반으로 T Flip Flop을 설계하기 위해 LUT3을 사용했으며, LUT3의 입력 값으로 T(Toggle), Q (출력)을 받고, 원하는 T Flip Flop으로 동작시키 위해서 LUT3의 진리표를 갖으며, 진리표를 기반으로 LUT을 설계한 결과는 위와 같이 나타난다. 

 

이를 자세히 보면 XOR Gate와 동일한 기능을 수행하는 LUT임을 확인할 수 있다.