Tôi đang xây dựng một mạng nơron chạy trên một FPGA, và mảnh cuối cùng của câu đố đang chạy một hàm sigmoid trong phần cứng. Đây là một trong hai:Tính e^x cho các giá trị float trong Hệ thống Verilog?
1/(1 + e^-x)
hoặc
(atan(x) + 1)/2
Thật không may, x ở đây là một giá trị float (một giá trị real
trong SystemVerilog).
Có mẹo nào về cách triển khai một trong các chức năng này trong SystemVerilog không? Điều này thực sự gây nhầm lẫn cho tôi vì cả hai chức năng này đều phức tạp và tôi thậm chí không biết bắt đầu triển khai chúng ở đâu do tính phức tạp của các giá trị float.
Bạn đang thiết kế FPGA nào? Nó có tài nguyên DSP nào không? – Hida
Sử dụng khối DSP trên FPGA của bạn để tính hàm sigmoid. – noobuntu
Yêu cầu về độ trễ và thông lượng là gì? Điều đó sẽ ảnh hưởng lớn đến bất cứ điều gì tôi sẽ thiết kế cho việc này. Ngoài ra, tôi không quen thuộc với bất kỳ công cụ FPGA có thể tổng hợp một thực (float) vào phần cứng (nó có thể tồn tại, nhưng nó khá gần đây nếu nó không). – hops