나는 이것을 몇 번이나 스스로했다.
일반적으로 디자인 툴은 합성 설정에 따라 패브릭 구현과 DSP 슬라이스 중에서 선택합니다.
예를 들어 Xilinx ISE의 경우 합성 프로세스 설정 인 HDL 옵션에는 "-use_dsp48"설정이 있습니다. Auto, AutoMax, Yes, No 옵션이 있습니다. DSP 슬라이스. 한 번은 정수에 3을 곱한 문제가 있었는데, DSP 슬라이스를 유추했습니다. 칩에있는 모든 DSP 슬라이스를 수동으로 유추하는 것 외에는 신디사이저가 실패했습니다! 이미 모든 dsp 슬라이스를 사용하고 있었기 때문에 설정을 아니요로 변경했습니다.
이것은 아마도 좋은 경험 법칙 일 것입니다 (방금 만든 것입니다). 만약 당신의 디자인이 50 MHz 미만에서 클럭킹되고 칩에서 DSP 슬라이스의 50 % 미만을 사용한다면, *, + 및-연산자 파이프 라인 레지스터가없는 DSP 슬라이스를 유추합니다. 이것은 실제로 최고 속도를 제한합니다. (나눗셈을 사용할 때 어떤 일이 발생하는지 전혀 모른다)
그러나 슬라이스를 DSP 슬라이스의 최대 속도 (Spartan 6 정상 속도 등급의 경우 333MHz)에 더 가깝게 실행하는 것처럼 보이는 경우 모든 슬라이스를 사용하려는 경우 수동으로이를 추론해야합니다. .
이 경우 두 가지 옵션이 있습니다.
옵션 1 : 원시 DSP 인스턴스화 템플릿을 수동으로 사용하십시오. 옵션 2 : Xilinx Core Generator의 IP 블록을 사용하십시오. (이 옵션을 사용할 것입니다. 동시에, 당신은 미래에 도움이 될 핵심 세대에 대한 모든 것을 배울 것입니다)
이 중 하나를 수행하기 전에 DSP 슬라이스 사용 설명서의 첫 두 페이지를 읽으십시오. 스파르탄 6 (DSP48A1)의 경우 Xilinx doc UG389가됩니다 :
http://www.xilinx.com/support/documentation/user_guides/ug389.pdf
먼저 코어 생성기 옵션을 고려하십시오. 나는 보통 작업하고있는 부분에 대해 코어 제너레이터에서 테스트 프로젝트를 작성하는데, 여기서 시스템을 배우기 위해 여러 IP 블록을 작성합니다. 그런 다음 ISE에서 내 디자인에 하나를 추가 할 준비가되면 디자인 계층을 마우스 오른쪽 단추로 클릭하고 새 소스를 클릭 한 다음 "IP (CORE Generator & Architecture Wizard)"를 선택하여 블록을 직접 편집하고 다시 생성 할 수 있습니다. 내 프로젝트에서.
Core gen에서는 선택할 수있는 여러 가지 IP 블록을 살펴보십시오. 수십 개가 있으며 그 중 대부분은 매우 근사합니다.
Multiplier Core는 먼저 살펴 봐야합니다. 모든 페이지를 확인하고 데이터 시트 버튼을 클릭하십시오. 중요한 부분은 정수 비트 폭, 파이프 라인 스테이지 (대기 시간) 및 모든 제어 신호입니다. 필요없는 모든 포트를 제거하여 가장 간단한 블록을 생성합니다.
작년에 5 x 3 차 IIR 필터를 구축 할 때 샘플 인스턴스보다 4 배 빠른 클럭을내는 2 개의 DSP 슬라이스로 매우 맞춤형 구현을 구축 한 이후 수동 인스턴스화 템플릿을 사용해야했습니다. 총 고통이었다.