Sebagai seorang insinyur yang berpengalaman ( 3 tahun dengan desain dan sistem embedded FPGA ), saya memberi tahu Anda bahwa Anda perlu memeriksa lembar data dan panduan pengguna FPGA. Itu bukan jawaban yang sederhana.
Anda harus membuat desain Anda SESUAI dengan jenis FPGA yang Anda pilih. Beberapa FPGA memiliki FlipFlops yang dirancang untuk pengaturan ulang Async, beberapa dirancang untuk pengaturan ulang Sync.
Anda harus memeriksa panduan pengguna FPGA untuk jenis FlipFlops yang Anda miliki.
Implementor / Mapper akan memilih rute khusus untuk reset Anda ( kode dapat berjalan di freq lebih tinggi dan mengambil lebih sedikit ruang ) jika Anda mencocokkan kode Anda dengan tipe primitif FPGA.
Desain Anda akan berfungsi dalam kasus APAPUN , tetapi kadang-kadang Implementor FPGA akan keluar dari jalannya untuk membuat logika Anda berfungsi ( menambah lebih banyak logika ), tetapi itu akan menyebabkan frekuensi maksimum yang lebih rendah dan / atau lebih banyak sumber daya FPGA.
Contoh: diuji dengan Xilinx's ZYNQ ( FPGA dirancang untuk pengaturan ulang yang disinkronkan - lihat panduan pengguna primitif ). Dengan mengubah reset dari async ke sinkronisasi , frekuensi stabil max berubah dari 220MHz ke 258MHz dan jadi saya melewati margin frekuensi saya.
Saya juga dapat menambahkan bahwa Implementor tidak tahu apa itu sinyal clock dan reset. Ini memberikan pin flipflop ke sinyal oleh ORDER, bukan dengan nama. Jadi dalam beberapa FPGA, implementor memilih sinyal pertama setelah "proses () mulai" di VHDL sebagai jam, di beberapa sebagai reset, tergantung pada apa FPGA implementor diatur.