Sự cố quan trọng
Một số bộ lọc FIR mà Trình biên dịch FIR II sản xuất, bị lỗi để sử dụng tất cả các thanh ghi đầu vào khối DSP thích hợp. Nhiệm vụ thời gian không phân tích chính xác các bộ lọc FIR này và chúng xuất hiện đáp ứng thời gian. Trên thực tế, thời gian trên các đường dẫn không được không được đăng ký là không được phân tích và các bộ lọc FIR này có khả năng gây ra các vấn đề liên quan đến thời gian lỗi khi được triển khai trong phần cứng. Vấn đề này ảnh Stratix V, Arria V (cả GX và GZ) và thiết bị Cyclone V. Sự cố ảnh hưởng đến Bộ lọc FIR:Sử dụng chế độ systolicNeed một số nhân lẻThis sự cố không ảnh hưởng đến các bộ lọc FIR cần số điểm hệ số nhân. Kỳ lạ và thậm chí là tham khảo số nhân vật lý thực hiện bộ lọc FIR, không phải số lượng vòi nước mà bạn thực hiện ban đầu Xác định. Một bộ lọc FIR có số lượng chạm chẵn có thể cần một kết quả kỳ lạ số nhân vật lý và ngược lại. Để xác định xem bộ lọc FIR của tôi bị ảnh hưởng, làm theo các bước sau: Kiểm tra thông tin đã tạo Mã VHDL để xác định xem nó có chứa hệ số nhân giả hay không. A Bộ lọc FIR tâm thu chứa một số nhận xét CHAINMULTADD. Nếu bộ lọc FIR của bạn không chứa bất kỳ nhận xét nào tương tự như nhận xét sau đây, bộ lọc FIR của bạn không phải là bộ lọc FIR tâm thu và không bị ảnh hưởng: --u0_m0_wo0_cma0(CHAINMULTADD,33)@13
Nếu FIR của bạn chứa một hoặc nhiều nhận xét CHAINMULTADD, hãy kiểm tra mã VHDL sau mỗi bình luận như vậy. Một vài dòng sau nhận xét CHAINMULTADD, tìm một quy trình chuỗi kết hợp tương tự như mã sau:u0_m0_wo0_cma0_chainmultadd: PROCESS (clk, areset) BẮT ĐẦU NẾU (areset = '1') THÌ bạn u0_m0_wo0_cma0_a (những người khác => '0')); u0_m0_wo0_cma0_b (những người khác => '0')); u0_m0_wo0_cma0_c (những người khác => '0')); u0_m0_wo0_cma0_anl (những người khác => '0')); ELSIF(clk'EVENT AND clk = '1') THEN IF (d_u0_m0_wo0_compute_q_13_q = "1") SAU ĐÓ, u0_m0_wo0_cma0_a(0) '0'); u0_m0_wo0_cma0_b(0) '0'); u0_m0_wo0_cma0_c(0) '0'); u0_m0_wo0_cma0_anl
Để giải quyết vấn đề này, tăng chiều dài mà bạn chỉ định cho bộ lọc FIR. Nếu bạn chọn độ dài phù hợp, việc triển khai không cần bất kỳ hệ số nhân giả nào. Ngoài ra, bạn cũng có thể chỉnh sửa theo cách thủ công VHDL được tạo ra bởi FIR Compiler II để thêm bảo quản Quartus II thuộc tính của thanh ghi đầu vào DSP. Bộ tổng hợp Quartus II thực hiện không tháo thanh ghi đầu vào nhân nhân giả và Quartus Bộ chỉnh II đóng gói tất cả các thanh ghi đầu vào khối DSP một cách chính xác. Để chỉnh sửa thủ công VHDL, làm theo các bước sau: Tìm các tuyên bố trong số các thanh ghi đầu vào, trông tương tự như mã sau: loại u0_m0_wo0_cma0_a_type mảng(0 đến 3) của SIGNED (16 xuống còn 0); Tín hiệu u0_m0_wo0_cma0_a: u0_m0_wo0_cma0_a_type; gõ u0_m0_wo0_cma0_b_type là mảng(0 đến 3) của SIGNED(16 xuống còn 0); tín hiệu u0_m0_wo0_cma0_b : u0_m0_wo0_cma0_b_type; loại u0_m0_wo0_cma0_c_type là array(0 đến 3) UNSIGNED(2 xuống còn 0); tín hiệu u0_m0_wo0_cma0_c: u0_m0_wo0_cma0_c_type; Nếu bộ lọc FIR không sử dụng phần trước của DSP block\, tín hiệu \'b\' không có mặt. Thêm mã sau: bảo toàn thuộc tính : tiếng ngòi; Thuộc tính bảo quản tài sản u0_m0_wo0_cma0_a: tín hiệu là đúng; bảo toàn thuộc tính trong số u0_m0_wo0_cma0_b: tín hiệu là đúng; bảo toàn thuộc tính của u0_m0_wo0_cma0_c : tín hiệu là đúng; Chỉ nên khai báo thêm thuộc tính bảo toàn chỉ một lần.
Sự cố này được khắc phục trong DSP Builder v13.1.