본문 바로가기
HW Design/1. Verilog HDL Basic

[Reusable Code] 1. 매개변수

by 한PU 2024. 1. 16.
728x90
반응형
  • reusable code
    • parameters 사용
      • parameterized module
    • generate 문
      • generate for block
      • generate if block
      • generate case block

Verilog Parameter

  • 모듈을 인스턴스화할 때 값을 할당할 수 있는 로컬 상수
  • 매개변수 범위 제한
    • 동일한 모듈을 여러 번 호출하고 매개변수에 다른 값을 할당 가능
      • 모듈의 동작을 즉석에서 구성 가능
module <module_name> #(
    parameter <parameter_name> = <default_value>
)
(
    // Port 선언
);
  • - 이름 부여 - 코드 내에서 매개변수 값을 호출
  • - 기본값 할당 - 값을 특별히 할당하지 않고도 컴포넌트를 인스턴스화 가능.
  • 인스턴스화
// named 연결 (2001 Standard에 추가)
<module_name> # (
    .<parameter_name> (<parameter_value>)
)
<instance_name> (
    // Port 연결
);

// position 연결
<module_name> # (<parameter_values>)
<instance_name> (
    // port 연결
);

Verilog Parameterized Module Example

  • 두 개의 동기식 카운터가 필요한 디자인.
    • 8bits wide 카운터
    • 12bits wide 카운터
  • 각각 만들 수 있지만 비효율적.
    • 단일 카운터 회로를 작성하고 매개변수를 사용해 출력의 비트 수를 변경!!
module counter #(
    parameter BITS = 8;
)
(
    input wire clock,
    input wire reset,
    output reg [BITS-1 : 0] count
);
  • 8bit가 싫으면 BITS 값만 변경하면 됨.
  • 12 bits 출력을 원할 때
// named 연결
counter # (
    .BITS (12)
) count_12 (
    .clock (clock),
    .reset (reset),
    .count (count_out)
);

// position 연결
counter # (12) count_12 (clock, reset, count_out);
728x90
반응형