[HARMAN] 세미콘 아카데미

[Harman 세미콘 아카데미] Day_25(Verilog)

uiop1716 2025. 3. 11. 21:41

구조적 모델링 : 하위 모듈을 인스턴스하고 포트 연결을 통해 설계

모듈 포트의 자료형 규칙 : 입력/출력 방향과 모듈 내부/외부에 따라 포트가 가질 수 있는 자료형이 달라짐


인스턴스 파라미터화
parameter - deparam(해제)
    ㄴ  #(.parameter_name(value1) {, .parameter_name(value2)})

parameter(외부 변경 가능) - localparam(외부 변경 불가) - defparam(변경)



생성문 (Generate statement) : 
generate - endgenerate 블록으로 모델링
   반복 생성문  :  generate - for
      ㄴ for 반복문을 사용하여 반복적으로 인스턴스
      ㄴ for 문의 begin 뒤에 " : " identifier를 사용하여 이름을 나타냄

   조건 생성문  :  generate - if 
   case 생성문  :  generate - case
   모듈, 게이트프리미티브, UDP, 연속 할당문, initial 블록 등의 인스턴스를 하나 또는 다수 개 생성 

ex) genvar genvar_name { , genvar_name };
     generate
     ~~~조건문 -> 생성문 블록, 조건 생성문, case 생성문


     endgenerate

---> genvar 선언 : 반복 생성문내에서만 사용될 수 있는 loop

 

 

오늘은 어제에 이어 타이머를 만들었습니다. 오늘의 메인 포인트는 Dot Product입니다.

먼저, 어제 생성해 놓은 타임에 관한 기능에 Run/Stop/Clear 기능을 하는 Control Unit에 기존에 설계하였던 Debounce 모듈을 추가하였습니다. Debounce 모듈을 통해 스위치가 눌리고 때질 때 발생할 수 있는 오류를 최소화합니다.

Debounce 모듈 추가 Schematic
추가 코드

 

 

그리고, 저희는 타이머를 만들 것이기 때문에 시/분/초/밀리초에 대해 표현을 해야합니다. 밀리초는 0~99, 분 or 초는 0~59, 시는 0~23의 두 자릿수를 표현해야하지만 우리에게 있는 fnd는 4개 뿐입니다. 한번에 두개의 타임에 대해서만 출력을 할 수 있죠.

그래서, 스위치를 통해 밀리초,초 에 대한 출력을 1번 모드로 할당, 시/분에 대해서는 2번모드로 할당하였습니다. 그래서 여러 비트의 값들이 segment로 들어가기 위해 MUX를 준비해야합니다. 기존에는 4X1 MUX를 두개 사용하였지만, 이번에는 8X1 MUX를 두개 사용할 것입니다. 또한, BCD decoder에 이 두 값들이 들어가야하므로 2X1 MUX도 만들어 주었습니다.

8X1 MUX 2개와 bcd Decoder에 들어가기 위한 2X1 MUX 설계

 

 

 

원래는 세그먼트 4개를 통해 밀리초,초 를 표현하기 때문에 4X1 MUX가 필요했지만, 이번에는 뒷 입력 4개를 Dot Product를 표현하기 위해서 입니다. 소수점을 표현하기 위한 프레임 조정이라고 할 수 있습니다. 특정 Dot Product에 대한 부분만을 ON 시켜놓고 나머지를 OFF 시키도록 설정하였습니다. 

BCD Decoder 설계

 

 

아래 사진이 잘못 나왔지만,  x6 부분의 Dot Product를 출력할 예정이기 때문에, x6부분만 0.5초마다 점멸하도록 신호를 주기 위해 4'hF로 설정하고, 나머지 x4,x5,x7은 안보이도록 4'hE가 되어야 합니다.

 

 

그리고 위에 4'hf : seg = o_clk_dp ? 8'h7f : 8'hff 조건문을 위해, 아래와 같은 코드를 작성합니다. 0.5초마다 Dop Product가 깜빡이기 위해 만들어 놓은 모듈입니다. 

 

 

이렇게 0.5초마다 점멸하는 dp값을 segment에서 하나 빼내어, 특정 segment에 출력되도록 설계합니다.

 

 

 이렇게 설계하여, 타이머는 동작되면서 가운데 부분의 Dot Product가 0.5초마다 점멸하는 모습을 볼 수 있습니다.

Dot Product.mp4
4.75MB