문서 ID: 000083380 콘텐츠 형태: 문제 해결 마지막 검토일: 2012-12-15

FIR 필터가 DSP 블록 입력 레지스터를 사용하지 못할 수 있습니다.

환경

    인텔® Quartus® II 구독 에디션
BUILT IN - ARTICLE INTRO SECOND COMPONENT

중요 문제

설명

FIR 컴파일러 II가 생성하는 일부 FIR 필터는 실패합니다. 모든 적절한 DSP 블록 입력 레지스터를 사용하십시오. 타임퀘스트 이러한 FIR 필터를 올바르게 분석하지 못하며 타이밍을 맞습니다. 실제로 등록되지 않은 경로의 타이밍은 분석되지 않았으며 이러한 FIR 필터는 타이밍 관련 원인이 될 수 있습니다. 하드웨어에서 구현할 때 오류가 발생합니다. 이 문제는 Stratix V에 영향을 미칩니다. Arria V(GX와 GZ 모두) 및 Cyclone V 장치입니다. 문제가 영향을 미칩니다. FIR 필터:systolic 모드 사용 승수 홀수 승수이상 문제가 짝수의 수를 필요로 하는 FIR 필터에 영향을 미치지 않습니다. 멀티 플라이어. 홀수 및 실제 승수 수를 참조하십시오. 원래 사용 중인 탭 수가 아닌 FIR 필터를 구현하는 것입니다. 지정. 짝수의 탭이 있는 FIR 필터에는 홀수가 필요할 수 있습니다. 물리적 승수의 수와 그 반대의 경우도 마찬가지입니다. 여부를 결정하려면 내 FIR 필터가 영향을 받습니다. 다음 단계를 따르십시오:생성된 필터 검사 VHDL 코드는 더미 승수 포함 여부를 결정합니다. A systolic FIR 필터에는 여러 CHAINMULTADD 주석이 포함되어 있습니다. FIR 필터에 이와 유사한 주석이 포함되어 있지 않은 경우 다음 의견에 따라 FIR 필터는 수축기 FIR 필터가 아닙니다. 영향을 받지 않습니다. --u0_m0_wo0_cma0(CHAINMULTADD,33)@13

