2013-12-11 1 views
0

나는 스파르탄 3E FPGA 용 이더넷 MAC 컨트롤러를 설계하고있다. IOB는 109 %에 도달했습니다. 나는 여전히 비트 스트림의 생성을 계속했다. 그런 다음이 오류가 발생했습니다 :이 장치에 맞는 "BUFGMUX"유형의 컴포지션이 너무 많습니다. (Ethernet Design)

이 장치에 맞는 "BUFGMUX"유형의 구성 요소가 너무 많습니다. enter image description here 이것은 무엇을 의미합니까?

(스파르탄 3e에 이더넷 이더넷 MAC의 IP가 이미 있기 때문에 스파르탄 3e를 실행할 수 있다고 확신한다.) 또한 모듈에있는 것보다 많은 핀이있다. 그렇다면 109 %의 IOB?) enter image description here

또한 인스턴스화 된 mac_transmit_module 및 mac_receive_module에 주석을 달았습니다. 그것은 비트 스트림을 성공적으로 생성했습니다. 나는 어디로 잘못 갔는가?

답변

1

디자인이 너무 커서 대상 FPGA에 맞지 않습니다. 유사한 IP가 있다는 사실은 구현이 다소 효율적이지 않거나 다른 IP가 제공하지 않는 기능을 제공한다는 것을 의미합니다. 이 문제에 대한 간단한 해결책은 없습니다.

나중에 화면 캡쳐를 문서로 포함하지 않는다고 제안 할 수 있습니까? 그들은 읽기가 매우 어렵고 이미지의 대부분은 부적절합니다. 우리가보고 싶은 특정 오류 메시지가있는 경우 대신 질문에 복사하여 붙여 넣으십시오.

1

먼저 232 개의 IOB 중에서 255 개를 사용합니다. xs3s500e-4fg323을 선택했습니다. 실제로는 232 개의 사용자 IO 만 있고, 56 개는 입력 전용입니다. 어쩌면 합성에 잘못된 부분을 선택했을까요?

올바른 부품을 선택했다면 "IOB Properties"보고서 ISE를 선택하십시오. 여기서 모든 사용 된 IOB 목록을 얻을 수 있습니다. 이것이 작동하지 않으면 (아마도이 ​​오류가 발생하기 전에 오류가 발생하기 때문에), LOC가 잘못되어 있는지 판별하기 위해 UCF 파일로 플로어 플래닝 도구를 항상 확인할 수 있습니다. UCF 및 플로어 플래너를 사용하여 더미 디자인을 수행하십시오.

두 번째로, BUFGMUX 메시지는 일반적으로 너무 많은 글로벌 시계 버퍼를 사용하고 있다고 말하고 있습니다 (또는 실제로는 너무 많은 muxed 클록, 거의 없을 것입니다). 디자인이 많은 클럭을 특징으로하면 ISE는 BUFG 프리미티브 이외에 BUFGMUX 프리미티브를 사용하여 모든 클럭을 라우팅해야합니다. 이제 설계에서 BUFGMUX/BUFG 수를 초과하면 오류가 발생합니다.

그래서 두 오류 모두 디자인이 너무 커서 또는 잘못된 부품 선택을 가리 킵니다.

0

BUFGMUX는 시계로 사용되는 신호를 버퍼링하는 데 사용됩니다.

대부분의 디자인에서 특히 초보자에게는 시계가 하나만 있어야합니다. 그리고 모든 프로세스는 감도 목록에있는 클록 신호와 거기에 if rising_edge(clock) then 라인이있는 동일한 형식이어야합니다. 이것을 동기식 설계라고하며,하지 않으면 실제 칩에서 코드를 시도 할 때 모든 종류의 버그가있는 결과가 나타납니다. 충분한 경험이있을 때까지하지 마십시오. 다른 클록 신호를 사용할 때 "확실하게 하나의 클럭 신호를 사용할 수있는 방법을 찾을 수 있습니다"라고 생각할 때 충분한 경험이있을 때를 알 수 있습니다 :)

내게 들리는 것 같아 if rising_edge(all sorts of different signals in different processes) - 이렇게하면 도구가 시계라고 생각되는 많은 신호를 생성하고 BUFGMUX를 각각 끄기 만하면 클럭 라우팅 자원이 매우 빨리 소모 될뿐만 아니라 예측할 수없는 동작이 발생합니다.