728x90
반응형
- reusable code
- parameters 사용
- parameterized module
- generate 문
- generate for block
- generate if block
- generate case block
- parameters 사용
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
반응형
'Verilog HDL > 1. Verilog HDL Basic (문법)' 카테고리의 다른 글
[Reusable Code] 3. 예제 풀이 (0) | 2024.01.16 |
---|---|
[Reusable Code] 2. 생성문 (0) | 2024.01.16 |
[Verilog Tutorial] level-9 Function and Task 모음 (0) | 2024.01.16 |
[Function and Task] 3. 예제 풀이 (0) | 2024.01.16 |
[Function and Task] 2. Task (0) | 2024.01.16 |