Tôi đang học cách sử dụng một FPGA (bảng phát triển Papilio, có một spartan3e xilinx, sử dụng vhdl).
Tôi cần chia một xung đến cho một số (mã hóa cứng).
Tôi có thể thấy 3 tùy chọn - đại khái là mã giả (sử dụng 10 số đếm làm ví dụ):
- Khởi tạo thành 0, trên đầu vào tăng cạnh 1, so với 10; nếu chúng bằng nhau, đặt lại về 0 và kích hoạt xung đầu ra
- Khởi tạo thành 10, trên cạnh tăng đầu vào giảm 1, so với 0; nếu chúng bằng nhau, đặt lại thành 10 và kích hoạt xung đầu ra
- Khởi tạo thành 9, nhưng đảm bảo có ít nhất 1 bit "0" hàng đầu, đó là bit đầu ra của tôi. Trên cạnh tăng đầu vào giảm 1. Trên cạnh tăng của bit đầu ra, đặt lại.
Chu kỳ nhiệm vụ là không quan trọng.
Là một trong những tốt hơn so với những người khác? Có một phương pháp nào tốt hơn mà tôi chưa từng nghĩ đến?
Có cách nào "chuẩn" sẽ mang lại cho trình biên dịch cơ hội tối ưu hóa tốt nhất không?