FIR에 하나 이상의 CHAINMULTADD 주석이 포함되어 있는 경우, 검토하십시오. 각 주석을 따르는 VHDL 코드입니다. 몇 줄 후 CHAINMULTADD 주석을 통해 체인멀타드 프로세스와 유사한 프로세스를 찾습니다. 다음 코드:u0_m0_wo0_cma0_chainmultadd: PROCESS(clk, areset) 시작 시(areset = '1') 다음 u0_m0_wo0_cma0_a <= (기타 =>(기타 => '0')) u0_m0_wo0_cma0_b <= (기타 =>(기타 => '0')) u0_m0_wo0_cma0_c <= (기타 =>(기타 => '0')) u0_m0_wo0_cma0_anl <= '0'; u0_m0_wo0_cma0_s <= (기타 =>(기타 => '0')) ELSIF(clk'EVENT 및 clk = '1') 다음 IF(d_u0_m0_wo0_compute_q_13_q = "1") 다음 u0_m0_wo0_cma0_a(0) <= SIGNED(RESIZE(서명(u0_m0_wo0_wi0_delayr0_q),17)); u0_m0_wo0_cma0_a(1) <= SIGNED(RESIZE(서명(u0_m0_wo0_wi0_split1_b),17)); u0_m0_wo0_cma0_a(2) <= SIGNED(RESIZE(서명(u0_m0_wo0_wi0_split1_c),17)); u0_m0_wo0_cma0_a(3) <= (기타 => '0'); u0_m0_wo0_cma0_b(0) <= SIGNED(RESIZE(서명(u0_m0_wo0_wi0_split4_c),17)); u0_m0_wo0_cma0_b(1) <= SIGNED(RESIZE(서명(u0_m0_wo0_wi0_split4_b),17)); u0_m0_wo0_cma0_b(2) <= SIGNED(RESIZE(서명(u0_m0_wo0_cma0_mux_2_q),17)); u0_m0_wo0_cma0_b(3) <= (기타 => '0'); u0_m0_wo0_cma0_c(0) <= UNSIGNED(RESIZE(UNSIGNED(u0_m0_wo0_ca2_q),3)); u0_m0_wo0_cma0_c(1) <= UNSIGNED(RESIZE(UNSIGNED(u0_m0_wo0_ca2_q),3)); u0_m0_wo0_cma0_c(2) <= UNSIGNED(RESIZE(UNSIGNED(u0_m0_wo0_ca2_q),3)); u0_m0_wo0_cma0_c(3) <= (기타 => '0'); u0_m0_wo0_cma0_anl <= not(u0_m0_wo0_aseq_q(0)); 종료하는 경우, IF(d_u0_m0_wo0_compute_q_14_q = "1") u0_m0_wo0_cma0_s(0) <= u0_m0_wo0_cma0_z(0) u0_m0_wo0_cma0_y(0); u0_m0_wo0_cma0_s(1) <= u0_m0_wo0_cma0_y(1); u0_m0_wo0_cma0_s(2) <= u0_m0_wo0_cma0_y(2); u0_m0_wo0_cma0_s(3) <= u0_m0_wo0_cma0_y(3); 종료하는 경우, 종료하는 경우, 최종 프로세스; 굵은 세트의 선 동일한 승수의 입력을 모두 0으로, 더미 승수인 경우, 그리고 FIR 필터가 영향을 받습니다. Chainmultadd 프로세스 중 어느 것도 없는 경우 더미 승수를 포함하며 FIR은 영향을 받지 않습니다.

해결 방법

이 문제를 해결하려면 지정한 길이를 늘입니다. FIR 필터용입니다. 올바른 길이를 선택하면 구현 더미 승수는 필요하지 않습니다. 또는 수동으로 편집할 수 있습니다. FIR 컴파일러 II에서 생성한 VHDL이 Quartus II 보존을 추가합니다. DSP 입력 레지스터에 대한 속성입니다. Quartus II 합성은 더미 승수 입력 레지스터와 Quartus를 제거하지 않음 II fitter는 모든 DSP 블록 입력 레지스터를 올바르게 포장합니다. 받는 사람 VHDL을 수동으로 편집하고 다음 단계를 따르십시오: 선언 찾기 입력 레지스터의 다음 코드와 유사하게 보입니다. u0_m0_wo0_cma0_a_type SIGNED(16 downto 0)의 배열(0~3)입니다. 신호 u0_m0_wo0_cma0_a : u0_m0_wo0_cma0_a_type; 유형 u0_m0_wo0_cma0_b_type 배열(0~3)은 SIGNED(16 downto 0)입니다. 신호 u0_m0_wo0_cma0_b : u0_m0_wo0_cma0_b_type; 유형 u0_m0_wo0_cma0_c_type 배열(0 ~ 3) UNSIGNED(2 다운토 0); 신호 u0_m0_wo0_cma0_c : u0_m0_wo0_cma0_c_type;if FIR 필터는 DSP 블록\의 프리더인 \'b\' 신호를 사용하지 않습니다. 존재하지 않습니다. 다음 코드를 추가합니다: 속성 보존: 부울; 특성 u0_m0_wo0_cma0_a 보존 : 신호가 사실입니다. 속성 보존 u0_m0_wo0_cma0_b : 신호가 사실입니다. 속성 보존 u0_m0_wo0_cma0_c : 신호가 사실입니다.보존 속성만 추가하면 됩니다. 한 번만.

이 문제는 DSP Builder v13.1에서 해결되었습니다.

관련 제품

이 문서는 다음 항목에 적용됩니다. 1 제품

인텔® 프로그래밍 가능 장치

1

이 페이지의 콘텐츠는 원본 영어 콘텐츠에 대한 사람 번역 및 컴퓨터 번역의 조합으로 완성되었습니다. 이 콘텐츠는 편의와 일반적인 정보 제공을 위해서만 제공되었으며, 완전하거나 정확한 것으로 간주되어선 안 됩니다. 이 페이지의 영어 버전과 번역 간 모순이 있는 경우, 영어 버전이 우선적으로 적용됩니다. 이 페이지의 영어 버전을 확인하십시오.