2009-03-10 8 views
12

갑자기 $ readmemh 및 $ writememh를 많이 사용하는 일부 테스트 벤치 코드를 살펴 보았습니다. 기본적으로 메모리로 읽고 메모리에 쓰는 것을 이해했습니다. 이러한 루틴과 관련된 일부 리소스를 가리킬 수 있다면 행복 할 것입니다. 추신 : 나는 google에서 성공을 찾지 못했습니다. (나는 매우 ... Verilog에 매우 익숙하다.)

+1

을 그런 다음 충분히 열심히 검색 아니에요! "readmem tutorial"과 같은 것을 찾으십시오. 시뮬레이터에 대한 설명서에도 유용한 정보가 있어야합니다. – Marty

+0

@Marty, google에서 "readmem tutorial"을 검색했을 때이 SO 페이지가 최고의 히트입니다 ... ;-))) – Alphaneo

+1

무료 IEEE Std 1800-2012를 사용할 수 있습니다 : 21.4 "메모리 배열 데이터로드 파일 "등 – toolic

답변

17

나는 readmem/writemem에 대해 뭔가 알기가 쉽지 않다는 것에 동의한다. 당신은 여기 조금 찾을 수 있습니다 http://fullchipdesign.com/index_files/readmemh.htm

을 어쨌든 이러한 기능에 대해 과언이 아니다, 구문은 다음과 같습니다

$readmem[hb]("File",ArrayName,StartAddr,EndAddr) 
$writemem[hb]("File",ArrayName,StartAddr,EndAddr) 

의 Verilog는 비트의 수 파일 형식에 대한 매우 까다 롭고입니다 텍스트 파일에서 배열의 비트 수와 일치해야합니다.

배열을 정의하고 데이터로 채우고 writememh/writememb으로 작성한 다음 나중에 인쇄하는 것이 좋습니다.

이렇게하면 시작해야합니다 (시도하지 마세요!).

integer i; 
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries 

initial begin 
    for (i=0; i<16; i++) begin 
     memory = i; 
    end 
    $writememb("memory_binary.txt", memory); 
    $writememh("memory_hex.txt", memory); 
end 

건배!

0

HEX 파일을 읽기 다음과 같이 작동합니다 :

integer i; 
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries 

initial begin 
    for (i=0; i<16; i++) begin 
     memory = i; 
    end 
    $readmemh("memory_binary.txt", memory); 

end