강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

움직이는YM님의 프로필 이미지
움직이는YM

작성한 질문수

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

FSM 실습응용 질문2

작성

·

138

1

`timescale 1ns / 1ps
module simple_bram_ctrl
// Param
#(
    parameter DWIDTH = 16,
    parameter AWIDTH = 12,
    parameter MEM_SIZE = 3840
)

(
    input               clk,
    input               reset_n,
    input               i_run,
    input  [AWIDTH-1:0] i_num_cnt,
    output              o_idle,
    output              o_write,
    output              o_read,
    output              o_done,

// Memory I/F
    output[AWIDTH-1:0]  addr0,
    output              ce0,
    output              we0,
    input [DWIDTH-1:0]  q0,
    output[DWIDTH-1:0]  d0,

// output read value from BRAM
    output              o_valid,
    output[DWIDTH-1:0]  o_mem_data

   );

모듈에서 #(parameter DWIDTH = 16, parameter AWIDTH = 12, parameter MEN_SIZE = 3840)으로 선언한 이유가

궁금합니다

테스트벤치에서 인스턴스를 찍을 때 다시 #( .DWIDTH (`DATA_WIDTH), ....) ; 를 써서 테스트벤치안에서

`define으로 선언한 값들(7, 16, 128)을 넣어주는 것 같은데 왜 모듈 선언부위에서 또 parameter를 선언해주신건가요?

또한 DWIDTH = 16, AWIDTH = 12, MEN_SIZE = 3840 의 값들은 그냥 임의로 정해서 넣어주신건가요?

답변 1

1

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

안녕하세요 :)

만약에, 인스턴스 선언시 안썼다? 그래도 문법적으로 문제 없어요.

그러면 모듈내의 파라미터 값이 적용됩니다. 디폴트 값이에요. 

즐공하세요 :)

답변 감사합니다!

움직이는YM님의 프로필 이미지
움직이는YM

작성한 질문수

질문하기