본문 바로가기
# Semiconductor/- Semicon Academy

[Harman 세미콘 아카데미] 3일차 - 가산기,비교기, 인코더/디코더

by Graffitio 2023. 6. 21.
[Harman 세미콘 아카데미] 3일차 - 가산기,비교기, 인코더/디코더
728x90
반응형
[가산기]

 

1. 가산기를 Data-flow modeling으로 설계

위 식은 조건연산자를 활용하여 작성할 수도 있다.

※ 조건연산자

    Q = 조건식 ? A : B;

        i) 조건식이 참(1)일 경우,

            Q = A

        ii) 조건식이 거짓(0)일 경우,

            Q = B


2. 가산기 모듈을 테스트 벤치에 인스턴스

    : 변수는 이전과 같으므로 DUT 값만 변경해주면 된다.

 

cf) 가독성을 좋게 하기 위해 4자리마다 _를 붙여주면 좋다.

     → 9'b1_1111_1111

 

 

[비교기]

 

1. 1-bit 비교기

    1) 논리 연산자로 i-bit 비교기 설계

 

 

 

 

assign 문을 사용하여 설계하였지만,

논리연산자를 사용하면 구조적 모델링과 별 차이가 없게 된다.

 

 

 

 

 

※ Force clock

    시간의 흐름에 따라서 값을 지정해줄 수 있는 기능이다.

    각 bit별로 leading과 trailing, period를 설정해주면 된다.

  cf) 2진수에서 다음 bit의 주기는 이전 bit 주기의 2배

 

    2) 조건 연산자를 활용한 1-bit 비교기 설계

 

VIVODO 내부에 저장되어 있는 RTL 로 표현된다.

논리 gate로 표현될 경우, bit 수가 올라감에 따라 회로는 점점 더 복잡해지고 설계도 따로 해줘야 한다.

하지만, 위처럼 저장되어 있는 RTL로 표현된다면, input의 bit 수만 변경해주면 된다.

B[0] : 100ns, B[1] : 200ns, A[0] : 400ns, A[1] : 800ns

 

    3) Parameter의 활용

       

        ※ Parameter

            ① 미리 parameter를 선언해놓으면, 추후에 instance할 때 N값만 변경시키면

                 다른 bit 수의 회로로사용이 가능하다.

                 → defparam 문, module instance 문의 parameter overriding에 의해 변경 가능

            ② Variable /.Net 범주에는 속하지 않는 상수값

             cf) # - Delay(할당문 등에 사용)

                     - Parameter를 변경하는 용도(compiler 지시어)

 

[Decoder & Encoder]

 

1. 기본 개념

    1) Decoder : code → signal 로 변환(압축 해제기)

        (En)coder : signal → code 로 변환(압축기)

        CODEC : Encoder의 'CO' + Decoder의 'DEC'

 

     2) 원리

          입력 →→ Encoder →→ Decoder →→ 출력

                 signal              code               signal

           ex) 4개의 입력 → Encoder → 2 개의 code로 전달(0 또는 1)

                 이렇게 전달되면, 배선의 길이 등이 줄어들어 비용이 절감되고 디지털 코드로 전송되기 때문에

                 보안성도 갖추게 된다.

 

2. Decoder

 

A[0] : 100ns, A[1] : 200ns

 

case 대신 if-else 문을 활용하여 설계
A[0] : 100ns, A[1] : 200ns

 

Dataflow modeling을 활용한 설계
A[0] : 100ns, A[1] : 200ns

      ※ 조건 연산자

          conditional_expresstion = expression1 ? expression2 : expression3          

             i) ex1 = 1(참), 좌변의 변수에 ex2를 할당해 준다.

             ii) ex1 = 0(거짓), 좌변의 변수에 ex3를 할당해 준다.

             iii) ex1 = x 또는 z, ex2와 ex3를 비트끼리 비교해서 같은 값이면 좌변에 할당.

                                        다른 값이면 좌변에 x를 할당.

 

3. Decoder(enable 추가)

      : enabla에 따라서 output 값의 출력 여부가 정해진다.

        en = 1이면 연산된 값이 출력되고 en = 0이면 0이 출력된다.

Dataflow Modeling

 

A [0] 100ns, A [1] 200ns, en 50ns
Behavior Modeling
A[0] 100ns, A[1] 200ns, en 400ns
case 대신 if-else문 사용
A[0] 100ns, A[1] 200ns, en 400ns

 

728x90
반응형