Tôi có một biến đổi xử lý tín hiệu đặc biệt lớn cần được chuyển từ MATLAB sang VHDL. Nó chắc chắn đòi hỏi một số loại chia sẻ tài nguyên. Một chút tính toán đã cho tôi như sau:
- 512 điểm của 64 điểm
- 41210 phép toán cộng
Xem xét Virtex 6 FPGA lớn nhất có ~ 2000 khối DSP48E, tôi biết rằng tôi có thể chia sẻ tài nguyên để sử dụng lại tài nguyên nhiều lần. Thời gian thực hiện không thực sự là một vấn đề, thời gian xử lý có thể mất tương đối lâu trong các thuật ngữ FPGA.
Nhìn vào việc sử dụng tài nguyên, sử dụng kiến trúc lite radix-2 cho tôi các khối 4dsp / hoạt động FFT = 2048 khối DSP, tổng cộng ~ 43k. Virtex lớn nhất có 2k khối, hoặc 20 thao tác / mux.
Rõ ràng bao gồm cả các mux lớn như vậy vào vải cũng sẽ mất các lát. Tôi tìm thấy phần cuối của giới hạn này ở đâu? Tôi không thể chia sẻ vô hạn các tài nguyên FPGA. Là số nhân 41210 quá lớn? Làm thế nào để tôi tính toán những gì là quá lớn?
Tôi cũng đã xem xét các tài nguyên khác (Lát, Brams, v.v.). Radix-2 Lite cũng cho 4 x 18 kam / fft = 2048 bram Xilinx lớn nhất chứa 2128 Brams. rất biên giới. Tôi lo ngại rằng thiết kế của tôi quá lớn.
CẬP NHẬT:
Một số thông tin thêm về bản thân thiết kế. Tôi không thể đi vào chi tiết, nhưng đây là những gì tôi có thể cung cấp:
Initial conditions -> 512 ffts -> 40k multipliers ---------|----> output data to host
^------re-calculate initial conditions----|
specarate specarate: "nhanh hơn mô phỏng MATLAB"
Tính toán khôn ngoan, đây là nơi tôi đang ở:
Giai đoạn FFT: dễ dàng. Tôi có thể triển khai 1/2/4/8 FFT, lưu trữ kết quả trong SDRAM và truy cập sau. Tương đối nhỏ, ngay cả khi mất nhiều thời gian, nó vẫn ổn. sử dụng radix-2 lite tôi có thể nhận được 2 DSP48E và 2 BRAM / FFT 18k. phát trực tuyến cho 6 DSP48E 0BRAM / FFT. trong cả hai trường hợp, FFT 64 điểm là nhỏ về thuật ngữ tài nguyên.
Số nhân : đây là vấn đề của tôi. Các đầu vào nhân được lấy từ bảng tra cứu hoặc dữ liệu FFT. Nó thực sự chỉ là một loạt các phép cộng. Không có nhiều thứ để tối ưu hóa. Không phải là bộ lọc, nhưng có các đặc điểm tương tự như bộ lọc.
Xem xét việc chia sẻ tài nguyên trên FPGA, toán học hoạt động như sau: Một LUT-6 có thể được sử dụng như một mux 4 chiều. Công thức cho mux N-way, M bit như sau:
N*M/3 = number of luts, or N*M/12 = slices (4 LUTS/slice).
crunching số để thực hiện của tôi không cho kết quả tốt. 90% gia đình virtix-6 không có đủ lát để chia sẻ tài nguyên DSP của họ để thực hiện các hoạt động 40k.