2013-04-13 1 views
1

스파르탄 6 보드에 단일 포트 롬을 설계하는 데 문제가 있습니다. 제공된 핵심 생성기를 사용하여 블록 메모리를 만들고 32 비트 너비와 256 깊이의 단일 포트 ROM을 0에서 255까지 계수하는 coe 파일과 함께 선택합니다. 구성 요소로 vhdl에 ROM을 드롭하고 XilinxCoreLib을 도서관. 그 도움이된다면 나는 현재 자일링스 ISE 13.1을 사용하고자일링스 ISE Design Suite를 사용하여 스파르탄 6에서 단일 포트 ROM 생성하기

logical block 'rom1' with type 'rom' could not be 
resolved. A pin name misspelling can cause this, a missing edif or ngc file, 
case mismatch between the block name and the edif or ngc file name, or the 
misspelling of a type name. Symbol 'rom' is not supported in target 
'spartan6'. 

: 나는 프로그래밍 파일을 생성 할 때 나는 번역 오류가 발생합니다. 이 일이 정말 쉬워야한다고 생각하지만 어떻게해야 하는지를 알지 못했습니다.

편집 : 감사합니다. 모든 것들이 조합되었습니다. 속도 등급이 잘못되었습니다. ngc 파일의 복사본을 작업 디렉토리에 추가하지 않았습니다. 나는 미래에 배열을 사용할 것이다.

답변

1

ISE에서 디자인에 자일링스 생성 코어를 추가 했으므로 프로젝트 메뉴를 통해 "소스 추가"를 통해 VHD 파일과 NGC 파일을 모두 추가해야합니다.

ROM 크기와 데이터 유형에 따라 자일링스 코어에 신경 쓰지 않고 순수한 VHDL을 사용하여 일정한 배열 및 초기화 값을 VHDL 파일.

type array_ROM is array (0 to NUMBER_OF_ROWS-1) of std_logic_vector (ROM_BITWIDTH-1 downto 0); 

signal my_ROM : array_ROM 
    := 
     (
      x"12345678", 
      x"ABCDEF01", 
      ... 
      x"01010101" 
     ); 

지금, 당신은 단지 ROM_BITWIDTH 일치하는 비트 폭으로 상수의 행을 넣어, 그 초기화 목록에서 elipsis (...)를 넣지 마십시오 예를 들면 다음과 같습니다. NUMBER_OF_ROWS는 ROM에 필요한 주소 위치의 수입니다. 이 예제에서 초기화 목록에 32 비트 16 진수 상수를 사용 했으므로 ROM_BITWIDTH를 32로 설정해야합니다. 신호이기 때문에 실제로 수정할 수 있으므로 신호가 필요하지 않으면 신호 대신 "상수"를 사용하십시오.

4

가장 쉬운 방법은 공급 업체 도구를 모두 잊어 버리고 단순히 상수 배열을 선언하는 것입니다.

이 패키지에 디자인의 나머지 부분에서 별도의 경우, printf와의 몇 줄이나 간단한 스크립트는 어셈블러에서 오는 또는 어떤 도구 내용, 주변의 VHDL의 상용구를 생성 할 수는 실제 데이터를 생성

1

나는 메시지가 말한대로 문제가 잘못되었다고 생각한다. 올바른 구성 요소 선언/인스턴스화를 얻으려면 ISE의 ​​디자인 창에서 rom.xco를 선택하십시오. 프로세스 창에서 "view vhdl instantiation template"을 선택하십시오. 여기에 설명 된 구성 요소 선언 및 인스턴스화를 사용하십시오.

1

이 문제를 일으킬 수있는 여러 가지 사항이 있습니다. 하나는 다른 FPGA 제품군 용으로 생성 된 Blocck를 사용하고 Spartan6 내부에서 사용하는 것입니다. 다른 하나는 도구의 이전 버전을 사용하여 ROM을 생성했을 수 있으며 ROM의 래퍼가 변경된 것입니다. Brian과 같은 anrray를 생성하거나 도구 별 ROM 유형을 잊어 버리거나 curernt 프로젝트 설정에서 IP를 다시 생성하고 어떻게 진행되는지 확인할 수 있습니다.