2014-12-18 92 views
3

FPGA 디자인을위한 Verilog 모듈을 작성 중입니다. 나는 인터넷에서 모듈을 가장 잘 모방하는 방법을 찾아 보았다. 두 가지 방법이 자주 발생하는 것을 볼 수 있습니다. 여기에는 두 가지 방법론에 대한 예가 포함되어 있습니다. 모듈을 매개 변수화하는 가장 좋은 방법은? 차이점은 무엇입니까? 벤더 종속적입니까 (Altera vs Xilinx)?Verilog 모듈에 파라미터 전달하기

제있어서 모듈 정의 :

module busSlave #(parameter DATA_WIDTH = 1) (
    input [DATA_WIDTH-1:0] bus_data, 
    input     bus_wr, 
    ... 
); 
endmodule 

모듈 인스턴스 :

module top; 

    //DATA_WIDTH is 32 in this instance 
    busSlave #(.DATA_WIDTH(32)) slave32(
    .bus_data(data_0), 
    .bus_wr(wr_0), 
    ... 
    ); 

    //DATA_WIDTH is 64 in this instance 
    busSlave #(.DATA_WIDTH(64)) slave64(
    .bus_data(data_1), 
    .bus_wr(wr_1), 
    ... 
    ); 
endmodule 

번째 방법 모듈 정의 :

module busSlave(
    parameter DATA_WIDTH = 1; 
    input [DATA_WIDTH-1:0] bus_data, 
    input     bus_wr, 
    ... 
); 
endmodule 

모듈 인스턴스 :

사전에 17,451,515,
module top; 

    //DATA_WIDTH is 32 in this instance 
    busSlave slave32(
    .bus_data(data_0), 
    .bus_wr(wr_0), 
    ... 
    ); 
    defparam slave32.DATA_WIDTH = 32; 

    //DATA_WIDTH is 64 in this instance 
    busSlave slave64(
    .bus_data(data_1), 
    .bus_wr(wr_1), 
    ... 
    ); 
    defparam slave32.DATA_WIDTH = 64; 
endmodule 

감사

편집 : 예제 defparam 문이 중단 될 예정이다

답변

2

에 몇 가지 수정. IEEE Std 1800-2012, 부속서 C (중단)이 섹션은 "C.4.1 Defparam 문은"상태 :

사용자가 강하게 매개 변수 재정의 다른 방법 중 하나를 사용하여 자신의 코드를 마이그레이션하는 것이 좋습니다.

Verilog의 많은 기능은 공급 업체에 따라 다릅니다.