이 예에서는 LPM 함수 lpm_ram_dq 사용하여 메모리 블록을 인스턴스화하는 방법을 보여줍니다. 변수 램은 LPM 라이브러리의 lpm_ram_dq 기능을 사용합니다. 포트는 처음에 정의되고 빨간색 텍스트에 표시된 대로 LPM 포트에 매핑됩니다. 매개변수 값은 키워드 defparam으로 전달됩니다. 이 예에서는 16 x 256 RAM 블록이 인스턴스화됩니다. 비슷한 프로세스를 사용하여 다른 크기의 RAM 블록을 인스턴스화할 수 있습니다.
lpm_file 매개 변수는 메모리 블록(RAM 또는 ROM)의 초기 콘텐츠를 지정하는 메모리 초기화 파일(.mif)을 의미합니다. MIF는 ASCII 텍스트 파일로 시뮬레이션 출력에서 수동으로 만들거나 저장할 수 있습니다. MIF에서는 메모리 깊이와 폭 값을 지정해야 하며, 주소와 데이터 값을 표시하고 해석하는 데 사용되는 radixes를 선택적으로 지정할 수 있습니다. 이러한 값은 아래와 같은 샘플 파일 map_lpm_ram.mif에서추출한 빨간색 텍스트에 표시됩니다. MIF는 MAX+PLUS II 컴파일러 및 시뮬레이터에서 메모리 초기화를 위한 입력 파일로 사용됩니다.
프로젝트에서 이 예제를 사용하는 것에 대한 자세한 내용은 다음 으로 이동하십시오.
RAMveri.v
// instantiation of lpm_ram_dq, 16-bit data, 256 address location module map_lpm_ram (dataout, datain, addr, we, inclk, outclk); // port instantiation input [15:0] datain; input [7:0] addr; input we, inclk, outclk; output [15:0] dataout; // instantiating lpm_ram_dq lpm_ram_dq ram (.data(datain), .address(addr), .we(we), .inclock(inclk), .outclock(outclk), .q(dataout)); // passing the parameter values defparam ram.lpm_width = 16; defparam ram.lpm_widthad = 8; defparam ram.lpm_indata = "REGISTERED" defparam ram.lpm_outdata = "REGISTERED" defparam ram.lpm_file = "map_lpm_ram.mif" endmodule
MIF 파일에서 추출
WIDTH = 16; DEPTH = 256; ADDRESS_RADIX = HEX; DATA_RADIX = HEX; CONTENT BEGIN 0 : ffff; 1 : 0000; 2 : bbf3; 3 : 0000; 4 : 0000; . . . fb : 0000; fc : 0000; fd : 0000; fe : 0000; ff : 0000; END;